docs: Changelog, Release-Notes und DEVLOG für 0.2.0
This commit is contained in:
+36
-1
@@ -7,6 +7,40 @@ die Versionierung [Semantic Versioning](https://semver.org/lang/de/).
|
|||||||
|
|
||||||
## [Unveröffentlicht]
|
## [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
|
## [0.1.0] — 2026-09-01
|
||||||
|
|
||||||
Erste lauffähige Etappe: Gerüst, Marke, Datenmodell und Anmeldung.
|
Erste lauffähige Etappe: Gerüst, Marke, Datenmodell und Anmeldung.
|
||||||
@@ -46,5 +80,6 @@ Erste lauffähige Etappe: Gerüst, Marke, Datenmodell und Anmeldung.
|
|||||||
dass weitere Sprachen als zusätzliche Datei dazukommen können.
|
dass weitere Sprachen als zusätzliche Datei dazukommen können.
|
||||||
- **Seed-Skript** mit Demo-Konten sowie README und Design-Dokumentation.
|
- **Seed-Skript** mit Demo-Konten sowie README und Design-Dokumentation.
|
||||||
|
|
||||||
[Unveröffentlicht]: https://git.wilde-server.de/florian.wilde/flimmer/compare/v0.1.0...HEAD
|
[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
|
[0.1.0]: https://git.wilde-server.de/florian.wilde/flimmer/releases/tag/v0.1.0
|
||||||
|
|||||||
@@ -80,9 +80,28 @@ Statistiken, Benachrichtigungen, REST-API, PWA. Oberflächensprache **Deutsch**.
|
|||||||
- [ ] Optional per ENV: OIDC/SSO (Authelia, Keycloak)
|
- [ ] Optional per ENV: OIDC/SSO (Authelia, Keycloak)
|
||||||
- [ ] Registrierung durch Admin abschaltbar; erster Nutzer wird Admin
|
- [ ] Registrierung durch Admin abschaltbar; erster Nutzer wird Admin
|
||||||
|
|
||||||
|
## Wichtige technische Merkposten
|
||||||
|
|
||||||
|
- **Next 16**: Request-APIs sind async (`cookies()`, `headers()`, `params`,
|
||||||
|
`searchParams`). `middleware.ts` heißt jetzt `proxy.ts`. Turbopack ist Standard.
|
||||||
|
Breaking Changes stehen in `node_modules/next/dist/docs/01-app/02-guides/upgrading/version-16.md`.
|
||||||
|
- **Prisma 7**: keine `url` im Schema — Treiber-Adapter (`@prisma/adapter-pg`)
|
||||||
|
im Client, URL in `prisma.config.mjs`. Generator ist `prisma-client`
|
||||||
|
(TypeScript-Ausgabe nach `src/generated/prisma`, gitignored).
|
||||||
|
Config bewusst `.mjs`, damit die CLI im Produktionsimage ohne TS-Loader läuft.
|
||||||
|
- **Tailwind v4**: `@theme inline` reicht die `--fl-*`-Variablen durch,
|
||||||
|
`@custom-variant dark` hängt an `[data-theme="dark"]`.
|
||||||
|
- **Zwei Verläufe**: `--fl-gradient` für Flächen, `--fl-gradient-ink` für Text
|
||||||
|
(im Light Mode abgedunkelt, sonst kein AA). Logo-Stops `--fl-brand-1/2/3`.
|
||||||
|
- **Dev-Umgebung**: Postgres auf `localhost:5439` (`docker-compose.dev.yml`),
|
||||||
|
Dev-Server auf **Port 3011** (3000 und 3010 sind von anderen Projekten belegt).
|
||||||
|
- **Screenshots**: `node scripts/shot.mjs <url> <ziel.png> [w] [h] [theme]`.
|
||||||
|
- Next hängt selbst einen Block an diese Datei an — der bleibt drin.
|
||||||
|
|
||||||
## Fortschritt
|
## Fortschritt
|
||||||
|
|
||||||
- Stand: **Etappe 1 läuft** (Start 2026-09-01 18:09)
|
- ✅ **Etappe 1** (v0.1.0, released) — Gerüst, Branding, Docker, Schema, Auth. 38 min.
|
||||||
|
- ⏳ **Etappe 2** — TMDB-Anbindung
|
||||||
|
|
||||||
<!-- BEGIN:nextjs-agent-rules -->
|
<!-- BEGIN:nextjs-agent-rules -->
|
||||||
|
|
||||||
|
|||||||
@@ -21,10 +21,24 @@ Alle Zeiten per `date`-Befehl erfasst (Europe/Berlin), nicht geschätzt.
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## Etappe 2 — TMDB-Anbindung (v0.2.0)
|
||||||
|
|
||||||
|
| # | Start | Ende | Dauer | Arbeitsschritt |
|
||||||
|
|---|---|---|---|---|
|
||||||
|
| 2.1 | 18:47 | 18:51 | 4 min | TMDB-Client: Suche, Serien-, Film- und Staffelabruf, Collections, Anbieterlisten; kurzer Antwortspeicher |
|
||||||
|
| 2.2 | 18:51 | 18:54 | 3 min | Katalogschicht: Import von Titeln, Staffeln, Episoden und Streamingdiensten; Bild-Cache mit eigenem Ausliefer-Endpunkt |
|
||||||
|
| 2.3 | 18:54 | 18:57 | 3 min | Oberfläche: Suchseite mit Typfilter, Detailseite mit Staffeln, Poster- und Anbieterkomponenten |
|
||||||
|
| 2.4 | 18:57 | 19:01 | 4 min | Nachgebildete TMDB-Antworten und Testlauf (7 Tests); dabei zwei Fehler gefunden und behoben: veraltete Zähler nach dem Serienimport, kaputtes Bildsymbol statt Rückfallkachel |
|
||||||
|
|
||||||
|
**Etappe 2 gesamt: 14 min** (2026-09-01, 18:47 – 19:01)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## Gesamtübersicht
|
## Gesamtübersicht
|
||||||
|
|
||||||
| Etappe | Version | Dauer |
|
| Etappe | Version | Dauer |
|
||||||
|---|---|---|
|
|---|---|---|
|
||||||
| 1 — Gerüst, Branding, Docker, Schema, Auth | 0.1.0 | 38 min |
|
| 1 — Gerüst, Branding, Docker, Schema, Auth | 0.1.0 | 38 min |
|
||||||
|
| 2 — TMDB-Anbindung | 0.2.0 | 14 min |
|
||||||
|
|
||||||
**Bisher gesamt: 38 min**
|
**Bisher gesamt: 52 min**
|
||||||
|
|||||||
@@ -0,0 +1,33 @@
|
|||||||
|
# Flimmer 0.2.0
|
||||||
|
|
||||||
|
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.
|
||||||
Reference in New Issue
Block a user