Commit Graph
303 Commits
Author SHA1 Message Date
mhoennigandClaude Opus 4.8 ac81f0a209 frontend: Mehr Abstand zwischen gestapelten Knoten (vertikal/kompakt)
In den transponierten Modi ueberlappte das Groessen-Badge (oben rechts)
eines Knotens oft mit den Namens-Tags (unten rechts) des Knotens darueber
(gemessen: nur 10 px Luecke, 6 px Ueberlappung). Jetzt +20 px Abstand
nach unten fuer gestapelte Blaetter/any-of/kompakt (Luecke 25 px, ~9 px
Freiraum); der obere 23-px-Abzweig bleibt unveraendert. Vertikal
zentrierte all-of-Zwischenknoten bekommen den Abstand symmetrisch (16 px),
damit ihr 50%-Abzweig auf der Knotenmitte bleibt.

Verifiziert (headless): keine Ueberlappung mehr; alle Abzweige treffen die
Knotenmitte (|delta| <= 1 px) in vertikal und kompakt. Horizontal
unveraendert. SPEC §9 (Geometrie-Invarianten) ergaenzt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 14:04:30 +02:00
mhoennigandClaude Opus 4.8 0519534106 frontend: Footer-Credit kuerzen, Modellnamen als Tooltip
"Vibe-Coded with Claude Code Fable 5 and Opus 4.8" wird zu
"Vibe-Coded with Claude Code"; "Fable 5 and Opus 4.8" steckt als
title-Tooltip im span.vibe (gepunktete Unterstreichung, cursor:help).
Spart Platz auf allen Bildschirmen. Keine SPEC-Aenderung.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 14:01:35 +02:00
mhoennigandClaude Opus 4.8 c380a8ac63 ci: Version aus VERSION-Datei + Commit-Anzahl statt Run-Nummer
Micro-Version jetzt commit-basiert statt aus github.run_number:
- Major.Minor in neuer Datei VERSION (per Bump-Commit gepflegt).
- Micro = Commits seit dem letzten VERSION-Bump
  (git rev-list --count <VERSION-Commit>..HEAD) -> beginnt nach einem
  Bump wieder bei 0 (SemVer-artig, z. B. 1.0.0, 1.0.1, dann 1.1.0).
- checkout mit fetch-depth: 0 (flacher Klon zaehlte sonst nur 1 Commit).
- sed ersetzt jetzt ">Werkbaum <ziffern></a>" (regex), damit auch nach
  einem Major/Minor-Bump im Quelltext getroffen wird; viewport-/xml-1.0
  bleiben unberuehrt.

Vorteil ggue. Run-Nummer: vollstaendig aus dem Repo reproduzierbar,
zaehlt keine fehlgeschlagenen/manuellen Laeufe, kein Rueckschreiben.

Doku: README (EN+DE) Deployment-Abschnitt und DECISIONS D16 aktualisiert.
Keine SPEC-Aenderung (Notation unberuehrt).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 13:51:10 +02:00
mhoennigandClaude Opus 4.8 aa16665853 ci: Micro-Version im Footer aus der Run-Nummer setzen
Beim Site-Build ersetzt der Workflow ">Werkbaum 1.0</a>" durch
">Werkbaum 1.0.${{ github.run_number }}</a>" (per sed, nur auf der
Site-Kopie). Die Micro-Version steigt so bei jedem Deployment monoton
um 1 — ohne Commit/Tag zurueck ins Repo und ohne selbstausloesenden
Deploy-Zyklus. run_number via env BUILD_VERSION injiziert. "1.0" bleibt
die manuell gepflegte Basis und die Version beim lokalen Oeffnen; die
viewport-/xml-"1.0" bleiben unberuehrt (Anker >...</a> als Ziel).

