Summary
Some kind of UI rendering glitch shows up on Windows when one or more
background (headless) stages are running. The exact symptom hasn't been
captured yet — filing this as a tracking issue so we don't lose it;
need more repro detail from @lavaman131 before we can root-cause.
The relevant surface is the orchestrator window's status line, which
renders the background-stage counter through a tmux/psmux user-option
indirection (#{@atomic-bg-tasks}) that is pushed by
packages/atomic-sdk/src/components/orchestrator-panel.tsx:183
(pushBackgroundTasksIndicator) and consumed by the format string
compiled in
packages/atomic-sdk/src/tui/attached-statusline.tsx:50
(BACKGROUND_TASKS_OPTION / backgroundTasksValue). The same file
already documents two psmux 3.3.3 quirks the current renderer works
around (nested #{?…} leaking fragments across branches; commas inside
#[…] style attributes), so a Windows-only glitch in this area is
plausible.
Affected agents
Likely provider-agnostic — background-stage rendering is driven by the
runtime/TUI layer, not by any specific agent SDK. To be confirmed once
we have repro.
Affected platforms
Reproduction
TODO (@lavaman131): capture exact steps. The natural-language
report we have is "weird UI glitch in Windows for background stages"
with no screenshot or specific symptom yet.
Working hypothesis for what to capture when reproducing:
- Run
atomic --version and the psmux version (psmux -V) on the
Windows host.
- Start a workflow with at least one headless / background stage, e.g.
atomic workflow -n <workflow-with-bg-stage> -a <agent> — anything
that calls orchestrator.backgroundTaskStarted() /
backgroundTaskFinished().
- Attach to the orchestrator window so the status-line bg-tasks
indicator is visible.
- Note the exact glitch — screenshot or terminal recording — and the
stage transition (start vs. finish vs. count change) that triggers
it.
Expected vs Actual
- Expected: the orchestrator status line renders the
◆ <N> background segment cleanly while background stages run and
collapses to empty when the count returns to zero, with parity to
Linux/macOS.
- Actual: unknown — visible UI glitch on Windows; details pending.
Hypothesis / Suspected location
Pending repro, the most plausible suspects are:
packages/atomic-sdk/src/tui/attached-statusline.tsx:58
(backgroundTasksValue) — pre-styled tmux markup; psmux 3.3.3 has
known render-parser sensitivities around #[…] and #{?…}.
packages/atomic-sdk/src/tui/attached-statusline.tsx:142
(whenOrchestrator("#{@atomic-${BACKGROUND_TASKS_OPTION}}", "")) —
the user-option indirection used to keep the conditional flat.
packages/atomic-sdk/src/runtime/tmux.ts:218 notes that run-shell
inheritance is incomplete on Windows psmux, which has bitten this
surface before; the bg-tasks push goes through set-option, but
worth double-checking that the option write actually lands in the
Windows psmux server.
packages/atomic-sdk/src/components/orchestrator-panel.tsx:183
(pushBackgroundTasksIndicator) — the writer side; verify the
session-scoped target arg resolves on Windows.
Test Plan
- Once repro is captured: add a regression that exercises the
bg-tasks status-line render path on the Windows-x64 CI matrix entry
in .github/workflows, asserting the rendered status line matches
the macOS / Linux baseline for a workflow with N background stages
active.
- If the glitch is in the format-string compiler, extend the existing
unit coverage around backgroundTasksValue /
attached-statusline.tsx rather than only fixing it inline.
Summary
Some kind of UI rendering glitch shows up on Windows when one or more
background (headless) stages are running. The exact symptom hasn't been
captured yet — filing this as a tracking issue so we don't lose it;
need more repro detail from @lavaman131 before we can root-cause.
The relevant surface is the orchestrator window's status line, which
renders the background-stage counter through a tmux/psmux user-option
indirection (
#{@atomic-bg-tasks}) that is pushed bypackages/atomic-sdk/src/components/orchestrator-panel.tsx:183(
pushBackgroundTasksIndicator) and consumed by the format stringcompiled in
packages/atomic-sdk/src/tui/attached-statusline.tsx:50(
BACKGROUND_TASKS_OPTION/backgroundTasksValue). The same filealready documents two psmux 3.3.3 quirks the current renderer works
around (nested
#{?…}leaking fragments across branches; commas inside#[…]style attributes), so a Windows-only glitch in this area isplausible.
Affected agents
Likely provider-agnostic — background-stage rendering is driven by the
runtime/TUI layer, not by any specific agent SDK. To be confirmed once
we have repro.
Affected platforms
Reproduction
Working hypothesis for what to capture when reproducing:
atomic --versionand the psmux version (psmux -V) on theWindows host.
atomic workflow -n <workflow-with-bg-stage> -a <agent>— anythingthat calls
orchestrator.backgroundTaskStarted()/backgroundTaskFinished().indicator is visible.
stage transition (start vs. finish vs. count change) that triggers
it.
Expected vs Actual
◆ <N> backgroundsegment cleanly while background stages run andcollapses to empty when the count returns to zero, with parity to
Linux/macOS.
Hypothesis / Suspected location
Pending repro, the most plausible suspects are:
packages/atomic-sdk/src/tui/attached-statusline.tsx:58(
backgroundTasksValue) — pre-styled tmux markup; psmux 3.3.3 hasknown render-parser sensitivities around
#[…]and#{?…}.packages/atomic-sdk/src/tui/attached-statusline.tsx:142(
whenOrchestrator("#{@atomic-${BACKGROUND_TASKS_OPTION}}", "")) —the user-option indirection used to keep the conditional flat.
packages/atomic-sdk/src/runtime/tmux.ts:218notes thatrun-shellinheritance is incomplete on Windows psmux, which has bitten this
surface before; the bg-tasks push goes through
set-option, butworth double-checking that the option write actually lands in the
Windows psmux server.
packages/atomic-sdk/src/components/orchestrator-panel.tsx:183(
pushBackgroundTasksIndicator) — the writer side; verify thesession-scoped target arg resolves on Windows.
Test Plan
bg-tasks status-line render path on the Windows-x64 CI matrix entry
in
.github/workflows, asserting the rendered status line matchesthe macOS / Linux baseline for a workflow with N background stages
active.
unit coverage around
backgroundTasksValue/attached-statusline.tsxrather than only fixing it inline.