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 ffmpeg decoder 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