feat: Querverbindungen der Abhängigkeiten — gekrümmt, blassgrau, Pfeil aufs Gebrauchte (SPEC §9, D41)

Eigene Zeichenebene wie der Pfad-Spline (Overlay-SVGs, /zoom): Kanten aus
den neuen data-id/data-deps-Attributen des Renderers, dünn und blassgrau
HINTER den Knoten — das Unterscheidungsmerkmal zu den orthogonalen
Baumlinien ist die Krümmung, keine neue Farbe (die Palette ist vergeben,
Rot bewusst nicht). Pfeilspitze zeigt auf das Gebrauchte, Endpunkte auf
den Knotenkanten. Die Kanten des ausgewählten Knotens (Tastaturfokus,
sonst Cursor-Zeile) liegen hervorgehoben in Tinte auf einer vorderen
Ebene. Kanten zu verborgenen Zielen entfallen; erste ID-Vergabe gewinnt;
Selbst-Abhängigkeiten zeichnen nichts. Basis-Kanten auch im SVG-Export
(Schritt 1a) und im Druck, die Hervorhebung nicht. Browser-geprüft in
allen drei Modi; Renderer-Attribute testgedeckt.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-22 19:05:33 +02:00
co-authored by Claude Fable 5
parent a42710b38f
commit afe536e33c
8 changed files with 198 additions and 10 deletions
+9
View File
@@ -292,6 +292,15 @@ verworfene Elemente. Quelle sind ES-Module unter `src/`; `index.html` ist der
Knoten-Referenzen; der Parser prüft nur Existenz (`unknownDep`), Zyklen
werden bewusst nicht einmal erkannt (zulässig, „gemeinsam fertig"). Keine
Diagramm-Darstellung — nur Tooltip (`→ #a, #b`) und `a11yDeps`.
- 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,
`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.
Export zeichnet nur die Basis-Kanten (Schritt 1a).
- Effektiver Status (SPEC §4/§9, D39): `effectiveStatus(roots)` in model.js
liefert NUR die Diskrepanzen (Map Knoten → effektiver Status-Key; Minimum
des Fortschritts-Rangs über die Abhängigkeits-Hülle, Fixpunkt — Zyklen