docs: changelog 1.2 + CLAUDE.md notes (web router, album_artist derivation)

CHANGELOG: 1.2 entry for the post-1.1 work — web forward/back navigation, album
detail album-artist, metadata autofill "&" normalization, Android Erkunden back
re-assert + directional tab transitions, and the backend mixed-artist / album_artist
download fixes.

CLAUDE.md: album/artist download album_artist comes from iTunes collectionArtistName
(not the request/lead-single artist); client-side History router applies nsIdx on
popstate for both directions and must never pushState in the back path.

README left unchanged — the post-1.1 changes are fixes/polish, not new features.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
HoneyandClaude Opus 4.8 committed 2026-07-25 10:29:40 +02:00
1 parent b1a32f5130
commit f21174bd2c
2 files changed
+28

No files matched your search

+8
View File
@@ -21,6 +21,10 @@ plus a **Node.js/Express backend** that downloads tracks via yt-dlp and proxies
- `src/` — web PWA (vanilla ES modules). State in `src/state.js` (the `S` object);
Subsonic/iTunes API in `src/api.js`; views in `src/views/`, UI in `src/ui/`.
- **Client-side router** (`src/views/navigation.js`, History API): `navigate()` pushStates `{nsIdx}`
only on genuine new navigation; `popstate` applies the target entry's `nsIdx` for **both** back and
forward. Never `pushState` inside the `popstate`/back path — it wipes the browser's forward stack
(that was the "forward doesn't work" bug). In-app back buttons call `history.back()` (one path).
- `backend/novasonic-server.js` — Express API (downloads, metadata edit/delete, events/ABS proxy).
- `backend/lib/` — `ytdlp.js` (download + cascade + ffmpeg tagging), `downloader.js`,
`metadata.js` (iTunes lookup, file resolution helpers), `config.js`, `jobs.js`, `romaji.js`.
@@ -68,6 +72,10 @@ Backend runs in Docker (see `docker-compose.yml`); on the deploy host it lives a
so without this every track on a soundtrack searched the album-artist blob + its channel filter and
matched nothing (e.g. "Strategy" = TWICE, "Love, Maybe" = MeloMance failed). The `album_artist` tag
still uses `albumArtist`, so album grouping is unaffected.
- **Album/artist download `album_artist`** comes from the iTunes tracks' `collectionArtistName`
(album-level, identical across the album), derived in `novasonic-server.js` — **not** the request's
`artist`, which can be the lead single's performer (a KPop soundtrack got tagged `album_artist=TWICE`
from track 1 "TAKEDOWN"). Falls back to the request artist only when iTunes omits it.
- **Always write an `album` tag.** `ytdlp.js` defaults it to `Singles` when no album is known.
Previously no tag was written at all, so Navidrome showed its own "Singles" fallback while the
metadata editor showed "[Unknown Album]" — the two never matched and file resolution failed.