Skip to content

feat(gui): let tracks be taken back out of the list - #29

Merged
hiroaki222 merged 3 commits into
mainfrom
feat/clear-tracks
Aug 13, 2026
Merged

hiroaki222 merged 3 commits into
mainfrom
feat/clear-tracks

Conversation

@hiroaki222

Copy link
Copy Markdown
Owner

A drop is usually a whole folder, and there was no way to convert all of it but one. The list was whatever had been handed over, until the window was given something else.

Two controls

A cross on each row, kept faint until the row is under the pointer. It is the one control on this screen that throws work away, and a column of them down a list of two hundred would read as the point of the screen rather than as an escape from it. Its click stops there — the row already opens on click, and one press should not answer twice.

A clear beside the convert button, outlined in red rather than filled. The orange one next to it is what people came here to press, and two solid blocks of the same size would make the destructive one just as easy to hit by accident. It fills only under the pointer, which is late enough to be a warning and not a wall.

No confirmation on either. Nothing on disk is touched: this empties a list, and the cost of being wrong is dropping the folder again.

The part that would have been a bug

Taking a track out rewrites the list to what is left, rather than filtering on the way past.

dropped holds the paths that were handed over — usually one folder — and that folder is re-read whenever a setting changes, so a track filtered out of the display would come straight back the next time the gear selection or the comment switch moved. Rewriting it to the concrete paths that remain is what makes a removal stick.

Neither control is live during a run. run() captures the list when it is pressed, and changing it underneath would leave the screen describing something other than what is being converted.

A drop is usually a whole folder, and there was no way to convert all of
it but one. The list was whatever had been handed over, until the window
was given something else.

Each row now carries a cross, kept faint until the row is under the
pointer: it is the one control here that throws work away, and a column
of them down a list of two hundred would read as the point of the screen
rather than as an escape from it. Its click stops there, because the row
already opens on click and one press should not answer twice.

Beside the convert button there is a clear, outlined in red rather than
filled. The orange one next to it is what people came to press, and two
solid blocks of the same size would make the destructive one just as easy
to hit by accident. It fills only under the pointer. Nothing on disk is
touched either way — this empties a list.

Taking a track out rewrites the list to what is left, rather than
filtering on the way past. The folder behind a drop is re-read whenever a
setting changes, which would otherwise bring back everything ever removed.
Neither control is live during a run, when what is being converted was
settled before the button was pressed.
Clear is the one control that throws away work with a single press, and
red alone is a warning nobody reads twice. It now asks.

The cancel comes first and holds focus. A dialog that opens with the
destructive button under the return key is one that gets dismissed by
reflex into the thing it was asking about. Escape and the ground behind
it both cancel.

Neither button says OK. One says how many tracks leave the list, the
other says that no file is deleted — which is the question somebody
actually has at that moment.
@hiroaki222

hiroaki222 commented Aug 13, 2026 •

Copy link
Copy Markdown
Owner Author

Added a confirmation on Clear, replacing what this PR originally argued for.

The reasoning in the description — that nothing on disk is touched, so the cost of being wrong is dropping the folder again — holds for the cross on a single row. It does not hold for the button that empties two hundred of them at one press. Red on its own is a warning that stops being read after the second time.

┌────────────────────────────────────────────────┐
│ Take every track out of the list?              │
│ 200 tracks leave the list. Not one file is     │
│ deleted.                                       │
│                                                │
│                  [ Keep them ] [ Clear the list ] │
└────────────────────────────────────────────────┘

The cancel comes first and holds focus on open. A dialog that arrives with the destructive button under the return key is one that gets dismissed by reflex into the very thing it was asking about. Escape and a click on the ground behind it both cancel.

Neither button says OK. One line says how many tracks leave the list, the other says that no file is deleted — which is the question somebody actually has at that moment.

The per-row cross still asks nothing. It removes one, it is faint until hovered, and putting a dialog in front of it would make trimming a list unusable.

@hiroaki222
hiroaki222 merged commit 5aa48f1 into main Aug 13, 2026
5 checks passed
@hiroaki222
hiroaki222 deleted the feat/clear-tracks branch August 13, 2026 21:48
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