feat(library): local lossless index, filters, and conserve dedicated page (#871)

* feat(library): local lossless index, filters, and conserve dedicated page

Add SQLite-backed lossless album browse and advanced-search filtering,
wire All Albums and artist/album lossless drill-down mode, and hide the
standalone /lossless-albums nav entry from sidebar visibility settings
(conserved route, default off).

* docs(release): note lossless local index in CHANGELOG and credits (PR #871)
This commit is contained in:
cucadmuh
2026-05-27 00:02:46 +03:00
committed by GitHub
parent 418b25914a
commit a8cfff0b62
65 changed files with 1615 additions and 138 deletions
+4 -1
View File
@@ -32,6 +32,8 @@ interface AlbumCardProps {
displayCssPx?: number;
/** @deprecated Use displayCssPx — kept for call-site transition only */
artworkSize?: number;
/** Appended to `/album/:id`, e.g. `lossless=1`. */
linkQuery?: string;
/** In-page scroll viewport (`VirtualCardGrid` `scrollRootId`) for cover IO priority. */
observeScrollRootId?: string;
/** `high` for bounded grids (Random Albums, …) — skip defer-until-visible. */
@@ -50,6 +52,7 @@ function AlbumCard({
artworkSize: _artworkSize,
observeScrollRootId,
ensurePriority,
linkQuery,
}: AlbumCardProps) {
const { t } = useTranslation();
const navigate = useNavigate();
@@ -72,7 +75,7 @@ function AlbumCard({
const handleClick = (opts?: { shiftKey?: boolean }) => {
if (selectionMode) { onToggleSelect?.(album.id, opts); return; }
navigate(`/album/${album.id}`);
navigate(linkQuery ? `/album/${album.id}?${linkQuery}` : `/album/${album.id}`);
};
return (