From e160015fc7d1e1321b58c24d2f04ba42988b1c6c Mon Sep 17 00:00:00 2001 From: mhoennig Date: Mon, 27 Jul 2026 14:10:06 +0200 Subject: [PATCH] =?UTF-8?q?frontend:=20Mitgeliefertes=20Dokument=20hei?= =?UTF-8?q?=C3=9Ft=20=E2=80=9EWerkbaum"=20(Tippfehler=20korrigiert)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit „Werkbank" war ein Vertipper, gemeint war der Projektname. - WERKBAUM_NAME auf „Werkbaum" gesetzt. - `loadDocs()` zieht den Namen bei bereits angelegten Dokumenten nach — aber nur, solange er unverändert der ausgelieferte „Werkbank" ist. Eine eigene Umbenennung des Nutzers bleibt stehen; ein fremdes Dokument, das zufällig „Werkbank" heißt, wird nicht angefasst (die Regel greift über die reservierte id, nicht über den Namen). Verifiziert im Browser: Bestandszustand mit drei Dokumenten (Example, id=werkbaum/„Werkbank", eigenes d9/„Werkbank") -> nach dem Laden ist nur id=werkbaum umbenannt, d9 bleibt unberührt; frischer Zustand zeigt „Example" und „Werkbaum" im Wähler, Wechsel rendert 75 Knoten ohne Warnung. Vitest 37/37. Co-Authored-By: Claude Opus 4.8 --- docs/DECISIONS.md | 8 +++++--- frontend/CLAUDE.md | 2 +- frontend/src/app.js | 9 ++++++++- 3 files changed, 14 insertions(+), 5 deletions(-) diff --git a/docs/DECISIONS.md b/docs/DECISIONS.md index ba39be1..059d5ef 100644 --- a/docs/DECISIONS.md +++ b/docs/DECISIONS.md @@ -620,9 +620,9 @@ als `max-width`/`max-height` im CSS**, weil die gespeicherte Größe ein fester px-Wert ist: schrumpft das Panel später (Zug am großen Splitter, Drehung, Bildschirmtastatur), würde der Editor sonst auf 0 gedrückt. -## D27 — „Werkbank": Werkbaums eigener Plan als mitgeliefertes Dokument +## D27 — „Werkbaum": der eigene Plan als mitgeliefertes Dokument Neben dem Beispiel (D22) liegt ein zweites mitgeliefertes Dokument im Wähler: -**„Werkbank"** — Werkbaum selbst, mit Werkbaum geplant (Bestand + mögliche +**„Werkbaum"** — Werkbaum selbst, mit Werkbaum geplant (Bestand + mögliche Weiterentwicklung). Damit ist der interessanteste Beispielbaum ohne Umweg über einen `?sourceUrl=`-Link erreichbar; zugleich dient er als lebende Projektübersicht. @@ -644,7 +644,9 @@ kehrte bei **jedem** Laden zurück. Das aktive Dokument bleibt beim Anlegen unverändert — niemand wird aus seinem Text gerissen. **Fester Name, nicht lokalisiert** — wie „Example" (D22): Dokumentnamen sind -Nutzerdaten. Der Reset (D22) setzt jetzt **beide** mitgelieferten Dokumente auf +Nutzerdaten. (Die erste Fassung hieß durch einen Tippfehler „Werkbank"; +`loadDocs()` zieht den Namen nach — aber **nur**, solange er unverändert der +ausgelieferte ist, damit eine eigene Umbenennung stehen bleibt.) Der Reset (D22) setzt jetzt **beide** mitgelieferten Dokumente auf ihren Auslieferungsstand zurück; eigene Dokumente bleiben weiterhin unangetastet. **Offen:** Der Text wird nach dem Anlegen nicht mehr aktualisiert. Erscheint diff --git a/frontend/CLAUDE.md b/frontend/CLAUDE.md index b628d0e..2061bb5 100644 --- a/frontend/CLAUDE.md +++ b/frontend/CLAUDE.md @@ -106,7 +106,7 @@ verworfene Elemente. Quelle sind ES-Module unter `src/`; `index.html` ist der `werkbaum-ui`/`werkbaum-lang`/Update-Flags — **andere Dokumente bleiben stehen** (nicht mehr pauschal alle `werkbaum-*` löschen!). Das letzte gelöschte Dokument wird als Beispiel neu gesät. -- Mitgeliefertes Dokument „Werkbank" (D27): `app.js` importiert +- Mitgeliefertes Dokument „Werkbaum" (D27): `app.js` importiert `../../docs/examples/example-werkbaum.werkbaum?raw` — die Beispieldatei ist damit **Build-Eingabe**, Umbenennen/Verschieben bricht den Build (Zugriff außerhalb des Roots erlaubt `server.fs.allow:['..']`). `seedShippedDocs()` legt diff --git a/frontend/src/app.js b/frontend/src/app.js index f234c2f..cd8cb42 100644 --- a/frontend/src/app.js +++ b/frontend/src/app.js @@ -1318,7 +1318,9 @@ let hadStoredUI = false; /* gab es beim Laden schon gespeicherte GUI-Einstellun const EXAMPLE_ID = 'example', EXAMPLE_NAME = 'Example'; /* Zweites mitgeliefertes Dokument: Werkbaum selbst (D27). Fester Name wie beim Beispiel — Dokumentnamen sind Nutzerdaten und werden nicht übersetzt (D22). */ -const WERKBAUM_ID = 'werkbaum', WERKBAUM_NAME = 'Werkbank'; +const WERKBAUM_ID = 'werkbaum', WERKBAUM_NAME = 'Werkbaum'; +/* Die erste Fassung hieß versehentlich „Werkbank" (Tippfehler). */ +const WERKBAUM_NAME_ALT = 'Werkbank'; let docs = []; /* [{id, name, text}] */ let activeId = null; function uid(){ return 'd' + Date.now().toString(36) + Math.random().toString(36).slice(2, 7); } @@ -1376,6 +1378,11 @@ function loadDocs(){ docs[0].name = EXAMPLE_NAME; } seedShippedDocs(); + /* Namensfix für die kurzlebige Fassung mit dem Tippfehler — nur, solange der + ausgelieferte Name unverändert ist; eine eigene Umbenennung bleibt stehen + (Dokumentnamen sind Nutzerdaten, D22). */ + const wb = docs.find(d => d.id === WERKBAUM_ID); + if(wb && wb.name === WERKBAUM_NAME_ALT) wb.name = WERKBAUM_NAME; activeId = docs.some(d => d.id === a) ? a : docs[0].id; } function saveSrc(){