Files
Psychotoxical-psysonic/src-tauri/crates/psysonic-library/src/lib.rs
T
cucadmuh ddf10ee01d feat(genres): local index genre browse with Subsonic fallback (#937)
* feat(genres): genre detail browse via local index with aligned counts

Move genre detail albums/play/shuffle onto the local library index with
Albums-style in-page scroll, session restore, and genre-scoped stash. Unify
genre album totals between the cloud and detail pages via
library_get_genre_album_counts, and fix grouped browse totals to count
distinct albums rather than matching tracks.

* perf(genres): local genre browse with scoped counts cache

Add dedicated Rust genre album pagination and indexes, slice-mode grid
loading, library-filter-aware counts, and a long-lived in-memory catalog
cache invalidated on sync so genre pages avoid repeated full-library SQL.

* fix(genres): restore scroll after album back; play hold-to-shuffle

Pin restore display count in refs so clearing the return stash no longer
reloads the genre grid mid-restore. Load the first SQL page only (60 rows),
use long-press on Play for shuffle, and add genre play tooltips.

* fix(genres): fall back to Subsonic byGenre when local index unavailable

Genre detail album grid now matches All Albums: try library_list_albums_by_genre
first, then getAlbumsByGenre when the index is off, not ready, or errors.

* docs: add CHANGELOG and credits for PR #937
2026-06-01 04:20:18 +03:00

47 lines
1.4 KiB
Rust

//! `psysonic-library` — unified track store and (future) sync engine.
//!
//! v1 scope (this crate, across PR-1..PR-7):
//! - `store` — SQLite connection, WAL config, versioned migration runner
//! - `repos` — typed repositories over the v1 schema (track, album, artist, …)
//! - `search` — FTS5 query helpers
//! - `filter` — `FilterFieldRegistry` (Rust source of truth for Advanced Search)
//! - `sync` — capability probe + orchestrator (PR-3*)
pub(crate) mod bulk_ingest;
pub mod advanced_search;
pub mod album_compilation_filter;
pub mod browse_support;
mod advanced_search_mood;
pub mod analysis_backfill;
pub mod analysis_backfill_policy;
pub mod library_readiness;
pub mod artist_lossless_browse;
pub mod cover_backfill;
pub mod cover_resolve;
pub mod canonical;
pub mod commands;
pub mod cross_server;
pub mod dto;
pub mod enrichment;
pub mod filter;
pub mod genre_album_browse;
pub mod mood_groups;
pub mod live_search;
pub mod lossless_albums;
pub mod lossless_formats;
pub mod payload;
pub mod repos;
pub mod runtime;
pub mod search;
pub mod store;
pub mod sync;
pub(crate) mod track_fts;
pub use payload::LibrarySyncProgressPayload;
pub use runtime::LibraryRuntime;
pub use store::{LibraryStore, LIBRARY_DB_SCHEMA_VERSION};
// Re-export logging facade so submodules can write `crate::app_eprintln!()`.
pub use psysonic_core::{app_deprintln, app_eprintln, logging};