Skip to content

feat: show Board in an automatic three-line HUD#111

Open
qiankunli wants to merge 3 commits into
mainfrom
feat/board-ui
Open

feat: show Board in an automatic three-line HUD#111
qiankunli wants to merge 3 commits into
mainfrom
feat/board-ui

Conversation

@qiankunli

@qiankunli qiankunli commented Jul 22, 2026

Copy link
Copy Markdown
Owner

Add a read-only Board HUD that starts automatically for tmux sessions.
The first two lines keep focus and health visible while the third line
shows the latest Board revision change. Reuse panes per CLI session,
clean up stale owners, and keep prompt delivery receipts independent.

Document the tmux fallback and bump devloop to 0.2.2.

Render Board context and health through Claude Code's command-backed native
status line, with a safe one-time setup and version-aware plugin launcher.

Keep the tmux sidecar for Codex, preserve critical blockers at narrow widths,
and update the Board documentation and regression coverage.

lines = "\n".join("\x1b[2K" + line for line in text.splitlines())
sys.stdout.write("\x1b[H" + lines + "\x1b[J")
sys.stdout.flush()
time.sleep(1)

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 devloop code-review · seed-2.1-pro

The watch loop does not catch exceptions from _snapshot(), frame_from_snapshot(), or render_frame(). If BoardRuntime.resolve() raises (e.g., due to corrupted state files, permission errors, or transient I/O failures), the HUD process crashes and the dashboard disappears. The finally block does restore the cursor, but the service still stops unexpectedly. Consider wrapping the snapshot + render logic in a try/except that falls back to a minimal error display and continues the loop.

ccr:fp=cfd64e2511ae

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ccr:label=minor — HUD sidecar 是只读观察面;状态暂时不可读会让 pane 退出。已在 scripts/board_hud.py::_watch_text 捕获 OSError/ValueError 并保留上一帧。

Comment thread devloop/scripts/board_hud.py Outdated
signal.signal(signal.SIGTERM, stop)
tracker = HudPulseTracker()
inactive_leader_ticks = 0
shell_commands = {"bash", "dash", "fish", "sh", "zsh"}

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 devloop code-review · deepseek-v4-pro

The set of shell commands used to detect an idle leader pane is limited to {"bash", "dash", "fish", "sh", "zsh"}. If a user runs a different shell (e.g., ksh, tcsh, csh, or a custom command wrapper like tmuxinator), the HUD will never auto-exit when the leader pane is idle — the counter inactive_leader_ticks will keep resetting to 0. The HUD will still exit when the leader pane disappears (pane_command returns None) or via signal, so this is a minor UX issue rather than a correctness bug.

ccr:fp=408ae41ebf6d

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ccr:label=minor — 固定 shell 集合确实漏掉由用户配置的 nu/xonsh 等。已在 scripts/board_hud.py::_shell_commands 加入 Path($SHELL).name。

@qiankunli

Copy link
Copy Markdown
Owner Author

🤖 devloop code-review · origin/main..HEAD · 638cc59c9 · models: deepseek-v4-pro×22, seed-2.1-pro×20, seed-2.1-turbo×19 · cost: 663s · ccr v1.9.0

2 finding(s)(2 条已锚到 diff)

Add a read-only Board HUD that starts automatically for tmux sessions.
The first two lines keep focus and health visible while the third line
shows the latest Board revision change. Reuse panes per CLI session,
clean up stale owners, and keep prompt delivery receipts independent.

Document the tmux fallback and bump devloop to 0.2.2.
Render Board context and health through Claude Code's command-backed native
status line, with a safe one-time setup and version-aware plugin launcher.

Keep the tmux sidecar for Codex, preserve critical blockers at narrow widths,
and update the Board documentation and regression coverage.
Preserve the last rendered frame when a transient Board read fails, and honor
the user's configured shell when deciding that the leader CLI has exited.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants