From 0fe2de50841edac9a40e8fda89417101026e3a65 Mon Sep 17 00:00:00 2001 From: Honey Date: Fri, 19 Jun 2026 18:35:21 +0200 Subject: [PATCH] docs(changelog): release 0.8 + switch to two-part MAJOR.MINOR versioning MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Promote 0.7.1 → 0.8 with this session's work (Mittelweg cascade, web_music client, clean filename, duration-filter + metadata-editor fixes, squid removal) - Drop the patch component from all historical versions (0.7.0 → 0.7, etc.) - Add Metadata editor and Song delete rows to the parity matrix (Web only) Co-Authored-By: Claude Opus 4.8 --- CHANGELOG.md | 32 ++++++++++++++++++++++---------- 1 file changed, 22 insertions(+), 10 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b12f056..57de618 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,7 +2,7 @@ All notable changes to NovaSonic are documented here. Format follows [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). -Versioning: `MAJOR.MINOR.PATCH` — minor = new feature, patch = fix/improvement. +Versioning: two-part `MAJOR.MINOR` — each release bumps the minor (features and fixes together). --- @@ -32,6 +32,8 @@ Versioning: `MAJOR.MINOR.PATCH` — minor = new feature, patch = fix/improvement | Playlist create/edit | ✅ | ✅ | | Playlist cover upload | ✅ | ✅ | | Spotify / YouTube importer | ✅ | ✅ | +| Metadata editor (tags + cover) | ✅ | ❌ | +| Song delete (from disk) | ✅ | ❌ | | Import notification | ✅ | ✅ | | Import notification → nav | ✅ | ✅ | | ABS (Audiobookshelf) playback | ✅ | ✅ | @@ -48,17 +50,27 @@ Versioning: `MAJOR.MINOR.PATCH` — minor = new feature, patch = fix/improvement --- -## [0.7.1] — 2026-06-19 +## [0.8] — 2026-06-19 ### Removed - **Backend** — squid.wtf (Qobuz) download backend removed; downloads now exclusively use yt-dlp. `DOWNLOAD_BACKEND` and `SQUID_QUALITY` env vars are no longer read. +### Changed +- **Backend** — Download cascade "Mittelweg": when a track's duration is known but no result matches the duration window, the cascade no longer falls back to blind title-only/no-filter grabs (which pulled same-titled videos by other uploaders). It now relaxes only the duration constraint while still requiring the artist channel — and if nothing matches, the job fails cleanly with "Nicht eindeutig gefunden — bitte Direktlink im Importer nutzen" instead of silently saving the wrong song +- **Backend** — Duration match margin tightened from ±15% to ±10% (min 10s) to reject near-miss false positives +- **Backend** — YTM search uses the `web_music` player client so YouTube Music "Art Track" / topic uploads are reachable (the previous `android_vr` client reported many as "video not available") +- **Backend** — Search query uses a space between artist and title ("MINA recognize") instead of a dash, matching how the YTM search box ranks the exact track + ### Fixed -- **Backend** — YTM search query: album name was appended for short-title tracks (≤1 keyword), causing duplicated words when the album name starts with the title (e.g. "recognize - Single" → query `"MINA - recognize recognize Single"`); album is now only appended for Japanese titles where title keywords are stripped, matching spotdl behaviour +- **Backend** — YTM search query: album name was appended for short-title tracks, causing duplicated words (e.g. `"MINA - recognize recognize Single"`); album is now only appended for Japanese titles, matching spotdl behaviour +- **Backend** — Downloaded filename now strips the release suffix → `01 - Artist - Title.mp3` (no `- Single`/`- EP` in the filename); the album folder keeps the full album name. The embedded title tag is cleaned the same way +- **Backend** — Duration metadata from the iTunes resolver now reaches the yt-dlp duration filter for all importer paths (single, album, playlist, global search), so the right-length track is preferred +- **Backend** — Metadata editor / song delete: file resolution now tolerates a release-suffix mismatch between Navidrome's stored stem and the on-disk filename; the delete "file not found" error now reports the actual resolved path for diagnosis +- **Backend** — Download no longer aborts the search cascade when a single result is geo-blocked or unavailable (e.g. "This video is not available") — it continues to the next candidate --- -## [0.7.0] — 2026-06-18 +## [0.7] — 2026-06-18 ### Added - **Android** — Playlist create: "+" FAB on the Playlists tab opens a dialog to create a new playlist @@ -84,7 +96,7 @@ Versioning: `MAJOR.MINOR.PATCH` — minor = new feature, patch = fix/improvement --- -## [0.6.0] — 2026-06-17 +## [0.6] — 2026-06-17 ### Added - **Android** — Lyrics preload on NowPlaying open; lyrics load in background while on Player tab, so switching to Lyrics tab is instant @@ -101,7 +113,7 @@ Versioning: `MAJOR.MINOR.PATCH` — minor = new feature, patch = fix/improvement --- -## [0.5.0] — 2026-06 +## [0.5] — 2026-06 ### Added - **Android** — ABS full playback: chapter list, playback speed control, sleep timer, progress sync to ABS server @@ -120,7 +132,7 @@ Versioning: `MAJOR.MINOR.PATCH` — minor = new feature, patch = fix/improvement --- -## [0.4.0] — 2026-05 +## [0.4] — 2026-05 ### Added - **Android** — Full native app rewrite in Kotlin / Jetpack Compose (replaces React Native / Expo attempt) @@ -145,7 +157,7 @@ Versioning: `MAJOR.MINOR.PATCH` — minor = new feature, patch = fix/improvement --- -## [0.3.0] — 2025-Q4 +## [0.3] — 2025-Q4 ### Added - **Web** — Artist page: hero banner, iTunes + Navidrome album categorization, all-songs view @@ -166,7 +178,7 @@ Versioning: `MAJOR.MINOR.PATCH` — minor = new feature, patch = fix/improvement --- -## [0.2.0] — 2025-Q3 +## [0.2] — 2025-Q3 ### Added - **Web** — Spotify / YouTube / SoundCloud importer: resolve link → yt-dlp download → optional Navidrome playlist creation @@ -188,7 +200,7 @@ Versioning: `MAJOR.MINOR.PATCH` — minor = new feature, patch = fix/improvement --- -## [0.1.0] — 2025-Q2 +## [0.1] — 2025-Q2 ### Added - **Web** — Initial PWA music player (Vite + ES modules)