Skip to content

SerRodneyRich/Harmony

Repository files navigation

Harmony

A fork of Chora by CraftWorksMC — a lightweight music player for Subsonic/Navidrome servers and local files.

Harmony builds on Chora's excellent foundation with offline-first playback, download management, and quality-of-life improvements.

What's Different from Chora

Offline & Download Support

  • Song, album, and playlist downloading from Navidrome with actual audio file storage (not just metadata tracking)
  • Offline playback — downloaded songs play from local storage when there's no network, falling back to streaming when online
  • Persistent downloads — audio files are stored in external app storage so they survive app updates (only cleared on full uninstall)
  • Download indicators — green checkmarks on downloaded songs, albums, and playlists throughout the UI
  • Playlist download — download entire playlists with a single tap from the playlist detail screen

UI Enhancements

  • Grid/list view toggle on Albums, Playlists, and Artists screens
  • Song list improvements — three-dot menus in list view with download options
  • Reworked album, artist, and playlist cards with download state awareness
  • Reusable song list components (SongLazyLists) for consistent behavior across screens

Stability & Architecture

  • Fixed crash on startup caused by EncryptedSharedPreferences corruption — connection details now use plain SharedPreferences that reliably persist across updates
  • Connection details survive app updates — server URL, username, and password are stored in standard SharedPreferences (plaintext, on-device only)
  • Proper release signing with keystore-based config for CI/CD builds
  • Obtainium support — GitHub Actions workflow creates signed releases automatically; just add the repo URL in Obtainium for auto-updates

Other Changes

  • NetEase lyrics provider added alongside LrcLib, with multi-line lyric display support
  • Android Auto tabs now follow the navbar settings configuration
  • Error handling improvements in NavidromeDataSource
  • Removed legacy NavidromeConnection and NavidromeCache code for starring items
  • Rebranded from CraftWorks to W13

Install via Obtainium

  1. Open Obtainium and add a new app
  2. Enter this repo URL: https://github.com/SerRodneyRich/Harmony
  3. Obtainium will detect releases and offer updates automatically

Building Locally

./gradlew assembleRelease

Create a keystore.properties file in the project root for release signing:

storeFile=../release-keystore.jks
storePassword=yourpassword
keyAlias=harmony
keyPassword=yourpassword

Attribution

This project is a fork of Chora/Harmony by CraftWorksMC. All original work is under the Apache License 2.0. Thank you to CraftWorks for building such a solid Navidrome client.

License

Apache License 2.0 — See LICENSE for details.

Lyrics icon provided by Remix Icon Other icons are provided by Google Icons

About

Android fork of Chora

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages