168 lines
6.7 KiB
Markdown
168 lines
6.7 KiB
Markdown
# Shanty — UI Improvement Issues
|
|
|
|
Issues generated from manual testing of the Yew frontend MVP. Each is self-contained and can be copy-pasted into Gitea.
|
|
|
|
---
|
|
|
|
## Issue: "Set Sail" — one-click full pipeline with progress tracking
|
|
|
|
**Labels:** `enhancement`, `frontend`, `backend`, `priority:high`
|
|
|
|
### Description
|
|
|
|
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 (or similarly pirate-themed name — "Weigh Anchor", "Hoist the Colors", "Full Speed Ahead", etc.) that runs the entire pipeline:
|
|
|
|
1. **Sync** — sync wanted items to the download queue
|
|
2. **Download** — process the download queue
|
|
3. **Index** — index newly downloaded files
|
|
4. **Tag** — auto-tag tracks that need metadata
|
|
5. **Organize** — organize tagged files into the library structure
|
|
|
|
### Requirements
|
|
|
|
1. **Backend**: Add a new endpoint `POST /api/pipeline` that:
|
|
- Runs each step sequentially (sync → download → index → tag → organize)
|
|
- Returns a task ID immediately
|
|
- Reports progress as it moves through each phase
|
|
- Can be paused/cancelled (stretch goal)
|
|
|
|
2. **Progress model**: The task should report which phase it's in and the progress within that phase:
|
|
```json
|
|
{
|
|
"task_id": "...",
|
|
"phase": "downloading",
|
|
"phase_number": 2,
|
|
"total_phases": 5,
|
|
"phase_progress": { "current": 5, "total": 14 },
|
|
"overall_progress": 35
|
|
}
|
|
```
|
|
|
|
3. **Frontend**:
|
|
- Prominent "Set Sail" button on the dashboard (with a fun icon — maybe a ship wheel ⎈ or pirate flag)
|
|
- When running, shows a multi-phase progress view:
|
|
- Phase indicator (which step we're on)
|
|
- Progress bar for the current phase
|
|
- Overall progress bar
|
|
- Estimated time remaining (based on rate so far)
|
|
- Can be started from the dashboard
|
|
|
|
4. **Smart behavior**:
|
|
- Skip phases with nothing to do (e.g., if sync returns 0 new items but there are already pending downloads, go straight to download)
|
|
- After completion, show a summary: "Downloaded 14 tracks, tagged 14, organized 14"
|
|
|
|
### Acceptance Criteria
|
|
|
|
- [ ] "Set Sail" button on the dashboard triggers the full pipeline
|
|
- [ ] Backend runs sync → download → index → tag → organize sequentially
|
|
- [ ] Progress is reported per-phase with current/total counts
|
|
- [ ] Frontend shows multi-phase progress visualization
|
|
- [ ] Summary is displayed on completion
|
|
- [ ] Pipeline handles "nothing to do" phases gracefully
|
|
|
|
### Dependencies
|
|
|
|
- All existing pipeline crates (shanty-dl, shanty-index, shanty-tag, shanty-org)
|
|
- Backend task system needs progress reporting enhancement
|
|
|
|
---
|
|
|
|
## Issue: Rich artist/album/track metadata — photos, bios, album art, lyrics
|
|
|
|
**Labels:** `enhancement`, `post-mvp`, `frontend`, `backend`
|
|
|
|
### Description
|
|
|
|
Currently the UI looks like a file manager — just tables of names and IDs. To feel like a proper music library, it should display rich metadata: artist photos, biographies, album artwork, track lyrics, and links to external profiles.
|
|
|
|
This is a post-MVP enhancement but will significantly improve the user experience.
|
|
|
|
### Requirements
|
|
|
|
1. **Artist pages**:
|
|
- Profile photo (from MusicBrainz → Wikimedia Commons, or from fanart.tv API)
|
|
- Biography text (from Wikipedia via MusicBrainz's URL relationships, or Last.fm API)
|
|
- External links: official website, social media, streaming profiles
|
|
- Genre tags
|
|
- Formation year, country, members (if group)
|
|
|
|
2. **Album pages**:
|
|
- Album cover art (from Cover Art Archive via MusicBrainz release MBID — this API is free)
|
|
- Release date, label, genre
|
|
- Track listing with durations
|
|
- Total album duration
|
|
|
|
3. **Track pages** (or inline on album page):
|
|
- Lyrics (via external API — Genius, Musixmatch, or LRCLIB for synced lyrics)
|
|
- Duration, bitrate, codec info
|
|
- MusicBrainz recording link
|
|
|
|
4. **Backend work**:
|
|
- Cover Art Archive integration: `https://coverartarchive.org/release/{mbid}/front-250` (free, no auth)
|
|
- Artist image: MusicBrainz URL relationships → Wikimedia Commons
|
|
- Bio: Wikipedia API via MusicBrainz URL relationships
|
|
- Cache fetched metadata to avoid repeated API calls
|
|
|
|
### Data Sources (all free)
|
|
- **Cover Art Archive** — album art via MBID (no auth, generous rate limits)
|
|
- **Wikipedia API** — artist biographies (free, no auth)
|
|
- **MusicBrainz URL relationships** — links to Wikipedia, social media, official sites
|
|
- **fanart.tv** — artist images (free tier with API key)
|
|
- **LRCLIB** — synced lyrics (free, open source)
|
|
|
|
### Acceptance Criteria
|
|
|
|
- [ ] Artist pages display a photo and biography
|
|
- [ ] Album pages display cover art
|
|
- [ ] External links are shown where available
|
|
- [ ] Cover art is cached to avoid repeated fetches
|
|
- [ ] Graceful degradation when metadata isn't available (placeholder images, "no bio available")
|
|
|
|
### Dependencies
|
|
|
|
- Backend: new endpoints or enrichment of existing artist/album responses
|
|
- External API integrations (Cover Art Archive, Wikipedia)
|
|
|
|
---
|
|
|
|
## Issue: Consolidate action buttons — all actions accessible from dashboard
|
|
|
|
**Labels:** `enhancement`, `frontend`, `priority:low`
|
|
|
|
### Description
|
|
|
|
Currently, action buttons are scattered across pages:
|
|
- Download sync and process buttons are on the Downloads page
|
|
- Re-index, auto-tag, and organize buttons are on the Settings page
|
|
|
|
All action buttons should be accessible from the dashboard as the central "command center". Keep copies on their respective pages for convenience, but the dashboard should be the one-stop shop.
|
|
|
|
### Requirements
|
|
|
|
1. **Dashboard actions section** — a card or section with all available actions:
|
|
- "Sync from Watchlist" — syncs wanted items to download queue
|
|
- "Process Downloads" — starts downloading queued items
|
|
- "Re-index Library" — scans library directory for new files
|
|
- "Auto-tag Tracks" — tags tracks missing metadata
|
|
- "Organize Files" — moves files into organized structure
|
|
- "Set Sail" — full pipeline (see separate issue)
|
|
|
|
2. **Keep existing button locations** — don't remove buttons from Downloads or Settings pages. Users who navigate directly to those pages should still find the relevant actions there.
|
|
|
|
3. **Visual grouping** — on the dashboard, group related actions:
|
|
- "Watchlist" group: Sync
|
|
- "Downloads" group: Process, Retry All Failed
|
|
- "Library" group: Re-index, Auto-tag, Organize
|
|
- "Pipeline" group: Set Sail
|
|
|
|
### Acceptance Criteria
|
|
|
|
- [ ] All action buttons are present on the dashboard
|
|
- [ ] Buttons are visually grouped by category
|
|
- [ ] Existing button placements on other pages are preserved
|
|
- [ ] Each button shows feedback when clicked (task started, task ID, etc.)
|
|
|
|
### Dependencies
|
|
|
|
- Dashboard enhancement issue
|