Files
Florian Wilde 9ee8664233
CI / pruefen (push) Canceled after 0s
Release / veroeffentlichen (push) Canceled after 0s
feat: eigene Sammlung — „hab ich" mit Quelle
Streaming-Verfügbarkeit beantwortet nur die halbe Frage: manche Filme laufen
nirgends mehr, die hat man gekauft und liegen zu Hause — in Jellyfin, Plex,
Emby, auf dem NAS oder als Scheibe.

Bewusst getrennt vom Feld „wo schaue ich das": das eine sagt, wo ein Titel
gerade läuft, und das ändert sich ständig; das andere sagt, was einem gehört,
und das bleibt. Auf der Detailseite steht die Sammlung deshalb vor der
Verfügbarkeit — was man hat, ist die verlässlichere Antwort.

Durchgezogen bis in Filter, Export, CSV-Import und REST-API.
2026-09-01 21:15:53 +02:00

3.0 KiB

Flimmer 0.7.0

„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=1 beim Lesen, owned und ownedSource beim Ändern)

Behoben

  • Der Container konnte seine Migrationen nicht einspielen. Das Laufzeitimage bekam die Prisma-CLI, indem einzelne Ordner aus node_modules kopiert wurden — dabei fehlten transitive Abhängigkeiten von @prisma/config (effect und weitere). Die CLI wird jetzt in einer eigenen Build-Stufe vollständig installiert und liegt im Laufzeitimage unter /node_modules, wo sie den getracten Abhängigkeitsbaum der Anwendung nicht stört.

  • Der Build hing im Container am Schriftabruf. next/font/google lädt Outfit beim Bauen von Google herunter — das macht den Build von einer Netzverbindung abhängig und blieb im Container hängen. Die variable Fassung liegt jetzt als Datei im Repository; weder beim Bauen noch zur Laufzeit geht eine Anfrage nach außen. Für eine selbst gehostete Anwendung ist das ohnehin das Richtige.

  • npm blockierte Prismas Install-Skripte (Voreinstellung seit npm 11), wodurch im Image die plattformpassende Engine fehlen konnte. Sie sind jetzt gezielt für prisma und @prisma/engines erlaubt statt pauschal.

Hinzugefügt

  • Erscheinungsmeldung für Watchlist-Filme. Der Schalter dafür stand schon im Profil, verschickt wurde bisher nichts. Betrachtet wird ein Zeitfenster der letzten Tage statt eines Zustandswechsels — TMDB verschiebt Termine gelegentlich, und ein einmal verpasstes Datum soll die Meldung nicht für immer verhindern.
  • Gitea-Actions-Workflows: ci.yml prüft bei jedem Push Typen, Tests und Produktionsbuild gegen eine echte PostgreSQL-Instanz; release.yml legt beim Pushen eines Versions-Tags das Release mit den Notizen aus releases/vX.Y.Z.md an.
  • Diagrammfarben und ihre Prüfwerte in docs/DESIGN.md festgehalten; das öffentliche Profil in die Anleitung aufgenommen.

Entfernt

  • Die ungenutzte images-Konfiguration in next.config.ts. next/image kommt nirgends zum Einsatz — damit entfällt auch das sicherheitsrelevant aussehende dangerouslyAllowSVG, das ohnehin wirkungslos war.