Files
qbz/ROADMAP.md
T
vicrodh 4b7e6b9c17 Add launch roadmap documentation
Document 6-point roadmap for v1.0 launch:
1. Session persistence (partial)
2. Device select/passthrough/exclusivity (done)
3. Tray icon (pending)
4. MiniPlayer (pending)
5. DLNA/AirCast (ChromeCast only)
6. Playlist management (pending)

Also documents completed features from recent sessions.
2026-01-11 17:04:16 -06:00

3.2 KiB

QBZ Launch Roadmap

Last updated: 2026-01-11

Overview

6-point roadmap for QBZ v1.0 launch - a native Qobuz client for Linux.


1. Session Persistence

Status: Partially Working

Description: Remember playback state, queue, and position when restarting the app.

Current State:

  • Basic implementation exists but inconsistent ("funciona a veces si a veces no")
  • Sometimes restores session, sometimes doesn't

TODO:

  • Debug why persistence is inconsistent
  • Ensure queue is always saved on app close
  • Restore playback position accurately
  • Handle edge cases (empty queue, corrupted state file)

2. Device Select / Passthrough / Exclusivity Wiring

Status: Completed

Description: Full audio device management with exclusive mode and DAC passthrough.

Implemented Features:

  • Device selection from PipeWire sinks
  • Pretty device names from PipeWire descriptions
  • Exclusive mode toggle
  • DAC passthrough for external devices
  • Proper device release when disabling exclusive mode
  • Audio device reinitialization (ReinitDevice command)
  • AudioOutputBadges showing DAC/EXC status
  • Volume display in device tooltip

3. Tray Icon

Status: Not Started

Description: System tray icon with playback controls and quick actions.

TODO:

  • Add system tray icon
  • Play/Pause from tray
  • Next/Previous track
  • Show current track info
  • Quick access to settings
  • Minimize to tray option

4. MiniPlayer

Status: Not Started

Description: Compact floating player window for minimal screen usage.

TODO:

  • Design compact player UI
  • Implement floating window mode
  • Essential controls (play/pause, next/prev, seek)
  • Album art display
  • Always-on-top option
  • Toggle between full and mini mode

5. DLNA and AirCast Integration

Status: Partial (ChromeCast only)

Description: Stream to network devices via DLNA, AirPlay, and ChromeCast.

Current State:

  • ChromeCast streaming works
  • DLNA not implemented
  • AirPlay (AirCast) not implemented

TODO:

  • DLNA device discovery
  • DLNA streaming implementation
  • AirPlay/AirCast support
  • Device selector in UI
  • Handle network device disconnection gracefully

6. Playlist Management

Status: Not Started

Description: Create, edit, and manage playlists within QBZ.

TODO:

  • Create new playlists
  • Add/remove tracks from playlists
  • Reorder tracks in playlist
  • Delete playlists
  • Sync with Qobuz account playlists
  • Import/export playlists

Additional Completed Features (This Session)

  • Enhanced notifications with album artwork
  • Quality info in notifications (Hi-Res / CD Quality badges)
  • 3-line notification format (Title, Artist • Album, Quality)
  • Window drag region fix for TitleBar
  • Removed unnecessary PipeWire polling (was every 10s)
  • Artwork caching with MD5 hash filenames

Technical Notes

  • Stack: Tauri 2.0, Rust backend, Svelte 5 frontend
  • Audio: rodio/cpal with PipeWire/ALSA integration
  • Commands: pactl list sinks for PipeWire device info
  • Notifications: notify_rust with reqwest::blocking for artwork download