Doku: README (EN+DE) Deployment-Abschnitt und DECISIONS D16 ergaenzt.
Keine SPEC-Aenderung (Notation unberuehrt).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 13:43:45 +02:00
mhoennigandClaude Opus 4.8 7c39da7b44 frontend: GUI-Zustand und Editortext im Browser speichern
Ohne Backend bleiben Einstellungen und Text ueber ein Neuladen erhalten
(localStorage). Gespeichert: Editortext (werkbaum-src) und GUI-Zustand
(werkbaum-ui: Modus, verworfene, Split-Zustand inkl. freier Drag-Groesse
--col/--drow, Zoom, Vollbild); Sprache bleibt in werkbaum-lang.

saveUI()/saveSrc() haengen an allen Zustandsaenderungen (Layout, Toggle,
Fenster-Buttons, Splitter-Drag, Zoom, Vollbild, Texteingabe);
restoreState() stellt beim Laden alles wieder her und unterdrueckt
waehrenddessen ueber restoring=true das Zurueckschreiben. Fehlender Text
faellt auf das Beispiel (INITIAL) zurueck, ein leerer bleibt leer.

Verifiziert (headless): Text, Modus, verworfene, Zoom, Vollbild,
Custom-Split (--col) und Minimier-Zustand ueberstehen ein Reload;
keine Konsolenfehler. Keine SPEC-Aenderung (Notation unberuehrt);
localStorage-Schluessel in frontend/CLAUDE.md dokumentiert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 13:42:27 +02:00
mhoennigandClaude Opus 4.8 4031dba4bd frontend: Impressum-Link im Footer (mehrsprachig)
Link auf https://michael.hoennig.de/imprint.html am Ende des Footers.
Neuer i18n-Key "imprint": deutsch nur "Impressum", in allen anderen
Sprachen die uebersetzte Bezeichnung mit "(Impressum)" in Klammern
dahinter (z. B. EN "Imprint (Impressum)", FR "Mentions legales
(Impressum)"). Keine SPEC-Aenderung (Notation unberuehrt).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 13:38:20 +02:00
mhoennigandClaude Opus 4.8 0219bb1b5a docs: Englisch als Haupt-README, Deutsch nach README.de.md, Screenshot
Auf Wunsch ist die englische Fassung jetzt die Haupt-README.md; die
deutsche Fassung liegt als README.de.md. Sprachlinks oben in beiden
Dateien angepasst. Der Hinweis in README.md stellt klar, dass die
ausfuehrliche Doku unter docs/ weiterhin auf Deutsch gepflegt wird.

Screenshot der laufenden App (docs/screenshot.png, headless Chrome gegen
den lokalen Dev-Server) im Abschnitt Usage/Nutzung eingebunden.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 13:30:42 +02:00
mhoennigandClaude Opus 4.8 7911cb10c5 docs: Englische README-Uebersetzung (README.en.md)
Deutsch bleibt Quellsprache (CLAUDE: "Doku auf Deutsch"), daher die
Uebersetzung als separate README.en.md statt README.md zu ersetzen.
Wechselseitige Sprachlinks oben in beiden Dateien; Hinweis in der
englischen Fassung, dass sie eine Convenience-Uebersetzung ist und der
deutschen Vorlage hinterherhaengen kann.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 13:19:56 +02:00
mhoennigandClaude Opus 4.8 fccd32190a ci: GitHub-Pages-Deployment via Actions-Workflow
Offizieller Actions-Weg (upload-pages-artifact + deploy-pages) mit
permissions pages/id-token und concurrency-Gruppe "pages"; Trigger:
Push auf main + workflow_dispatch. Vitest-Step als Platzhalter
auskommentiert (Tests folgen, TASKS.md Phase 1).

Site-Aufbau: frontend/index.html an die Wurzel-URL, dazu docs/brand/
(Favicon) und LICENSE (MIT-Link im Footer). Die ../-Pfade der Quelle
zeigten von der Wurzel aus über die Site hinaus; statt den Editor zu
aendern, zieht der Workflow sie nur auf der Site-Kopie per sed gerade
(Editor-Quelle bleibt unveraendert, lokal weiter nutzbar). backend/
und uebrige docs/ werden nicht veroeffentlicht.

Doku: README-Abschnitt "Deployment" (inkl. einmaliger Settings-
Umstellung auf Source "GitHub Actions", Repo muss oeffentlich sein),
TASKS.md-Rubrik "Deployment" abgehakt, DECISIONS D16. Hinweis: der
Auftrag nannte "D15", das war aber schon fuer den kompakten Modus
vergeben -> als D16 angelegt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 13:14:51 +02:00
mhoennigandClaude Opus 4.8 340c7e7195 frontend: Zweiter Download-Button für PNG (neben SVG)
LibreOffice liest weder das Browser-Bild-Clipboard noch das SVG zuverlässig.
Neben dem SVG-Download gibt es daher jetzt einen zweiten Button, der das
Diagramm als PNG-Datei (werkbaum-diagramm.png, Raster) speichert — überall
per "Bild einfügen" importierbar. Beide Download-Buttons tragen ein
Format-Label (SVG/PNG). Tooltip in allen neun Sprachen; SPEC §9 ergänzt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 13:03:15 +02:00
mhoennigandClaude Opus 4.8 8d35611f4c frontend: Diagramm als SVG-Datei herunterladen (LibreOffice-tauglich)
LibreOffice Writer erkennt das Browser-Bild-Clipboard nicht zuverlässig
(sein HTML-Filter ignoriert data-URI-Bilder, und die Async-Clipboard-API
erlaubt kein SVG als Bildtyp). Neue Download-Schaltfläche im Diagramm-Kopf
speichert das Diagramm als eigenständige SVG-Datei (Vektor), die per
Einfügen → Bild überall zuverlässig importierbar ist. Der bisherige
PNG-Clipboard-Button bleibt für Apps, die ihn lesen. Tooltip in allen neun
Sprachen; SPEC §9 ergänzt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 12:56:17 +02:00
mhoennigandClaude Opus 4.8 61023019aa frontend: Übersetzungen für Mandarin (中) und Japanisch (日)
Zwei weitere aufklappbare Sprachen hinter dem "…"-Umschalter mit
vollständigen UI-Übersetzungen (inkl. Diagramm-Tooltips). Reihenfolge:
de en es fr pl ru hi zh ja …. LANG_EXTRA und CLAUDE.md-Konvention ergänzt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 12:47:19 +02:00
mhoennigandClaude Opus 4.8 ff16fa9ca5 frontend: Vollbild lässt schmalen Rand (halber Panel-Zwischenraum)
Statt bündig am Fensterrand bleibt im Vollbild links/rechts ein 7-px-Rand
(halber Panel-Zwischenraum von 14 px), damit die Panels nicht gedrängt
wirken.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 12:45:15 +02:00
mhoennigandClaude Opus 4.8 508de56628 frontend: Diagramm-Copy als PNG + text/html-Flavor (LibreOffice-lesbar)
Das Diagramm wird bewusst als PNG kopiert. Zusätzlich zum image/png-Flavor
wird eine text/html-Variante mit eingebettetem PNG geschrieben, die
Office-Programme wie LibreOffice Writer bevorzugt einbetten — damit ist das
Bild dort einfügbar. Der Tooltip nennt jetzt das Format ("PNG-Bild in die
Zwischenablage"). SPEC §9 entsprechend ergänzt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 12:44:47 +02:00
mhoennigandClaude Opus 4.8 57fb72cbe4 frontend: Diagramm als Bild (PNG) in die Zwischenablage kopieren
Der Diagramm-Kopieren-Button liefert nun ein grafisches Format statt Text:
Das gerenderte Diagramm wird aus der Live-Geometrie in ein eigenständiges
SVG (nur Formen + Text, keine externen Ressourcen) nachgezeichnet und als
PNG in die Zwischenablage gelegt. Knotenfarben, Größen-Badges, Tags und der
Geister-Knoten werden übernommen; Verbindungslinien je Gate neu gezogen
(und = durchgezogen Tinte, oder = gestrichelt Grau) und treffen so in allen
Modi die Knoten. Fallback: SVG-Quelltext, wenn kein Bild-Clipboard verfügbar.

Der bisherige ASCII-Text-Export (treeToText, CODE_BY_KEY) entfällt.
Tooltip-Texte auf "als Bild" aktualisiert, SPEC §9 entsprechend ersetzt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 12:39:56 +02:00
mhoennigandClaude Opus 4.8 8398e8ea64 frontend: Tooltip am Geisterknoten "Untergliederung fehlt"
Erklärt in allen sieben Sprachen die Regel aus SPEC §5: ab T-Shirt-Größe M
sollte ein Element weiter untergliedert werden.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 12:35:02 +02:00
mhoennigandClaude Opus 4.8 4ec6818f6f frontend: Tooltip für den "verworfene"-Umschalter
Erklärt in allen sieben Sprachen, dass der Schalter verworfene Knoten
samt Teilbaum ein-/ausblendet.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 12:34:16 +02:00
mhoennigandClaude Opus 4.8 ecf0a3353f frontend: Vollbild-Umschalter links neben den Sprachen
Neuer Icon-Toggle in der Kopfzeile (links vom Sprachumschalter). Aktiv
entfernt er linken/rechten Rand und die 1200px-Maximalbreite von Kopf,
Panel-Bereich und Fußzeile, sodass die Panels die ganze Fensterbreite
nutzen. Tooltip in allen sieben Sprachen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 12:33:35 +02:00
mhoennigandClaude Opus 4.8 a43d7a82f7 frontend: "Werkbaum 1.0" im Footer verlinkt aufs GitHub-Repo
Link auf https://github.com/mhoennig/werkbaum.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 12:31:41 +02:00
mhoennigandClaude Opus 4.8 14b603b810 frontend: Übersetzter Tooltip am Titel "Werkbaum"
Der Markentitel erklärt per Tooltip die Wortbedeutung („Werk-Baum" — der
WBS-/Projektstrukturbaum) in allen sieben UI-Sprachen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 12:31:13 +02:00
mhoennigandClaude Opus 4.8 63c9e79a9d frontend: Vertikale Ansicht — Abzweige treffen die Knotenmitte
In der zentrierten vertikalen Darstellung sind all-of-Zwischenknoten selbst
vertikal mittig zu ihrem Teilbaum. Der Abzweig war jedoch fest auf 23 px
verankert und lief daher bei diesen Knoten ins Leere. Abzweig und die Enden
der Sammelleiste zielen für all-of-Kinder nun auf 50 % (Knotenmitte);
Blatt- und Any-of-Kinder bleiben bei 23 px. Verifiziert: alle Abzweige
treffen ihren Knoten.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 12:30:07 +02:00
mhoennigandClaude Opus 4.8 650be7c0a7 frontend: Tooltip-i18n-Schlüssel auf *Tooltip-Konvention umbenannt
copyTitle -> copyTooltip, copyDiagramTitle -> copyDiagramTooltip.
Die echten Panel-Titel (editorTitle/diagramTitle) bleiben unberührt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 12:25:26 +02:00
mhoennig 88f349ea3e docs: Update logo path in README.md 2026-07-21 12:25:18 +02:00
mhoennigandClaude Opus 4.8 e2bdd73b57 frontend: Sprach-Aufklapper "…" bleibt am rechten Ende
Die aufklappbaren Sprachen (PL/RU/HI) erscheinen nun vor dem "…"-Button,
sodass dieser am rechten, gerundeten Ende der Sprachleiste bleibt und
das Auf-/Zuklappen dort stattfindet.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 12:24:43 +02:00
mhoennig 659c29426c docs: Update logo path in README.md 2026-07-21 12:23:10 +02:00
mhoennigandClaude Opus 4.8 6eaf9fad33 frontend: Aufklappbare Sprachen PL/RU/HI hinter "…"-Umschalter
Der Sprachumschalter zeigt DE/EN/ES/FR direkt; ein "…"-Button klappt
Polnisch, Russisch und Hindi auf. Ist eine dieser Sprachen aktiv (auch
per gemerkter Auswahl), öffnet sich der Bereich automatisch. Vollständige
Übersetzungen aller UI-Texte inkl. Diagramm-Tooltips für PL/RU/HI.
Wurzel-CLAUDE.md-Konvention entsprechend ergänzt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 12:20:11 +02:00
mhoennigandClaude Opus 4.8 6e33591b84 frontend: Diagramm als Text-Baum in die Zwischenablage kopieren
Neue Icon-Schaltfläche im Diagramm-Kopf exportiert die sichtbare Struktur
als einfachen, überall einsetzbaren ASCII-Baum: ├─/└─ für all-of,
├◇/└◇ für any-of-Alternativen, je Knoten [Status] Label (Größe) @tags.
Respektiert den verworfene-Filter. Clipboard-Logik in writeClipboard/
flashCopied ausgelagert und von beiden Kopieren-Buttons genutzt.
SPEC §9 um den Textexport ergänzt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 12:16:09 +02:00
mhoennigandClaude Opus 4.8 1479bd9717 frontend: Kopieren-Schaltfläche als Icon mit Tooltip
Die Textschaltfläche "kopieren" im Text-Panel wird ein Klemmbrett-Icon mit
übersetztem Tooltip/aria-Label. Bei Erfolg wechselt es kurz auf ein
Häkchen-Icon in Petrol. Icon bleibt beim Sprachwechsel erhalten.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 12:12:41 +02:00
mhoennigandClaude Opus 4.8 91dee8d3b4 frontend: Panel-Rahmen in dezentem Petrol statt Grau
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 12:11:17 +02:00
mhoennigandClaude Opus 4.8 d180b54c6c frontend: Text-Panel zuverlässig auf die Titelzeile minimierbar
Die Fenster-Buttons stoppen die Ereignis-Weitergabe, damit ein Klick auf
Minimieren/Normal/Maximieren nicht an den Titelzeilen-Restore-Handler des
Panel-Kopfs durchgereicht und dort wieder aufgehoben wird. Das Text-Panel
klappt so verlässlich auf seine Titelzeile zusammen (42 px) und stellt sich
per Klick auf die Titelzeile wieder her.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 12:10:45 +02:00
mhoennigandClaude Opus 4.8 0bfcb7a993 frontend: Fußzeile mit Link auf michael.hoennig.de und MIT-License
Copyright verweist auf michael.hoennig.de, dahinter ein Vibe-Coded-
Hinweis (Claude Code Fable 5 und Opus 4.8) samt Link auf die MIT-Lizenz.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 12:04:53 +02:00
mhoennigandClaude Opus 4.8 9007d8c495 frontend: Versionsangabe "Werkbaum 1.0" vor dem Copyright
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 12:03:57 +02:00
mhoennigandClaude Opus 4.8 7aa33220ff frontend: Vertikale Darstellung als zentrierten LR-Baum
Der vertikale Modus zeigt all-of jetzt als exakt transponierten
Organigramm-Fächer: der Überknoten sitzt vertikal mittig zu seiner
Kindergruppe, die Verbindung tritt rechts auf halber Höhe aus und
verteilt über eine Sammelleiste (erste bis letzte Kindmitte) auf die
Kinder. Horizontal und kompakt bleiben unverändert. SPEC §9 angepasst.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 12:03:41 +02:00
Michael HoennigandClaude Opus 4.8 15bcfe75eb frontend: Mehrsprachige UI (DE/EN/ES/FR) mit Umschalter
Sprachumschalter oben rechts neben dem Titel. Alle UI-Texte, Tooltips,
die Legende und die dynamischen Diagramm-Texte (Status-Tooltips,
Geister-Knoten, Warnungen, Leer-Hinweis) laufen über ein I18N-Objekt mit
t()/applyLang(); Auswahl wird in localStorage gemerkt, html-lang gesetzt.
Deutsch ist Quell- und Default-Sprache. Der Beispiel-Notationstext bleibt
unverändert (Nutzerdaten). CLAUDE.md-Konvention entsprechend angepasst.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 11:33:09 +02:00
Michael HoennigandClaude Opus 4.8 a69d51b908 frontend: Darstellungs-Umschalter mit Icons statt Text
Segment-Buttons zeigen jetzt schematische Baum-Icons in der Reihenfolge
horizontal · kompakt · vertikal, jeweils mit Tooltip (title) und
aria-label. SPEC §9 entsprechend ergänzt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 11:24:44 +02:00
Michael HoennigandClaude Opus 4.8 1fe86d748c frontend: Splitter erreicht beide Extreme (Snap zur Titelzeile)
Der Splitter rastet nahe eines Randes in den minimierten Zustand des
jeweiligen Panels ein (gleiche Optik wie die Min-Buttons) und skaliert
dazwischen frei. Damit lassen sich beide Panels per Drag bis zu beiden
Extremen ziehen — in Seiten- wie Stapelmodus.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 11:22:14 +02:00
Michael HoennigandClaude Opus 4.8 c9fc505404 frontend: Wiederherstellen aus dem minimierten Zustand
min = Titelzeile, max = voller Platz abzüglich der Titelzeile des anderen
Panels (durch Vollhöhen-Layout und gespiegelte Collapse-Zustände bereits
gegeben). Ergänzt: Klick auf die Titelzeile eines minimierten Panels
stellt es wieder her; Doppelklick auf den Splitter setzt auf normal.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 11:20:17 +02:00
Michael HoennigandClaude Opus 4.8 f32cda676b frontend: Zoom skaliert Inhalt, Vollhöhen-Layout mit fixen Panes
Bisher wuchs beim Zoomen das Diagramm-Panel mit. Jetzt füllt die App die
Bildschirmhöhe (Body als Flex-Spalte), beide Panels sind flex-Container
mit fixem, scrollendem Inhaltsbereich. Der Zoom (CSS-`zoom` auf dem Baum)
skaliert damit nur den Inhalt; das Panel behält seine Größe, der Baum
scrollt im Diagramm-Viewport.

Splitter im Stapelmodus jetzt über die Grid-Zeile (--drow) statt
Diagramm-Höhe; Editor-Textarea füllt seinen Pane und scrollt intern.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 11:18:02 +02:00
Michael HoennigandClaude Opus 4.8 486415d409 frontend: Copyright-Fußzeile
Dezente Fußzeile "© 2026 Michael Hönnig" unter dem Editor.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 11:11:05 +02:00
Michael HoennigandClaude Opus 4.8 1b2ad76b73 docs: MIT-Lizenz ergänzen
LICENSE (MIT, © 2026 Michael Hönnig) und Lizenz-Abschnitt im README.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 11:10:36 +02:00
Michael HoennigandClaude Opus 4.8 7b6da8e286 frontend: Zoom für das Diagramm
Schwebende Zoom-Steuerung (−/Prozent/+) unten rechts im Diagramm plus
Strg/Cmd + Mausrad. Skaliert via CSS-`zoom` (Layout-Box), damit die
Scrollbalken des Containers korrekt greifen; Grenzen 30–300 %.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 11:04:09 +02:00
Michael HoennigandClaude Opus 4.8 a105d2a480 frontend: Minimieren kollabiert Panel auf die Titelzeile
Statt Preset-Größen minimiert/maximiert min/max jetzt echt:
- minimieren blendet den Panel-Körper aus, nur die Titelzeile bleibt;
  gestapelt als horizontale Leiste, seitlich als schmaler vertikaler
  Streifen mit gedrehter Beschriftung.
- maximieren des einen minimiert das andere Panel (gespiegelt).
- freies Ziehen am Splitter stellt beide wieder her.

Schmaler Viewport (<=820px) verhält sich wie gestapelt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 11:01:28 +02:00
Michael HoennigandClaude Opus 4.8 5bd25aca0d frontend: SEO-Texte – Titel, Description, Untertitel
- <title>: WBS-Editor für Projektstrukturplan & Feature-Tree (Und/Oder-Baum)
- <meta name="description"> mit den Kern-Suchbegriffen ergänzt
- Untertitel über dem Diagramm: knappe Tool-Beschreibung

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 10:56:14 +02:00
Michael HoennigandClaude Opus 4.8 352b086b19 frontend: Clipboard-Copy für den Notationstext
Button "kopieren" im Editor-Kopf kopiert den Textarea-Inhalt via
navigator.clipboard.writeText (Fallback: Auswahl + execCommand) und
quittiert kurz mit "kopiert ✓".

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 10:46:39 +02:00
Michael HoennigandClaude Opus 4.8 4ca2108902 frontend: Min/Normal/Max je Bereich (Fenster-Buttons)
Beide Panel-Köpfe (Editor, Diagramm) erhalten drei Fenster-Buttons
(minimieren/normal/maximieren). Sie springen den Splitter auf Presets:
maximieren des einen = minimieren des anderen (gespiegelte Aktiv-Markierung).
Seitlich über --col (72% / 360px / 20%), gestapelt über --diagram-h
(72vh / auto / 160px). Freies Ziehen am Splitter hebt das Preset auf.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 10:45:09 +02:00
Michael HoennigandClaude Opus 4.8 707f50a223 frontend: Bereiche per Splitter (Drag) aufteilen
Verschiebbarer Gutter zwischen Editor und Diagramm:
- seitlich (vertikal/kompakt): zieht die Editor-Spaltenbreite (--col).
- gestapelt (horizontal): begrenzt die Diagrammhöhe (--diagram-h), das
  Diagramm scrollt dann intern.

Umgesetzt über ein Gutter-Grid-Feld und Pointer-Events (mit
setPointerCapture); Grenzen via min/max. Kein neues Framework.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 10:41:31 +02:00
Michael HoennigandClaude Opus 4.8 593f81e50b frontend: T-Shirt-Größen-Badge in Petrol
Größen-Badge (oben rechts am Knoten) von dunkler Tinte auf Petrol (--or)
umgestellt, weiße Schrift bleibt. SPEC §5 angepasst.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 10:36:57 +02:00
Michael HoennigandClaude Opus 4.8 b8cddffd4c frontend: Warn-Umrandung an unzerlegten M+-Knoten entfernen
Der Geister-Knoten "Untergliederung fehlt" darunter genügt als Hinweis;
die zusätzliche gestrichelte orange Umrandung des Knotens war doppelt.
Die needs-Klasse wird nicht mehr vergeben. SPEC §5 angepasst.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 10:36:24 +02:00
Michael HoennigandClaude Opus 4.8 ab800b432b frontend: Kopfzeilentext kürzen
Der Zusatz über die Darstellungsmodi machte den Untertitel zu lang;
"Struktur als Text bearbeiten — das Diagramm entsteht live." genügt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 10:35:35 +02:00
Michael HoennigandClaude Opus 4.8 20b9d89f88 frontend: Darstellung horizontal/vertikal/kompakt + graue Any-of-Linien
Der bisherige „vertikal"-Toggle wird zur dreistufigen Auswahl
„horizontal / vertikal / kompakt", die zugleich das Seitenlayout wählt:

- horizontal: Diagramm oben, Editor unten (je volle Breite), Agenda
  rechts im Editor aufklappbar.
- vertikal: Editor links, Diagramm rechts; „all of" tritt rechts aus.
- kompakt: wie vertikal, aber „all of" läuft nach unten (spart Breite);
  Gate nur noch über den Linienstil codiert.

Zusätzlich wird das Petrol im Diagramm aufgegeben: any-of-Linien
(Sammelleiste und Abzweige) sowie der Rahmen der Alternative-Knoten sind
in allen Modi durchgehend gestrichelt bzw. grau (#6B7A8C). all-of bleibt
durchgezogen in Tinte. Petrol nur noch für UI-Akzente und das Logo.

Doku nachgezogen: SPEC §9 (Linienführung, drei Modi), DECISIONS D15,
frontend/CLAUDE.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 10:30:56 +02:00