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.
3.2 KiB
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 (
ReinitDevicecommand) - 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 sinksfor PipeWire device info - Notifications:
notify_rustwithreqwest::blockingfor artwork download