notation: ohne Titel vertritt die Knoten-ID ihn (SPEC §1, D60)
`- #US-123` ergab bisher nichts — leeres Label, Zeile ignoriert, ID nicht vergeben. Wo die Kennung schon der Name ist (Ticket-Referenzen, §11), war das verkehrt herum: Wer den Titel nicht danebenschrieb, verlor den ganzen Knoten. Jetzt wird `#id` das Label, mit Doppelpunkt geschrieben wie ohne. Das `#` bleibt im Label — es sagt „hier steht die Adresse, weil es keinen Titel gibt". Der `#`-Umschalter setzt bei so einem Knoten nichts davor (sonst `#US-123: #US-123`), und Tooltip wie aria-label lassen die ID weg, die schon im Titel steht. Verhaltensänderung: Die ID ist damit vergeben — `- #auth` gefolgt von `- [ ] Echt #auth` gibt jetzt zwei Knoten und eine duplicateId-Warnung. SPEC §1, llms.md, D60; 6 neue Tests, der alte auf die neue Regel umgeschrieben. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
63c9498192
commit
3018db9f61
@@ -75,7 +75,9 @@ function nodeAria(n, opts, fold){
|
||||
if(n.tags && n.tags.length) parts.push(t('a11yTags', {names: n.tags.join(', ')}));
|
||||
/* Knoten-ID und Abhängigkeiten (SPEC §1, D36/D37): keine eigene Darstellung
|
||||
im Diagramm — sichtbar nur im Tooltip und hier. */
|
||||
if(n.id) parts.push(t('a11yId', {id: n.id}));
|
||||
/* Nicht, wenn das Label die ID selbst ist (SPEC §1) — sonst hört ein
|
||||
Screenreader sie zweimal hintereinander. */
|
||||
if(n.id && !n.labelFromId) parts.push(t('a11yId', {id: n.id}));
|
||||
if(n.deps && n.deps.length)
|
||||
parts.push(t('a11yDeps', {ids: n.deps.map(d => '#' + d).join(', ')}));
|
||||
if(n.optional) parts.push(t('a11yOptional'));
|
||||
@@ -126,7 +128,7 @@ function nodeHtml(n, extra, opts, fold){
|
||||
bleibt schmaler als die Fakten-Zeile (die den Sprung-Hinweis enthält),
|
||||
verbreitert den Tooltip also nicht. Der `aria-label` bekommt ihn NICHT:
|
||||
ein Screenreader läse die Striche einzeln vor (nodeAria oben). */
|
||||
const facts = [n.id ? '#' + n.id : '',
|
||||
const facts = [(n.id && !n.labelFromId) ? '#' + n.id : '',
|
||||
n.deps && n.deps.length ? '→ ' + n.deps.map(d => '#' + d).join(', ') : '',
|
||||
effKey
|
||||
? t('heldTooltip', {eff: t('st_' + effKey), own: t('st_' + n.status.key)})
|
||||
@@ -179,7 +181,9 @@ function nodeHtml(n, extra, opts, fold){
|
||||
Diagramm-Kopf; als Renderer-Option und nicht per CSS versteckt, damit der
|
||||
Grafikexport (er liest den Knotentext) von selbst folgt. `aria-hidden`:
|
||||
Der Screenreader bekommt die ID schon über `a11yId` (D56). */
|
||||
const idHtml = showIds && n.id
|
||||
/* Nicht bei einem Knoten, dessen Label die ID selbst IST (SPEC §1) — sonst
|
||||
stünde dort `#US-123: #US-123`. */
|
||||
const idHtml = showIds && n.id && !n.labelFromId
|
||||
? `<span class="nid" aria-hidden="true">#${esc(n.id)}:</span> `
|
||||
: '';
|
||||
const inner = foldHtml +
|
||||
|
||||
Reference in New Issue
Block a user