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
@@ -288,7 +288,13 @@ export function parse(text){
|
||||
der führende Leerraum wird mitgefangen und wieder eingesetzt. */
|
||||
let focus = false;
|
||||
rest = rest.replace(/(^|\s)!!!(?=\s|$)/g, (s, pre) => { focus = true; return pre; });
|
||||
const label = rest.replace(/\s+/g, ' ').trim();
|
||||
/* Bleibt kein Titel übrig, vertritt die ID ihn (SPEC §1): `- #US-123`
|
||||
ergibt einen Knoten mit dem Label `#US-123`. Ohne ID bleibt es dabei,
|
||||
dass eine labellose Zeile keine ist. `labelFromId` merkt den Fall — der
|
||||
`#`-Umschalter (§9) darf die ID dann nicht ein zweites Mal davorsetzen. */
|
||||
let label = rest.replace(/\s+/g, ' ').trim();
|
||||
const labelFromId = !label && id != null;
|
||||
if(labelFromId) label = '#' + id;
|
||||
if(!label) return;
|
||||
|
||||
let status = null;
|
||||
@@ -308,7 +314,7 @@ export function parse(text){
|
||||
while(stack.length > 1 && stack[stack.length-1].width >= width) stack.pop();
|
||||
const parent = stack[stack.length-1].node;
|
||||
|
||||
const node = {label, type, optional, fold, status, url, size, tags, id, deps, desc:null, descLines:null, focus, children:[], line:i+1};
|
||||
const node = {label, labelFromId, type, optional, fold, status, url, size, tags, id, deps, desc:null, descLines:null, focus, children:[], line:i+1};
|
||||
parent.children.push(node);
|
||||
stack.push({node, width});
|
||||
lastNode = node;
|
||||
|
||||
Reference in New Issue
Block a user