Commit Graph
203 Commits
Author SHA1 Message Date
mhoennigandClaude Opus 4.8 9438935c41 frontend/ci: Getrennte Footer-Links — Name -> Repo, Version -> Commit
Im Footer sind "Werkbaum" und die Versionsnummer jetzt zwei Links:
- "Werkbaum" -> Repo-Startseite (wie bisher).
- Versionsnummer (<a class="ver">) -> exakt der deployte Commit.

CI setzt beim Build sowohl den Versionstext als auch den href der
ver-Anchor: COMMIT_URL=.../commit/$(git rev-parse HEAD); zwei gezielte
seds (href + Text). Lokal zeigt die Version "1.0" und verlinkt die
Commits-Uebersicht als Fallback.

Verifiziert: YAML gueltig; Trockenlauf ersetzt href -> commit/<sha> und
Text -> 1.0.7, "Werkbaum"-Link unveraendert. Preview lokal: Name -> Repo,
Version -> /commits/main.

Doku: README (EN+DE) Deployment + DECISIONS D16 ergaenzt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 14:47:15 +02:00
mhoennigandClaude Opus 4.8 81bac87d80 frontend: Abstand ueber dem Footer halbiert (28px -> 14px)
Verifiziert: .site-footer margin-top jetzt 14px. Gilt auf allen
Bildschirmen. Keine SPEC-Aenderung.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 14:44:29 +02:00
mhoennigandClaude Opus 4.8 c16866e1f8 frontend: Untertitel um "Requirements" ergaenzt, Kurzfassung auf Mobil
Der Untertitel nennt jetzt auch Requirements(-Baum) — analog zur
Meta-Description. Fuer kleine Bildschirme gibt es eine garantiert
einzeilige Kurzfassung (neuer i18n-Key subtitleShort, 9 Sprachen): zwei
Spans (.sub-full/.sub-short), per body.mobile umgeschaltet; zusaetzlich
white-space:nowrap + ellipsis als Sicherung gegen Umbruch.

Verifiziert (headless): Desktop zeigt die Langfassung mit Requirements,
375px zeigt die Kurzfassung einzeilig ohne Overflow in allen geprueften
Sprachen (de/en/es/fr/ru/ja); i18n konsistent (48 Keys x 9). Normalgroesse
unveraendert (Kurzfassung nur mobil).

SPEC §9 (Kleiner Bildschirm) ergaenzt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 14:43:56 +02:00
mhoennigandClaude Opus 4.8 cb440af362 frontend: "verworfene"-Toggle als kompakter Icon-Button
Der breite Schalter mit Text wird ein schmaler Druck-Button (29px statt
Schalter+Label): Symbol = gestrichelte Box mit Durchstreichung (spiegelt
den verworfenen Knoten), aria-pressed als Ein/Aus-Zustand (gedrueckt =
petrol gefuellt), Erklaerung per Tooltip (discardedTooltip). Ersetzt die
Checkbox #showc; Zustand jetzt ueber aria-pressed (discardedShown/
setDiscarded), unveraendert in Filter, Speichern und Wiederherstellen.

Verifiziert (headless): Button toggelt aria-pressed + Petrol-Fuellung,
blendet verworfene Knoten ein/aus, Zustand ueberlebt Reload. Gilt auf
allen Bildschirmen (spart auch mobil Platz).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 14:40:29 +02:00
mhoennigandClaude Opus 4.8 924ca5aaee frontend: Hilfe-Icon statt Menue-Icon fuer den Legenden-Umschalter
Der #legendBtn (nur auf kleinem Bildschirm sichtbar) trug ein Menue-/
Listen-Icon; die Legende ist aber eine Hilfe-/Referenzseite. Jetzt ein
Hilfe-Icon (Kreis mit Fragezeichen). Nur der Button-Inhalt geaendert,
Normalgroesse nicht betroffen (Button dort verborgen).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 14:28:35 +02:00
mhoennigandClaude Opus 4.8 a04b3ef9fa frontend: Modus-Waehler auf kleinem Bildschirm als Reihum-Umschalter
Auf body.mobile zeigt der horizontal/kompakt/vertikal-Waehler nur noch das
aktive Icon (label:has(input:checked)); Tippen schaltet reihum zum naechsten
Modus (horizontal -> kompakt -> vertikal -> …). Spart zwei Drittel Breite.

