From 0137a4675fcd5ef8bbdaae44a36fedf27d58f293 Mon Sep 17 00:00:00 2001 From: Eric Coissac Date: Tue, 24 Mar 2026 17:10:38 +0100 Subject: [PATCH] feat: add Qobuz playlist caching with versioning and infinite scroll UI MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- .DS_Store | Bin 18436 -> 18436 bytes .gitignore | 1 + Cargo.lock | 2 +- Dockerfile | 3 +- .../src/components/unified/ServerDrawer.vue | 95 +++++- pmocache/src/cache.rs | 15 +- pmocache/src/db.rs | 42 ++- pmocontrol/src/pmoserver_ext.rs | 15 +- pmoplaylist/src/handle/read.rs | 99 ++++++ pmoplaylist/src/handle/write.rs | 48 +++ pmoplaylist/src/manager.rs | 26 +- pmoplaylist/src/persistence/mod.rs | 63 +++- pmoplaylist/src/playlist/mod.rs | 28 ++ pmoqobuz/src/api/catalog.rs | 54 +++- pmoqobuz/src/api/mod.rs | 47 ++- pmoqobuz/src/models.rs | 6 + pmoqobuz/src/source.rs | 304 +++++++++++------- 17 files changed, 688 insertions(+), 160 deletions(-) diff --git a/.DS_Store b/.DS_Store index b20cdc7792968340936a0ef39b95502607f75e8b..b37528614380d20bb943a33b4d980fdf4f02128b 100644 GIT binary patch delta 65 zcmV-H0KWf(kO72{0gz7ti?L9<9|1YD3?QEa12X_JlRhCD1^}c000bDbASCMxk$_UO X3owWdlW#LrlQ}Qak$_IK2SEJ?kn|Mo delta 78 zcmZpfz}PZ@ae_Z%&&Gh=@{CrSc@*X|vl}s(F<3GfPfnB-V`J=RU|^P=T%)WH6t-kA f1q(|v-rIam`8D@uZi5cK&5n8{jGNgV{;~rAM|Bn7 diff --git a/.gitignore b/.gitignore index 4ebc6399..4b5b564d 100644 --- a/.gitignore +++ b/.gitignore @@ -31,6 +31,7 @@ xxx C/src/soxr-0.1.3/Release/tests **/Release/ **/Debug/ +qobuz_debug OLD-GO-CODE/ xxx xx diff --git a/Cargo.lock b/Cargo.lock index e5a7f33a..a6fec10e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,7 +4,7 @@ version = 4 [[package]] name = "PMOMusic" -version = "0.3.25" +version = "0.3.26" dependencies = [ "axum 0.8.7", "console-subscriber", diff --git a/Dockerfile b/Dockerfile index 0d5c5e85..0233127f 100644 --- a/Dockerfile +++ b/Dockerfile @@ -32,8 +32,9 @@ RUN apt-get update && apt-get install -y \ cmake \ && rm -rf /var/lib/apt/lists/* -# Copy Cargo workspace files +# Copy Cargo workspace files and registry configuration COPY Cargo.toml Cargo.lock ./ +COPY .cargo/ ./.cargo/ # Copy all crates COPY PMOMusic/ ./PMOMusic/ diff --git a/pmoapp/webapp/src/components/unified/ServerDrawer.vue b/pmoapp/webapp/src/components/unified/ServerDrawer.vue index df3d42d6..e570993b 100644 --- a/pmoapp/webapp/src/components/unified/ServerDrawer.vue +++ b/pmoapp/webapp/src/components/unified/ServerDrawer.vue @@ -1,5 +1,5 @@