frontend: „Werkbank" — Werkbaums eigener Plan als mitgeliefertes Dokument

Der interessanteste Beispielbaum war nur über einen ?sourceUrl=-Link
erreichbar. Er steht jetzt direkt im Dokument-Wähler.

- Eine Quelle, keine Kopie: `?raw`-Import aus
  docs/examples/example-werkbaum.werkbaum — derselben Datei, die auch der
  ?sourceUrl=-Link lädt. Vite bettet sie in die eine Ausgabedatei ein (D19),
  nichts wird nachgeladen (D20). Die Beispieldatei ist damit Build-Eingabe.
- `seedShippedDocs()` legt das Dokument genau EINMAL an — auch für
  Bestandsnutzer mit vorhandener Dokumentenliste — und merkt sich das in
  `werkbaum-seeded`. Ohne Merker gäbe es nur schlechte Alternativen: entweder
  bekämen bestehende Nutzer es nie, oder ein bewusst gelöschtes Dokument
  kehrte bei jedem Laden zurück. Das aktive Dokument bleibt unverändert.
- Fester, nicht lokalisierter Name wie „Example" (D22). Der Reset setzt jetzt
  beide mitgelieferten Dokumente zurück; eigene bleiben unangetastet.

Verifiziert im Browser: frischer Zustand -> Example + Werkbank, aktiv bleibt
Example; Wechsel auf Werkbank rendert 75 Knoten ohne Warnung; Bestandsnutzer
mit eigener Liste bekommt Werkbank ergänzt, ohne aus seinem Dokument gerissen
zu werden; nach Löschen kehrt es nicht zurück. Build bleibt eine einzelne
Datei (361 kB), Vitest 37/37.

Offen (in D27 notiert): der Text wird nach dem Anlegen nicht mehr
aktualisiert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-07-27 14:06:58 +02:00
co-authored by Claude Opus 4.8
parent 6888762ac8
commit 6fb45ff37a
3 changed files with 77 additions and 6 deletions
+34
View File
@@ -619,3 +619,37 @@ Grenzen: mindestens 90 px, höchstens 85 % — die Obergrenze steht **zusätzlic
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
Neben dem Beispiel (D22) liegt ein zweites mitgeliefertes Dokument im Wähler:
**„Werkbank"** — 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.
**Eine Quelle, keine Kopie.** Der Text wird per `?raw`-Import aus
`docs/examples/example-werkbaum.werkbaum` gezogen — derselben Datei, die auch
der `?sourceUrl=`-Link lädt. Vite bettet sie beim Build in die eine Ausgabedatei
ein (D19), es wird nichts nachgeladen (D20). Eine zweite, abgetippte Fassung im
Quelltext würde unweigerlich auseinanderlaufen. (Nebenwirkung: die Beispieldatei
ist damit **Build-Eingabe** — Umbenennen bricht den Build. `vite.config.js`
erlaubt den Zugriff außerhalb des Roots bereits über `server.fs.allow: ['..']`,
eingeführt für das Favicon.)
**Genau einmal angelegt.** `seedShippedDocs()` fügt das Dokument auch
Bestandsnutzern hinzu, die schon eine Dokumentenliste haben, und merkt sich das
in `werkbaum-seeded`. Ohne diesen Merker gäbe es nur schlechte Alternativen:
entweder bekämen bestehende Nutzer es nie, oder ein bewusst gelöschtes Dokument
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
ihren Auslieferungsstand zurück; eigene Dokumente bleiben weiterhin unangetastet.
**Offen:** Der Text wird nach dem Anlegen nicht mehr aktualisiert. Erscheint
später eine neuere Fassung des Plans, sieht sie nur, wer das Dokument löscht und
zurücksetzt oder den `?sourceUrl=`-Link öffnet. Ein Ausbau könnte in
`werkbaum-seeded` statt '1' eine Versionsnummer ablegen und ein **unverändertes**
Dokument nachziehen (bearbeitete nie) — dieselbe Adoptions-Regel wie beim
Beispiel in D22.