Files
Main/UI_ISSUES.md
2026-03-18 11:42:17 -04:00

6.7 KiB

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:

    {
      "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