From efb765e21dcc8f371b2472a6e46959c61d2e6f11 Mon Sep 17 00:00:00 2001 From: DynamycSound Date: Mon, 20 Jul 2026 08:25:00 +0000 Subject: [PATCH] release: v1.6.2 batch matching parity, fast mode, and #11/#12 fixes Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01QADiJzVyNycc1w28sirc1a --- RELEASE_NOTES.md | 30 ++++++++++++++++++++++-------- app/build.gradle.kts | 4 ++-- 2 files changed, 24 insertions(+), 10 deletions(-) diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index 87338b0..588676a 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -1,13 +1,27 @@ -## MusicResync v1.6.1 +## MusicResync v1.6.2 -### Way faster lyrics search (fixes #9) -Searching for lyrics could take **up to ~10 minutes** when a song was only available on a provider late in the chain (like QQ Music): every provider was tried one after another, each with its own retries and long network timeouts. +### Batch matching now finds what single-song search finds (fixes reports of "it works when I open the song, but not in batch") +The batch downloader was missing two things the single-song screen already had, which made it fail on songs like **Ariana Grande - Focus** (artist tag `Unknown`), **D-Devils - 6th Gate**, and **Tyler, The Creator - Tamale**: -- **All providers are now queried at the same time.** The total wait is roughly the time of the fastest provider that has your lyrics — not the sum of every slow one before it. -- **Per-provider time budget (25s).** A hung or unresponsive provider is skipped instead of stalling the whole search. -- **Snappier retries.** Failed requests still retry with exponential backoff, just with shorter delays (0.5s → 1s → 2s). -- **Tighter network timeouts** (12s per request, 6s connect) so a dead provider fails fast. +- **Every provider hit is now also scored against the parsed filename/title view of the track, not just the raw tags.** A junk tag like title `"Ariana Grande - Focus"` / artist `"Unknown"` used to make the scorer reject the correct hit outright (it saw a weak title match and a "disagreeing" artist); it's now also compared against the cleaned `Focus` / `Ariana Grande` reading, which matches. A safety guard still requires an exact runtime match before an artist-less reading can carry a result to auto-accept, so a same-titled song by the wrong artist still can't sneak through. +- **Batch now runs the same last-resort rescue** (canonicalizing a messy name via iTunes/Deezer, then re-querying) that only the single-song screen had before — this was the actual reason a song could be found by opening it manually but not during a batch run. Rescues are still validated against duration/title evidence and are always saved as "review", never silently auto-accepted. +- Placeholder artist tags (`Unknown`, `Various Artists`, ``, …) are now treated as missing information instead of as evidence that contradicts a correct match. +- Filenames with a `(feat. ...)` clause followed by junk (e.g. `Biba - Harli Kvin (feat. AV47) [Official Audio] _420(MP3_320K).mp3`) are now parsed correctly, and trailing junk numbers left over from ripper suffixes are stripped for an extra fallback query. +- Rescued matches whose album art visually matches your file's embedded cover get a small confidence boost — a *different* cover is never held against a match, since re-releases and singles legitimately use different art. -Your provider order from Settings still decides which match wins when several providers find the song, and requests to each individual provider remain sequential and politely delayed — so rate limits are respected exactly as before. Both the single-song search and the batch download benefit. +### Fast mode (new, opt-in) +A new toggle in Settings races only the two fastest providers with a short timeout for single-song search — quicker answers at a small cost to thoroughness. Off by default; the full search remains the default everywhere. + +### Fixed: lyrics preview showing wrong state / stuck loading (#11) +The synced-lyrics player and the batch "tap to view lyrics" preview only ever checked for a sidecar `.lrc` file, so a song with lyrics *embedded in the audio tags* looked like it had none — the player said "no lyrics found" and the batch preview spun forever. Both now also check embedded lyrics and always resolve to a real result. + +### Removed redundant menu options (#12) +The home screen's three-dot menu now only has Settings — "batch download" already has its own button, and the lyrics-provider order lives in Settings, so the duplicate entries are gone. + +### More honest provider status +In the single-song screen's provider dropdown, a provider that found usable lyrics but simply wasn't the best match is now shown as "found lyrics" instead of a red X. Only providers that were actually queried can now be marked as having failed — ones skipped by an early match stay "not tried yet". + +### Polish +Saving lyrics (.lrc or embedded) now has a proper success animation instead of an instant text swap. Install over your existing app — it's signed with the same key, so it upgrades in place. diff --git a/app/build.gradle.kts b/app/build.gradle.kts index e5601a6..96990a2 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -15,8 +15,8 @@ android { minSdk = 21 //noinspection OldTargetApi targetSdk = 35 - versionCode = 161 - versionName = "1.6.1" + versionCode = 162 + versionName = "1.6.2" vectorDrawables { useSupportLibrary = true