• version-0.4.8 059cf5f883

    version-0.4.8
    All checks were successful
    Release / create-release (push) Successful in 9s
    Stable

    eric released this 2026-09-01 22:49:44 +02:00 | 220 commits to main since this release

    Qobuz Caching & Persistence

    • Migrated QobuzCache to a persistent SQLite backend storing JSON payloads with configurable, per-collection TTLs and automatic expiration purging (every 6 hours).
    • Implemented dual expiration regime: sliding expiration for media metadata, fixed expiration for playlists, searches, and stream URLs.
    • Introduced CacheEntry wrapper with payload data and metadata, supporting optional bundle version parameters for proactive invalidation during bundle rotations.
    • Added thread-safe bundle version tracking to enforce strict agent interaction rules, propagate response timestamps, and prevent redundant network requests via enriched entity persistence.

    Favorites System

    • Replaced legacy cache module with an async FavoriteStore backed by SQLite for persistent ID storage.
    • Extended FavoriteKind enum with a Playlist variant; added client methods to fetch, filter by owner ID, and cache playlist favorites.
    • Unified favorite verification via centralized is_favorite(kind, id) method.
    • Added background synchronization (120s TTL) to maintain local indexes without blocking reads.

    API & Client Improvements

    • Implemented generic pagination with a reusable paginate method and PaginatedResponse<T> structure, automatically iterating until exhaustion or incomplete retrieval.

    • Updated API struct to use RwLock<AudioFormat> for thread-safe access; refactored client state sharing via Arc.

    • Wired cache through mandatory client configuration with dedicated storage directory settings.

    • Added CLI example for exporting favorite albums.

    • Bumped project version from 0.4.6 to 0.4.8 across metadata files and workflow scripts.

    • Enhanced Makefile release loop and improved JSON parsing robustness to prevent downstream failures during tag processing.

    • Added internal documentation outlining cache architecture, development workflow, collection definitions, API behavior, and test requirements.

    • Updated .gitignore to preserve new source directories; removed obsolete prompt file and applied minor formatting adjustments.

    Downloads