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:
co-authored by
Claude Opus 5
parent
71bfb62b35
commit
36154f6f68
@@ -0,0 +1,99 @@
|
||||
# Changelog
|
||||
|
||||
What changed, newest first. This file feeds the **What's new** popup in the
|
||||
editor (the star in the header, D58): every `## YYYY-MM-DD` heading opens a day,
|
||||
every bullet under it becomes one note. Anything else here — like this
|
||||
paragraph — is read by people, not by the build.
|
||||
|
||||
**English, deliberately.** The project's documentation is German (CLAUDE.md),
|
||||
but this file is shown *inside the product*, whose interface speaks nine
|
||||
languages. Like the shipped plan and `llms.md` it is a delivered artefact with a
|
||||
worldwide audience (D22, D43). Keep the notes short — one line, what changed,
|
||||
from the reader's side rather than the commit's. `Backticks` become code in the
|
||||
popup; no other markup is honoured, so write plain sentences.
|
||||
|
||||
The node highlighting per day does **not** come from here: it is computed from
|
||||
the git history of `docs/examples/werkbaum.werkbaum`. A day can therefore carry
|
||||
a link without having a note (someone forgot to write one) — but never the
|
||||
reverse.
|
||||
|
||||
## 2026-08-24
|
||||
|
||||
- A star in the header opens What's new: the changes of the last few days, and a link per day that shows the nodes it touched in the diagram
|
||||
- A warning triangle replaces the question mark as the pointer over faulty line numbers
|
||||
- The node window replaces the browser tooltip everywhere — at the pointer, on keyboard focus and on touch
|
||||
- A `#` button in the diagram header puts node IDs in front of the titles
|
||||
- Typing `#.kc` under `#prod-stage` now expands to `#prod-stage.kc` when you leave the line
|
||||
- A camera button next to the history saves a snapshot on demand
|
||||
- Fix: the manual snapshot button confirmed without saving anything while nothing had changed yet
|
||||
- Warning line numbers carry their message as a tooltip
|
||||
- `llms.txt` now points at the notation guide, and `llms.md` is served as UTF-8
|
||||
|
||||
## 2026-08-23
|
||||
|
||||
- Every node of the shipped Werkbaum plan carries an ID and a description
|
||||
- One button steps from station to station along the cheapest path
|
||||
- The cheapest path shows the open front: what is done costs nothing any more
|
||||
- A new document starts by asking for its name
|
||||
- The text area no longer wraps lines — the indentation keeps carrying the hierarchy
|
||||
- Node IDs read `#auth: Title` now, with an optional separating colon
|
||||
- Fold marks moved behind the status box, so the boxes stay aligned
|
||||
- Fix: the document and download menus open again on small screens
|
||||
|
||||
## 2026-08-22
|
||||
|
||||
- Node IDs (`#auth`) name a node across the whole document
|
||||
- Dependencies (`:#auth,#api`) point across the tree, cycles allowed
|
||||
- The node colour shows the effective status — what a node waits for holds it back
|
||||
- Dependency links are drawn as thin dotted curves behind the nodes
|
||||
- Subtrees fold and unfold, in the diagram and as `>` / `<` in the text
|
||||
- Exactly-one groups (`=`) with a "1" plaque on the collector rail
|
||||
- Node descriptions, as `"` lines or as blocks behind a `---` divider
|
||||
- The cheapest path counts shared dependencies once — and says so when it has to guess
|
||||
- "Restore original" brings a shipped document back to the delivered state
|
||||
- `llms.md` explains the notation to AI agents
|
||||
|
||||
## 2026-08-16
|
||||
|
||||
- The example plan is called `werkbaum.werkbaum` and describes Werkbaum itself
|
||||
|
||||
## 2026-08-05
|
||||
|
||||
- Line numbers next to the text, warnings marked in the strip
|
||||
- Alt+click in the text centres the node of the caret line
|
||||
|
||||
## 2026-07-30
|
||||
|
||||
- The focus mark `!!!` got a teal crown of its own
|
||||
- Research on updating by itself: what an Etherpad instance can and cannot do
|
||||
- An IntelliJ plugin recorded as an idea in the plan
|
||||
|
||||
## 2026-07-27
|
||||
|
||||
- `+` marks an optional node — an extra, neither required nor an alternative
|
||||
- Consecutive optional leaves cascade into a staircase instead of taking a column each
|
||||
- "What's new" highlights what went into production since your last visit
|
||||
- A shared Etherpad can be watched, embedded and reloaded
|
||||
|
||||
## 2026-07-25
|
||||
|
||||
- The notation text can be loaded from a URL with `?sourceUrl=`
|
||||
|
||||
## 2026-07-23
|
||||
|
||||
- Several documents side by side, switched from the editor's title bar
|
||||
- The interface language follows the browser, German as the fallback
|
||||
- High risk `[!]` carries a warning triangle
|
||||
|
||||
## 2026-07-22
|
||||
|
||||
- IBM Plex is embedded locally — no request to Google, no IP address to third parties
|
||||
- Zoom controls for the diagram
|
||||
- Accessibility: spoken labels per node, focus order, live region for warnings
|
||||
|
||||
## 2026-07-21
|
||||
|
||||
- First version: text notation, parser, and a diagram in three layout modes
|
||||
- Status boxes, t-shirt sizes, people tags, bare URLs and `%%` comments
|
||||
- The cheapest path through the tree, with a metro-style line through the open leaves
|
||||
- Print stylesheet and SVG/PNG export of the diagram
|
||||
@@ -4077,3 +4077,111 @@ mit synthetischem `focusin` öffnete es sofort. Erst das Fronten des Tabs samt
|
||||
echtem Klick und echter Tab-Taste hat es bewiesen. Wie D25 (synthetische
|
||||
`TouchEvent`s), D17-Nachtrag 4 (Bildschirmtastatur) und D53 (synthetisches
|
||||
Strg+Z): Was die Umgebung stellt, stellt der Emulator nicht.
|
||||
|
||||
## D58 — Neuigkeiten: der Stern wandert in die Kopfzeile und bekommt ein Popup
|
||||
Der „Was ist neu?"-Knopf (D28) stand im Diagramm-Kopf und war **verborgen,
|
||||
solange es nichts gab** — er konnte also nur etwas über das gerade offene
|
||||
Dokument sagen, und meistens sagte er gar nichts. Jetzt steht er permanent in
|
||||
der oberen Bedienleiste, zeigt ein Popup mit der Chronik der letzten Tage, und
|
||||
jeder Tag führt seine Knoten im Diagramm vor.
|
||||
|
||||
**Zwei Aussagen, ein Knopf.** Die **Chronik** ist allgemein („was ist am
|
||||
Produkt geschehen"), der **Besuchsvergleich** persönlich („was ist seit deinem
|
||||
letzten Besuch live gegangen"). Sie zu trennen hieße, zwei Knöpfe in eine Zeile
|
||||
zu setzen, die D56 gerade erst auf zehn Elemente zurechtgemessen hat — und für
|
||||
den Betrachter sind es ohnehin dieselbe Frage in zwei Zeitmaßstäben. Der
|
||||
Besuchsvergleich steht als abgesetzter Abschnitt **zuoberst** im Popup und
|
||||
trägt den „gesehen"-Knopf, den vorher der Knopf selbst war.
|
||||
|
||||
**Bernstein heißt ungesehen, Petrol heißt „wird vorgeführt".** Zwei Zustände,
|
||||
zwei Farben, beide schon vergeben: Bernstein ist die Farbe des Strahlenkranzes
|
||||
am Knoten (D28) — Knopf und Knoten sagen damit dasselbe —, Petrol die für
|
||||
Interaktion (D32). Ein dritter Kanal war nicht nötig.
|
||||
|
||||
**Aufgeschlagen heißt gelesen.** Der Deckel wandert beim Öffnen auf den
|
||||
**neuesten gelisteten Tag**, nicht auf „heute": Ein Datum aus der Uhr des
|
||||
Betrachters verglichen mit einem Datum aus dem Build ginge schief, sobald die
|
||||
Uhren auseinanderliegen. Der Besuchsvergleich behält seinen eigenen Knopf — er
|
||||
hat eine andere Basis (den Text der zuletzt gesehenen Fassung, D28).
|
||||
|
||||
**Woher die Daten kommen: zwei Quellen, jede in ihrer Rolle.**
|
||||
|
||||
- `docs/CHANGELOG.md` → **was** geschehen ist, ein englischer Satz je Änderung.
|
||||
- Die git-Historie von `docs/examples/werkbaum.werkbaum` → **welche Knoten**
|
||||
sich an diesem Tag bewegt haben (neu oder mit anderem Status).
|
||||
|
||||
Beides wird **zur Bauzeit** eingelesen und als virtuelles Modul eingebettet
|
||||
(Vite-Plugin). Zur Laufzeit gibt es kein git und keinen Server, der nachliefern
|
||||
könnte (D11/D19), und nachladen würde D20 brechen. Der Preis ist benannt: Der
|
||||
Dev-Server liest einmal beim Start, neue Einträge erscheinen nach einem
|
||||
Neustart.
|
||||
|
||||
**Die Notizen kommen NICHT aus den Commit-Betreffs** — obwohl sie dort stünden
|
||||
und die erste Fassung sie genau so gezogen hat (samt Filter für Bau-, Test- und
|
||||
Beförderungs-Commits). Der Nutzer hat die richtige Frage gestellt: *„Sind die
|
||||
Neuigkeiten nun in allen unterstützten Sprachen? Da hätte ich eine Rückfrage
|
||||
erwartet."* Die Betreffs sind **deutsch** (CLAUDE.md: Doku auf Deutsch), das
|
||||
Popup aber ist Produkt-Oberfläche in neun Sprachen — ein japanischer Besucher
|
||||
hätte einen japanischen Rahmen um deutsche Sätze bekommen. Entschieden
|
||||
(Nutzer): eine **gepflegte englische Changelog-Datei**, wie der mitgelieferte
|
||||
Plan und `llms.md` ausgeliefertes Artefakt mit weltweitem Publikum (D22, D43).
|
||||
|
||||
Verworfen waren: **deutsch lassen und benennen** (billig, aber acht der neun
|
||||
Sprachen lesen es nicht) und **die Notizen aus den Knoten-Labels des Plans
|
||||
ableiten** (schon englisch, keine Pflege, Text und Hervorhebung sagten
|
||||
zwangsläufig dasselbe — aber „Fold marks → fertig" ist eine Statusmeldung, kein
|
||||
Satz, und Tage ohne Plan-Änderung fielen ganz weg). Der Preis der gewählten
|
||||
Lösung ist ehrlich zu nennen: **eine Datei mehr, die beim Bauen eines Features
|
||||
mitgeschrieben werden muss** — als Regel in CLAUDE.md festgehalten, sonst
|
||||
veraltet sie still.
|
||||
|
||||
**Der Link je Tag nennt die Zahl der Knoten, die es HEUTE noch gibt.** Die
|
||||
Schlüssel sind Label-Pfade (dieselbe Identität wie D28/D38); ein seither
|
||||
umbenannter Knoten ist nicht mehr zu treffen. Gezählt wird deshalb gegen den
|
||||
aktuellen Plan — im mitgelieferten Stand sind das beim 22.08. dreißig statt der
|
||||
zweiunddreißig gespeicherten. Ein Link, der „32 Knoten" verspricht und 30
|
||||
zeigt, wäre eine kleine Lüge an einer Stelle, an der es nichts kostet, die
|
||||
Wahrheit zu sagen.
|
||||
|
||||
**Ein Tag kann einen Link ohne Notizen haben, aber nie umgekehrt.** Der
|
||||
Beförderungs-Commit (D30) ist der Regelfall: An einem reinen Deploy-Tag bewegt
|
||||
sich der Plan, ohne dass jemand einen Changelog-Eintrag schreibt. Ohne die
|
||||
Vereinigung beider Quellen fiele ausgerechnet der Tag stumm unter den Tisch, an
|
||||
dem etwas in Produktion gegangen ist.
|
||||
|
||||
**Die Vorführung ersetzt den Besuchsvergleich, statt neben ihm zu stehen.** Es
|
||||
ist dieselbe Ansicht (gelber Kranz), nur mit einer anderen Frage; zwei
|
||||
gleichzeitige Mengen im selben Kanal wären nicht auseinanderzuhalten.
|
||||
Umgeschaltet wird dabei auf den mitgelieferten Plan — dessen Knoten sind
|
||||
gemeint. **Reihenfolge beachtet:** `switchDoc()` räumt einen vorgeführten Tag
|
||||
ausdrücklich weg (in einem anderen Dokument zeigten seine Schlüssel ins Leere),
|
||||
also muss erst gewechselt und dann gesetzt werden. In der anderen Reihenfolge
|
||||
löschte der Wechsel gerade den Tag, den man zeigen wollte — beim Bauen
|
||||
hineingelaufen.
|
||||
|
||||
**Nicht persistiert.** Der Faltzustand steht im Text (D38), der Besuchsstand im
|
||||
localStorage (D28) — eine vorgeführte Chronik ist weder das eine noch das
|
||||
andere. Sie endet mit der Sitzung, mit dem Dokumentwechsel oder mit dem zweiten
|
||||
Druck.
|
||||
|
||||
**Auf dem Telefon ist der Bezug die Werkzeugleiste, nicht der Knopf.** Das
|
||||
Popup ist 351 px breit, der Knopf 30 — an ihm ausgerichtet begann es bei
|
||||
**−116 px**, also außerhalb des Bildes (nachgemessen bei 375 px). `body.mobile
|
||||
.newswrap{position:static}` macht die `.header-tools` zum Bezug, deren rechter
|
||||
Rand auch der der Seite ist: danach 17 bis 368 px. Ein `overflow` an der
|
||||
Kopfzeile als Ausweg verbietet sich — das klippt genau diese Menüs (D50).
|
||||
|
||||
**Backticks werden zu Code-Stücken**, und zwar **nach** dem Escapen: Was der
|
||||
Ersetzung vorliegt, ist bereits harmloser Text, der Weg zu eigenem Markup
|
||||
bleibt also verschlossen. Ohne die Ersetzung stünde `` `#auth` `` mit nackten
|
||||
Backticks im Popup und läse sich wie ein Tippfehler.
|
||||
|
||||
**Nachgemessen** (Werkbaum-Plan, Dev-Server): 12 Tage im Popup, davon einer
|
||||
(28.07.) ohne Notizen mit Link — der Deploy-Tag. Der Link des 24.08. hebt 12
|
||||
Knoten hervor, holt den ersten in die Mitte und färbt den Knopf petrol; ein
|
||||
zweiter Druck stellt die 11 Knoten des Besuchsvergleichs wieder her; „gesehen"
|
||||
löscht sie und nimmt dem Knopf das Bernstein. Bei 375 px liegt das Popup
|
||||
vollständig im Bild und wird an beiden Kanten getroffen (`elementFromPoint`),
|
||||
die Kopfzeile bleibt einreihig. 20 neue Tests in `frontend/tests/news.test.js`,
|
||||
darunter einer, der die **ausgelieferte** `docs/CHANGELOG.md` liest — ist sie
|
||||
unlesbar, stünde das Popup sonst leer da, ohne dass es jemand merkt.
|
||||
|
||||
+38
-2
@@ -650,12 +650,48 @@ Bei Dokumenten, die von außen kommen (mitgeliefert, per `?sourceUrl=` oder
|
||||
gezeigt, was sich seit dem letzten Besuch getan hat. **„Neu" heißt: neu in
|
||||
Produktion** — ein Knoten trägt jetzt `[^]` und tat es in der zuletzt gesehenen
|
||||
Fassung nicht. Solche Knoten bekommen einen **gelben Strahlenkranz** nach außen
|
||||
(die Füllung bleibt die Statusfarbe aus §4). Ein Knopf im Diagramm-Kopf nennt
|
||||
die Anzahl und bestätigt per Klick; danach ist die aktuelle Fassung die neue
|
||||
(die Füllung bleibt die Statusfarbe aus §4). Die Anzahl steht am
|
||||
**Neuigkeiten-Knopf** in der Kopfzeile (siehe unten), bestätigt wird im Popup;
|
||||
danach ist die aktuelle Fassung die neue
|
||||
Vergleichsbasis. Beim ersten Ansehen eines Dokuments leuchtet nichts. Der Kranz
|
||||
erscheint weder im Druck noch im Grafikexport — er hängt am persönlichen
|
||||
Besuchsstand. Siehe D28.
|
||||
|
||||
### Neuigkeiten (Stern in der Kopfzeile)
|
||||
Ein **Stern-Knopf in der oberen Bedienleiste** ist immer sichtbar und öffnet ein
|
||||
Popup mit den Änderungen der letzten Tage — je Tag ein Datum und ein paar kurze
|
||||
Notizen. Er trägt zwei Aussagen, die zusammengehören:
|
||||
|
||||
- **Die Chronik** (allgemein): was am Produkt geschehen ist. Die Notizen stehen
|
||||
in `docs/CHANGELOG.md`, die Knoten je Tag kommen aus der Versionsgeschichte
|
||||
des mitgelieferten Plans; beides wird **beim Bauen** eingelesen und
|
||||
eingebettet (zur Laufzeit lädt Werkbaum nichts nach, D20).
|
||||
- **Der Besuchsvergleich** (persönlich): „Was ist neu?" des aktiven Dokuments
|
||||
(oben) — als abgesetzter Abschnitt zuoberst im Popup, mit dem Knopf
|
||||
„gesehen".
|
||||
|
||||
**Bernstein heißt ungesehen** — dieselben Töne wie der Strahlenkranz am Knoten,
|
||||
damit Knopf und Knoten dasselbe sagen. Er färbt sich, solange es unangesehene
|
||||
Tage gibt oder das aktive Dokument neue Knoten hat; die Zahl daneben ist die der
|
||||
neuen Knoten. Aufgeschlagen heißt gelesen: Das Öffnen des Popups merkt den
|
||||
neuesten gelisteten Tag als gesehen.
|
||||
|
||||
**Jeder Tag mit Knotenänderungen trägt einen Link**, der genau diese Knoten im
|
||||
Diagramm in der „Was ist neu?"-Ansicht vorführt (gelber Kranz, §9) — dieselbe
|
||||
Ansicht, nur mit einer anderen Frage: „was geschah am 24.08." statt „was ist
|
||||
seit deinem letzten Besuch live gegangen". Dabei wird auf den mitgelieferten
|
||||
Plan umgeschaltet, denn dessen Knoten sind gemeint; der Knopf steht dann in
|
||||
Petrol („wird gerade vorgeführt") und ein zweiter Druck hebt es wieder auf.
|
||||
Genannt wird die Zahl der Knoten, die es **heute noch gibt** — ein seither
|
||||
umbenannter Knoten ist nicht mehr zu treffen, und der Link verspricht nichts,
|
||||
was er nicht halten kann. Die Vorführung ist Sitzungssache und wird nicht
|
||||
gemerkt.
|
||||
|
||||
Die **Notizen sind englisch**, auch wenn die Oberfläche in einer anderen Sprache
|
||||
steht: `docs/CHANGELOG.md` ist ein ausgeliefertes Artefakt mit weltweitem
|
||||
Publikum, wie der mitgelieferte Plan und `llms.md` (§13). Übersetzt ist alles
|
||||
übrige — Titel, Knöpfe und die Datumsangaben. Siehe D58.
|
||||
|
||||
### Sprung zwischen Diagramm und Text
|
||||
Jeder Knoten kennt seine Zeilennummer im Notationstext; beide Richtungen sind
|
||||
verknüpft (siehe D25):
|
||||
|
||||
@@ -80,6 +80,7 @@
|
||||
- [^] #ed.snaps.manual: Save a state by hand, before a larger change (XS) %% ten minutes is the wrong beat for that moment
|
||||
- [ ] #ed.files: Open and save .werkbaum files (S)
|
||||
+ [^] #ed.fresh: Show what is new since your last visit (S)
|
||||
- [x] #ed.fresh.news: A star in the header, with the last few days (S) %% see D58
|
||||
+ [?] #ed.percolor: A pastel colour per person (S)
|
||||
- [?] #ed.dates: Dates and milestones (M)
|
||||
| [?] #ed.dates.attr: An attribute in the line (S)
|
||||
@@ -555,6 +556,12 @@
|
||||
your last visit get a yellow halo. New means live, not "line added" — a line
|
||||
diff would be mostly noise.
|
||||
|
||||
#ed.fresh.news
|
||||
A star that is always in the header opens a popup with the changes of the
|
||||
last few days; every day can show its nodes in the diagram, in the very same
|
||||
halo view. Notes come from docs/CHANGELOG.md, the nodes from the plan's git
|
||||
history, both read at build time.
|
||||
|
||||
#ed.percolor
|
||||
Give every @name a colour derived from the name itself, so the same person
|
||||
is recognizable across the tree without looking anything up.
|
||||
|
||||
Reference in New Issue
Block a user