Verifiziert (headless): mobil ein Icon sichtbar (~40px), 3x Tippen zyklt
horizontal/kompakt/vertikal/horizontal; Desktop unveraendert (3 Icons,
~118px, Direktauswahl ohne Zyklus), keine Konsolenfehler.

SPEC §9 (Kleiner Bildschirm) ergaenzt. Normalgroesse nicht betroffen.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 14:27:15 +02:00
mhoennigandClaude Opus 4.8 ffe70d2d40 frontend: Splitter auf kleinem Bildschirm wieder verfuegbar
Der Gutter wurde auf Mobil faelschlich ganz ausgeblendet. Jetzt bleibt er
sichtbar und ziehbar (die 820-px-Regel liefert das gestapelte Layout inkl.
Gutter); nur die Min/Normal/Max-Buttons bleiben verborgen. Default weiterhin
ein Bereich gross, Umschalten per Titelzeilen-Tap unveraendert, zusaetzlich
Teilen per Ziehen moeglich.

Verifiziert (headless, 375px): Gutter sichtbar, Ziehen erzeugt Custom-Split
(--drow gesetzt, beide Bereiche sichtbar); Default-Einzelansicht und
winbtns-verborgen unveraendert. Normalgroesse nicht betroffen.

SPEC §9 und DECISIONS D17 an "Splitter bleibt" angepasst.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 14:25:19 +02:00
mhoennigandClaude Opus 4.8 9c1f6df225 frontend: Beispiel-Diagramm auf Englisch, Hostsharing-Cloud-Link
Der Default-Beispieltext (INITIAL) ist jetzt englisch (passend zur
englischen Haupt-README). Statt "Cloud" nun "Cooperative Community Cloud"
mit Link https://hostsharing.net (nackte URL -> klickbarer Knoten mit ↗).
README-Screenshot neu erzeugt (englische UI + Inhalt).

SPEC §10 (kanonisches Fixture) bleibt bewusst deutsch: normatives
Beispiel der deutschsprachigen Doku, unabhaengig vom Live-Demo-Text.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 14:23:30 +02:00
mhoennigandClaude Opus 4.8 506bdccd2e frontend: Ein-Bereich-Ansicht + kompakte Legende/Sprachwahl auf Mobil
Auf kleinem Bildschirm (body.mobile per matchMedia, <=640px):
- Immer nur ein Bereich gross (Diagramm ODER Editor); der andere schrumpft
  auf seine Titelzeile und dient als Umschalter (Antippen holt ihn nach
  vorn). Splitter und Min/Normal/Max-Buttons entfallen.
- Legende von der Bereichs-Umschaltung entkoppelt: eigener Umschalter
  (#legendBtn) im Editor-Kopf statt der dauerhaften "AGENDA"-Zeile, damit
  sie zugeklappt keinen Platz kostet (neuer i18n-Key legendTooltip, 9 Spr.).
- Sprachwahl schlank: nur EN + aktive Sprache + "…" (klappt alle auf); die
  aktive Sprache wird auch als "extra" eingeblendet, Auto-Aufklappen entfaellt.
- Default Vollbild auf Mobil (nur ohne gespeicherte Nutzerwahl).

Verifiziert (headless, 375px): body.mobile gesetzt, Diagramm-Default +
Editor als Titelzeile, Umschalten per Tap, Legenden-Toggle, Sprachleiste
DE+EN+…/Aufklappen zeigt alle 9/aktives Extra bleibt sichtbar, Vollbild an,
keine Konsolenfehler; Desktop unveraendert (beide Panels, 4 Sprachen,
Legendenbutton verborgen). i18n konsistent (47 Keys x 9).

SPEC §9 (Kleiner Bildschirm) + DECISIONS D17 + frontend/CLAUDE.md ergaenzt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-21 14:14:31 +02:00
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 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 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
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
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 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