Skip to content

tui3: tree rails back in the tasks side column - #1665

Draft
santoshkumarradha wants to merge 4 commits into
devfrom
task/restore-tree-rails-in-the-tasks-c2da84
Draft

santoshkumarradha wants to merge 4 commits into
devfrom
task/restore-tree-rails-in-the-tasks-c2da84

Conversation

@santoshkumarradha

Copy link
Copy Markdown
Member

Fixes #1660

The tasks side column draws a run's parts hanging bare two spaces a level — the connectors #1494 dropped with the old roster forest. This restores the tree in the lead the caller prepends, built by one helper (railLead) both renderers share: a child rides ├ while a sibling follows it and └ where it closes its parent's family; a descendant carries │ past every ancestor level that had rows still to come, and two spaces where that ancestor was the last child; depth-0 rows draw no lead. The lead stays exactly two cells a level, so every row stands in the column the bare indent drew and every width computation that reads the lead — the room cuts in planRailLines/planPageLines, programSpelling, the age placement — keeps its shape (the width is measured off the lead, not counted, the same bargain hometree.go strikes). On a task's page the trunk runs through the under-block — │ while rows follow below it, air where the branch closed — instead of repeating the elbow.

The glyphs come through pal.glyph on the vocabulary's tree slots (tokens.GTreeBranch/GTreeLast/GTreeVert), the same door the tasks place draws its own kin through. railEntryRow is untouched — the connector lives only in the lead. The roster's own node rows stay one flat line per task as #1494 drew them (railLines computes no lead), so the column keeps one tree convention: the families hung under a row, drawn by planRailLines and planPageLines. Rails draw containment only — a dependency never re-parents a row, and a held row keeps its queued · waits: <task> wording.

Test plan:

  • new TestTheRailDrawsAPlanFamilyOnItsOwnConnectors (internal/tui3/c263_rail_plan_test.go) renders a two-level family in the pane and asserts ├ /└ connectors on the children, │ stems for the middle rows past ancestors with rows still to come, and no stem past the last child's own connector — its descendants hang in the air it leaves;
  • go test ./internal/tui3/... green;
  • the exact-text candidates named in the issue (railgroups, c246, quicktask, bundle's railHint) assert containment and wording rather than the bare lead, so they needed no change — the one stale comment (c266, "connectors are gone") is updated with the shape;
  • manual pages that spelled the page's connectors ├─/└─ now spell the drawn ├ /└ (reading-a-task-page.md, worker-harness.md).

Full go test ./... (once, on a fleet host — this laptop's own full go test ./internal/tui3/... run is green) surfaced pre-existing failures unrelated to this change, all reproduced on a pristine dev checkout on the same host, so left alone here:

  • internal/session: TestJobLogsFollowTheSessionFolder, TestJobLogsKeepTheLegacyPathWithoutAFolder, TestATaskWorkersJobLogLandsWithTheFamilyAndNotInTheRepository — macOS TempDir symlink (/private/var vs /var/folders); they fail on pristine dev on this laptop too.
  • internal/tui3: the ten credit-warning tests (TestLowCreditsWarningFollowsThePaidModelOnBothBoxes and friends) fail on that host's environment — and fail identically on pristine dev there; they pass on this laptop.
  • cmd/codeaf: TestDoOnTheRunEngineNeverCommitsThePersonsOwnWork wedges on that host (a spawned engine is starved; goroutine dump captured) — it wedges pristine dev there too, and passes on this laptop.

Left in draft on purpose: a separate review gate owns marking it ready; CI has its say first.

—
Drafted with CodeAF · reviewed and owned by the author

@santoshkumarradha santoshkumarradha added feature Work that adds a capability; developers break it into tasks area:chat The v3 surface a person sits in front of (internal/tui3) labels Sep 28, 2026
A family in the tasks side column hangs off its own connectors again, as issue #1660 asks: a child rides ├ while a sibling follows it and └ where it closes its parent's family, and a grandchild carries the │ stem past every ancestor level that had rows still to come. The lead stays two cells a level, so every row stands in the column the bare indent drew and the width computations reading it keep their shape; the run's own row draws no lead. The plan page draws the same tree through the same helper, with the trunk running through the under-block instead of repeating the elbow. The glyphs come through the vocabulary's tree slots, the same door the tasks place draws its kin through; railEntryRow is untouched and the roster's own node rows stay one flat line per task.
@santoshkumarradha
santoshkumarradha force-pushed the task/restore-tree-rails-in-the-tasks-c2da84 branch from 69cc9df to 4c1e1d4 Compare September 28, 2026 20:17
agentfield-bot and others added 3 commits September 28, 2026 16:52
Assisted-by: CodeAF
Co-Authored-By: CodeAF <267109073+agentfield-bot@users.noreply.github.com>
the rail indentation law test compared only the title columns, so a
regression that dropped the pending mark off the lead (a bare '-'
before the title) still passed. the child row is now asserted to wear
its palette mark glyph between the connector and its title.

Assisted-by: CodeAF (glm-5.3-flash)
Co-Authored-By: CodeAF <267109073+agentfield-bot@users.noreply.github.com>
Assisted-by: CodeAF
Co-Authored-By: CodeAF <267109073+agentfield-bot@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:chat The v3 surface a person sits in front of (internal/tui3) feature Work that adds a capability; developers break it into tasks

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Tasks side pane: restore tree rail lines (├/└/│) so containment reads

2 participants