Development Road Map & TO-DO list
January 29, 2026 ยท View on GitHub
Last Update: 2026.01.29
Standalone Music Library Database
This part is currently work-in-progress, as next major feature.
See branch room-database
Stage 1 MediaStore Cache/Mirror
(Completed!)
Stage 2 Database Playlist
(Completed!)
Stage 3 Database Favorites
(Completed!)
Stage 4 Solving Complex Relationship for Artists/Albums
(Completed!)
Stage 5 Enhanced Genres
(Completed!)
Stage 6 Independent from MediaStore & Relative Enhancement
Scan media files manually without any existed metadata from Mediastore; use JAudioTagger to read tags and parse more data.
-
Multiple tag source (Android MediaStore & JAudioTagger Parse) and manual scan implementation.
-
Metadata enhancement: united Genre and Style from tag fields
-
Metadata enhancement: read and store Replay-Gain tag
-
Player: use parsed Replay-Gain tag
Stage 7 Artwork Cache (Tentative)
Cache artwork information in database, for quicker lookup.
-
Table for artwork locations for Artists/Albums
-
Sync logic implementation
-
Update relative coil components to enable new implementation
Stage 8 More Enhancement
- Enhanced Search
Player Refactor
This part is currently work-in-progress.
Refactor Playings Queue
-
integrate PlayingQueue, History, Song Play Count into one Database
-
enhance PlayingQueue with player, support playing other source beside MediaStore, like content uri
-
update UI etc
Migrate to Exoplayer (Media3)
Migrate player backend to Exoplayer/ Jetpack Media3
-
Implementation as an independent
PlayerController -
Integrate as an opt-in experimental feature
-
Drop legacy Implementation
-
Refactor architecture for
Exoplayer -
support state of "buffing"
Native Player Decoder (Tentative, possibly canceled)
Integrate with native decoder like ffmpeg or Symphonia.
- Test for NDK Cross Compile
Exoplayer with ffmpeg backend
-
Migrate to Exoplayer first
-
Build its
ffmpegdecoder library -
Integrate native decoder
-
Reproducible Builds
Full native route (possibly canceled)
-
Build the native decoder
-
Player support in JVM side.
-
Glue and logical code in Native side.
-
Reproducible Builds
Online Player (Tentative, possibly canceled)
-
(Tentative and Planing) Extend player, support Samba/NFS/SFTP
-
(Tentative and Planing) Refactor File relative UI
-
...
Enhance Main Player UI
-
better tablet support and landscape layout enhancement
-
more Now Playing Screen styles (Tentative)
-
enhance SlidingMusicBar (Tentative, possibly canceled)
Modularize
Disassemble project into multiple small Gradle modules. It's in staging.
-
extract base module
api -
split ui and mechanism logic as modules
-
further split mechanism logic by aspect/facet
-
further split ui
-
create light weight variant by removing non-essential modules (Tentative)
Migrate Settings to Protobuf Datastore
Migrate current settings backend from Preference Datastore to Protobuf Datastore:
-
prepare infrastructure
-
partial migrate all Json based settings with custom datatype
-
earlier stage backup and backward compatibility support
-
migrate path filter, and remove its legacy database implementation
-
full migrate
-
full backup and backward compatibility support
Unit Tests
Write unit tests for core mechanism / logic.
(Waiting for detailed road map)
Redesign Album Detail and Artist Detail (Tentative, possibly canceled)
Redesign them for a more appealing appearance, and enhance their efficiency and maintainability.
(Waiting for detailed road map)
Playlist Detail Enhancement (Tentative, possibly canceled)
-
Handling intent of open (playlist) file
-
Enhance search support
-
Better way to modify playlist
Misc Development Plan
-
Improve App Intro (Tentative, possibly canceled)
-
Support some Android's StatusBar lyrics, such as FlyMe / EvolutionX