@@ -92,39 +92,38 @@ func buildDepTree(current model.Task, deps []model.Dependency, related map[strin
9292
9393 var b strings.Builder
9494
95- // Parents (tasks that depend on current task).
96- for i , p := range parents {
97- prefix := "├── "
98- if i == len (parents )- 1 && len (children ) == 0 && len (relatesTo ) == 0 {
99- prefix = "├── "
100- }
101- b .WriteString (renderDepNode (prefix , p ) + "\n " )
102- b .WriteString ("│\n " )
95+ // Parents (tasks that depend on current task) — outer level.
96+ for _ , p := range parents {
97+ b .WriteString (renderDepNode ("◆ " , p ) + "\n " )
10398 }
10499
105- // Current task (highlighted).
100+ // Current task (highlighted) — indented under parents .
106101 currentTitle := current .Title
107102 if len (currentTitle ) > 50 {
108103 currentTitle = currentTitle [:47 ] + "..."
109104 }
110- b .WriteString (depCurrentStyle .Render (fmt .Sprintf ("◆ %s: %s" , currentRef , currentTitle )) + " " + dimStyle .Render ("[" + current .State + "]" ) + "\n " )
111-
112- // Children (tasks that current depends on).
113- for i , c := range children {
114- connector := "├── "
115- if i == len (children )- 1 && len (relatesTo ) == 0 {
116- connector = "└── "
117- }
118- b .WriteString (renderDepNode (connector , c ) + "\n " )
105+ prefix := ""
106+ childIndent := ""
107+ if len (parents ) > 0 {
108+ prefix = "└──"
109+ childIndent = " "
119110 }
111+ b .WriteString (prefix + depCurrentStyle .Render (fmt .Sprintf ("◆ %s: %s" , currentRef , currentTitle )) + " " + dimStyle .Render ("[" + current .State + "]" ) + "\n " )
120112
121- // Related tasks.
122- for i , r := range relatesTo {
123- connector := "├── "
124- if i == len (relatesTo )- 1 {
125- connector = "└── "
113+ // Children and related — indented under current task.
114+ allBelow := make ([]string , 0 , len (children )+ len (relatesTo ))
115+ for _ , c := range children {
116+ allBelow = append (allBelow , renderDepNode ("◆ " , c ))
117+ }
118+ for _ , r := range relatesTo {
119+ allBelow = append (allBelow , renderRelated ("◆ " , r ))
120+ }
121+ for i , line := range allBelow {
122+ connector := "├──"
123+ if i == len (allBelow )- 1 {
124+ connector = "└──"
126125 }
127- b .WriteString (renderRelated ( connector , r ) + "\n " )
126+ b .WriteString (childIndent + connector + line + "\n " )
128127 }
129128
130129 return b .String ()
@@ -140,7 +139,7 @@ func renderDepNode(prefix string, node depTreeNode) string {
140139 }
141140 ref := depRefStyle .Render (node .ref )
142141 state := dimStyle .Render ("[" + node .state + "]" )
143- return fmt .Sprintf ("%s%s : %s %s" , prefix , ref , title , state )
142+ return prefix + fmt .Sprintf ("%s: %s %s" , ref , title , state )
144143}
145144
146145func renderRelated (prefix string , node depTreeNode ) string {
@@ -154,5 +153,5 @@ func renderRelated(prefix string, node depTreeNode) string {
154153 ref := depRefStyle .Render (node .ref )
155154 state := dimStyle .Render ("[" + node .state + "]" )
156155 label := depTypeStyle .Render ("relates to" )
157- return fmt .Sprintf ("%s%s %s: %s %s" , prefix , label , ref , title , state )
156+ return prefix + fmt .Sprintf ("%s %s: %s %s" , label , ref , title , state )
158157}
0 commit comments