fix: Querverbindungen gepunktet — zurückhaltender (D41-Nachtrag)

Nutzer-Feedback: Die durchgezogene Kurve konkurrierte trotz Blässe noch
mit dem Baum. Basis-Kanten jetzt gepunktet (runde Punkte, .1/5) — damit
dreifach von den Baumlinien unterschieden (Krümmung, Blässe,
Punktierung). Der D29-Einwand gegen einen dritten Linienstil galt den
Baum-Abzweigen im kompakten Modus, nicht der eigenen gekrümmten Ebene.
Die Fokus-Hervorhebung bleibt durchgezogen in Tinte; Export identisch.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-22 19:18:10 +02:00
co-authored by Claude Fable 5
parent d2ab30b63d
commit 1cd1d30d1b
5 changed files with 28 additions and 12 deletions
+12
View File
@@ -1986,6 +1986,18 @@ auf dem DOM; headless getestet sind die `data-id`/`data-deps`-Attribute des
Renderers, geprüft wurde im Browser (alle drei Modi, Fokus- und
Cursor-Hervorhebung, Export).
**Nachtrag — die Basis-Kanten sind jetzt gepunktet.** „Zurückhaltender“
(Nutzer): Die durchgezogene Kurve konkurrierte trotz Blässe noch mit dem
Baum. Punktiert (runde Punkte, `stroke-dasharray: .1 5`) tritt sie weiter
zurück und ist zugleich **dreifach** von den Baumlinien unterschieden —
Krümmung, Blässe, Punktierung; durchgezogen gehört „und“, gestrichelt „oder“.
Der D29-Einwand gegen einen dritten Linienstil greift hier nicht: Er galt den
**Baum-Abzweigen**, die sich im kompakten Modus allein über den Stil
unterscheiden müssen — die Querverbindungen liegen auf ihrer eigenen,
gekrümmten Ebene und begegnen den Rahmenkanten nie. Die **Hervorhebung**
(fokussierter Knoten) bleibt durchgezogen in Tinte: Sie ist ausdrücklich
angefordert und soll sich nach vorn drängen. Export identisch nachgezogen.
## D42 — Closure-Pfad: erschöpfend über die gekoppelten Gruppen, gierig nur benannt
Die letzte Baustelle aus D34: Mit Abhängigkeiten zählt der günstigste Pfad
nicht mehr den gewählten Teilbaum, sondern die **Hülle** — jeder nötige Knoten
+3 -2
View File
@@ -640,8 +640,9 @@ Siehe D38.
### Querverbindungen der Abhängigkeiten (`:#…`, §1)
Abhängigkeiten werden als **optisch sekundäre** Kanten gezeichnet: dünn,
blassgrau (`#6B7A8C`), **geschwungen** — die Krümmung unterscheidet sie von
den orthogonalen Baumlinien (dasselbe Mittel wie beim Pfad-Spline) — auf einer
blassgrau (`#6B7A8C`), **gepunktet** und **geschwungen** — Punktierung und
Krümmung unterscheiden sie doppelt von den Baumlinien (durchgezogen bzw.
gestrichelt, immer orthogonal) und halten sie zurückhaltend — auf einer
eigenen Zeichenebene **hinter** den Knoten, mit einer kleinen **Pfeilspitze
auf das Gebrauchte** („braucht“-Richtung). Der Baum trägt weiterhin die
Hauptaussage.
+2 -2
View File
@@ -295,8 +295,8 @@ verworfene Elemente. Quelle sind ES-Module unter `src/`; `index.html` ist der
- Querverbindungen (SPEC §9, D41): `drawDepLinks()` zeichnet die
Abhängigkeits-Kanten als Overlay-SVGs (wie `drawCheapPath`, `/zoom`
umrechnen) aus den Renderer-Attributen `data-id`/`data-deps` — gekrümmt
(Merkmal gegenüber den orthogonalen Baumlinien), blassgrau hinter den
Knoten, Pfeil aufs Gebrauchte; Hervorhebung (Fokus bzw. Cursor-Zeile,
und GEPUNKTET (doppelt unterschieden von den orthogonalen Baumlinien,
D41-Nachtrag), blassgrau hinter den Knoten, Pfeil aufs Gebrauchte; Hervorhebung (Fokus bzw. Cursor-Zeile,
`activeDepNode()`) in Tinte auf der vorderen Ebene. Aufgerufen aus
`highlightCurrentNode()` (läuft in jedem `render()`), `applyLayout()` und
den focusin/focusout-Handlern — NICHT doppelt in `render()` einhängen.
+2 -2
View File
@@ -486,8 +486,8 @@ function diagramToSvg(){
Knoten; die Fokus-Hervorhebung ist Interaktion und wird nicht exportiert. */
depEdges().forEach(([from, to]) => {
const c = depCurve(R(from), R(to));
parts.push(`<path d="${c.d}" fill="none" stroke="#6B7A8C" stroke-width="1.5" opacity="0.35" stroke-linecap="round"/>`);
parts.push(`<path d="${depArrow(c.end, c.ctrl)}" fill="#6B7A8C" opacity="0.35"/>`);
parts.push(`<path d="${c.d}" fill="none" stroke="#6B7A8C" stroke-width="1.5" opacity="0.4" stroke-linecap="round" stroke-dasharray="0.1 5"/>`);
parts.push(`<path d="${depArrow(c.end, c.ctrl)}" fill="#6B7A8C" opacity="0.4"/>`);
});
/* 1b) Günstigster-Pfad: kräftige Linie hinter den Knoten */
+9 -6
View File
@@ -702,13 +702,16 @@
Blättern zeigen, welche Knoten wirklich auf dem Pfad enden durchquerte
Fremdknoten tragen keinen Punkt. Reihenfolge im DOM steuert vorn/hinten. */
.cheap-overlay{position:absolute;left:0;top:0;overflow:visible;pointer-events:none}
/* Querverbindungen der Abhängigkeiten (SPEC §9, D41): dünn, blassgrau,
gekrümmt die Krümmung unterscheidet sie von den orthogonalen Baumlinien.
Hervorgehobene Kanten (fokussierter Knoten/Cursor-Zeile) in Tinte. */
/* Querverbindungen der Abhängigkeiten (SPEC §9, D41): blassgrau GEPUNKTET
und gekrümmt Punktierung und Krümmung unterscheiden sie doppelt von den
Baumlinien (durchgezogen/gestrichelt, orthogonal) und halten sie leise
(D41-Nachtrag). Hervorgehobene Kanten (fokussierter Knoten/Cursor-Zeile)
durchgezogen in Tinte. */
.dep-overlay{position:absolute;left:0;top:0;overflow:visible;pointer-events:none}
.dep-edge{fill:none;stroke:var(--muted);stroke-width:1.5;opacity:.35;stroke-linecap:round}
.dep-arrow{fill:var(--muted);opacity:.35}
.dep-edge.hl{stroke:var(--line);stroke-width:2;opacity:.9}
.dep-edge{fill:none;stroke:var(--muted);stroke-width:1.5;opacity:.4;
stroke-linecap:round;stroke-dasharray:.1 5}
.dep-arrow{fill:var(--muted);opacity:.4}
.dep-edge.hl{stroke:var(--line);stroke-width:2;opacity:.9;stroke-dasharray:none}
.dep-arrow.hl{fill:var(--line);opacity:.9}
.cheap-path{fill:none;stroke:var(--or);stroke-width:2.5;stroke-linecap:round;
stroke-dasharray:8 6;opacity:.9}