Problem
The desktop app can retry a failed video (AppController.queue_retry), but the CLI has no equivalent — a failed generate means starting over.
Task
Add python -m shortube.main retry <video_id> that resets the video to pending and re-runs the pipeline, reusing the resume logic in shortube/pipeline.py (cached script/storyboard/voiceover are reused).
Acceptance criteria
Files
shortube/main.py
shortube/pipeline.py (read-only reference)
Problem
The desktop app can retry a failed video (
AppController.queue_retry), but the CLI has no equivalent — a failedgeneratemeans starting over.Task
Add
python -m shortube.main retry <video_id>that resets the video topendingand re-runs the pipeline, reusing the resume logic inshortube/pipeline.py(cached script/storyboard/voiceover are reused).Acceptance criteria
retryresets status and re-runs the pipeline for the given id--dry-runsupportedtests/withrun_pipelinemockedFiles
shortube/main.pyshortube/pipeline.py(read-only reference)