Files
flimmer/CHANGELOG.md
T

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. 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.