- suggest.js: samlar signaler (Lidarr-bibliotek, Jellyfin senast spelat,
Youtubarr-DB senast tillagt/gillat via better-sqlite3 ro), bygger svensk
Gemini-prompt (JSON-svar), berikar förslagen med MBID/omslag via Lidarrs
metadata-API, cachar batcher i /data/suggestions.json
- API: POST /api/suggest/run, GET latest (10 senaste till Upptäck),
GET batches + batches/:id (bläddring)
- Schemaläggare i server.js: kollar var 10:e minut mot inställningen
suggest.intervalHours (default 24, 0 = av) — ställs in under ⚙
- Upptäck: senaste 10 som kort med motivering + '✨ Generera nya förslag';
ny Förslag-sida bläddrar alla cachade batcher; delat MusicCard-kort
(sök + förslag) med Hämta-knapp
- Dockerfile: byggverktyg för better-sqlite3; 4 nya tester, totalt 25
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01824ZrvG2mDYYrmwqypLNup
- backend: /api/health, /api/login|logout|session, sessionscookie,
timingSafeEqual-lösenordskoll, allt annat under /api kräver inloggning,
serverar byggd frontend med SPA-fallback; 4 tester (node:test)
- frontend: Vue 3 + Vite, login-sida, Upptäck-skal, sökfält (stub),
mörkt tema enligt Jellyseerr-förlagan
- docker: multi-stage arm64-image; config-plumbing för Lidarr/Jellyfin/
Gemini via env (Jellyfin-historik prioriterad som signal per Björn)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01824ZrvG2mDYYrmwqypLNup