diff --git a/ui/src/routes/catalogue/+page.server.ts b/ui/src/routes/catalogue/+page.server.ts
index a727892..90c3afd 100644
--- a/ui/src/routes/catalogue/+page.server.ts
+++ b/ui/src/routes/catalogue/+page.server.ts
@@ -16,6 +16,7 @@ export const load: PageServerLoad = async ({ url, locals }) => {
const sort = url.searchParams.get('sort') ?? 'popular';
const status = url.searchParams.get('status') ?? 'all';
const q = url.searchParams.get('q') ?? '';
+ const audioOnly = url.searchParams.get('audio') === '1';
const params = new URLSearchParams({ page, genre, sort, status });
if (q.trim().length >= 2) {
@@ -64,7 +65,8 @@ export const load: PageServerLoad = async ({ url, locals }) => {
isAdmin: locals.user?.role === 'admin',
searchQuery: q.trim().length >= 2 ? q.trim() : '',
searchLocalCount: 0,
- searchRemoteCount: 0
+ searchRemoteCount: 0,
+ audioOnly
};
};
diff --git a/ui/src/routes/catalogue/+page.svelte b/ui/src/routes/catalogue/+page.svelte
index 4533cb0..f4affb1 100644
--- a/ui/src/routes/catalogue/+page.svelte
+++ b/ui/src/routes/catalogue/+page.svelte
@@ -21,11 +21,13 @@
});
function applyFilters() {
+ filtersOpen = false;
const params = new URLSearchParams();
params.set('sort', filterSort);
params.set('genre', filterGenre);
params.set('status', filterStatus);
params.set('page', '1');
+ if (filterAudioOnly) params.set('audio', '1');
goto(`/catalogue?${params.toString()}`);
}
@@ -215,7 +217,7 @@
// ── Audio-available set ───────────────────────────────────────────────────
let audioSlugs = $state