"Set Sail" — one-click full pipeline with progress tracking #37
Notifications
Total Time Spent: 13 minutes
connor
13 minutes
No due date set.
Dependencies
No dependencies set.
Reference: Shanty/Main#37
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
The core value proposition of Shanty is automation: the user adds music to their watchlist and the app handles everything else. Currently this requires manually triggering 4-5 separate actions. There should be a single "Set Sail" button that runs the entire pipeline.
The pipeline runs 5 steps sequentially: sync → download → index → tag → organize. Rather than a monolithic task with its own progress model, each step should be registered as a separate task in the existing task system. Steps that haven't started yet are marked with a
new Pending status, so the dashboard shows the full queue of work naturally — no special UI needed beyond what already exists.
Pipeline Steps
Requirements
but that's out of scope here.)
- Registers all 5 tasks at once, each with Pending status
- Returns the list of task IDs immediately
- Spawns an async runner that executes each task sequentially:
- Skips phases with nothing to do (e.g., if sync returns 0 new items but there are already pending downloads, still proceed to download)
- After completion, the individual task results contain their own stats (same as if triggered individually)
- Prominent "Set Sail" button on the dashboard (with a pirate-themed icon — ship wheel, anchor, or skull)
- No special progress UI needed — the existing "Background Tasks" section on the dashboard already shows all tasks with their status and progress. The 5 pipeline tasks will appear as a batch of Pending → Running → Completed rows.
- After completion, each task's result is visible in the normal task list
- Button should be disabled while a pipeline is already running
- Each step still runs even if the previous had "nothing to do" (e.g., sync returns 0 new items but downloads may already be queued from before)
- Failed steps don't block subsequent steps — if download fails on 2 of 14 tracks, indexing still runs on the 12 that succeeded
- After the final step, promote all Downloaded wanted items to Owned (already implemented in the organize step)
Acceptance Criteria
Dependencies