Graph comments groups #38

Closed
opened 2026-09-12 15:03:58 +02:00 by meleki · 2 comments
Owner

Kommentare und Gruppen im Graph: eine beschriftete Box um mehrere Nodes, damit grosse Graphen lesbar bleiben.

Abzuklären:

  • nur Box mit Titel, oder auch freier Kommentar-Text
  • verschiebt die Box ihre Nodes mit
  • zuklappbar wie ein Node?

Übernommen aus todo-notes/graph-comments-groups.md beim Umzug auf das Issue-System (2026-09-12).

  • Angelegt: 2026-09-11 · bf41919 — Add todo notes for the next round of features, gaps and upkeep
  • Gemeldet von: Claude (Assistent)
Kommentare und Gruppen im Graph: eine beschriftete Box um mehrere Nodes, damit grosse Graphen lesbar bleiben. Abzuklären: - nur Box mit Titel, oder auch freier Kommentar-Text - verschiebt die Box ihre Nodes mit - zuklappbar wie ein Node? --- *Übernommen aus `todo-notes/graph-comments-groups.md` beim Umzug auf das Issue-System (2026-09-12).* - **Angelegt:** 2026-09-11 · `bf41919` — Add todo notes for the next round of features, gaps and upkeep - **Gemeldet von:** Claude (Assistent)
meleki added the todo-note label 2026-09-12 15:03:58 +02:00
admin added the low-priority label 2026-09-12 18:14:58 +02:00
admin added this to the Development project 2026-09-13 13:30:08 +02:00
admin removed this from the Development project 2026-09-13 13:30:59 +02:00
admin added this to the Development project 2026-09-13 13:45:43 +02:00

Zur Gruppe:

  1. Ist eine Box mit Titel - wäre auch gut wenn man eine Farbe definiert werden kann
  2. Box soll Nodes mitverschieben - alle Nodes bei dem sich der Mittelpunkt des Nodes innerhalb der Box befindet
  3. Zuklappbar braucht es nicht sein - lassen wir weg

Kommentar Node (sprich freier Text):
bitte auch umsetzen.

Zur Gruppe: 1. Ist eine Box mit Titel - wäre auch gut wenn man eine Farbe definiert werden kann 2. Box soll Nodes mitverschieben - alle Nodes bei dem sich der Mittelpunkt des Nodes innerhalb der Box befindet 3. Zuklappbar braucht es nicht sein - lassen wir weg Kommentar Node (sprich freier Text): bitte auch umsetzen.
admin moved this to Next in Development on 2026-09-16 08:25:19 +02:00
Author
Owner

Umgesetzt in b9f1a9d, nach den vier Entscheidungen aus diesem Thread.

Zwei getrennte Dinge, wie du es gegen meine Empfehlung entschieden hast: eine Gruppen-Box (Titel, eigene Farbe, trägt ihre Nodes) und ein Kommentar-Zettel (freier Text, ohne Rahmenwirkung).

Modell — zwei optionale Arrays groups und notes auf Graph, kein Registry-Node für den Kommentar. Ein echter Node würde durch den Interpreter laufen, in den Drop-Paletten auftauchen und im Shader mitkompiliert — für ein Stück Text der falsche Weg. Als Arrays auf Graph gibt es beides automatisch in allen vier Graph-Arten (Behavior, State machine, Shader, Partikel), und ein altes Dokument ohne die Arrays heißt genau „keine Gruppen“ — kein Format-Bump.

Anlegen — Rechtsklick auf eine Mehrfachauswahl → Group these N nodes, Rechtsklick ins Leere → Add group / Add comment. Die Suche findet die beiden unter group bzw. comment, nicht unter add: das ist das Wort, mit dem man den Add-Node sucht.

