Skip to content

Hotfix v1.6.3: wrong-singer veto, smooth lyrics player scrolling, MusicResync rename - #15

Merged
DynamycSound merged 1 commit into
masterfrom
claude/song-matching-improvements-7tp3qn
Jul 20, 2026
Merged

Hotfix v1.6.3: wrong-singer veto, smooth lyrics player scrolling, MusicResync rename#15
DynamycSound merged 1 commit into
masterfrom
claude/song-matching-improvements-7tp3qn

Conversation

@DynamycSound

Copy link
Copy Markdown
Owner

Hotfix for wrong lyrics being saved (reported with screenshots)

Wrong-singer veto

v1.6.2 started judging provider hits against the parsed filename view of a track, which fixed junk-tag files but opened a precision hole: a short generic title matching some unrelated song exactly had nothing left to veto the wrong singer when the winning view carried no artist. Reported cases, all reproduced in new unit tests:

  • "PETROV - RARI" → "Rari" by lil doggo (German song)
  • "Numero - BMW" → "BMW" by Cecilio G., Anti
  • "UKIC X PETROV - A TI?" → "A Ti" by Dyango
  • "QuESt - Automatic" → "Automatic (Live)" by 宇多田ヒカル (Netease)

The veto: when the file yields any artist guess (raw tag or any parsed candidate) and the provider's artist agrees with none of them, the hit is rejected — applied in the main provider search, the plain-lyrics fallback, and the last-resort rescue (selectBestRescue). Escapes that preserve v1.6.2's recall wins:

  • an exact runtime match (≤2s) still overrides a disagreeing artist — the same trust ConfidenceScorer has always applied;
  • a provider result with no artist at all is untouched;
  • a provider artist in a different script (normalizes to nothing comparable) counts as disagreeing — it cannot be the name our Latin guess spells, and the duration escape still saves genuine cross-script matches.

Also: REJECT-tier hits no longer drive the early-stop/auto-accept short-circuits (a vetoed 90% "match" must not cancel other providers).

Lyrics player follows the song smoothly

The synced player only scrolled once the highlighted line left a visibility window — it looked like it wasn't following the song, then lurched a window at a time. Replaced with a continuous glide (animateScrollBy, 600 ms ease) that settles the active line just above centre; far-off jumps (seek/tap) land directly.

SongSync → MusicResync

All user-facing "SongSync" strings replaced across every locale, including the [by:Generated using …] tag written into .lrc files, About/Settings texts and the welcome screen. The "Original project: SongSync by Lambada10" credit and internal theme identifiers are intentionally unchanged. LRCLib User-Agent now points at this repo.

Version

1.6.2 (162)1.6.3 (163), release notes rewritten for the hotfix.

Testing

  • 8 new tests in WrongSingerVetoTest (all four reported songs + escape hatches + collab-artist false-positive check) — pass.
  • Existing BadMetadataMatchTest (v1.6.2 recall wins) — pass, no regressions.
  • Full suite: 63 tests, only pre-existing failure is SuicideboysMatchTest.loot (live-network LRCLib data drift, fails identically on unmodified master).
  • :app:compileDebugKotlin clean.

🤖 Generated with Claude Code

https://claude.ai/code/session_01QADiJzVyNycc1w28sirc1a


Generated by Claude Code

…ync rename

- Reject provider hits whose artist agrees with none of the file's artist
  guesses (raw tag or parsed filename) unless the runtime matches exactly.
  Closes the v1.6.2 hole where a short generic title (Rari, BMW, A Ti,
  Automatic) saved lyrics of a completely different song via artist-less
  title-only views, across search, plain fallback and last-resort rescue.
- REJECT-tier hits no longer drive the early-stop or provider-best logic.
- Synced lyrics player now glides continuously to keep the active line just
  above centre instead of window-jumping, and lands directly on far seeks.
- All user-facing SongSync texts renamed to MusicResync (incl. the [by:]
  tag in generated .lrc files) in every locale; original-project credit kept.
- Version 1.6.3 (163) + release notes; 8 new regression tests.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QADiJzVyNycc1w28sirc1a
@DynamycSound
DynamycSound merged commit c219823 into master Jul 20, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant