v1.7.0: full-reliability Fast mode (batch default), player scroll fix, fluke closure - #17
Merged
Conversation
… closure
- Fast mode no longer truncates to 2 providers: all enabled providers race
in parallel with tight budgets (the truncation silently skipped LRCLib
and cost real matches: Ili Ili, Peta Brzina). Added batch fast-mode
toggle at the top of batch options, default on, marked Recommended.
- Player: currentIndex derivedStateOf was unkeyed and captured the
initially-empty async-loaded lines list forever (Home entry) — the
highlight and auto-scroll never moved. Keyed on lines. Enhanced-LRC
word stamps stripped from display; word-stamp-only lines now play.
- Batch impostor guard: a hit or rescue whose artist agrees with no local
reading now requires positive cover-art confirmation — a duration
coincidence alone no longer saves wrong lyrics ('200' by Tveth case).
Plain fallback gets the same guard.
- Cyrillic→Latin transliteration in normalizeForCompare (Секси == Seksi).
- Double quotes stripped from queries ('Summer Cem - "TMM TMM"').
- Version 1.7.0 (170); release notes; 2 new regression tests.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QADiJzVyNycc1w28sirc1a
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fast mode: reliability restored, promoted to batch
Live-probe diagnosis of the latest "no lyrics found" screenshots: most of those songs ARE on LRCLib, synced ("Ili Ili" by Seksi, "Peta Brzina" by Vlada Matovic, "TMM TMM" by Summer Cem) — but the user ran fast mode, which truncated the provider list to the top 2, so the provider that has them never ran (rows show only QQ/Netease tried). Since providers already race in parallel, truncation bought ~nothing and cost real matches.
MatchConfig.fast()now keeps all enabled providers and the full candidate ladder; speed comes from tight retry/timeout budgets + the early auto-accept stop.batchFastModesetting (default on), surfaced at the top of batch download options labeled Recommended; batch runs now use the fast config when enabled.Player: the real "stuck at first line" bug
val currentIndex by remember { derivedStateOf { ... lines ... } }— unkeyedremembercaptured the initially-emptylineslist forever when lyrics load asynchronously (the from-Home path added with the issue-#11 fix), so the highlight and the auto-scroll never moved for the whole song. Nowremember(lines). Also:<00:40.49>) are stripped from displayed text (they were rendered raw), and lines carrying only word stamps now parse using the first word stamp as line time.Batch impostor guard (the "200" fluke)
"200" (Ourmoney) got Russian lyrics from a same-length "200" by Tveth/Sevnz/Лора — the exact-runtime escape let a disagreeing artist through and the cover second-opinion was advisory only. In batch (which saves unattended), a hit or rescue or plain-fallback whose artist agrees with none of the file's artist readings now requires positive cover-art confirmation, else it's skipped. The single-song screen keeps the escape since the user visually judges results there. The correct "200" exists on LRCLib as plain lyrics and is reachable via the unsynced fallback.
Cross-script matching
Serbian/Russian Cyrillic → Latin transliteration in
normalizeForCompare(aligned with diacritic stripping: ж→z like ž→z): "Секси" == "Seksi". Cyrillic-indexed provider entries stop counting as strangers; genuinely different Cyrillic acts still disagree.Query recovery
Double quotes (straight + smart) stripped from titles:
Summer Cem - "TMM TMM"now reaches providers (LRCLib has it synced ×3).Providers investigated, honestly
Verified live: QQ indexes the missing Serbian songs (Prazan Disko, Volim Pare — exact ids found) but its lyric backend returns empty for them (sanity-checked working on Shape of You); Genius is Cloudflare-blocked with no usable tokenless API; tekstovi.net has no machine-readable search. No new provider is added because none would deliver lyrics — recovery comes from the fixes above. Songs absent from every catalogue keep failing honestly.
Version
1.6.4 (164)→1.7.0 (170).Testing
MessyNameRecoveryTest— pass.SuicideboysMatchTest.loot(fails on unmodified master).:app:compileDebugKotlinclean.🤖 Generated with Claude Code
https://claude.ai/code/session_01QADiJzVyNycc1w28sirc1a
Generated by Claude Code