Zugehörigkeit — wird beim Anfassen berechnet, nie gespeichert. Kriterium ist der Mittelpunkt des Nodes innerhalb der Box; ein Node, den man herauszieht, ist damit draußen, ohne „entgruppieren“. Box in Box: die äußere nimmt die innere mit, samt deren Nodes. Eine Gruppe wird nur an der Titelleiste angefasst, ihr Körper bleibt für den Zeiger durchlässig — sonst könnte man über den Nodes, die sie hält, nie wieder ein Gummiband ziehen.

Löschen nimmt die Box und sonst nichts. Eine Box, die still zehn Nodes mitnimmt, wäre die teuerste Überraschung im ganzen Feature — Undo fängt das, aber nur, wenn man es merkt.

Farbe — freier Picker (die ColorField des Inspectors), die Titelfarbe folgt daraus: relative Leuchtdichte nach WCAG, Schwelle bei 0,179, wo sich die beiden Kontrastverhältnisse treffen. Nicht 0,5 — das wählt Weiß auf mittlerem Grau, wo Schwarz besser liest. Dazu Use the default color, sonst wäre der freie Picker eine Einbahnstraße.

Snap greift auch beim Resize (Nachtrag aus dem Chat). Auf das Raster gelegt wird die ferne Kante (x + w bzw. y + h), nicht die Breite — sonst wanderte bei einer off-grid liegenden Box die gegenüberliegende Ecke, die ein Resize gerade nicht bewegen darf. Die Mindestgröße steigt dafür in ganzen Schritten: 80 ist kein Vielfaches von 24, eine bis zum Anschlag geschrumpfte Box wäre also ausgerechnet im Snap-Modus schief gewesen (jetzt 96 × 48).

Belegt:

npm run check                  → 87 Files, 1109 Tests, grün (vorher 1097)
npm run build                  → ok
GM_STEPS=36 node tools/e2e.mjs → ALL PASSED – 13 checks

Neu: tests/core/graph-annotations.test.ts (Kommandos samt Undo, Mindestgröße, Speicher-Rundlauf inklusive doppelter Id und erfundener Felder, die Mittelpunkt-Regel, die Titelfarbe, die vier Snap-Fälle) und Schritt 36 graph-groups für das, was kein Unit-Test sieht: der weit entfernte Node bleibt beim Ziehen liegen, die Ecke vergrößert ohne zu schieben, ein Undo nimmt die ganze Geste zurück, die Titelfarbe kippt bei #ffe08a auf Schwarz, und ein Resize um krumme 53 × 37 Pixel landet mit eingeschaltetem Snap auf Kante 432 — eine Zahl, die nicht aus der Geste stammen kann.

Wiki (b0d0e01): Behaviors.md mit dem Abschnitt zu Gruppen und Kommentaren samt Snap-Regel, Keyboard.md mit der Delete-Zeile, Development.md mit Schritt 36 und der Check-Zahl.

Die Zahl 945 im Wiki ist eine Rechnung (932 aus CI-54 plus die 13 neuen), keine Messung — den vollen Lauf habe ich nicht lokal gefahren, der gehört CI. Sagt der Lauf auf b9f1a9d etwas anderes, ziehe ich sie nach und mache das Issue wieder auf.

