Skip to content

Hold a Trash row to restore it, pick several at once, and a count on the Trash icon - #756

Merged
thcp merged 1 commit into
next-releasefrom
feat/trash-hold-restore
Oct 4, 2026
Merged

thcp merged 1 commit into
next-releasefrom
feat/trash-hold-restore

Conversation

@thcp

@thcp thcp commented Oct 4, 2026

Copy link
Copy Markdown
Collaborator

The Trash is now visible from anywhere, and songs come back out of it without guessing.

What changes

  • Count on the Trash icon. The same badge as the Queue, with how many songs are in the Trash, and the button's label says it too ("Trash (3)"). A full Trash, and the files it still keeps on disk, no longer go unnoticed.
  • Hold to restore. Hovering a Trash row turns its second line into "Hold left click for 1 second to restore". Holding the mouse button, or Enter, for a second restores it. A fill across the row shows the hold, and letting go early does nothing.
  • Pick several. A click selects a row, Ctrl+click adds or removes one, Shift+click takes a range. Holding any selected row restores the whole selection, and every selected row fills while it is held. Dragging onto Library still works, for the selection too.
  • Restore never puts a song back in the extraction queue ([Bug]: Stemdeck extraction / queue chokes "hangs" #748): a stopped song comes back stopped, with its Extract button.

One behaviour change: a click on a Trash row no longer opens the song in the studio. With hold to restore, every hold let go early would have opened it.

Testing

  • New tests/e2e/trash-restore.spec.mjs, 13 tests: the badge, the hover hint, click, Ctrl and Shift selection, an early release, a single and a selection restore, the fill on every selected row, and Enter.
  • Full Playwright suite: 453 passed. JS syntax and JS tests clean, i18n clean in all 10 languages, uv.lock unchanged.
  • Checked by hand on a local server: selection, the fill on all selected rows, and restore.

Closes #749
Closes #755

… 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
@thcp
thcp merged commit 37a0ee7 into next-release Oct 4, 2026
10 checks passed
@thcp thcp mentioned this pull request Oct 4, 2026
thcp added a commit that referenced this pull request Oct 4, 2026
…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
@thcp
thcp deleted the feat/trash-hold-restore 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