From a5e5d414b47b997f72639dc1c810ee780545d229 Mon Sep 17 00:00:00 2001 From: Honey Date: Thu, 13 Aug 2026 01:18:12 +0200 Subject: [PATCH] docs: record ideas in the bottom Planned/Backlog, mention Musik-Match in README Move the share-links / Wrapped / household-leaderboard / ListenBrainz ideas into the existing "Planned / Backlog" section at the bottom of the CHANGELOG (not a new top section), and add a short Musik-Match clause to the README listening-stats feature. Co-Authored-By: Claude Opus 4.8 --- CHANGELOG.md | 27 ++++----------------------- README.md | 2 +- 2 files changed, 5 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index cd98069..9842326 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -64,29 +64,6 @@ Versioning: two-part `MAJOR.MINOR` — each release bumps the minor (features an --- -## Ideas / Backlog - -Planned features and ideas, newest first. Moved into a release section once built. - -- **Share by link** — share a song/album via a link within the instance (e.g. send a track to - another user of the same server). One `https://…` URL that deep-links into the **PWA on desktop** - and the **Android app on phone** (like Spotify/YouTube links). Approach: Android **App Links** - (`intent-filter` + hosted `/.well-known/assetlinks.json` with the *release* signing SHA-256) so the - phone opens the app directly; PWA `launch_handler`/`handle_links` to capture links on desktop. - Link format leaning **query param** `?song=` (no server SPA-rewrite; App Links match on `/`; - the PWA reads the param on load). Link carries only the song id — no secrets; playback still uses - the recipient's own Navidrome creds. Start with songs → albums/artists/playlists. Web: Share button - via `navigator.share()`; Android: `ACTION_SEND`. -- **Yearly Wrapped** — a yearly story (`/scrobble/wrapped` + web story page + Android pager), - building on the existing stats aggregations. (Also tracked in the parity matrix as 🔜.) -- **Household leaderboard** (>2 users) — "who listened most this month", top artists across all - users. The 2-user **Musik-Match** (Head-to-Head) is already built; this is the broader multi-user - version. Needs wider cross-user reads (admin/household mode gated by admin check, or an aggregate - leaderboard endpoint that exposes per-user totals only, never raw histories). -- **ListenBrainz relay** (optional) — mirror counted plays to ListenBrainz. - ---- - ## [2.0] — 2026-08-07 Big change: **NovaSonic gets its own self-hosted, multi-user listening archive.** Navidrome only stores a play *count* and the *last* play date — no timestamped history — so per-day/month/year stats and a yearly "Wrapped" were impossible. Koito and Spindle (the off-the-shelf options) are effectively single-user. Since NovaSonic *is* the player, it now records every counted play into an **isolated scrobble service** with its own database, and shows the results in a **statistics view on web and Android**. This runs **in addition to** the existing Navidrome/Last.fm scrobble — it never replaces it. @@ -460,6 +437,10 @@ Primary causes identified: ## Planned / Backlog ### Features +- **Web + Android** — **Share by link** — share a song/album to another user of the same instance via one `https://…` link that deep-links into the **PWA on desktop** and the **Android app on phone** (like Spotify/YouTube links). Android **App Links** (`intent-filter` + hosted `/.well-known/assetlinks.json` with the *release* signing SHA-256) open the app directly; PWA `launch_handler`/`handle_links` capture links on desktop. Link format leaning query param `?song=` (no server SPA-rewrite; PWA reads it on load). Carries only the song id — no secrets; playback uses the recipient's own Navidrome creds. Songs first → albums/artists/playlists. Web: `navigator.share()`; Android: `ACTION_SEND`. +- **Web + Android** — **Yearly Wrapped** — a yearly story (`/scrobble/wrapped` + web story page + Android pager), built on the existing stats aggregations. +- **Web + Android** — **Household leaderboard (>2 users)** — "who listened most this month" + top artists across all users; the broader multi-user version of the already-built 2-user Musik-Match. Needs wider cross-user reads (admin/household mode, or an aggregate endpoint exposing per-user totals only, never raw histories). +- **Backend (optional)** — **ListenBrainz relay** — mirror counted plays to ListenBrainz. - **Web + Android** — **Discover Mixes (auto-download, temporary)** — themed/random mixes for discovering unknown music, Spotify-style (e.g. "Rock", "Charts", "Random Discovery"). Idea: - Generate a mix from a theme/genre/charts (sources: Last.fm / ListenBrainz similar + iTunes charts), then **auto-download** the tracks via the yt-dlp backend so they play locally. - **Temporary by default:** tracks **auto-delete after a configurable time** (e.g. 7 days) so the library doesn't fill up with stuff you didn't keep. diff --git a/README.md b/README.md index dfbd662..ac71a30 100644 --- a/README.md +++ b/README.md @@ -15,7 +15,7 @@ Built with Vite + vanilla ES modules (web) and Jetpack Compose + Media3/ExoPlaye - **Importer & downloads** — Paste a Spotify / YouTube / YouTube Music / SoundCloud link to download via yt-dlp, with Deezer metadata enrichment and duplicate detection. - **Metadata editor** (web) — Edit tags + cover art; files are renamed/moved and Navidrome is rescanned on save. - **Offline** (Android) — Download albums, playlists, or single songs to private storage; an Offline tab to play and manage them (works without a server connection); downloaded tracks play from disk on every screen. -- **Listening stats** — A separate, self-hosted scrobble service records **timestamped plays** (multi-user; Navidrome only keeps a play *count*). A statistics view (Web + Android, from Settings) shows totals, top artists/tracks/albums with cover art, a day/month/year play series, and a 24h listening clock. Runs *in addition to* Navidrome/Last.fm scrobbling. +- **Listening stats** — A separate, self-hosted scrobble service records **timestamped plays** (multi-user; Navidrome only keeps a play *count*). A statistics view (Web + Android, from Settings) shows totals, top artists/tracks/albums with cover art, a day/month/year play series, and a 24h listening clock, plus a **Musik-Match** that compares two users' taste. Runs *in addition to* Navidrome/Last.fm scrobbling. - **Audiobookshelf** — Browse and stream audiobooks with chapter navigation, speed control, sleep timer, and progress sync. Web is an installable PWA (themes, German UI); Android is native Jetpack Compose + Media3/ExoPlayer with a mini player, media/ABS notifications, and Android Auto. See [CHANGELOG.md](CHANGELOG.md) for the full web/Android parity matrix.