Umgesetzt in `b9f1a9d`, nach den vier Entscheidungen aus diesem Thread. **Zwei getrennte Dinge**, wie du es gegen meine Empfehlung entschieden hast: eine **Gruppen-Box** (Titel, eigene Farbe, trägt ihre Nodes) und ein **Kommentar-Zettel** (freier Text, ohne Rahmenwirkung). **Modell** — zwei optionale Arrays `groups` und `notes` auf `Graph`, kein Registry-Node für den Kommentar. Ein echter Node würde durch den Interpreter laufen, in den Drop-Paletten auftauchen und im Shader mitkompiliert — für ein Stück Text der falsche Weg. Als Arrays auf `Graph` gibt es beides automatisch in allen vier Graph-Arten (Behavior, State machine, Shader, Partikel), und ein altes Dokument ohne die Arrays heißt genau „keine Gruppen“ — kein Format-Bump. **Anlegen** — Rechtsklick auf eine Mehrfachauswahl → *Group these N nodes*, Rechtsklick ins Leere → *Add group* / *Add comment*. Die Suche findet die beiden unter `group` bzw. `comment`, **nicht unter `add`**: das ist das Wort, mit dem man den `Add`-Node sucht. **Zugehörigkeit** — wird beim Anfassen berechnet, nie gespeichert. Kriterium ist der Mittelpunkt des Nodes innerhalb der Box; ein Node, den man herauszieht, ist damit draußen, ohne „entgruppieren“. Box in Box: die äußere nimmt die innere mit, samt deren Nodes. Eine Gruppe wird **nur an der Titelleiste** angefasst, ihr Körper bleibt für den Zeiger durchlässig — sonst könnte man über den Nodes, die sie hält, nie wieder ein Gummiband ziehen. **Löschen** nimmt die Box und sonst nichts. Eine Box, die still zehn Nodes mitnimmt, wäre die teuerste Überraschung im ganzen Feature — Undo fängt das, aber nur, wenn man es merkt. **Farbe** — freier Picker (die `ColorField` des Inspectors), die Titelfarbe folgt daraus: relative Leuchtdichte nach WCAG, Schwelle bei 0,179, wo sich die beiden Kontrastverhältnisse treffen. Nicht 0,5 — das wählt Weiß auf mittlerem Grau, wo Schwarz besser liest. Dazu *Use the default color*, sonst wäre der freie Picker eine Einbahnstraße. **Snap greift auch beim Resize** (Nachtrag aus dem Chat). Auf das Raster gelegt wird die **ferne** Kante (`x + w` bzw. `y + h`), nicht die Breite — sonst wanderte bei einer off-grid liegenden Box die gegenüberliegende Ecke, die ein Resize gerade nicht bewegen darf. Die Mindestgröße steigt dafür in ganzen Schritten: 80 ist kein Vielfaches von 24, eine bis zum Anschlag geschrumpfte Box wäre also ausgerechnet im Snap-Modus schief gewesen (jetzt 96 × 48). **Belegt:** ``` npm run check → 87 Files, 1109 Tests, grün (vorher 1097) npm run build → ok GM_STEPS=36 node tools/e2e.mjs → ALL PASSED – 13 checks ``` Neu: `tests/core/graph-annotations.test.ts` (Kommandos samt Undo, Mindestgröße, Speicher-Rundlauf inklusive doppelter Id und erfundener Felder, die Mittelpunkt-Regel, die Titelfarbe, die vier Snap-Fälle) und **Schritt 36 `graph-groups`** für das, was kein Unit-Test sieht: der weit entfernte Node bleibt beim Ziehen liegen, die Ecke vergrößert ohne zu schieben, ein Undo nimmt die ganze Geste zurück, die Titelfarbe kippt bei `#ffe08a` auf Schwarz, und ein Resize um krumme 53 × 37 Pixel landet mit eingeschaltetem Snap auf Kante 432 — eine Zahl, die nicht aus der Geste stammen kann. **Wiki** (`b0d0e01`): `Behaviors.md` mit dem Abschnitt zu Gruppen und Kommentaren samt Snap-Regel, `Keyboard.md` mit der Delete-Zeile, `Development.md` mit Schritt 36 und der Check-Zahl. Die Zahl **945** im Wiki ist eine Rechnung (932 aus CI-54 plus die 13 neuen), keine Messung — den vollen Lauf habe ich nicht lokal gefahren, der gehört CI. Sagt der Lauf auf `b9f1a9d` etwas anderes, ziehe ich sie nach und mache das Issue wieder auf.
admin moved this to Done in Development on 2026-09-16 11:27:26 +02:00
Sign in to join this conversation.
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: meleki/feuerwerk#38