Navidrome — Maintainer Roadmap

Derived from open milestones, issues & PRs of navidrome/navidrome via an NKS reasoning graph. Every cited item shows its verified author and an author-role weight. Inferred dependencies are marked as hypotheses.

Honesty note (shabda intake). Issues and PRs are external word, taken in as hypotheses, not verified truth. #NNN always denotes a real GitHub issue/PR; directions are named D1…D5, never by internal id. An open PR is work in flight, not a guarantee it will land.

What to do next

Committed milestones

The four open GitHub milestones — the maintainer's scheduled plan, the strongest single signal. Every open milestone issue is listed in full.

Big Refactor 2 open · 22 closed

aka New Scanner; tracking #2709.

#TitleAuthorAssoc.WeightDir.
#2650 Recently Added shouldn't rely on Update but Create timestamp anarcatNONEhigh · milestoneD1
#1652 Support for non-numeric tracknumbers tags awsmsNONEhigh · milestoneD1

New UI 4 open · 15 closed

Rewrite of the Web UI on React-Admin 5/6.

#TitleAuthorAssoc.WeightDir.
#3020 Web Player Skips Pachin0NONEhigh · milestoneD4
#1473 Add the Rating column to the Playlist view (Multiselect & Rate) WolfgangDpunktNONEhigh · milestoneD2
#389 Import, display and filter by Label/Publisher BaswazzNONEhigh · milestoneD1
#245 Remember playing queue and last position (partial audiobook support) JaneX8CONTRIBUTORhigh · milestoneD4

Plugins 0 open

