# Changelog Alle nennenswerten Änderungen an Flimmer stehen in dieser Datei. Das Format folgt [Keep a Changelog](https://keepachangelog.com/de/1.1.0/), die Versionierung [Semantic Versioning](https://semver.org/lang/de/). ## [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. `ensureTitle` holt 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/image` vom 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/` und `npm test` prüfen den kompletten Importpfad gegen eine echte Datenbank. ### Behoben - `importSeries` gab 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 inline` an 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/i18n` und so aufgebaut, dass weitere Sprachen als zusätzliche Datei dazukommen können. - **Seed-Skript** mit Demo-Konten sowie README und Design-Dokumentation. [Unveröffentlicht]: https://git.wilde-server.de/florian.wilde/flimmer/compare/v0.2.0...HEAD [0.2.0]: https://git.wilde-server.de/florian.wilde/flimmer/releases/tag/v0.2.0 [0.1.0]: https://git.wilde-server.de/florian.wilde/flimmer/releases/tag/v0.1.0