Der Latest-Build-Hinweis wandert vom Workflow-sed in die App (app.js, mountBuildBadge), damit ihn auch der Dev-Server zeigt — ein Post-Build-sed erreicht den Dev-Server nicht. Logik umgekehrt: Hinweis ist der Normalfall, nur die produktive Installation schaltet ihn ab. Drei Zustaende ueber Vite-Env VITE_BUILD_BADGE (Auswertung in app.js): - Dev-Server (import.meta.env.DEV) -> 🔧 "Vorschau/lokaler Entwicklungsstand" - Default `npm run build` (Env ungesetzt) -> 🚧 "latest build"; der Pages- Deploy nutzt den Default und traegt den Hinweis dadurch automatisch (die sed-Injektion entfaellt). - `npm run build:prod` (Vite-Modus prod, .env.prod: VITE_BUILD_BADGE=none) -> KEIN Badge; esbuild eliminiert den Zweig als toten Code. Verifiziert zur Laufzeit (Dev + `vite preview` auf beiden Builds): 🔧 im Dev, 🚧 im Default-Build, gar nichts im Prod-Build (Titel sauber "Werkbaum"). 34 Vitest-Tests gruen, Workflow-YAML/Shell gueltig. Doku: D16 fortgeschrieben (quellbasiert/env statt sed, Begruendung); README (de/en) mit Prod-Build-Anleitung inkl. LICENSE-/Versions-Caveats; frontend/ CLAUDE.md; .claude/launch.json bekommt einen frontend-dist-Preview (vite preview, Port 8138) zum Verifizieren gebauter Dateien. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
5.5 KiB
Werkbaum
English · Deutsch
▶ Live ausprobieren: https://mhoennig.github.io/werkbaum/ (jeweils neueste veröffentlichte Version)
Eine textuelle, Markdown-artige Notation für Projektstrukturpläne (Work Breakdown Structure) mit Und/Oder-Zerlegung — und ein Live-Editor, der sie als Diagramm rendert.
[~] Werkbaum (XL) https://wiki.example.de/relaunch
- [~] Dokumentenspeicher
| [x] Textdatei mit Copy+Paste im Frontend (S)
- [x] Parser
- [x] Texteingabefeld im Frontend
| [ ] Backend
- [~] Darstellung/Rendern (XL)
- [/] H (S) @anna
- [ ] CMS-Anbindung (M)
| [ ] WordPress
| [?] Headless CMS
- = Pflicht-Teilpaket (all of, im Diagramm nebeneinander) ·
| = Alternative (any of, untereinander) · […] = Status ·
(M) = T-Shirt-Aufwand · @name = Zuständigkeit · %% = Kommentar.
Nutzung
Den gehosteten Editor öffnen — links Text bearbeiten, rechts entsteht das Diagramm live. Toggles: transponierte (schmale) Darstellung, verworfene Elemente einblenden.
Lokal ausführen
Die Editor-Quelle liegt jetzt als ES-Module unter frontend/src/, gebündelt mit
Vite (siehe docs/DECISIONS.md D19). Da Browser
ES-Modul-Importe über file:// blocken, funktioniert das direkte Öffnen von
frontend/index.html nicht mehr — stattdessen:
cd frontend
npm install # einmalig
npm run dev # Dev-Server unter http://localhost:8137
npm test # Vitest-Unit-Tests
npm run build # -> frontend/dist/index.html (eine self-contained Datei)
Die gebaute dist/index.html inlint JS, CSS und Favicon — diese Datei öffnet
also standalone per file:// und ist zugleich das, was deployt wird.
Build-Hinweis & eigene Produktions-Installation
Nicht-produktive Builds tragen hinter dem Titel einen kleinen Hinweis (Symbol + Tooltip), damit klar ist, dass es nicht die stabile Instanz ist:
- Dev-Server (
npm run dev) → 🔧 „Vorschau – lokaler Entwicklungsstand" - Default-Build (
npm run build, u. a. der GitHub-Pages-Deploy) → 🚧 „Aktueller Entwicklungsstand (latest build) – kann noch Fehler enthalten"
Für die eigene produktive Installation wird der Hinweis abgeschaltet:
cd frontend
npm ci # oder: npm install
npm run build:prod # -> frontend/dist/index.html OHNE Hinweis
build:prod läuft im Vite-Modus prod; frontend/.env.prod setzt dabei
VITE_BUILD_BADGE=none, wodurch der Badge-Code komplett wegoptimiert wird (er
steht dann nicht einmal mehr im Quelltext der Ausgabe). Die entstandene
dist/index.html legst du standalone auf deinen Webspace/Server (file://-
tauglich). Steuerung im Detail: app.js (mountBuildBadge), docs/DECISIONS.md
D16.
Zwei Dinge, die sonst nur der Pages-Workflow erledigt und die du im Eigenbetrieb
selbst geradeziehst: der Footer-Link MIT-License zeigt relativ auf
../LICENSE (lege die Datei eine Ebene über index.html ab oder passe den Link
an), und die Versionsnummer bleibt der Quelltext-Platzhalter 1.0 (der
Workflow ersetzt ihn sonst aus VERSION + Commit-Zahl).
Projektdokumente
frontend/— Editor ·backend/— Kotlin/Spring (Gerüst folgt, siehe backend/README.md)docs/SPEC.md— verbindliche Sprachdefinitiondocs/DECISIONS.md— Design-Entscheidungen mit Begründungdocs/ROADMAP.md— Mermaid-Plugin, Taiga-Integration, Tenzudocs/TASKS.md— offene Aufgaben (Checkboxen)docs/brand/BRAND.md— Logo, Wortbild, Anwendungsregelndocs/design/— Design-Herleitung der MarkeCLAUDE.md— Projektkontext für Claude Code
Deployment
Der Editor wird per GitHub Actions als statische Seite auf GitHub Pages
veröffentlicht (Workflow: .github/workflows/pages.yml). Ausgelöst bei jedem
Push auf main sowie manuell (workflow_dispatch).
Der Workflow richtet Node ein, führt npm ci, npm test (Vitest) und
npm run build (Vite) aus und veröffentlicht die gebündelte
frontend/dist/index.html als index.html an der Wurzel-URL, dazu LICENSE
für den MIT-Link im Footer. Das Favicon ist im Build bereits inline, es muss also
nichts weiter kopiert werden; nur der Laufzeit-Link ../LICENSE wird auf der
Kopie geradegezogen. Ein fehlschlagender Test blockiert das Deployment.
backend/ und die übrigen docs/ werden nicht veröffentlicht.
Beim Zusammenstellen setzt der Workflow zudem die Versionsnummer im Footer:
Major.Minor stammt aus der Datei VERSION (per bewusstem „Bump-Commit"
gepflegt), die Micro-Stelle aus der Zahl der Commits seit diesem letzten
Bump — sie steigt also mit jedem Commit und beginnt nach einem Bump wieder bei
0 (Werkbaum 1.0.0, 1.0.1, … dann VERSION auf 1.1 bumpen → 1.1.0). Es
wird nichts ins Repo zurückgeschrieben. Im Footer verlinkt der Name Werkbaum
die Repo-Startseite, die Versionsnummer genau den zugehörigen Commit
(…/commit/<sha>). Lokal geöffnet zeigt der Editor den Platzhalter aus dem
Quelltext (Werkbaum 1.0).
Einmalige Einrichtung: In den Repo-Settings unter Pages als Source „GitHub Actions" wählen. Das Repo muss dafür öffentlich sein (GitHub Pages via Actions ist für private Repos nur mit kostenpflichtigem Plan verfügbar).
Lizenz
MIT — siehe LICENSE. © 2026 Michael Hönnig.
