Show remote machine connection state in the composer
The composer names the selected remote machine and shows its actual connection state without requiring a project. Remote machine selection uses the existing computer action, so a recent folder is not chosen automatically. The offline indicator invokes the existing reconnect command for that named machine and requires a fresh native gesture.
The closed control reads the advertised peerStateEvents feature from initialize._meta.acpmux.features, takes a _acpmux/peers snapshot at initialize/reconnect, and consumes _acpmux/peer_state_changed. Connecting/degraded show the existing spinner, connected is green, and reconnecting/offline is red. Unknown remains unknown. Older daemons retain their honest snapshot without polling.
Stack: scoped change is based on published picker candidate e679d7b8da314a76d9a6db8ca5079874cf7093c9 from #26636. Broker requires this draft to target feat-cmux-next; coordinator will retarget/rebase after the picker freezes. Classic trigger face integration is awaiting the picker's acknowledged two-hunk handoff. Do not merge this draft.
Design reference: Codex live composer scope controls (composer-scope-chips-and-model-picker.png and live NOTES). Three real React gallery variants compare a separated Remote/machine face, a denser labelled face, and a compact face. Chosen: separated, preserving the existing glass and controls. The before/after below use neutral simulated fixtures; they do not prove a live remote connection.
Validation: 10 focused web tests, 55 assertions pass, including optional project send, named reconnect callback, actual client closed-control events, feature-absent fallback, snapshot/event races, old reads, and removed-peer state. Typecheck, lint, scoped design-token/layer/status-glyph/catalog-key/protocol checks and prepush gate pass. Localization change audit reports no new entries needing attention across 21 locales. Full bun run check stops at the existing fixed wait in test/composer-location-strip.test.ts:549 on the stack base; two minimal-default tests also reproduce unchanged on that base.
Native tests were added for target binding, gesture/replay refusal and reply filtering; they require CI/fleet and were not run here. Real remote no-project send and the native release clip remain blocked: this runner's daemon reports peers: []. No peer configuration was changed. The daemon capability is coordinated with the backend lane.
Relay analysis: _acpmux/peers is a zero-parameter read on the local daemon, never peer-forwarded, with reply fields restricted to name, state, lastSeen and error. It executes no commands, opens no content, and mutates no objects; URLs and transport details are filtered out. Reconnect reuses the action registry with an explicit machine target and fresh user gesture; arbitrary action arguments are not forwarded.
Final exact-head review, required checks, native capture and landing owner: root coordinator.
Own gallery captures at 9b32d028b84872a53a2c438c7ca14c9464700728 (simulated peer data):
| Before | Selected design |
|---|---|
![]() | ![]() |
| Connecting | Offline reconnect |
|---|---|
![]() | ![]() |
| Separated, selected | Labelled | Compact |
|---|---|---|
![]() | ![]() | ![]() |
Agent session: agent session






