Skip to content

Fix the open issues after 0.19.0 - #740

Merged
thcp merged 5 commits into
next-releasefrom
fix/open-issues
Oct 1, 2026
Merged

thcp merged 5 commits into
next-releasefrom
fix/open-issues

Conversation

@thcp

@thcp thcp commented Oct 1, 2026

Copy link
Copy Markdown
Collaborator

The open issues after 0.19.0, apart from the duet (#638) and drum separation (#694, closed as not planned for now).

What changes

Checked

  • pytest: 2381 passed; the 8 failures are the known machine-local ffmpeg ones.
  • Playwright: 433 passed. Node tests, ruff, bandit and the i18n coverage check are clean.
  • clippy and 128 Rust tests pass after the lock bump.
  • uv.lock is unchanged, so the in-app update still applies.

Closes #738
Closes #725
Closes #735
Closes #734
Closes #719
Closes #701

Thales added 5 commits October 1, 2026 13:36
rustls 0.23.40 -> 0.23.45 (RUSTSEC-2026-0285) is reached through reqwest
at runtime: every download and the updater. plist 1.9 -> 1.10.1 moves
quick-xml 0.39.3 -> 0.42.0 (RUSTSEC-2026-0194, -0195), build time only.
Lockfile only: no Cargo.toml or uv.lock change, so the in-app update
still applies. cargo audit now reports no vulnerabilities, only the
existing unmaintained and unsound warnings.

Closes #738
The top bar's right-hand end follows the layout suggested in #725:
Detect structure sits over the main button, which now reads Extract
stems to match the Extract row it acts on, in all ten languages, and
the Collapse toggles stack in a column beside them. That end of the bar
is about 50px narrower.

The Now Playing card no longer leaves the bar below 1460px, which took
About this song with it and left no way to open it (#735). It gives way
in steps instead, by container query: the artwork and meta line first,
then the title, down to the heart and the About button. The grid gives
the card a 72px floor, so the Extract chips fold into their overflow
button before the card can be squeezed out.

Tests: about-reach.spec.mjs opens About this song at 1024, 1280, 1366
and 1600px, which fails on the old layout below 1460, and checks the
stacking. favorite-reach.spec.mjs no longer expects the card's heart to
be hidden.

Closes #725
Closes #735
Favourites lived only in the studio's catalog store, which the phone
cannot reach: it had no heart to press, and its Favorites chip set a
filter nothing read, so it listed every track.

Each job now carries favorite (null until a client says, then true or
false), set by PUT /api/jobs/{id}/favorite with a strict bool. The
studio sends every heart there, adopts the server's value on each sync
and when its window is looked at again, and hands up a heart set before
this change while the server still says null. The phone has a heart on
every row and the chip filters for real.

Tests: test_jobs_favorite.py covers the endpoint (shape, strict body,
404, crafted ids, the record round trip); favorite-sync.spec.mjs covers
both directions and the phone. The e2e helpers stub the writes so no
spec leaves a favourite on the shared backend.

Closes #734
Lyrics were matched to a song in two places: the import's lookup on the
server, and the Lyrics tab's own LRCLIB search in the browser, each
with its own copy of which version is this song by this artist and
which length fits. They were kept equal by hand, and when they drifted
a track could get lyrics at import and none in the tab.

The tab now asks POST /api/jobs/{id}/lyrics/lookup, which runs the
import's lookup, keeps what it finds the way the import does, and
answers as GET .../lyrics then would: 502 when LRCLIB is out of reach,
404 with nothing_known when the track says too little. The band saved
in the artist box goes along, since it lives in the studio's store.
LRCLIB is still only asked when the tab is opened or at import, and a
phone or offline client still shows kept lyrics.

The browser's search, ranking and artist matching are gone from
lyricsLookup.js, and LRCLIB leaves the page's connect-src. sameSong
stays, for lyrics the tab kept before the server held them to the song.

Tests: test_lyrics_api.py covers the endpoint (kept, saved band,
nothing known, another artist, offline, crafted ids); the lyrics e2e
specs answer the lookup with stubLyricsLookup, which keeps lyrics the
way the server does; acceptance E4 answers it as LRCLIB unreachable.

Closes #719
Speed was a fixed 0.75x or 1x. Some fills want 0.75x and some only a
nudge, which is what #701 asked for. The slow button now moves a
hundredth at a time when scrolled over, or with the up and down arrow
keys on it, between 0.50x and 0.99x, and plays at it. Its label is the
speed, so the footer keeps its width, 1x stays one press away, and the
slow speed is kept between sessions. The tooltip says how, in all ten
languages.

The 0.75x floor came from WSOLA, whose artefacts made slower speeds
hard to follow (#433). Signalsmith Stretch (#729) holds up further
down, so the floor is 0.5x. A turn of the wheel is applied once it
stops, since each change of rate flushes the tempo stage.

Tests: slow-speed.spec.mjs (wheel, arrow keys, both limits, a reload).

Closes #701
@thcp
thcp merged commit 094e0a9 into next-release Oct 1, 2026
12 of 13 checks passed
@thcp thcp mentioned this pull request Oct 1, 2026
thcp added a commit that referenced this pull request Oct 2, 2026
Release 0.19.1: everything on `next-release` since v0.19.0.

- #727: slowed playback without stutter, doubled kicks or echo
(Signalsmith Stretch as the tempo stage).
- #737: the bugs reported against 0.19.0 (CUDA setup, torch that cannot
load, favourites in a narrow window, minor keys, the key label).
- #740: the remaining open issues (top bar and Extract stems, the card
at every width, favourites on the phone, the lyrics lookup on the
server, an adjustable slow speed, Rust advisories).
- #741: trivy ignores the two urllib3 CVEs until the lock next moves.
- #743: a 0.5x button beside the slow speed.

Verified on local Windows NVIDIA builds: 0.19.1.dev0 passed 12 of 12
(#727, #737), and 0.19.1.dev1 passed 18 of 18 automated checks including
#740, in an isolated profile. `uv.lock` is unchanged since v0.19.0, so
the in-app update works.

Closes #722
Closes #728
Closes #729
Closes #723
Closes #724
Closes #726
Closes #730
Closes #731
Closes #732
Closes #733
Closes #736
Closes #701
Closes #738
Closes #725
Closes #735
Closes #734
Closes #719
Closes #742
@thcp
thcp deleted the fix/open-issues branch October 5, 2026 08:41
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