feat(taiga): Anlage-Knöpfe neu geschnitten — ein Story-Knopf mit Dialog, dialogfreie Task unter einem Story-Vorfahren (D91-Nachtrag 9)

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
mhoennig
2026-08-28 11:08:13 +02:00
co-authored by Claude Opus 5
parent 4f6d45045a
commit 0ed30e9eae
7 changed files with 226 additions and 42 deletions
+25
View File
@@ -150,6 +150,31 @@ export function ticketRefAt(text, caret){
return null;
}
/* Der nächste Vorfahr mit einer STORY-Ref (D91-Nachtrag 9): Unter so einem
Knoten wird ein Teilpaket direkt als Task angelegt — in dessen Story, ohne
eigenen Dialog (Projekt und Story folgen aus dem Baum, es gibt nichts zu
wählen). Vorfahren mit Task-Ref (`T-…`) werden übersprungen: Taiga-Tasks
haben keine Subtasks, die Task eines Task-Knotens gehört in die Story
darüber. null, wenn es keinen gibt oder der Knoten nicht im Baum steht. */
export function storyAncestor(roots, node){
let result = null, hit = false;
(function w(ns, chain){
for(const n of ns){
if(hit) return;
if(n === node){
hit = true;
for(let i = chain.length - 1; i >= 0; i--){
const r = ticketRefOf(chain[i]);
if(r && r.startsWith('US-')){ result = {node: chain[i], ref: r}; return; }
}
return;
}
w(n.children || [], chain.concat(n));
}
})(roots, []);
return result;
}
/* Das Token, das an die Zeile geschrieben wird. */
export function refToken(kind, ref){ return '#' + kind + '-' + ref; }
export function slugToken(slug){ return '&taiga.' + slug; }