Committed milestone (add a plugin system) with no open issues on the board. Live plugin-host work is driven through open PRs in D3 (#5643, #5655, #5668).

Full Text Search 0 open · 2 closed

Committed milestone (FTS in the DB + an omni search bar) with no open issues remaining. Live nearby work: CJK-search perf PR #5614 (in D3).

Directions

Ordered by signal strength (D1 carries the most committed + maintainer items). No hard dependencies between directions — each is independently actionable.

D1Metadata, tagging & library identity

Library identity becomes authoritative and editable: writable tags, configurable artist/track identity (PID, MBID, credited participants), correct non-numeric & grouped sorting, MusicBrainz enrichment — on a scanner/DB model that orders by the right timestamps and survives without corruption.

Driving issues & PRs
RefWhatAuthorWeightState
#5527Configurable PID.Artist + credited participantsdeluan MEMBERhighopen PR
#5453Metadata-management / tag-writing systemSerikpg NONElowopen PR
#5662Annotation-index speedup for smart playlistsdeluan MEMBERhighmerged ✅
#5568Scanner.IgnoreDotFolders — index dot-foldersdeluan MEMBERhighmerged ✅
#5668Match similar/top songs across multiple artistsdeluan MEMBERhighmerged ✅
#389Import/display/filter by Label/Publisher (ms: New UI)Baswazz NONEhigh · msopen issue
#1652Non-numeric tracknumber tags (ms: Big Refactor)awsms NONEhigh · msopen issue
Open risks (bugs)
RefRiskAuthorWeight
#4830"database disk image is malformed" — SQLite corruption / data loss (most severe reported bug)Toniobmedium
#2650Recently Added ranks by Update not Create timestamp (ms: Big Refactor)anarcathigh
#2575API serves a fallback artist image instead of 404tzugenmedium

Unblocks: a correct, writable, well-ordered library identity — the substrate every other direction draws on.

D2Ratings & personal listening signals

A listener's ratings become first-class and act everywhere: rate from the player, rate in bulk, see ratings in every list (incl. playlists), aggregate across users, and let ratings shape playback (skip low-rated in shuffle).

Driving issues & PRs
RefWhatAuthorWeightState
#5550SkipLowRatingInShuffle — exclude 1-star from shuffleFinomosec NONEmediumopen PR
#5570Inline star-rating control in the player toolbarrealrossmanngroup NONElowopen PR
#5552Bulk rate/like multiple selected songsFinomosec NONElowopen PR
#5561User ratings with cross-user average displayplutskiy NONElowopen PR
#1473Rating column in Playlist view + Multiselect & Rate (ms: New UI)WolfgangDpunkt NONEhigh · msopen issue

Unblocks: ratings as a usable signal — feeds shuffle/queue behaviour and the ratings-in-playlists UI (#1473). Leans on D1's identity model.

D3Subsonic / OpenSubsonic API & plugin extensibility

A fully OpenSubsonic-compatible, extensible server: missing API endpoints & attributes (play history, work/movement, podcasts, working jukebox), and a plugin host exposing core services (song matcher, shared DTO types, faster CJK search).

Driving issues & PRs
RefWhatAuthorWeightState
#5643Expose song matcher as a plugin Matcher host servicedeluan MEMBERhighopen PR
#5655Shared types package for plugin DTOs (PDK refactor)deluan MEMBERhighopen PR
#5614NOCASE covering indexes to speed up CJK searchdeluan MEMBERhighopen PR
#5650getSongHistory Subsonic endpointVoten641 NONElowopen PR
#5659OpenSubsonic works / movements attributesdeluan MEMBERhighmerged ✅
Open risks (bugs)
RefRiskAuthorWeight
#2771Jukebox (server-side playback) control does not workjulienlagmedium

Unblocks: the plugin host surface — which D1's external-metadata enrichment may depend on (hypothesis below). Carries the live work behind the otherwise-empty Plugins and Full Text Search milestones.

D4Web player & UI experience

A richer, more reliable listening surface: a player that doesn't skip, browsable album artwork, an artist page, audiobook-style resume, rendering lyrics (incl. external .lrc), themeable UI, smoother share downloads, localized dates.

Driving issues & PRs
RefWhatAuthorWeightState
#5598Album image gallery / lightboxBorisLord NONEmediumopen PR
#5631Share-download dialog: current item vs. whole sharekatedickey NONElowopen PR
#5664Add Rosé Pine themes (based on Catppuccin files)draconivis NONElowopen PR
#5632Single ParseLyrics entry point; fixes sidecar lyricsdeluan MEMBERhighmerged ✅
#3020Web Player Skips (ms: New UI)Pachin0 NONEhigh · msopen issue
#245Remember queue & last position / audiobook resume (ms: New UI)JaneX8 CONTRIBUTORhigh · msopen issue
Open risks (bugs)
RefRiskAuthorWeight
#3020Web player skips during playback (ms: New UI)Pachin0high
#4148External sidecar .lrc lyrics don't render (related fix merged in #5632)CrazyVito11medium

Unblocks: a reliable listening surface — the most user-visible direction; #3020 and #245 are committed New UI milestone work.

D5Multi-user: authentication, sharing & social

A genuinely multi-user server: stronger/flexible auth (app passwords, LDAP/AD, improved SSO), shareable & co-edited playlists, and social features — seeing what others play, synchronized listening, following public playlists.

Driving issues & PRs
RefWhatAuthorWeightState
#5460Playlist view/edit permissions — collaborative playlists (API; UI pending)DerRockWolf NONEmediumopen PR
#5513Per-user named app passwords (revocable secondary creds)zkvvoob NONElowopen PR

Unblocks: real multi-user use — app passwords and shared playlists are the first stepping stones toward the social features in the telos.

Dependencies

No confirmed anantara ordering between directions — D1–D5 are each independently actionable, and the four committed milestones can be worked in parallel.

D1Metadata D2Ratings D3API / plugins D4Web player D5Multi-user — all parallel-ready
HYPOTHESIS — heuristic, unverified

D1's external-source metadata enrichment (e.g. missing studio albums from MusicBrainz #5106, multi-artist matching) may lean on the plugin-host surface delivered in D3 — the song matcher exposed as a host service (#5643) and the merged multi-artist matcher (#5668). This is the roadmap author's architectural inference, not established by any issue, PR, or maintainer statement. Treat it as a sequencing hint, not a gate: D1 holds 3 of the open committed-milestone items and is independently actionable.
Closing criterion: a maintainer statement either confirms the dependency (then it becomes a real D1-after-D3 ordering) or denies it (then drop the hint).