-
0.9.0
Stablereleased this
2026-09-02 12:48:01 +00:00 | 0 commits to main since this releaseErrungenschaften — Abzeichen für erreichte Meilensteine. Dazu die Auswahlliste beim Jellyfin-Abgleich, ohne die die Anbindung auf einer gewachsenen Mediathek kaum etwas ausrichtete.
⚠️ Beim Aktualisieren kommt eine Migration mit (
errungenschaften). Der Container spielt sie beim Start selbst ein;./update.shlegt vorher eine Sicherung an.Hinzugefügt
-
Errungenschaften. Zwanzig feste Abzeichen, dazu dynamische für vollständig gesehene Filmreihen und abgeschlossene Universen — unten auf der Statistikseite.
Sie tauchen auf, wenn etwas erreicht ist, und bleiben dann: keine Streaks, die reißen, wenn man eine Woche nichts schaut, keine Fortschrittsbalken, die drängeln. Wer eine Sichtung zurücknimmt, verliert kein Abzeichen.
Ein paar davon: Der lange Atem (eine Serie mit hundert Episoden komplett), Treu geblieben (über ein Jahr an demselben Titel), Durchgemacht (zwischen drei und fünf Uhr morgens abgehakt), Zeitreisender (Titel aus sieben Jahrzehnten), Strenges Urteil (einmal die Note 1 vergeben).
Für ganze Filmreihen braucht es keine gepflegte Liste: TMDB gruppiert sie selbst, und die Zugehörigkeit steht beim Import schon am Titel. Wer alle Spider-Man-Filme gesehen hat, bekommt sie als Reihe angerechnet — für bekannte Reihen mit eigenem Namen, sonst als „Reihe komplett — …".
Beim ersten Öffnen wird die ganze Historie einmal stumm ausgewertet; eine gewachsene Bibliothek soll nicht zwei Dutzend Meldungen auf einmal auslösen. Auf dem öffentlichen Profil lassen sich die Abzeichen zeigen oder ausblenden.
-
Auswahlliste für Jellyfin-Titel, die Flimmer nicht kennt. Beim ersten Abgleich einer gewachsenen Mediathek passierte bisher etwas Ernüchterndes: Jellyfin meldet tausend Einträge, und Flimmer ordnet keinen einzigen zu, weil der Katalog sie nicht kennt.
Jetzt steht unter dem Bericht eine Liste zum Anhaken. Was ausgewählt ist, holt Flimmer von TMDB — bei Serien samt Staffeln und Episoden — und nimmt es mit „hab ich · Jellyfin" auf.
Die Liste fasst zusammen: drei Dateien zum selben Film ergeben eine Zeile, mit dem Vermerk, wie viele darauf zeigen. Einträge, denen in Jellyfin die TMDB-Kennung fehlt, bleiben sichtbar, sind aber nicht auswählbar. Geholt werden hundert je Lauf; ein einzelner Fehlschlag beendet den Lauf nicht, und aus der Liste verschwindet nur, was tatsächlich ankam.
Geändert
- Der Bericht des Abgleichs war auf 50 Einträge gekürzt — bei über tausend gelesenen ein Blick durchs Schlüsselloch. Jetzt bis 1000, Rest wird gezählt.
- Das Häkchen heißt jetzt „Bekannte Titel dabei in die Bibliothek aufnehmen": es nimmt auf, was Flimmer kennt; die Auswahlliste holt, was es nicht kennt. Der Unterschied stand vorher nirgends.
- Einblendungen kennen einen dritten Ton für Erfolge.
Behoben
- Im Bericht stand eine Serie als Film, weil der Typ aus dem Umkehrschluss „keine Episode, also Film" abgeleitet wurde.
Getestet
93 Tests (vorher 78). Ein Test hat dabei einen Fehler gefunden, den man leicht übersieht: Die Regel „zwischen drei und fünf Uhr" las die Stunde aus der formatierten Zeichenkette, und auf Deutsch liefert das System dafür „03 Uhr" — als Zahl gelesen wird daraus nichts. Das Abzeichen wäre nie vergeben worden.
Anleitung
Zwei neue Abschnitte: Errungenschaften mit Screenshot und Titel, die Flimmer noch nicht kennt im Jellyfin-Kapitel.
Downloads
-
-
0.8.0
Stablereleased this
2026-09-02 08:36:43 +00:00 | 6 commits to main since this releaseZwei größere Bausteine: Anmeldung per Passkey und die Jellyfin-Anbindung.
Dazu vier Nacharbeiten aus dem laufenden Betrieb.⚠️ Beim Aktualisieren kommen zwei Migrationen mit (
passkeys,medienserver). Der Container spielt sie beim Start selbst ein;./update.shlegt vorher eine Sicherung an.Hinzugefügt
-
Anmeldung per Passkey (WebAuthn). Windows Hello, Face ID, Touch ID oder ein Sicherheitsschlüssel — statt Passwort. Anlegen unter Einstellungen → Passkeys, anmelden über „Mit Passkey anmelden" ohne vorherige E-Mail-Eingabe.
Das Passwort bleibt daneben bestehen, und den letzten verbleibenden Anmeldeweg lässt Flimmer nicht entfernen.
Drei Dinge, die beim Selbsthosten zählen: HTTPS ist Pflicht (Ausnahme
localhost) — sonst verschwindet die Verwaltung mit einem Hinweis statt eines kryptischen Browserfehlers. Der Hostname kommt ausAPP_URL, nicht aus demHost-Header. Und ein Domainwechsel entwertet alle Passkeys, sie sind fest an den Hostnamen gebunden.Abschaltbar über
ENABLE_PASSKEYS. -
Jellyfin anbinden — Bestand und Sichtungen übernehmen, unter Einstellungen → Medienserver.
Zugeordnet wird über die TMDB-Kennung, die Jellyfin mitliefert; kein Raten über Titel und Jahreszahlen. Angemeldet wird mit Benutzername und Passwort, nicht mit einem API-Schlüssel: mit einem Schlüssel liefert Jellyfin den Bestand ohne Gesehen-Status, und zwar ohne Fehlermeldung. Der Verbindungstest prüft das nach und sagt es. Das Zugangstoken liegt verschlüsselt in der Datenbank.
Der Abgleich ist eine Einbahnstraße: er ergänzt und löscht nie etwas, das in Flimmer steht. Fehlende Titel werden nur mit gesetztem Häkchen aufgenommen — im täglichen Lauf also nie.
Grenze der Quelle: Jellyfin kennt keine Liste einzelner Sichtungen. Ein dreimal gesehener Film kommt mit einem Termin an, nicht mit drei.
-
Standardreihenfolge je Universum. Welche Reihenfolge beim Öffnen erscheint, lässt sich jetzt festlegen. Die Rangfolge bleibt schlicht: Adresse schlägt Standard schlägt erste.
Geändert
- Rückmeldung beim Tippen in Suche und Bibliothek: das Trefferraster wird gedämpft, „sucht …" steht jetzt auch in der Bibliothek. Sammelverzögerung einheitlich 250 ms.
update.sherkennt den Container-Zustand, falls der App-Port nicht auf dem Host veröffentlicht ist — vorher meldete das Skript dann einen Fehlschlag, obwohl das Update durchgelaufen war. Der Changelog zu 0.7.1 führte diese Rückfallprüfung bereits auf; sie war beschrieben, aber nicht umgesetzt.- Eigener Compose-Projektname für die Entwicklungsdatenbank.
Behoben
- Ein als gesehen markierter Film ließ sich nicht mehr zurücksetzen. Die grüne Plakette ist jetzt klickbar; zurückgenommen wird nur der laufende Durchlauf.
- Die Beschriftungen im Titelraster sprangen, sobald ein Titel zweizeilig umbrach.
Anleitung
docs/ANLEITUNG.mdhat zwei neue Abschnitte mit Screenshots: „Anmelden per Passkey" und das Bild im Jellyfin-Abschnitt.npm run screenshotsstellt die nötigen Gegenstellen selbst bereit — virtueller Authenticator über CDP, Jellyfin-Nachbau im Skript.Getestet
78 Tests (vorher 52). Die Klickwege zusätzlich gegen einen Produktionsbau geprüft: die Passkey-Anmeldung mit einem virtuellen Authenticator, der Jellyfin-Abgleich gegen einen nachgebildeten Server samt des Falls, in dem der Gesehen-Status fehlt.
Downloads
-
-
0.7.0
Stablereleased this
2026-09-01 19:16:01 +00:00 | 24 commits to main since this release„Hab ich" — Titel, die in der eigenen Sammlung liegen. Dazu die Nacharbeiten aus der Abnahme: das Docker-Image wurde zum ersten Mal wirklich gebaut und gestartet, und dabei kamen Fehler ans Licht, die nur der echte Containerstart zeigt.
Hinzugefügt
- Eigene Sammlung: Jeder Eintrag lässt sich als „hab ich" markieren, mit Angabe wo — Jellyfin, Plex, Emby, NAS, Blu-ray, DVD oder frei getippt. Bewusst getrennt vom Feld „wo schaue ich das": Streaming-Verfügbarkeit kommt und geht, der gekaufte Film auf dem Heimserver bleibt. Gerade die Titel, die nirgends mehr laufen, will man ja wiederfinden.
- Abzeichen auf der Posterkachel und im Kopf der Detailseite
- Auf der Detailseite steht die Sammlung vor der Streaming-Verfügbarkeit — was man hat, ist die verlässlichere Antwort auf „wo kann ich das schauen"
- Eigener Filter in der Bibliothek samt Zähler
- In Export (CSV und JSON), CSV-Import und REST-API (
?sammlung=1beim Lesen,ownedundownedSourcebeim Ändern)
- Erscheinungsmeldung für Watchlist-Filme. Der Schalter dafür stand schon im Profil, verschickt wurde bisher nichts.
- Gitea-Actions-Workflows:
ci.ymlprüft bei jedem Push Typen, Tests und Produktionsbuild gegen eine echte PostgreSQL-Instanz;release.ymllegt beim Pushen eines Versions-Tags das Release mit den Notizen ausreleases/vX.Y.Z.mdan.
Behoben
- Der Container konnte seine Migrationen nicht einspielen. Das Laufzeitimage bekam die Prisma-CLI, indem einzelne Ordner aus
node_moduleskopiert wurden — dabei fehlten transitive Abhängigkeiten von@prisma/config. Die CLI wird jetzt in einer eigenen Build-Stufe vollständig installiert. - Der Build hing im Container am Schriftabruf.
next/font/googlelädt Outfit beim Bauen von Google herunter. Die variable Fassung liegt jetzt als Datei im Repository; weder beim Bauen noch zur Laufzeit geht eine Anfrage nach außen. - npm blockierte Prismas Install-Skripte (Voreinstellung seit npm 11), wodurch im Image die plattformpassende Engine fehlen konnte.
Entfernt
- Die ungenutzte
images-Konfiguration innext.config.tssamtdangerouslyAllowSVG, das ohnehin wirkungslos war. - Das überflüssige Stub-Paket
@types/bcryptjs.
Downloads
- Eigene Sammlung: Jeder Eintrag lässt sich als „hab ich" markieren, mit Angabe wo — Jellyfin, Plex, Emby, NAS, Blu-ray, DVD oder frei getippt. Bewusst getrennt vom Feld „wo schaue ich das": Streaming-Verfügbarkeit kommt und geht, der gekaufte Film auf dem Heimserver bleibt. Gerade die Titel, die nirgends mehr laufen, will man ja wiederfinden.
-
0.6.0 Stable
released this
2026-09-01 18:25:21 +00:00 | 34 commits to main since this releaseDer Rest: Benachrichtigungen, Abgleich, Import und Export, Schnittstelle, PWA — und eine bebilderte Anleitung.
Hinzugefügt
- Benachrichtigungen über vier Wege: E-Mail (SMTP), ntfy, Gotify und ein generischer Webhook, der zugleich Discord, Slack und Mattermost bedient. Jeder Nutzer richtet seine Kanäle selbst ein, kann sie einzeln stummschalten und mit einer Testnachricht ausprobieren. Dieselbe Meldung geht nie zweimal raus — auch ein Fehlversuch wird protokolliert, sonst spammt der nächste Lauf den Kanal voll, sobald er wieder erreichbar ist. Die E-Mail-Vorlage trägt Logo und Farbwelt von Flimmer.
- Täglicher Abgleich: frischt laufende Serien bei TMDB auf, meldet neue Episoden und neu verfügbare Watchlist-Titel, räumt Papierkorb und abgelaufene Sitzungen. Eingebauter Zeitplan über
ENABLE_SCHEDULERundSYNC_HOUR, von außen anstoßbar über/api/cron/syncmitCRON_SECRET, und in der Verwaltung per Knopfdruck. Ein einzelner Titel kann den Lauf nicht kippen. - Import aus Trakt.tv (JSON, egal ob Watchlist, History, Ratings oder Collection) und aus CSV mit Komma oder Semikolon. Der Import überschreibt nichts: was schon in der Bibliothek liegt, bleibt unangetastet.
- Export der eigenen Daten als CSV oder als JSON mit allen Sichtungen und Universen.
- REST-API unter
/api/v1mit persönlichen API-Schlüsseln: Bibliothek lesen und pflegen, Episoden abhaken und zurücknehmen, suchen, Kalender, Statistik, Universen, Export. Beschreibung als OpenAPI 3.1 unter/api/v1/openapi.json, dazudocs/API.mdmit Beispielen. - Einstellungsseiten für Profil, Region, Passwort, Benachrichtigungen, API-Schlüssel sowie Import und Export.
- Verwaltungsbereich: Instanzname, Registrierung öffnen und schließen, öffentliche Profile erlauben, Konten sperren und Rechte vergeben, Abgleich anstoßen und der Zustand der Instanz auf einen Blick. Die letzte Administration lässt sich nicht entmachten.
- Öffentliche Profilseite unter
/u/<adresse>— Zahlen und zuletzt Gesehenes, aber keine Notizen, keine Watchlist, keine E-Mail-Adresse. Abschaltbar durch den Nutzer und instanzweit durch den Betreiber. - PWA-Feinschliff: eigener Service Worker (Poster aus dem Zwischenspeicher, Seiten zuerst aus dem Netz, Offline-Rückfall) und eine Offline-Seite.
TMDB_BASE_URLfür Instanzen hinter einem eigenen Proxy — und für den mitgelieferten TMDB-Ersatzscripts/tmdb-stub.mjs, mit dem sich die Suche ohne Schlüssel aus den Beispieldaten ausprobieren lässt.- Bebilderte Anleitung
docs/ANLEITUNG.mdmit 18 Screenshots aus der laufenden Instanz, aufgenommen vonnpm run screenshots. - 9 weitere Tests für CSV- und Trakt-Import, Export, das Aufräumen des Papierkorbs und den Schutz vor Doppelversand — zusammen 49.
Downloads
-
0.5.0 Stable
released this
2026-09-01 17:54:17 +00:00 | 44 commits to main since this releaseÜbersicht, Kalender und Statistik.
Hinzugefügt
- Übersicht mit „Weiterschauen" (laufende Serien samt nächster Episode, Fortschritt und „+1 Episode" direkt aus der Kachel), den Ausstrahlungen der nächsten vier Wochen und den Watchlist-Titeln, die zuletzt auf einem Dienst verfügbar geworden sind.
- Kalender als Monatsraster mit Blättern und Sprung zum heutigen Tag, darunter die Termine des Monats als Liste. Ausgezeichnet als Tabelle — ein Kalender ist eine Tabelle, und mit Screenreader wird daraus dann „Woche 3, Donnerstag, 24." statt einer ununterscheidbaren Kachelwüste.
- Statistikseite mit Gesamtschauzeit, Episoden und Filmen je Monat als Diagramm, Verteilung nach Streamingdienst und Genre, Jahresrückblick („2026 in Zahlen") sowie den Listen „wo die meiste Zeit hinging" und „deine besten Bewertungen". Alles aus den Sichtungen gerechnet, Rewatches zählen mit.
- Diagramme als handgeschriebenes SVG — ohne Chart-Bibliothek, dafür an den Design-Tokens. Die beiden Serienfarben sind abgedunkelte Varianten der Signaturfarben; sie bestehen in beiden Farbschemata die Prüfungen auf Helligkeitsband, Sättigung, Farbfehlsichtigkeit und Kontrast. Die vollen Signaturtöne wären auf dunklem Grund zu hell. Legende, Achsenwerte, Tooltip beim Überfahren und eine für Screenreader hinterlegte Tabelle sorgen dafür, dass die Aussage nie allein an der Farbe hängt.
- Markenfarben der Streamingdienste in der Verteilung, aber nur, wenn sie auf hellem und dunklem Grund mindestens 3:1 erreichen — sonst der geprüfte Standardton.
- 7 weitere Tests für Gesamtzahlen, Monatsgruppierung, Jahresrückblick, „Weiterschauen" und den Kalenderzeitraum.
Behoben
- Das Monatsdiagramm blieb leer, obwohl Sichtungen vorlagen:
date_truncliefert Mitternacht in der Zeitzone der Datenbanksitzung, JavaScript legte beim Abgleich die lokale Zone an — zwei Stunden Versatz genügten, damit kein einziger Monatsschlüssel mehr passte. Der Schlüssel kommt jetzt als Text („2026-04") aus der Datenbank. - Eine laufende Serie, bei der man auf dem Stand ist, gilt als „abgeschlossen" und verschwand damit aus dem Kalender — dabei will man die nächste Folge dort erst recht sehen. Jetzt fällt nur Abgebrochenes heraus.
- Der SVG-Titel des Diagramms brach die Hydration: React behandelt
<title>als Dokument-Metadatum und hebt es aus dem SVG heraus. Die Beschriftung hängt jetzt alsaria-labelam<svg>.
Downloads
-
0.4.0 Stable
released this
2026-09-01 17:39:35 +00:00 | 49 commits to main since this releaseUniversen: zusammengehörige Titel, mehrere Reihenfolgen, ein Gesamtfortschritt.
Hinzugefügt
- Universen aus beliebigen Filmen und Serien — MCU, Star Wars, Wizarding World oder was auch immer zusammengehört.
- Mehrere Reihenfolgen je Universum. Die Erscheinungsreihenfolge wird aus den Erscheinungsdaten berechnet und nie gespeichert — sie stimmt damit immer. Weitere Reihenfolgen (Story-Chronologie, Einsteiger-Route) sind frei sortierbar, per Ziehen und über Pfeilknöpfe. Reines Drag & Drop wäre mit Tastatur nicht bedienbar und auf dem Handy fummelig.
- TMDB-Collections als Startpunkt: Reihen, die in der eigenen Bibliothek vorkommen, lassen sich mit einem Klick übernehmen.
- Universums-Detailseite mit nummerierter Liste, Gesamtfortschritt („4 von 7 abgeschlossen, 21 h 21 min gesehen"), hervorgehobenem „Als Nächstes dran" und der Restlaufzeit bis zum Ende des Universums. Bei Serien schrumpft die Restzeit anteilig mit den gesehenen Episoden.
- Teilen mit anderen Konten der Instanz, wahlweise nur zum Ansehen oder zum gemeinsamen Pflegen. Der Fortschritt ist dabei immer der des jeweiligen Betrachters — ein geteiltes Universum zeigt jeder Person ihren eigenen Stand. Löschen bleibt dem Besitzer vorbehalten.
- 12 weitere Tests für Reihenfolgen, Fortschrittsberechnung über Filme und Serien hinweg, Freigaben und die Rechteprüfung.
- Beispieluniversum im Seed: die Sternenpfad-Reihe mit fünf Filmen, zwei Serien und einer abweichenden Story-Chronologie.
Behoben
- Die Posterkachel zog über
lib/images.tsdie serverseitige Cache-Logik in den Browser-Bundle, sobald sie aus einer Client-Komponente heraus gerendert wurde — der Build brach ab, sobald eine solche Seite dazukam. Die reine URL-Bildung liegt jetzt inlib/image-url.ts, der Dateicache bleibt serverseitig.
Downloads
-
0.3.0 Stable
released this
2026-09-01 17:24:59 +00:00 | 54 commits to main since this releaseDas Kernstück: Bibliothek, Status und Episodenfortschritt.
Hinzugefügt
- Bibliothek als Posterraster mit Volltextsuche und Filtern nach Status, Typ, Genre, Streamingdienst und Tag; Sortierung nach zuletzt aktualisiert, hinzugefügt, Titel, Bewertung oder Erscheinungsjahr. Der gesamte Filterstand steht in der URL und ist damit teilbar.
- Fünf Status je Eintrag (Schaue gerade, Pausiert, Abgeschlossen, Abgebrochen, Watchlist). Der Status ergibt sich beim Abhaken von selbst: die erste Episode startet einen Titel, die letzte schließt ihn ab. Pausiert und Abgebrochen bleiben unangetastet — wer bewusst pausiert hat, will das nicht durch eine Sichtung aufgehoben bekommen.
- Episodenfortschritt: einzeln abhaken, ganze Staffel auf einmal, „bis hierhin gesehen" für den Einstieg mitten in einer Staffel, und ein „+1 Episode"-Knopf, der genau die nächste offene Episode nimmt. Häkchen reagieren sofort und werden zurückgedreht, wenn der Server widerspricht; beim Abhaken glimmt die Zeile einmal warm auf.
- „Als Nächstes dran" mit Episodencode, Titel und Ausstrahlungsdatum; Fortschritt in Prozent auf Basis der echten Episodenzahl, dazu die verbleibende Laufzeit.
- Rewatch-Zählung: ein neuer Durchlauf setzt den Fortschritt zurück, die Sichtungen des vorherigen bleiben für die Statistik erhalten. Bei Filmen zählt jeder Durchlauf einzeln.
- Rückgängig für jede Sichtungsaktion — die Rückmeldung am unteren Rand nennt, was passiert ist, und nimmt es auf Klick zurück.
- Pro Eintrag: Bewertung von 1 bis 10, Notizfeld, eigene Tags und das Feld „wo schaue ich das", das beim Aufnehmen einen Vorschlag aus der Streaming-Verfügbarkeit erhält und jederzeit überschreibbar ist.
- Papierkorb statt hartem Löschen: entfernte Titel bleiben 30 Tage liegen und behalten dabei ihren Fortschritt. Wird ein Titel erneut aufgenommen, lebt derselbe Eintrag wieder auf.
- Titel selbst anlegen für alles, was TMDB nicht kennt. Solche Einträge haben keine TMDB-ID und werden vom Abgleich nie angefasst.
- Seed mit Beispielbibliothek: erfundener Katalog aus 8 Serien und 10 Filmen samt lokal erzeugten Postern, dazu 18 Bibliothekseinträge und 85 Sichtungen über die letzten Monate verteilt.
- 21 Tests decken Aufnehmen, Abhaken, Fortschritt, Rewatch, Papierkorb und den Zugriffsschutz zwischen Nutzern ab.
Geändert
- Die Detailseite liegt jetzt unter
/titel/<id>und hängt an der internen Titel-ID statt an der TMDB-ID — nur so bekommen manuell angelegte Titel dieselbe Seite. Treffer aus der Suche laufen über/tmdb/<art>/<id>, das den Titel holt und weiterleitet. - Die Zahl der Build-Worker ist auf vier begrenzt: mit einem Worker je Kern stürzte der Build auf einer 18-Kern-Maschine reproduzierbar ab, weil jeder Worker eine eigene Prisma-Engine hochzieht.
Downloads
-
0.2.0 Stable
released this
2026-09-01 17:00:20 +00:00 | 61 commits to main since this releaseMetadaten: 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.
Downloads
-
0.1.0 Stable
released this
2026-09-01 16:47:07 +00:00 | 66 commits to main since this releaseErste 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.
Downloads
- Projektgerüst mit Next.js 16 (App Router), TypeScript, Tailwind CSS v4 und