Skip to content

Convert Again, overwrite that can't delete the file, and Join's trim (2.0.0-beta.7) - #10

Merged
WillTDA merged 8 commits into
2.0.0from
convert-again
Oct 16, 2026
Merged

WillTDA merged 8 commits into
2.0.0from
convert-again

Conversation

@WillTDA

@WillTDA WillTDA commented Oct 15, 2026 •

Copy link
Copy Markdown
Collaborator

Once a card had converted, its format and Advanced Options could still be changed, but nothing would run them: Convert skips a Done card, and only a failed card offered Retry.

  • A converted card keeps the format and options that made its file, locked as a card being converted is. Remove and Show in Folder still work.
  • Convert Again, beside Show in Folder, sends the card back to Ready with the same format and options, unlocked, and puts focus on its format. Convert then runs only that card.
  • The earlier file stays where it is. A run onto the same name meets File Already Exists as any other does (Save as New writes name (1).ext).
  • The bulk bar's format and Bulk Edit are disabled when every card they'd apply to is locked, rather than taking a pick and changing nothing.
  • The lock, the reset and the card's buttons are display.isLocked(), reopen() and cardActions(), tested in test/display.test.js. MANUAL-TESTING has a new "Convert Again" section (not yet run by hand).

Also in this PR

  • Overwrite no longer deletes the file when FFmpeg fails. Converting a file to its own format onto itself sent FFmpeg at its own input, which it refuses ("cannot edit existing files in-place"). The clean-up after the failed run then deleted the output path, which was the original. Any overwrite whose run failed or was cancelled lost the old file the same way. A run onto something that exists now writes name.dfc-partial.ext beside it and renames it over the target only once FFmpeg succeeds, so converting a file onto itself works. Tested in test/runner.test.js, and with real FFmpeg against the old and new runner.
  • Join trims each clip with the Advanced Options control. A Trim button on each row opens the slider, the exact-time boxes and the first and last frames under it, with Shift for one frame at a time. The drag and keys (wireTrimHandles) and the frame painter (framePreviewer) are shared with Advanced Options, not copied.
  • 2.0.0-beta.7. MANUAL-TESTING's open boxes were cleared as passed by Will.

Built on #9 (busy-flags-finally), which merges first. npm test 206/206. Driven in the running app: lock, Convert Again, the prompt, Save as New; Join's drag, Shift-drag, Shift+arrow, frames, a refused time and an audio clip; Advanced Options' trim unchanged.

… ends

converting and joinRunning were cleared only when the run resolved; a run that threw left Restart Now asking about a conversion that wasn't running.
Once a card had converted, its format and Advanced Options could still be
changed, but nothing would run them: Convert skips a Done card, and only a
failed card offered Retry. A converted card now keeps the format and options
that made its file, locked as a card in the run is, with Convert Again beside
Show in Folder. Convert Again sends it back to Ready with the same format and
options, unlocked, and Convert runs only it. The earlier file is left where it
is: a run onto the same name meets File Already Exists, as any other does.

The lock, the reset and the card's buttons move into display.js, where the
suite can reach them. The bulk bar's format and Bulk Edit are disabled when
every card they would apply to is locked, rather than taking a pick and
changing nothing.
…'t delete it

Converting a file to its own format onto itself sent FFmpeg straight at its
own input, which it refuses ("cannot edit existing files in-place"). The
clean-up after a failed run then deleted the output path, which was the
original. Any overwrite whose run failed or was cancelled lost the old file
the same way.

A run onto something that already exists now writes name.dfc-partial.ext
beside it and renames it over the target only once FFmpeg exits cleanly.
Each clip's Trim button opens the span control under its row: the slider,
the exact-time boxes, the first and last frames, and Shift for one frame at a
time. The drag and keys (wireTrimHandles) and the frame painter
(framePreviewer) are now shared with Advanced Options rather than copied.
@WillTDA WillTDA changed the title A converted card locks until Convert Again, which runs it again Convert Again, overwrite that can't delete the file, and Join's trim (2.0.0-beta.7) Oct 16, 2026
@WillTDA
WillTDA merged commit ce886bb into 2.0.0 Oct 16, 2026
2 checks passed
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