Show task, active project and workspace per control board row (#1503)
Gate A fix asked by the professor session on Jason's behalf. Each row
now carries three derived fields, shown as "unknown" when the log and
tmux do not hold them:
- task: the session's first user message (pi logs have no task envelope)
- workspace: the live pane path of the pane running pi, else session cwd
- activeProject: basename of the nearest git checkout above the workspace
tmuxInspect replaces the bare liveness call in the CLI and returns
{ alive, workspace }; tmuxIsAlive stays as a wrapper. The grouping column
and seen.json keys are unchanged. Fixture test per field, tmux parse
tests, page test; missing launcher signals are recorded in the plan page.
Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
@@ -2040,3 +2040,26 @@ packages/mosaic 69/69. Live check at 14:27Z on the real board: orch-01
|
||||
(assistant + toolCall) working, rev-code-01 (tool result last) working,
|
||||
velma (text-only, stop) waiting. Sonnet review: APPROVED, no findings.
|
||||
No seat changed state because of this change; it closes a gap, not a bug.
|
||||
|
||||
## 2026-09-12 — Control board step 3, Gate A fix: task, project, workspace per row (#1503)
|
||||
|
||||
Before: a row said who and what state, but not what the seat was asked to
|
||||
do or where it was working. Jason asked (through the professor session)
|
||||
for task, project and workspace per row, with "unknown" instead of a guess.
|
||||
|
||||
After: readSession records the first user message (task); tmuxInspect
|
||||
reads `#{pane_current_command}\t#{pane_current_path}` and returns
|
||||
{ alive, workspace }; findRepoRoot walks up from the workspace to the
|
||||
nearest `.git` directory or worktree file (activeProject). The grouping
|
||||
column and seen.json keys are unchanged. Page: Task and Active project
|
||||
columns in all three tables, Task, Active project and Workspace in the
|
||||
detail row, every value through esc(), nulls shown as "unknown". Tests:
|
||||
six fixture tests (task from blocks, task from a string, no task, workspace
|
||||
tmux/cwd/none, activeProject dir/file/none, record on disk) plus parsePanes
|
||||
and two tmuxInspect tests and one page test. Suites: control-board 79/79,
|
||||
packages/mosaic 69/69. Live check at 14:51Z on a scratch server (port
|
||||
7332): 42 rows, all three fields derived on every row, 16 workspaces from
|
||||
a live pane, the rest from the log; every fleet seat reads `.mosaic` as
|
||||
its active project because `~/.mosaic` is a git checkout and the roster
|
||||
names no project. Missing launcher signals are listed in the plan page
|
||||
Step 3 log. Sonnet review: APPROVED, no findings.
|
||||
|
||||
Reference in New Issue
Block a user