feat(diagram): Knoten-Fenster öffnet nur noch auf Klick, nicht mehr bei Hover (D92, SPEC §6/§9)

Der einfache Klick toggelt das Fenster überall — wie der Tipp auf Touch
(D52); der Link eines Knotens ist damit auch am Zeiger der ↗-Knopf im
Fenster, Enter und Strg+Klick öffnen die URL weiterhin direkt. Tastatur-
fokus öffnet nur noch echten (:focus-visible), focusout schließt nicht in
das Fenster hinein, und die Fokus-Rückgabe nach dem Falten ruft das
Fenster ausdrücklich nie.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-28 16:43:01 +02:00
co-authored by Claude Fable 5
parent a223e6af57
commit 0fe4c07851
5 changed files with 154 additions and 71 deletions
+2
View File
@@ -19,6 +19,8 @@ reverse.
## 2026-08-28
- The node window no longer opens on hover: click a node to open it, click again or elsewhere to close — folding and moving across the tree stay snappy
- A linked node's plain click now opens the window everywhere, like on touch — the URL sits behind the ↗ button, and Enter on the focused node or Ctrl+click still open it directly
- The Taiga buttons in the node window sit side by side in one row now — the window grows a little wider for them, and they wrap only when space truly runs out
- The open button moved into the ticket box's action row, next to write and take, and its label shrank to "Open #US-123" — the neighbours say where
- "Link ticket" in the node window binds an existing Taiga story or task to a node: paste the ticket's URL — it carries project, type and number by itself — or enter a ref or bare number
+65
View File
@@ -8568,3 +8568,68 @@ längsten Labels): drei Anlege-Knöpfe eine Zeile, „→ nach Taiga schreiben
Ref-Knoten ohne Projekt-Slug (keine Knöpfe) fällt auf 336px zurück —
`tipwide` ist weg. 628 Tests unverändert (reine UI-Verdrahtung,
Browser-geprüft — die D54-Nachtrag-3-Grenze).
## D92 — Das Knoten-Fenster öffnet nur noch auf Klick, nicht mehr beim Überfahren
Gemeldet vom Nutzer: „Mit mehr Funktionalität in dem Popup, so dass es auch
träger geworden ist als der einfache Tooltip vorher, gibt es ein
Usability-Problem: Wenn man nur einen Knoten auf-/zuklappen will, kommt schon
das Popup." Das trifft die Sache: D57 hat dem Fenster den Hover gegeben, als
es noch ein besserer Tooltip war — Beschreibung plus Kurz-Fakten. Seit D91
trägt es Ticket-Stand, Anlege-, Verknüpfen- und Abgleich-Knöpfe und ist
breiter geworden (`tipwide`, D91-Nachtrag 12); beim Ansteuern des Falt-Chips
stand es regelmäßig schon im Weg. Ein Fenster mit Aktionen ist kein Tooltip
mehr — es verdient eine ausdrückliche Geste.
**Der einfache Klick öffnet, ein zweiter (oder daneben) schließt** — wörtlich
die Touch-Regel aus D52, jetzt überall. Damit fällt zwangsläufig eine
Entscheidung über die **verlinkten Knoten** (§6: der einfache Klick öffnete
dort die URL): Eine Geste kann nicht beides tun, und D25 hat ausdrücklich
abgelehnt, dass derselbe Klick je nach Knoten Verschiedenes tut. Also gilt
die D52-Abwägung jetzt auch am Zeiger — „ansehen ist die häufigere Absicht,
und der Link bleibt einen Klick entfernt": Der **↗-Knopf steht in jedem
Fenster eines verlinkten Knotens**, nicht mehr nur auf Touch. Direkt zur URL
führen weiterhin **Enter** am fokussierten Knoten (der native Weg; im
Klick-Handler an `e.detail === 0` erkannt und durchgelassen) und
**Strg+Klick** (Browser-Default, Hintergrund-Tab — auf Zeilen mit
Ticket-Referenz gewinnt das Taiga-Öffnen, D91-Nachtrag 5, wie bisher).
Alt+Klick (Sprung, D25) und der Falt-Chip (D38) sind im Handler ausgenommen
und bleiben, was sie sind.
**Tastaturfokus öffnet weiter sofort — aber nur echten.** Das war die
verdeckte Falle des Umbaus: Auch der Mausklick fokussiert den Knoten, und der
`focusin`-Handler (D57) hätte das Fenster geöffnet, bevor der Klick-Toggle es
für „schon offen" hielte und sofort wieder schlösse — netto bliebe es zu.
Unterschieden wird mit `:focus-visible`, der Browser-eigenen Heuristik, die
D25-Nachtrag 2 für genau diese Frage schon vermessen hat (nach Mausklick
falsch, nach Tab wahr). Nebenwirkung, bewusst hingenommen: Auch der
programmatische Fokus nach Alt+Klick aus dem Text und nach dem
Stationen-Knopf (D47) folgt der Heuristik — nach einer Maus-Geste öffnet dort
kein Fenster mehr mit. Das passt zur Stoßrichtung dieses Eintrags: weniger
ungefragte Fenster.
**Und `focusout` darf den Knopf-Klick nicht mehr töten.** Mit dem Klick ist
der Knoten beim offenen Fenster jetzt regelmäßig **fokussiert** — vorher
(Hover) war er das nicht, und der `focusout`-Schließer war harmlos. Die
Knöpfe im Fenster sind trotz `tabindex="-1"` klick-fokussierbar: mousedown
auf einen Taiga-Knopf blurte den Knoten, `focusout` schlösse das Fenster
zwischen mousedown und mouseup, und der Klick ginge an einem
`display:none`-Element verloren. Deshalb schließt `focusout` nicht, wenn
`relatedTarget` im Fenster liegt; Tab zum nächsten Knoten schließt weiter.
**Ersatzlos weg:** die 350-ms-Öffnungs- und 120-ms-Schließ-Timer, die
Sofort-Weiterreiche bei schon offenem Fenster, `pointerenter`/`pointerleave`
am Fenster und die `finePointer`-Weiche — das Fenster ist jetzt auf allen
Geräten dieselbe Klick-Sache, und ein einmal geöffnetes bleibt stehen, bis
etwas es ausdrücklich schließt (zweiter Klick, Klick daneben, Esc, ×,
Scrollen, Neubau — die D52-Liste, unverändert). Die 400-ms-Verzögerung des
Ticket-Abrufs (D91-Nachtrag 6) bleibt: Sie schützt jetzt das Durch-Tabben
statt des Vorüberfahrens, und der Bulk-Cache (D91-Nachtrag 10) macht sie
ohnehin meist unsichtbar.
**Der Preis, benannt:** Beim schnellen Überfliegen eines fremden Plans
zeigte der Hover die Beschreibungen ohne Klick — das ist weg, je Knoten
kostet es jetzt einen Klick. Die ”-Marke (D40) und der ↗ hinter dem Label
sagen weiterhin, wo sich einer lohnt. Und ein Doppelklick öffnet und
schließt in einem Zug — hinnehmbar, auf Knoten doppelklickt niemand
absichtlich.
+29 -23
View File
@@ -414,13 +414,16 @@ Größe als **Bereich** gelesen (Untergrenzen verdoppeln sich):
## 6. Links
- Ein nacktes `https://…`-Token macht den ganzen Knoten klickbar
(neuer Tab, `rel="noopener"`); Kennzeichnung mit ↗ hinter dem Label.
- **Ausnahme auf Touch-Geräten:** Dort öffnet der einfache Tipp nicht die URL,
sondern das Knoten-Fenster (§9) — der Link steht darin als eigener Knopf. Ohne
Zeiger gibt es keinen Tooltip, und ein einziger Tipp kann nicht beides tun;
„ansehen" ist die häufigere Absicht, und der Link bleibt einen Tipp entfernt.
Siehe D52.
- Ein nacktes `https://…`-Token verlinkt den Knoten; Kennzeichnung mit ↗
hinter dem Label.
- Geöffnet wird die URL über den **↗-Knopf im Knoten-Fenster** (§9; neuer
Tab, `rel="noopener"`): Der einfache Klick wie der einfache Tipp öffnen das
**Fenster**, nicht die URL — eine Geste kann nicht beides tun, „ansehen"
ist die häufigere Absicht, und der Link bleibt einen Klick entfernt
(D52 für Touch, D92 für den Zeiger). **Enter** am fokussierten Knoten und
**Strg+Klick** (Browser-Default, Hintergrund-Tab) öffnen die URL weiterhin
direkt — auf Zeilen mit Ticket-Referenz gewinnt bei Strg+Klick das
Taiga-Öffnen (§9).
## 7. Personen-Tags
@@ -469,11 +472,13 @@ Grafikexport: Der Text selbst kann dort nicht angezeigt werden, eine Marke
ohne Ziel wäre Rauschen. Siehe D40.
**Gezeigt wird das immer im eigenen Knoten-Fenster**, nicht im Tooltip des
Browsers: am Zeiger nach kurzer Verzögerung beim Überfahren, bei Tastaturfokus
sofort, auf Touch beim einfachen Tipp (§6). Ein `title` kann weder Absätze noch
eine Linie und erscheint nie beim Tastaturfokus; das Fenster kann beides. Der
Inhalt ist derselbe — die Beschreibung als Absatz, die Kurz-Fakten dahinter
durch eine echte Linie abgesetzt. Siehe D57.
Browsers: beim **einfachen Klick bzw. Tipp** auf den Knoten (ein zweiter
schließt), bei **Tastaturfokus** sofort. Beim bloßen Überfahren mit dem
Zeiger öffnet es **nicht** — das tat es zwischenzeitlich (D57) und stand
damit dem Falten und dem Bewegen über den Baum im Weg (D92). Ein `title`
kann weder Absätze noch eine Linie und erscheint nie beim Tastaturfokus; das
Fenster kann beides. Der Inhalt ist derselbe — die Beschreibung als Absatz,
die Kurz-Fakten dahinter durch eine echte Linie abgesetzt. Siehe D57, D92.
- Das Fenster hängt am angetippten Knoten (kleine Spitze zu ihm hin) und weicht
nach oben aus, wenn unten kein Platz ist. Der Knoten trägt, solange es offen
@@ -481,13 +486,12 @@ durch eine echte Linie abgesetzt. Siehe D57.
- Es schließt beim Tipp daneben, beim erneuten Tipp auf denselben Knoten, mit
**Esc**, über sein ×, beim Scrollen des Diagramms und bei jedem Neubau.
- Ein **verlinkter** Knoten (§6) bekommt darin einen ↗-Knopf, der die URL im
neuen Tab öffnet — auf Touch ist das der Weg zum Link.
- Der **Sprung-Hinweis** nennt hier den langen Druck statt Alt+Klick (§9,
neuen Tab öffnet — der einfache Klick/Tipp gehört dem Fenster (§6, D92).
- Der **Sprung-Hinweis** nennt auf Touch den langen Druck statt Alt+Klick (§9,
Sprung zwischen Diagramm und Text) — Alt gibt es auf dem Telefon nicht.
- Reine Bedienhilfe: nicht im Grafikexport, nicht im Druck. Auf Geräten mit
Zeiger ändert sich nichts, dort bleibt es beim Tooltip.
- Reine Bedienhilfe: nicht im Grafikexport, nicht im Druck.
Siehe D52.
Siehe D52, D92.
**Ticket-Stand im Knoten-Fenster (§11).** Trägt die Zeile eine
Ticket-Referenz (`#US-123` / `#T-1234`) und ist ihr Teilbaum per
@@ -519,8 +523,9 @@ es einen gibt, den **Zuständigen**.
Farbe des Knotens ist die Rückmeldung.
- Beide Richtungen betreffen **einen** Knoten; eine Sammelaktion über einen
Teilbaum gibt es nicht.
- Geholt wird erst, wenn das Fenster **kurz stehen bleibt** (nicht im
Vorüberfahren), und je Ticket **einmal je Sitzung** ein ↻-Knopf im Fenster
- Geholt wird erst, wenn das Fenster **kurz stehen bleibt** (nicht beim
Durch-Tabben von Knoten zu Knoten), und je Ticket **einmal je Sitzung**
ein ↻-Knopf im Fenster
holt neu. Ohne Anmeldung an der Instanz, ohne Projekt-Zuordnung oder ohne
konfiguriertes Backend geschieht still nichts; ein Fehler steht als Zeile im
Fenster.
@@ -1086,8 +1091,9 @@ verknüpft (siehe D25):
freistehend — dort behält Strg+Klick den Sprung zur Zeile; die
D67-Ausschlüsse (Kommentar, Beschreibungsteil, URL) gelten auch hier.
Siehe D91-Nachtrag 5.
- Der **einfache** Klick bleibt unverändert der Link (§6): Ein Knoten mit URL
öffnet sie weiterhin im neuen Tab. Deshalb Alt und nicht der einfache Klick.
- Der **einfache** Klick gehört dem Knoten-Fenster (§6/§9, D92): Er öffnet die
Beschreibung, nicht die Zeile im Text. Deshalb Alt und nicht der einfache
Klick.
- **Auffindbarkeit:** Solange **Alt gedrückt** ist, zeigen alle Knoten den
Sprung-Cursor und der Knoten unter dem Zeiger einen Petrol-Ring — die Geste
ist im Moment des Ausprobierens sichtbar, auch auf verlinkten Knoten. Dazu
@@ -1207,8 +1213,8 @@ Label: **▾** offen, **„▸ n“** eingeklappt (n = Zahl der verborgenen Knot
als kleiner **gerahmter Chip**, damit das Klickziel zu treffen ist (D64; das
nackte Glyph war zu klein). Klick auf das Zeichen klappt um — der einfache
Klick auf den Knoten selbst
bleibt der Link (§6); Tastatur: **←** klappt zu, **→** klappt auf am
fokussierten Knoten (WAI-ARIA-Baum-Idiom).
öffnet das Knoten-Fenster (§9, D92); Tastatur: **←** klappt zu, **→** klappt
auf am fokussierten Knoten (WAI-ARIA-Baum-Idiom).
- **Anfangszustand aus dem Text (§1):** `>` klappt ein. `<` holt seinen
Teilbaum hervor, indem die Faltung die Pfad-Ebenen **hinunterwandert**: