fix(composer): align running-work tray with composer columns

Closed
TE
7d ago
+806-8

Leo said: "let's also consider alignment along this background display thingy with the composer / the plus sign and whatnot".

The running-work tray now shares the composer's measured surface edges and leading/trailing control columns in both collapsed and expanded states. Its time/status tracks and separate stop slots retain the landed row structure, including narrow layouts. Reference: the Claude and Codex composer/tray alignment in the design reference catalog.

The observer reads the rendered composer geometry when layout or controls change. It re-queries replacement controls, removes obsolete resize targets, and ignores its own CSS variable writes. Both observers disconnect and remove their published variables when the composer unmounts or its look changes. No timer or animation loop is added.

Validation at 0060727a33f744a7802b33dcc5a1250de3834138: remote full webview checks and geometry matrix passed, including lint, types, protocol checks and 48/48 browser cases across Claude/Codex looks, collapsed/expanded trays, 720/320/260px widths, light/dark themes and plain/full footers. The matrix checks real time/status bounds, command/subagent stops, no-stop slots, display-contents ancestor translation and mutation-only replacement. The same-harness base-CSS comparison failed 48/48 cases before the alignment fix. Independent whole-diff review at that head found no blocking issue. Full CI subsequently exposed an attribute-order regression in the running-wave source assertion; the focused repair passed that file and eight previously cut-short browser files in the serial recovery run. The shared webview CI retry repair (#27425) has landed and is merged in; review and checks are refreshed at the merged head.

Current source d89fc4dd176bfd89d246d1e080bff3deb7977bd9 also passed full webview lint, type and protocol checks. Its committed tree matches both this check and the nine-file recovery snapshot. The only source difference from the captured 0060727a revision is the order of two JSX attributes on the same icon: values, DOM structure, CSS bindings and rendered geometry are unchanged. The images below remain actual captures of 0060727a; no new visual run at the current head is claimed.

The SwiftUI guard reports the same two unchanged Home Chat Colors imports on base 72a1ceaf and this PR; neither file is changed here.

ThemeBeforeAfter
LightBefore lightAfter light
DarkBefore darkAfter dark

Agent session: agent session