feat: Neuigkeiten — der Stern wandert in die Kopfzeile und bekommt ein Popup

Der „Was ist neu?"-Knopf stand im Diagramm-Kopf und war verborgen, solange es
nichts gab — er konnte also nur etwas über das offene Dokument sagen, und
meistens sagte er gar nichts. Jetzt steht er permanent in der oberen
Bedienleiste und öffnet ein Popup mit der Chronik der letzten Tage; je Tag
führt ein Link die betroffenen Knoten im Diagramm vor (dieselbe gelbe
Kranz-Ansicht wie D28, nur mit einer anderen Frage).

Zwei Quellen, jede in ihrer Rolle: docs/CHANGELOG.md sagt, WAS geschehen ist
(englisch — das Popup ist Oberfläche in neun Sprachen, die Commit-Betreffs
sind deutsch); die git-Historie des mitgelieferten Plans sagt, WELCHE Knoten
sich bewegt haben. Beides wird zur Bauzeit eingelesen (Vite-Plugin), zur
Laufzeit lädt Werkbaum weiterhin nichts nach.

Bernstein heißt ungesehen, Petrol heißt „wird gerade vorgeführt". Der
Besuchsvergleich (D28) steht als abgesetzter Abschnitt zuoberst im Popup und
trägt den „gesehen"-Knopf, den vorher der Knopf selbst war.

SPEC §9 (Neuigkeiten) und D58; 20 neue Tests, davon einer auf der
ausgelieferten CHANGELOG.md.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-24 12:50:13 +02:00
co-authored by Claude Opus 5
parent 71bfb62b35
commit 36154f6f68
12 changed files with 914 additions and 39 deletions
+12
View File
@@ -526,6 +526,18 @@ verworfene Elemente. Quelle sind ES-Module unter `src/`; `index.html` ist der
Hash-Rückfall, der Marker-Pfad ist nur zu prüfen, wenn man einen echten
`commit/<sha>` in `index.html` einspritzt (danach zurücknehmen!) und
`window.fetch` überschreibt.
- **Neuigkeiten (D58):** `NEWS` kommt aus dem virtuellen Modul
`virtual:werkbaum-news` (Vite-Plugin in `vite.config.js`), gefüllt zur
**Bauzeit** aus `docs/CHANGELOG.md` (die Notizen) und der git-Historie des
mitgelieferten Plans (die Knoten je Tag). Die Regeln stehen in
`scripts/news.mjs` und sind getestet; `app.js` verdrahtet nur. Drei Dinge, die
beim Anfassen auffallen: Der **Dev-Server liest einmal beim Start** — neue
Changelog-Zeilen erscheinen erst nach einem Neustart, nicht per HMR. Ein
vorgeführter Tag muss **nach** `switchDoc()` gesetzt werden, denn das räumt
ihn ausdrücklich weg. Und die Backtick-Ersetzung läuft **nach** `esc()`, damit
aus einer Changelog-Zeile kein Markup werden kann. Ein Feature ohne Zeile in
`docs/CHANGELOG.md` geschieht für den Benutzer unsichtbar (Regel in der
Wurzel-CLAUDE.md).
- **Titelzeilen tragen die Aufklapp-Menüs — kein `overflow` daran (D50):**
`#docMenu` und `.dlmenu` hängen als absolut positionierte Kinder im
`.panel-head`. Ein `overflow` dort macht ihn zum Scroll-Container und klippt