Files
tessera-ctl/.planning/quick/261008-w5w-modul-changelog-und-modulversionen-nacht/261008-w5w-SUMMARY.md
T
2026-10-08 23:34:07 +02:00

113 lines
7.7 KiB
Markdown

---
phase: 261008-w5w-modul-changelog-und-modulversionen-nacht
plan: 01
subsystem: module-registry, marketplace
tags: [changelog, modulversion, marketplace, waechter-test]
status: complete
completed: 2026-10-08
commits: 3
plan_head_before: 1d33990
plan_head_after: 4c14ec895ab08236b1e8a1238809035024ce4047
actuals:
tokens: 60000
tasks: 3
commits: 3
key-files:
created:
- apps/api/src/module-registry/module-changelog.ts
- apps/api/src/module-registry/module-changelog.registry.ts
- apps/api/src/module-registry/module-changelog.spec.ts
- apps/api/src/*/*.changelog.ts (10 Dateien)
- apps/web/src/app/(portal)/marketplace/components/ModuleChangelog.tsx
- .planning/quick/261008-w5w-modul-changelog-und-modulversionen-nacht/e2e/e2e-changelog.sh
modified:
- apps/api/src/*/*.seed.ts (10 Dateien)
- apps/api/src/module-registry/module-registry.controller.ts
- apps/web/src/app/(portal)/marketplace/[slug]/page.tsx
- apps/web/src/app/(portal)/marketplace/[slug]/detail.test.tsx
- apps/web/src/messages/de.json
- apps/web/src/messages/en.json
- docs/anleitung-entwicklung.md
- docs/anleitung-betrieb.md
- docs/anleitung-anwender.md
- CHANGELOG.md
decisions:
- "Auslieferung über GET /modules/changelog/:slug aus Code (Map), keine Datenbankspalte, keine Migration"
- "Keine CI-Prüfung Ordner-geändert-ohne-Changelog; stattdessen Wächter-Test plus Prüfbefehl in der Doku"
---
# Quick 261008-w5w: Modul-Changelog und Modulversionen nachgetragen
Jedes der zehn Module hat jetzt einen eigenen Changelog als einzige Quelle seiner Versionsnummer; der Marktplatz zeigt ihn auf der Detailseite als Abschnitt „Änderungen“, und ein Wächter-Test erzwingt die Übereinstimmung von Seed-Version und Changelog.
## Commits
- 79210d7 feat: Durchstich mit Nextcloud-Status (Typen, Register, Route, Wächter, Marktplatz-Abschnitt)
- f2bb5ff feat: Historie der übrigen neun Module, alle Seeds auf latestVersion, Vollständigkeits-Wächter
- 4c14ec8 docs: drei Anleitungen und CHANGELOG.md
## Versionsübersicht je Modul (mit Begründung)
Daten laut CHANGELOG.md-Überschriften der Tessera-Versionen.
- **cert-manager**: 1.0.0 (2026-09-15), 1.0.1 (2026-09-22), 1.0.2 (2026-09-28), 1.1.0 (2026-10-02)
- 1.0.0: im Tag v1.0.0 enthalten. 1.0.1 (v1.3.0): ZIP-Name übersetzt (Geändert) und Bedienhilfen für Tastatur/Bildschirmleser (Behoben), kein Neu, also Patch. 1.0.2 (v1.5.0): Mosaik-Umstellung, Patch. 1.1.0 (v1.9.2): neuer Reiter „Übersicht“ ist Neu, also Minor; Siezen und PFX-Hinweis aus CHANGELOG.md und Commit 90e2157 liegen im selben Eintrag.
- **dkv-fleet**: 1.0.0 (2026-09-15), 1.0.1 (2026-09-22), 1.0.2 (2026-09-28), 1.0.3 (2026-10-06), 1.1.0 (2026-10-08)
- 1.0.1 (v1.3.0): Löschdialog gegen Doppelauslösung gesperrt, Fahrzeugtabelle übersetzt (nur Behoben), Patch. 1.0.2 (v1.5.0): Mosaik. 1.0.3 (v1.10.0): Freigabestufe „Verwalten“ (Geändert, Commit c2ebc8d). Unveröffentlicht: Modulbeschreibung (Geändert) ergäbe nach Regel 1.0.4; wegen der auf der Beta bereits sichtbaren 1.1.0 auf 1.1.0 gesetzt (Sprung von 1.0.3 auf 1.1.0 ist bewusst). Die DKV-Zeile in CHANGELOG.md nannte schon „Modulversion 1.1.0.“, daher keine Textänderung nötig (Wächter/Prüfbefehl bestätigt die Gleichheit).
- **domaincheck**: 1.0.0 (2026-09-15), 1.0.1 (2026-09-28)
- Einzige sichtbare Änderung nach der Erstaufnahme ist die Mosaik-Umstellung (v1.5.0), Patch.
- **domains**: 1.0.0 (2026-10-08)
- Nie freigegeben; Nachbesserungen sind in die fünf Neu-Punkte eingeflossen.
- **handelsware-datev**: 1.0.0 (2026-10-06)
- Erstaufnahme in v1.10.0 (Freigabestufe „Verwalten“ gehört zu 1.0.0).
- **kantine-datev**: 1.0.0 (2026-10-06)
- Erstaufnahme in v1.10.0.
- **nextcloud-files**: 1.0.0 (2026-10-08)
- Nie freigegeben; die Prüf- und Korrekturrunde vom 08.10. ist in vier Neu-Punkte verdichtet.
- **nextcloud-status**: 1.0.0 (2026-10-06), 1.1.0 (2026-10-08)
- 1.1.0 unveröffentlicht: Suchfeld und http-Bildadresse sind Neu, also Minor.
- **proxmox**: 1.0.0 (2026-09-25), 1.0.1 (2026-09-28), 1.1.0 (2026-10-06)
- 1.0.0 = Tessera v1.4.0. 1.0.1 (v1.5.0): Mosaik und Dashboard-Kacheln, Patch. 1.1.0 (v1.10.0): Autostart-Warnung (873d15d) ist Neu, plus „Verwalten“ als Geändert, Minor.
- **tender-radar**: 1.0.0 (2026-09-15), 1.0.1 (2026-09-28)
- Die v1.3.0-Commits am Modul waren reine Lint-/Refactor-/Typ-Arbeiten ohne sichtbare Wirkung, daher keine Version. v1.5.0: Mosaik, Patch.
Letzte Versionen auf dem laufenden Stack (Katalog = neuester Changelog-Eintrag, per E2E bestätigt): cert-manager 1.1.0, dkv-fleet 1.1.0, domaincheck 1.0.1, domains 1.0.0, handelsware-datev 1.0.0, kantine-datev 1.0.0, nextcloud-files 1.0.0, nextcloud-status 1.1.0, proxmox 1.1.0, tender-radar 1.0.1.
## Tests
- API: `pnpm --filter @tessera/api test` 152 Dateien, 3036 Tests grün; `tsc --noEmit` sauber. Wächter `module-changelog.spec.ts` (75 Fälle: Format, Seed-Version, Vollständigkeit, keine Waisen, Prototyp-Schlüssel, Ersatzschreibungen, Mandanten-/Lizenzbegriffe, dkv >= 1.1.0, domains/nextcloud-files 1.0.0 vom 2026-10-08).
- Web: `pnpm --filter @tessera/web test` 144 Dateien, 1653 Tests grün (inklusive neuer Detailseiten-Fälle und umlaut-guard); `tsc --noEmit` sauber.
- E2E `e2e/e2e-changelog.sh` (Stack neu gebaut): 401 ohne Anmeldung, `[]` für does-not-exist/`__proto__`/constructor/toString, für alle zehn Katalog-Module Katalog-Version = neuester Changelog-Eintrag: „e2e-changelog ok“.
## Browserprüfung
Sieben Bildschirmfotos in `.playwright-mcp/module-changelog/` (git-ignoriert): t3-dark-marketplace, t3-dark-nextcloud-status, t3-dark-nextcloud-status-open, t3-dark-tender-radar, t3-dark-domains, t3-light-nextcloud-status, t3-dark-en. Beurteilt: Abschnitt „Änderungen“ in Dunkel und Hell, „Aktuell“-Abzeichen, ältere Version zugeklappt und aufgeklappt, domains ohne aufklappbare Version, Englisch („Changes“, englische Einträge, Datum „October 8, 2026“). Keine Auffälligkeiten bei Abständen, Kontrast oder abgeschnittenen Texten.
## Deviations from Plan
**1. [Rule 3 - Blocking] Browserprüfung per Playwright-Bibliothek statt Playwright-MCP-Werkzeug**
- Der Ausführende hat die MCP-Browserwerkzeuge nicht zur Verfügung. Stattdessen lief ein Node-Skript mit `playwright-core` aus dem npx-Cache und `/bin/chromium` gegen http://localhost:3000 (angemeldet als admin; Dunkel/Hell per localStorage-Schlüssel `theme` des next-themes statt Klick auf den Theme-Knopf; Englisch per Cookie NEXT_LOCALE=en). Das Skript liegt nur im Scratchpad, nicht im Repo. Gemessen wurde nur am gerenderten Inhalt, keine fetch-Messungen aus der Seite.
**2. [Hinweis, keine Abweichung im Ergebnis] Marktplatz-Kacheln zeigen keine Version**
- Der Plan sprach von „Versionen der Kacheln“ in der Übersicht; die Kacheln zeigen aber keine Versionsnummer (nur die Detailseite). Abgeglichen wurde daher die Katalog-Version (E2E) und die Versionszeile der Detailseite.
**3. Reihenfolge Test/Umsetzung in Aufgabe 1**
- Typen, Register und Route wurden vor dem Spec geschrieben; der Spec wurde danach vervollständigt. Ergebnis ist identisch, aber kein echter Rot-Lauf vorab.
**4. CHANGELOG.md-DKV-Zeile unverändert**
- Sie nennt bereits „Modulversion 1.1.0.“, entspricht dem neuesten dkv-Eintrag, kein Eingriff nötig.
Sonst: Plan wie geschrieben ausgeführt. Arbeit direkt auf main (laut Auftrag), nichts gepusht.
## Known Stubs
Keine.
## Threat Flags
Keine neuen. T-261008-w5w-02 (Map-Zugriff), -03 (nur Textknoten, Antwort wird geprüft) und -04 (statisches Segment, E2E: 401 statt 404) sind umgesetzt und per Test/E2E belegt.
## Self-Check: PASSED
Alle Dateien vorhanden (zehn *.changelog.ts, Register, Spec, Komponente, E2E-Skript, sieben PNG), Commits 79210d7, f2bb5ff, 4c14ec8 sind Vorfahren von HEAD.