push-xyrsxtokwrlu #81

Merged
eric merged 8 commits from push-xyrsxtokwrlu into main 2026-03-25 13:09:23 +01:00

8 Commits

Author SHA1 Message Date
069e9ee496 chore: bump version to 0.3.27
- Update Cargo.toml and version.txt to v0.3.27
- Rename Step 3 to Step 4 in control_point.rs for clarity
- Add UI notification on renderer state transition (PlaybackState::Transitioning)
2026-03-25 13:08:19 +01:00
bded788431 feat: optimize lazy PK resolution and fix OpenHome IdList delimiter
- In track_metadata.rs: cache real_pk at construction time to avoid repeated DB queries per metadata field access.
- In openhome_client.rs: change IdList delimiter from comma to space per OpenHome spec.
2026-03-25 12:59:31 +01:00
8005968ec5 Reorder commit and metadata count logic
Move `tx.commit()?` after counting metadata rows under the old lazy_pk to ensure accurate count before commit. This fixes a potential race or inconsistency where metadata might be updated after commit, leading to incorrect logging of remaining rows under lazy_pk.
2026-03-25 12:48:03 +01:00
04793da52c Remove backdrop on mobile portrait for full-width drawers
Remove the backdrop element in mobile portrait mode since the drawer now covers 100vw, making the overlay unnecessary. Applied to both RendererDrawer and ServerDrawer components.
2026-03-25 12:34:22 +01:00
5095dd6964 feat(cache): fix lazy PK metadata resolution and playlist track ordering
- In `track_metadata.rs`, implement fallback logic for lazy PKs: first try real_pk, then fallback to lazy_pk for metadata keys seeded before download.
- In `db.rs`, add debug logging after migration to track remaining metadata under lazy_pk.
- In `source.rs` (Qobuz):
  - Detect and repair playlists with missing cache entries by forcing refresh when `items.len() < total`.
  - Preserve original track order after parallel processing by attaching and sorting on original index.
  - Handle missing performer/cover gracefully with warnings and provider fallback.
- In `metadata_cache.rs` (Radio France), simplify logging and improve test coverage for expiration logic.
- In `cache.rs`, add debug/warning logs when metadata or cover seeding fails during lazy caching.
2026-03-25 12:25:43 +01:00
09cc2dcf94 feat: implement pagination for playlist container browsing
Replace single-page browse with paginated loop to handle playlists exceeding BROWSE_PAGE_SIZE (64 items). Each page is fetched with retry logic, and entries are accumulated until fewer than BROWSE_PAGE_SIZE items are returned, ensuring complete playlist refresh.
2026-03-25 11:38:14 +01:00
dc062f8a3e refactor: replace cache_covers with register_tracks_lazy for playlist processing
Replace the old `cache_covers` approach with a new `register_tracks_lazy` method that handles track registration for lazy playback in playlists. The new implementation avoids expensive `get_stream_url` calls by deferring audio URL resolution to `QobuzLazyProvider`, caches covers in parallel with concurrency limited via semaphore (16), and stores full metadata including cover PKs. This significantly improves performance for large playlists while preserving all necessary track metadata.
2026-03-25 11:29:37 +01:00
0137a4675f feat: add Qobuz playlist caching with versioning and infinite scroll UI
- Add qobuz_debug to .gitignore
- Bump PMOMusic version to 0.3.26
- Add .cargo/ copy in Dockerfile for registry config
- Implement infinite scroll in ServerDrawer.vue with IntersectionObserver and sentinel element
- Add source/source_version fields to playlists for cache invalidation
- Update pmocache and pmoplaylist DB schemas with versioning (SCHEMA_VERSION)
- Add Qobuz API metadata fetching and pagination for playlist tracks
- Implement album/playlist cache invalidation based on released_at/updated_at timestamps
- Refactor adapt_playlist_items_to_qobuz → adapt_items_to_qobuz with cleaner logic
- Add debug mode to save Qobuz API responses when QOBUZ_DEBUG_DIR is set
2026-03-25 11:08:28 +01:00