4.5 KiB
4.5 KiB
Changelog
Alle nennenswerten Änderungen an Flimmer stehen in dieser Datei.
Das Format folgt Keep a Changelog, die Versionierung Semantic Versioning.
Unveröffentlicht
0.2.0 — 2026-09-01
Metadaten: Flimmer spricht mit TMDB.
Hinzugefügt
- TMDB-Anbindung für Suche (gemeinsam über Serien und Filme oder getrennt), Detailabruf, Staffeln und Episoden, offizielle Collections sowie die Streaming-Verfügbarkeit in der eingestellten Region. Zugang wahlweise über den klassischen API-Schlüssel oder das Bearer-Token.
- Gemeinsamer Katalog: Titel werden über (Typ, TMDB-ID) dedupliziert — bei
mehreren Nutzern liegt jede Serie samt Episodenliste nur einmal in der
Datenbank.
ensureTitleholt einen Titel nur, wenn er fehlt oder veraltet ist, und fällt bei einem TMDB-Ausfall auf den lokalen Stand zurück. - Bild-Cache: Poster und Hintergrundbilder werden einmal geholt und danach
über
/api/imagevom eigenen Server ausgeliefert. Größe und Pfad werden streng geprüft, damit der Endpunkt kein offener Proxy wird. - Suchseite mit Typfilter; die Anfrage steht in der URL und ist damit teilbar. Getippte Eingaben werden kurz gesammelt, bevor gesucht wird.
- Detailseite je Titel mit Backdrop, Kopfdaten, Genres, Streamingdiensten (mit den Akzentfarben der großen Anbieter) und aufklappbaren Staffeln samt Episodenliste.
- Testlauf ohne Schlüssel: nachgebildete TMDB-Antworten unter
tests/undnpm testprüfen den kompletten Importpfad gegen eine echte Datenbank.
Behoben
importSeriesgab den Titel zurück, bevor Staffel- und Episodenzähler geschrieben waren — die Zähler standen dadurch auf 0.- Poster und Dienstlogos zeigten das kaputte Bildsymbol des Browsers, wenn ein
TMDB-Pfad ins Leere lief. Die Rückfalldarstellung liegt jetzt dauerhaft
darunter statt an einem
onError-Handler zu hängen, der bei einem früh gescheiterten Bild gar nicht mehr feuert.
0.1.0 — 2026-09-01
Erste lauffähige Etappe: Gerüst, Marke, Datenmodell und Anmeldung.
Hinzugefügt
- Projektgerüst mit Next.js 16 (App Router), TypeScript, Tailwind CSS v4
und
standalone-Build für schlanke Container. - Marke Flimmer: Logo als SVG in drei Varianten (Bildmarke, Bildmarke mit Wortmarke, monochrom) plus Maskable-Variante. Die Wortmarke ist aus Pfaden konstruiert und braucht keine installierte Schrift.
- Icon-Generator (
npm run icons): erzeugt Favicon (SVG und ICO), PWA-Icons in sieben Größen, Maskable-Icons, Apple-Touch-Icon und OG-Bild aus den SVG-Quellen. - Design-Tokens als CSS-Variablen, über
@theme inlinean Tailwind angebunden. Dunkles Standard-Theme und heller Modus mit Umschalter (Dunkel / Hell / System), ohne Aufblitzen beim Laden. Alle Farbkombinationen erfüllen WCAG AA; getrennte Verläufe für Flächen und Text sorgen dafür, dass auch der Signaturverlauf im hellen Modus lesbar bleibt. - Datenmodell (Prisma, PostgreSQL) für Konten, Katalog (Titel, Staffeln, Episoden, Streamingdienste), persönliches Tracking, Universen mit Reihenfolgen sowie Benachrichtigungen und Hintergrundläufe.
- Authentifizierung: Registrierung und Anmeldung mit E-Mail und Passwort (bcrypt), Sitzungen als opake Token in der Datenbank mit httpOnly-Cookie. Der erste registrierte Zugang wird automatisch Administrator; die Registrierung lässt sich instanzweit abschalten.
- Optionales SSO über OIDC (Authorization Code mit PKCE) für Authelia, Keycloak, Authentik und Verwandte — per Umgebungsvariablen aktivierbar, mit Zuordnung zu vorhandenen Konten über die E-Mail-Adresse.
- API-Schlüssel je Nutzer als Grundlage für die spätere REST-API.
- Docker-Compose-Setup für den Selbstbetrieb (App und PostgreSQL, persistente Volumes, Healthcheck) samt Entrypoint, der ausstehende Migrationen beim Start einspielt.
- Healthcheck unter
/api/health, der auch die Datenbank prüft. - PWA-Manifest mit allen Icon-Größen.
- Oberflächentexte auf Deutsch, gebündelt in
src/i18nund so aufgebaut, dass weitere Sprachen als zusätzliche Datei dazukommen können. - Seed-Skript mit Demo-Konten sowie README und Design-Dokumentation.