vicrodh
261d420540
feat(v2): add qobuzapp handler registration commands
...
v2_check_qobuzapp_handler, v2_register_qobuzapp_handler,
v2_deregister_qobuzapp_handler — use xdg-mime for scheme handler
registration and mimeapps.list editing for deregistration.
2026-02-17 00:24:02 -06:00
vicrodh
9006e64fa2
feat(v2): add v2_resolve_qobuz_link command
...
Thin Tauri command that calls qbz_qobuz::resolve_link(). Pure parsing,
no State params, no auth required. Registered in invoke_handler.
2026-02-17 00:23:16 -06:00
vicrodh
985f634817
feat(qobuz): add link resolver module with tests
...
Pure-Rust URL parser for qobuzapp:// and https://play.qobuz.com/ links.
Resolves to typed ResolvedLink enum (OpenAlbum, OpenTrack, OpenArtist,
OpenPlaylist). 24 unit tests covering happy paths and edge cases.
2026-02-17 00:22:26 -06:00
vicrodh
36a708d501
feat(ui): add artwork column in playlist tracks
...
cx
2026-02-16 23:02:45 -06:00
vicrodh
0c66a14249
fix(player): stabilize seek interaction and remove misleading secondary bar refs #75
...
cx
2026-02-16 22:48:39 -06:00
vicrodh
39bbbdc230
fix(playback): reduce mpris desync and stale playback event lag refs #85
...
cx
2026-02-16 21:36:07 -06:00
vicrodh
3ea67f0cdc
fix(ui): keep sidebar menus above playlist overlays refs #78
...
cx
2026-02-16 21:28:47 -06:00
vicrodh
243c212c62
chore(playback): validate long-track auto-advance fix refs #80
...
cx
2026-02-16 20:52:43 -06:00
vicrodh
c3696f02d4
fix(playback): harden auto-advance for long-track edge cases
...
cx
2026-02-16 20:08:34 -06:00
vicrodh
99877fa740
fix(v2): align immersive track info/radio and i18n history keys
...
cx
2026-02-16 19:27:47 -06:00
vicrodh
37db48ea3d
fix(v2): complete command migration sweep and musician/blacklist flows
...
- migrate remaining frontend invokes to V2 names
- add missing V2 command registrations and implementations
- enforce commands_v2 backend purity (no legacy delegation)
- restore blacklist/relationships/musician flows in V2
- align playlist/local-library/settings invoke paths with V2
cx
2026-02-16 18:40:07 -06:00
vicrodh
45b98c40d4
fix(v2): harden session restore and favorites query params
...
cx
2026-02-16 17:16:41 -06:00
vicrodh
131c6703ab
fix(v2): stabilize queue panel sync and shuffle counters
...
cx
2026-02-16 17:16:41 -06:00
vicrodh
6f7b8e0aff
Revert "fix(v2): harden session restore and favorites query params"
...
This reverts commit c20bb034ae .
2026-02-16 17:16:29 -06:00
vicrodh
c20bb034ae
fix(v2): harden session restore and favorites query params
...
cx
2026-02-16 17:15:58 -06:00
vicrodh
1037b59cfa
refactor(v2): hard-delete unused legacy command files
...
cx
2026-02-16 17:11:24 -06:00
vicrodh
ffd5c992b0
refactor(v2): shrink legacy command module to internal minimum
...
cx
2026-02-16 17:09:29 -06:00
vicrodh
43ebf19ae1
chore(v2): hard-cut legacy invoke handler surface
...
cx
2026-02-16 17:04:08 -06:00
vicrodh
a58116212c
fix(v2): stabilize plex playback control and shuffle reorder semantics
...
cx
2026-02-16 15:23:46 -06:00
vicrodh
e51f367b31
fix(v2): restore Plex command surface for LocalLibrary
...
cx
2026-02-16 12:53:20 -06:00
vicrodh
8ac5ba92fd
refactor(v2): enforce backend purity and stabilize playback runtime
...
cx
2026-02-16 07:45:43 -06:00
vicrodh
d64e0f38d7
chore(v2): apply phase-2 legacy cut-off for auth playback queue and context surface
...
cx
2026-02-16 04:14:13 -06:00
vicrodh
9e126a0c59
chore(v2): apply legacy invoke cut-off markers in handler with rollback notes
...
cx
2026-02-16 04:08:22 -06:00
vicrodh
ee5998533d
refactor(v2): route library flows through shared impls and remove command-to-command calls
...
cx
2026-02-16 04:05:16 -06:00
vicrodh
d2a13ba95e
refactor(v2): internalize notification offline playlist reset and reco training flows
...
cx
2026-02-16 04:02:52 -06:00
vicrodh
0aecda77e5
refactor(v2): migrate remaining unknown frontend invokes to v2 commands
...
cx
2026-02-16 03:53:24 -06:00
vicrodh
d02b8a9628
refactor(v2): eliminate legacy frontend invokes and close remaining v2 command gaps
...
cx
2026-02-16 03:51:01 -06:00
vicrodh
54af46fea8
refactor(v2): close missing command surface for cast, library, offline and radio
...
cx
2026-02-16 03:35:52 -06:00
vicrodh
d4b5dedc90
chore(v2): add migration guardrails for backend purity and invoke audit
...
cx
2026-02-16 03:29:02 -06:00
vicrodh
432dd828c1
refactor(v2): add native settings/cache/plex command surface
...
cx
2026-02-16 03:28:47 -06:00
vicrodh
fafa98c46a
refactor(v2): remove post-cutoff backend wrapper wave and restore pure v2 surface
...
cx
2026-02-16 03:10:21 -06:00
vicrodh
65632f08d5
refactor(frontend): migrate Library and Offline commands to V2
...
Update frontend to use v2_library_* and v2_get_pending_playlists.
Progress: 138 legacy commands remaining.
2026-02-16 02:52:15 -06:00
vicrodh
8d3627b743
feat(v2): add Library and Offline V2 command wrappers
...
Add V2 wrappers for frequently used commands:
- Library: play_track, get_albums, get_tracks_by_ids, check_folder_accessible,
set_album_hidden, get_scan_progress, clear_artwork_cache,
clear_thumbnails_cache, remove_folder, set_album_artwork
- Offline: get_pending_playlists, playlist_get_all_local_track_counts
2026-02-16 02:49:31 -06:00
vicrodh
e4fe4598d0
refactor(frontend): migrate playlist and settings commands to V2
...
Batch migrate frontend invocations to V2:
- Playlist commands (22 commands)
- Settings/preferences commands
- Cache and audio commands
- API commands (radio, genres, tags, etc.)
Progress: reduced legacy commands from ~228 to ~152
2026-02-16 02:40:50 -06:00
vicrodh
12246ea2ad
feat(v2): add more playlist V2 command wrappers
...
Add V2 wrappers for playlist commands:
- get_settings, get_all_settings
- get_stats, get_all_stats, increment_play_count
- get_favorites, get_local_tracks, get_local_tracks_with_position
- get_custom_order, has_custom_order, get_tracks_with_local_copies
- import_preview, import_execute
2026-02-16 02:28:33 -06:00
vicrodh
1de7c7830e
refactor(frontend): migrate Cast/DLNA/AirPlay commands to V2
...
Update all casting invocations to use v2_* commands:
- castStore: connect, disconnect, play, pause, stop, seek, volume
- CastPicker: device discovery
2026-02-16 02:25:32 -06:00
vicrodh
3ede4e2fc6
refactor(frontend): migrate Plex commands to V2
...
Update all Plex invocations to use v2_plex_* commands:
- SettingsView: auth, ping, cache operations
- LocalLibraryView: albums, tracks, search, hydration
- playerStore/playbackService: play_track
2026-02-16 01:47:33 -06:00
vicrodh
5dbd383bab
feat(v2): add Plex V2 command wrappers
...
Wrap all 18 Plex commands with V2 RuntimeError handling:
- Network: ping, get_music_sections, get_section_tracks, get_track_metadata
- Auth: auth_pin_start, auth_pin_check, open_auth_url
- Cache: get_sections, save_sections, get_tracks, get_albums,
get_album_tracks, search_tracks, save_tracks, update_track_quality,
get_tracks_needing_hydration, clear
- Playback: play_track
Completes the Plex category of V2 migration.
2026-02-16 01:03:45 -06:00
vicrodh
e565b964a5
feat(v2): add Other V2 commands
...
Add V2 commands for miscellaneous categories:
Audio Backends (7):
- v2_get_available_backends, v2_get_devices_for_backend
- v2_get_alsa_plugins, v2_check_alsa_utils_installed
- v2_get_default_device_name, v2_get_linux_distro
- v2_query_dac_capabilities
Audio Diagnostics (3):
- v2_get_hardware_audio_status
- v2_start_bitdepth_capture, v2_stop_bitdepth_capture
Radio (5):
- v2_create_artist_radio, v2_create_track_radio
- v2_refill_radio_queue, v2_get_queue_remaining
- v2_create_infinite_radio
Share (3):
- v2_get_qobuz_track_url/album_url/artist_url
Additional (7):
- v2_is_visualizer_enabled
- v2_get_current_queue_track, v2_peek_next_track
- v2_get_shuffle, v2_get_repeat
- v2_get_current_user_id
- v2_has_saved_credentials, v2_save_credentials
Total 25 new V2 commands.
2026-02-16 01:00:18 -06:00
vicrodh
d39fe148ed
feat(v2): add Cast/DLNA/AirPlay V2 commands
...
Add 39 V2 commands for casting:
Chromecast (14):
- v2_cast_start_discovery, v2_cast_stop_discovery
- v2_cast_get_devices, v2_cast_connect, v2_cast_disconnect
- v2_cast_get_status, v2_cast_get_position
- v2_cast_play_track, v2_cast_play_local_track
- v2_cast_play, v2_cast_pause, v2_cast_stop
- v2_cast_seek, v2_cast_set_volume
DLNA (14):
- v2_dlna_start_discovery, v2_dlna_stop_discovery
- v2_dlna_get_devices, v2_dlna_connect, v2_dlna_disconnect
- v2_dlna_get_status, v2_dlna_get_position
- v2_dlna_play_track, v2_dlna_load_media
- v2_dlna_play, v2_dlna_pause, v2_dlna_stop
- v2_dlna_seek, v2_dlna_set_volume
AirPlay (11):
- v2_airplay_start_discovery, v2_airplay_stop_discovery
- v2_airplay_get_devices, v2_airplay_connect
- v2_airplay_disconnect, v2_airplay_get_status
- v2_airplay_load_media
- v2_airplay_play, v2_airplay_pause, v2_airplay_stop
- v2_airplay_set_volume
All commands wrap existing implementations with RuntimeError.
2026-02-16 00:52:57 -06:00
vicrodh
d269acc709
feat(v2): add playlist custom V2 commands
...
Add 10 V2 commands for playlist customization:
- v2_playlist_set_sort
- v2_playlist_set_artwork
- v2_playlist_add_local_track
- v2_playlist_remove_local_track
- v2_playlist_set_hidden
- v2_playlist_set_favorite
- v2_playlist_reorder (reorder playlists in sidebar)
- v2_playlist_init_custom_order
- v2_playlist_set_custom_order
- v2_playlist_move_track
All commands wrap existing library implementations with
proper type signatures and RuntimeError handling.
2026-02-16 00:50:57 -06:00
vicrodh
a405954846
feat(v2): add V2 commands for cache management (clear cache, artist cache, vector store, offline cache, credentials)
2026-02-16 00:11:21 -06:00
vicrodh
477b032abe
feat(v2): add V2 commands for settings (tray, graphics, window, developer, playback, favorites prefs, visualizer, blacklist, locale)
2026-02-16 00:07:12 -06:00
vicrodh
18e7303aaf
fix: update remaining sync_cached_favorite_tracks to V2
2026-02-15 22:07:51 -06:00
vicrodh
68aec71fdf
fix(v2): migrate favorites cache, session, and context stores to V2 commands
...
- Add v2_save_session_state and v2_load_session_state commands
- Update favoritesStore to use V2 cache commands
- Update albumFavoritesStore to use V2 cache commands
- Update artistFavoritesStore to use V2 cache commands
- Update sessionService to use V2 session commands
- Update playbackContextStore to use V2 context commands
2026-02-15 21:55:15 -06:00
vicrodh
35758d07df
feat(v2): add V2 commands for playback context, session, and favorites cache
...
- Add ContextType::Search variant
- Add V2 playback context commands (get, set, clear, has)
- Add V2 session persistence commands (save position/volume/mode, clear)
- Add V2 favorites cache commands (get/sync/add/remove for tracks/albums/artists)
- Register all new commands in lib.rs
2026-02-15 21:41:43 -06:00
vicrodh
7337b7e026
fix(v2): match V2QueueTrack field names to frontend interface
...
Remove serde rename attributes that caused mismatch:
- Frontend sends 'duration_secs', backend expected 'duration'
- Frontend sends 'artwork_url', backend expected 'artwork'
Now V2QueueTrack field names match BackendQueueTrack exactly.
2026-02-15 20:36:47 -06:00
vicrodh
045cf24a61
fix(v2): unify queue architecture - all commands use CoreBridge
...
Previously, V2 queue commands had a dual-queue bug:
- Writes (v2_set_queue, v2_add_to_queue, etc.) went to AppState.queue (legacy)
- Reads (v2_get_queue_state) came from CoreBridge/QbzCore queue
- Result: frontend sets queue, syncs, gets empty/stale data
This commit fixes the architecture:
- All V2 queue commands now use CoreBridge methods
- Added queue methods to QbzCore: add_track, add_tracks, add_track_next,
set_queue, remove_track, remove_upcoming_track, move_track, play_index,
next_track, previous_track, peek_upcoming
- Added corresponding methods to CoreBridge
- Fixed v2_set_shuffle to use CoreBridge (was using legacy AppState)
- Fixed runtime requirements: v2_toggle_shuffle and v2_clear_queue now
use RequiresUserSession like other queue commands (consistency)
- Prefetch now gets upcoming tracks from CoreBridge, not legacy queue
- Updated tests to match V2 behavior (v2_toggle_shuffle, available field)
2026-02-15 20:07:01 -06:00
vicrodh
8d26f547d1
fix(frontend): resolve all remaining TypeScript errors
...
- HomeView: fix OfflineCacheStatus type for getTrackOfflineCacheStatus prop
- PlaylistDetailView: fix trackToReplace null access in console.log
- SearchView: add id and isViewMore to Album/Artist interfaces
- Toast: add 'warning' type support
- playbackContextStore: add 'search' to ContextType union
- queueStore: add trackId to QueueTrack interface
- trackActions: add queueDisplayTrackNext/Later and buildQueueTrackFromDisplayTrack
- +page.svelte: fix numerous type issues including:
- selectedAlbum closure captures for TypeScript narrowing
- handleDisplayTrackDownload signature for DisplayTrack
- handleSearchTrackDownload for SearchView's Track type
- ImportSummary callback signature
- QobuzTrack hires_streamable property usage
- album.tracks.items instead of .data
npm run check now passes with 0 errors (138 warnings remain, mostly a11y)
2026-02-15 17:20:05 -06:00
vicrodh
e7d617d46d
fix(frontend): additional type error fixes
...
- SearchView.svelte: Fix async onMount pattern to properly return cleanup
- vite.config.js: Add ts-nocheck to suppress Node.js global errors
Reduces npm run check errors from 42 to 40.
2026-02-15 16:29:57 -06:00