D31 lieh sich fuer die Echtzeit-Zusammenarbeit ein Etherpad: Das Pad war die Schreibflaeche, Werkbaum die Ansicht. Richtig fuer den Zeitpunkt - die schwere Arbeit war dort getan, und Werkbaum hatte kein Backend. Jetzt hat es eins (D76), das dasselbe besser und im Editor selbst kann. D31 bleibt stehen: Was dort gemessen wurde, ist der Grund, warum die Anbindung nie gut wurde - Export-Drosselung (10 je 90 s), SameSite=Lax beim Autoren-Cookie, abgelehnter Socket-Upgrade. Uebrig blieb ein Neu-laden-Knopf und ein schreibgeschuetztes Textfeld. Ein alter ?etherpad=-Link meldet sich, statt still nichts zu tun: Der Parameter bleibt erkannt und ergibt die zeilenlose Warnung padGone, die auf ?live= zeigt (neun Sprachen). Geholt wird nichts - nachgemessen geht keine Anfrage mehr an den Pad-Host. Vorhandene Pad-Dokumente bleiben liegen und werden dabei besser: ohne Schreibschutz sind sie bearbeitbar und sammeln fruehere Staende. Mit ausgebaut, weil sie nur der Anbindung dienten: remote.js samt Tests, der Ansichts-Waehler und sein Splitter, der Neu-laden-Knopf samt Drosselungs-Zaehler, die Warnungen sourceTimeout/padRateLimit, elf i18n- Schluessel x 9 Sprachen - und src.readOnly ganz, denn nur Pad-Dokumente haben es gesetzt (mit ihm updateSnapBtn und sieben tote Waechter). Auch #srcArea faellt weg: den Kasten gab es nur, damit Pad-Rahmen und Spiegel sich einen Bereich teilen. ?sourceUrl= bleibt unangetastet - beide teilten sich einen Fetch-Pfad, das war die Stelle, an der nichts verrutschen durfte. Im Plan wird aus dem #col.pad-Zweig (14 Knoten samt der ganzen "Update by itself"-Gruppe) ein verworfener Knoten mit Begruendung; der gemeinsame Zeigefinger wandert als #col.point heraus, denn !!! gilt jedem geteilten Dokument. 196 Knoten, 0 Warnungen. Nebengewinn: Der README bekommt endlich den Abschnitt zu ?live= - den gab es nie, die Einstiegs-Beschreibung stand weiter beim Pad. Nachgemessen im Browser: ?etherpad= zeigt die Warnung ohne Netz-Anfrage, ?sourceUrl= laedt unveraendert und ist beschreibbar, Textfeld und Zahlenstreifen liegen buendig, Legenden-Splitter teilt wie zuvor (954+10+300), Falten und Staende funktionieren. 501 Tests, 946 Zeilen weniger.
156 lines
10 KiB
Markdown
156 lines
10 KiB
Markdown
# 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-26
|
|
|
|
- The Etherpad integration is gone: collaboration now runs through a Werkbaum backend, and an old `?etherpad=` link says so instead of doing nothing
|
|
- Plans can live on a Werkbaum backend now: open `?live=<document URL>` and everyone edits the same text, seeing each other's changes without reloading
|
|
- When two people change the same lines, a bar asks whose version should win — everything else the server merges by itself
|
|
- The caret stays where you put it when someone else inserts lines above you
|
|
- The backend can be deployed to a server: its own JDK, a systemd service, and Apache passing `/api/` on
|
|
- "Put on the server" in the document menu turns a local plan into a shared one and puts the link in the address bar
|
|
- A service endpoint `/api/v1/info` says which build is running — for deploys and monitoring
|
|
- One `remote` command drives the server: deploy, log, service state, and a database backup that is read back before it is kept
|
|
- Fix: folding a node in a shared document could ask whose version should win — the editor was arguing with itself, because the change feed hands your own change back to you
|
|
|
|
## 2026-08-25
|
|
|
|
- The fold button cycles through four presets now: size M and smaller, everything off the cheapest path, everything, all open
|
|
- A button next to the cheapest-path toggle switches the dependency cross links on and off
|
|
- Dependency links follow the folding: an edge to a hidden node now ends at its first visible ancestor, for source and target alike
|
|
- In Brave, the file notice names the flag that enables the File System Access API by hand
|
|
- Fix: the file notice and the legend blamed "Chromium", but Brave is Chromium without the File System Access API — they now name the feature and example browsers
|
|
- Browsers without the File System Access API (Firefox, Safari) explain themselves once: files open as copies and saving downloads a new file
|
|
- Fix: the save dialog suggested a "name (1)" neighbour in the wrong folder — it now points at the original file, and open/save dialogs remember the plan folder
|
|
- Ctrl+S saves the document as a file — with a remembered file it writes straight back in place, and the document name flashes as confirmation
|
|
- Fix: a file double-clicked right after the app starts could open as a duplicate document instead of updating its own
|
|
- The installed app registers for `.werkbaum` files — a double-click in the file manager opens them straight into the editor
|
|
- A service worker starts the editor offline; navigations stay network-first, so the update notice keeps telling the truth
|
|
- Werkbaum installs as an app: a web app manifest with standalone display and icons rendered from the brand mark
|
|
- PWA file handling recorded in the plan — an installed app would open `.werkbaum` files on double-click and save without any dialog
|
|
- In Chromium browsers, saving writes back to the opened file, and the same file reopens into the same document
|
|
- Open a local `.werkbaum` file and save the document back as a file, from the document menu
|
|
- An AI integration recorded as an idea in the plan — edit the tree in a dialogue, with your own API key and `llms.md` as the model's guide
|
|
- A warning flags the bottleneck when one `@name` carries more than half of the open work on the cheapest path — their tag pills turn amber on the open nodes
|
|
- The estimated size of an unsized node now prices the remaining work — done sub-packages drop out, and a subtree with everything named done counts as XS
|
|
- The fold chip is solid white with an ink glyph now — the translucent box vanished on the pastel node colours
|
|
- A size prices its whole subtree on the cheapest path — sub-packages no longer add on top, so a carefully decomposed `(S)` beats a coarse `(L)`
|
|
- The size is now the last free-standing `(L)`-style token of the line — earlier ones stay in the title, and `"(L)"` or `((L))` mention a size literally
|
|
- Fix: Ctrl+click on a dependency preceded by a non-breaking space did nothing, although the parser reads it as a dependency
|
|
- Ctrl+click a dependency `:#id` in the text jumps to the line that defines the ID — Ctrl+Enter does the same at the caret
|
|
|
|
## 2026-08-24
|
|
|
|
- A missing size is now estimated from the sub-packages — at least the largest child size, one step more from three children of that size
|
|
- Node titles wrap at thirty-two characters now instead of forty — long titles pulled the diagram wide
|
|
- Fix: in the vertical layout, the line from a parent to one or two children was torn — the collector rail now always reaches the parent's stub
|
|
- The legend shows the high-risk status `[!]` and mentions the size check
|
|
- `llms.md` tabulates the size ranges and aligns its table columns
|
|
- Long node titles wrap into evenly balanced lines of at most forty characters
|
|
- With ids shown, the id sits on its own line above the title
|
|
- The fold sign is a framed chip now — a click target you can actually hit
|
|
- Typing `:#` suggests the document's ids — arrows choose, Enter inserts
|
|
- When the caret's node is folded away, the nearest visible ancestor takes the highlight — also on Alt+click from the text
|
|
- A size that cannot hold its sub-packages turns its badge amber and gets a warning — sizes are read as ranges, so only sure conflicts are reported
|
|
- Fix: the exported SVG drew the assumed-M badge filled like a real size instead of inverted
|
|
- Dependency links now run behind every node, highlighted ones included — no more lines struck through node titles
|
|
- Fix: the line to an only child was torn where the child does not sit centred in its cell
|
|
- An optional node (`+`) joins the cheapest path while it is being worked on — started work is the open front
|
|
- Fix: a started alternative lost its `|`/`=` group to an untouched cheaper one, although the choice was already made
|
|
- A node written as an id alone (`- #US-123`) is now titled by that id, instead of being ignored
|
|
- A line ending in a space and `\` continues on the next line, so a long node no longer has to fit into one
|
|
- 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` expands to `#prod-stage.kc`, right when you close the id with a colon
|
|
- 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
|