Repository navigation
Release 0.20.0 - #759
Merged
Merged
Release 0.20.0#759
Conversation
…nd, and a clear message for read-only portable installs (#752) fix(desktop): stop with a clear message when a portable install cannot write its folder (#746) A portable zip extracted under Program Files is not writable without admin. Setup, the CUDA torch swap and the updater all write inside the install, so it failed part way with "failed to write migration flag: Access is denied". At startup, a portable package that cannot write its own folder now shows a native error dialog naming the folder and where to move it, then exits. Elevation is not offered: an elevated window cannot receive drag and drop from Explorer, and every launch would prompt. The writability probe only runs for a portable package, so no other install gets a file written into its root at startup. Closes #746 fix(queue): trashing a song mid-extraction stops it, and imports never take the studio (#747, #748) #748: deleting a song from the library while it was extracting moved it to the Trash and left the job running, hidden. A stuck one held the queue with no way out, and after a restart it came back as a Paused row. - Trashing a queued or running job now stops it on the server, so the phone gets it too. It settles as the new "stopped" status with its files kept: only emptying the Trash deletes files, the rule finished tracks follow. - Restore brings it back to the library as Stopped. It does not queue it. An Extract button on the row (POST /api/jobs/{id}/extract) runs it again. - A stopped job is saved to registry.json and survives a restart in the Trash. A trashed job interrupted by a restart is stopped, never resumed. - Cancel now reaches the analyze stage: its ffmpeg is registered and it checks for cancel between steps. - A cancel or trash that lost the race to a finishing job no longer leaves its flags set, which made later vocal splits cancel themselves at once. - A cancelled job's folder is removed with the same retry delete_job uses. - On load, a library row still saying Processing asks the server where the job stands. - Queue rows use the library's trash icon. #747: an import with nothing open put its name and "Extracting" on the Now Playing card. Imports now always run in the background, and the first to finish opens by itself only if the studio is still empty and nothing, including a Sync again import, holds it. Closes #747 Closes #748 Closes #750 Closes #751
…the Trash icon (#756) feat(trash): hold a row for a second to restore it, pick several, and a count on the icon Restoring from the Trash used to mean dragging one row at a time onto the Library button, which nothing on screen explained, and a click on a trashed row opened it in the studio as if it were not trashed. Hovering a Trash row now turns its second line into "Hold left click for 1 second to restore". A click selects a row, Ctrl+click adds or removes one, Shift+click takes a range. Holding the mouse button, or Enter, for a second restores the row, or the whole selection when the row is part of it; letting go early does nothing. Every row the hold will restore fills while it is held. Dragging onto Library still restores, the selection too. Restore never queues a song again (#748). The Trash icon carries the same count badge as the Queue, and its label says how many songs are in it, so a full Trash is visible from anywhere. Closes #749 Closes #755
feat(help): Guide in the rail makes the studio explain itself Nothing in the studio said what its controls do, and a new user has to press things to find out, which can start an extraction or delete a song. Guide, in the rail below Trash, turns help mode on, and a pill at the bottom says so. Pointing at a control, focusing it, or clicking it outlines it and shows a box beside it with the control's own label and what it does, in plain words. Nothing else is marked, so the screen stays calm. While help mode is on, presses are taken by it, so exploring never acts on the studio. Esc or Guide again turns it off. The box covers the top bar, the rail, the song list, every lane control (naming its instrument), the song facts, the waveforms and the bottom bar. Settings lists every option, tab by tab, in one line each. Texts are help.* keys in all ten languages. Closes #757 fix(help): head a lane's M, S, + and K boxes with what they do In help mode the box over a lane's M button was headed "M", and S, + and the K box the same: the heading took the visible text first, and for these it is one character. Someone who does not know what M means learned nothing from the heading. A visible text of one or two characters now gives way to the button's full label ("Mute Drums", "Transpose Drums up one semitone"). The K box has no label of its own, so it gets one: "Key of Drums", in all ten languages. Refs #757
This was referenced Oct 4, 2026
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.
Brings next-release into main for 0.20.0.
Merge with a merge commit, so the commits keep their
Closeslines.Closes #746
Closes #747
Closes #748
Closes #749
Closes #750
Closes #751
Closes #755
Closes #757