docs: Changelog, Release-Notes und DEVLOG fuer 0.6.0

This commit is contained in:
Florian Wilde
2026-09-01 20:25:13 +02:00
parent 8d6f1d044a
commit ff9d380d42
4 changed files with 153 additions and 4 deletions
+49 -1
View File
@@ -7,6 +7,53 @@ die Versionierung [Semantic Versioning](https://semver.org/lang/de/).
## [Unveröffentlicht]
## [0.6.0] — 2026-09-01
Der 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_SCHEDULER` und `SYNC_HOUR`, von
außen anstoßbar über `/api/cron/sync` mit `CRON_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/v1` mit 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`, dazu `docs/API.md` mit 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_URL`** für Instanzen hinter einem eigenen Proxy — und für den
mitgelieferten TMDB-Ersatz `scripts/tmdb-stub.mjs`, mit dem sich die Suche
ohne Schlüssel aus den Beispieldaten ausprobieren lässt.
- **Bebilderte Anleitung** `docs/ANLEITUNG.md` mit 18 Screenshots aus der
laufenden Instanz, aufgenommen von `npm run screenshots`.
- **9 weitere Tests** für CSV- und Trakt-Import, Export, das Aufräumen des
Papierkorbs und den Schutz vor Doppelversand — zusammen 49.
## [0.5.0] — 2026-09-01
Übersicht, Kalender und Statistik.
@@ -214,7 +261,8 @@ Erste lauffähige Etappe: Gerüst, Marke, Datenmodell und Anmeldung.
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.5.0...HEAD
[Unveröffentlicht]: https://git.wilde-server.de/florian.wilde/flimmer/compare/v0.6.0...HEAD
[0.6.0]: https://git.wilde-server.de/florian.wilde/flimmer/releases/tag/v0.6.0
[0.5.0]: https://git.wilde-server.de/florian.wilde/flimmer/releases/tag/v0.5.0
[0.4.0]: https://git.wilde-server.de/florian.wilde/flimmer/releases/tag/v0.4.0
[0.3.0]: https://git.wilde-server.de/florian.wilde/flimmer/releases/tag/v0.3.0
+19 -2
View File
@@ -100,8 +100,25 @@ Statistiken, Benachrichtigungen, REST-API, PWA. Oberflächensprache **Deutsch**.
## Fortschritt
- ✅ **Etappe 1** (v0.1.0, released) — Gerüst, Branding, Docker, Schema, Auth. 38 min.
- ⏳ **Etappe 2** — TMDB-Anbindung
- ✅ **Etappe 1** (v0.1.0) — Gerüst, Branding, Docker, Schema, Auth. 38 min.
- ✅ **Etappe 2** (v0.2.0) — TMDB: Suche, Import, Episoden, Bild-Cache. 14 min.
- ✅ **Etappe 3** (v0.3.0) — Bibliothek, Status, Episodenfortschritt, Papierkorb. 24 min.
- ✅ **Etappe 4** (v0.4.0) — Universen mit Reihenfolgen, Freigaben. 14 min.
- ✅ **Etappe 5** (v0.5.0) — Übersicht, Kalender, Statistik. 15 min.
- ✅ **Etappe 6** (v0.6.0) — Benachrichtigungen, Abgleich, Import/Export, REST-API, PWA, Anleitung. 31 min.
**Alle sechs Etappen abgeschlossen. Gesamtzeit: 2 h 16 min.**
### Nützliches für spätere Arbeiten
- Suche ohne TMDB-Schlüssel ausprobieren:
`npm run tmdb:stub` und dann
`TMDB_API_KEY=stub TMDB_BASE_URL=http://127.0.0.1:3099/3 PORT=3011 npm run dev`
- Screenshots neu aufnehmen: `npm run screenshots` (nimmt auf und verkleinert)
- `npm test` läuft seriell gegen die Dev-Datenbank, braucht keinen TMDB-Schlüssel
- Deutsche Anführungszeichen (`„…"`) niemals in JS-**String-Literalen** —
das ASCII-Schlusszeichen beendet den String. In JSX-Text und Kommentaren ok.
- Heredocs im Bash-Tool sind bei langen TSX-Dateien unzuverlässig — dann das
Write-Werkzeug benutzen.
<!-- BEGIN:nextjs-agent-rules -->
+39 -1
View File
@@ -75,6 +75,22 @@ Alle Zeiten per `date`-Befehl erfasst (Europe/Berlin), nicht geschätzt.
---
## Etappe 6 — Benachrichtigungen, Sync, Import/Export, REST-API, PWA (v0.6.0)
| # | Start | Ende | Dauer | Arbeitsschritt |
|---|---|---|---|---|
| 6.1 | 19:54 | 19:58 | 4 min | Benachrichtigungen über vier Wege samt E-Mail-Vorlage; Hintergrundlauf mit Zeitplan und Cron-Endpunkt |
| 6.2 | 19:58 | 20:02 | 4 min | Import (Trakt, CSV) und Export (CSV, JSON) |
| 6.3 | 20:02 | 20:07 | 5 min | REST-API `/api/v1` mit API-Schlüsseln, OpenAPI-Beschreibung |
| 6.4 | 20:07 | 20:12 | 5 min | Einstellungsseiten, Verwaltung, öffentliches Profil; Service Worker und Offline-Seite |
| 6.5 | 20:12 | 20:15 | 3 min | 9 Tests für Import, Export, Papierkorb und Doppelversandschutz |
| 6.6 | 20:15 | 20:20 | 5 min | TMDB-Ersatz für Screenshots, 18 Aufnahmen, Verkleinerung auf WebP (13 MB → 0,6 MB) |
| 6.7 | 20:20 | 20:25 | 5 min | `docs/ANLEITUNG.md` und `docs/API.md`, README erweitert, API von Hand durchgetestet |
**Etappe 6 gesamt: 31 min** (2026-09-01, 19:54 – 20:25)
---
## Gesamtübersicht
| Etappe | Version | Dauer |
@@ -84,5 +100,27 @@ Alle Zeiten per `date`-Befehl erfasst (Europe/Berlin), nicht geschätzt.
| 3 — Kern-Tracking | 0.3.0 | 24 min |
| 4 — Universen | 0.4.0 | 14 min |
| 5 — Dashboard, Kalender, Statistik | 0.5.0 | 15 min |
| 6 — Benachrichtigungen, Sync, Import/Export, API, PWA | 0.6.0 | 31 min |
**Bisher gesamt: 105 min**
**Gesamtentwicklungszeit: 2 h 16 min** (136 min, 2026-09-01, 18:09 – 20:25)
### Womit die Zeit verging
| Anteil | Bereich |
|---|---|
| ~35 min | Oberfläche und Design (Branding, Komponenten, Seiten) |
| ~30 min | Domänenlogik (Tracking, Universen, Statistik, Abgleich) |
| ~25 min | Schnittstellen nach außen (TMDB, REST-API, Import/Export, Benachrichtigungen) |
| ~20 min | Tests — 49 Stück, die unterwegs sieben echte Fehler gefunden haben |
| ~15 min | Dokumentation, Screenshots, Changelog, Releases |
| ~11 min | Gerüst, Docker, Datenmodell, Werkzeugkette |
### Fehler, die die Tests gefunden haben
1. `importSeries` gab veraltete Staffel- und Episodenzähler zurück.
2. Testdateien räumten sich im parallelen Lauf gegenseitig die Fixtures weg.
3. Das Monatsdiagramm blieb wegen eines Zeitzonenversatzes leer.
4. Abgeschlossene, aber weiterlaufende Serien verschwanden aus dem Kalender.
5. Poster zeigten das kaputte Bildsymbol statt der Rückfallkachel.
6. Eine `server-only`-Kette landete im Browser-Bundle und brach den Build.
7. Der SVG-Titel eines Diagramms brach die Hydration.
+46
View File
@@ -0,0 +1,46 @@
# Flimmer 0.6.0
Der 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_SCHEDULER` und `SYNC_HOUR`, von
außen anstoßbar über `/api/cron/sync` mit `CRON_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/v1` mit 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`, dazu `docs/API.md` mit 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_URL`** für Instanzen hinter einem eigenen Proxy — und für den
mitgelieferten TMDB-Ersatz `scripts/tmdb-stub.mjs`, mit dem sich die Suche
ohne Schlüssel aus den Beispieldaten ausprobieren lässt.
- **Bebilderte Anleitung** `docs/ANLEITUNG.md` mit 18 Screenshots aus der
laufenden Instanz, aufgenommen von `npm run screenshots`.
- **9 weitere Tests** für CSV- und Trakt-Import, Export, das Aufräumen des
Papierkorbs und den Schutz vor Doppelversand — zusammen 49.