-
version-0.4.10
StableAll checks were successfulRelease / create-release (push) Successful in 9sreleased this | 210 commits to main since this release
-
Incremental Playlist Fills: Added bounded track passes that return unresolved items, enabling incremental resolution before background batch processing. Active fills are tracked to prevent concurrent duplicate resolutions. Writer flushing now conditionally preserves data for interrupted or incremental completions.
-
Source Caching Infrastructure: Introduced a POST endpoint to trigger object caching per source. Added
cache_itemmethod to the source interface with a default stub andCacheStatusreturn type. Gated thewith_cacheexample behind thecachefeature flag. -
API Circuit Breaker: Enforces exponential backoff (30-second base, 300-second maximum) for consecutive failures. Opens after three network errors or HTTP 403/429 responses, short-circuiting subsequent requests with a
CircuitOpenerror. Includes a background task polling the bundle version every five minutes. -
WAL-Mode Concurrency: Replaced the single shared database connection with dedicated read and write connections. Write operations use a dedicated writer; reads use a dedicated reader (writer reused for in-memory databases). All cache and favorite store modules updated to this model.
-
Batch Cache Writes: Replaced per-item cache writes with batch transactions to reduce I/O overhead.
-
Qobuz Track Caching: Implemented eager caching, lazy bounded registration, and batch playlist processing. Standardized metadata and URI references across the Qobuz source implementation.
-
Staleness Tracking: Added SHA-256 fingerprinting to favorite synchronization for conditional staleness tracking. Updated storage methods and sync warmup logic accordingly.
-
Optimized Restart Flow: Refactored async favorites warming to check SQLite before initiating network calls on restarts.
-
Enhanced Logging: Introduced an optional non-blocking debug logging module recording API and database call timings. Added explicit read/write operation distinction in logs.
-
Playlist Cache Kind: Introduced
UserPlaylistas a distinctFavoriteKindto differentiate full user playlists (owned + followed) from favorited-only lists. Replaced directget_user_playlists()calls with cache-awareget_user_playlists_cached(). Favorites sync now refreshes both playlist indices together. -
Code Cleanup: Refactored
replace_favorites_with_hashfor efficiency. Adjusted internal visibility, consolidated timing metrics, and standardized source interface defaults.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
-
version-0.4.9
StableAll checks were successfulRelease / create-release (push) Successful in 9sreleased this | 217 commits to main since this release
-
Dual-TTL Caching for Qobuz Collections: Implemented configurable expiration regime with sliding TTL for media collections (refreshed on reads) and fixed TTL for playlists, searches, and stream URLs. Includes async CRUD operations, SQLite persistence, bundle version/timestamp tracking, statistics aggregation, and a comprehensive test suite validating TTL mechanics, version-based invalidation, and cross-instance persistence.
-
Batched Cache Resync: Groups album, track, and artist serialization into a single SQLite transaction to reduce commit overhead during bulk resyncs.
-
Performance Instrumentation: Added execution timing with a configurable
slow-writethreshold to differentiate mutex contention from I/O latency. -
Client Refactoring: Updated client code to utilize batched cache methods and report synchronization durations.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-