Repository navigation
Prompt rail: the Thread map container carries the cmux.agent.threadMap identifier - #35881
Conversation
…p identifier A capture of a release build had no handle on the rail container: "Thread map" didn't show up in the AX tree it read, and release builds have no page debug hook, so the rail's rect couldn't be measured. The rail's <nav> (the compact ThreadMinimap and the full ScrollMap alike) now has the DOM id cmux.agent.threadMap, which macOS accessibility exposes as the element's AXDOMIdentifier. No layout, default or visual change. Test: bun test test/thread-minimap-side.test.tsx (in webviews/): 2 fail without the id, 8 pass with it. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?id=aid-957084624508aa1efd57
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
Gallery before/after for
States
Pick other states with a Shipped in:
|
|
Review (codex, router-review): SHIP at bb14d4d Reviewer: codex gpt-6-astra high, fast tier. SHIP at bb14d4d Visual verdict: no images; Leo tries the build Checked both render arms and identifier uniqueness; no correctness or regression findings. Bun was unavailable here, so the focused test could not be rerun. Follow-ups: none |
Follow-up from manaflow-ai/cmuxterm-hq#7103 (capture tooling review of the rail sweep).
A capture of a release build couldn't measure the session rail's ("Thread map") container rect: the rail didn't show up in the AX tree the capture read, and release builds have no page debug hook. Leo asked for the rail at one fixed max height that nothing changes (#34666: "the height of the left scroll rail should never be affected by anything"), so the capture needs a stable handle to check that height.
Change
<nav>gets the DOM idcmux.agent.threadMap(RAIL_ACCESSIBILITY_IDinthreadMinimap/railSide.ts). macOS accessibility exposes a web element's DOM id as itsAXDOMIdentifier. Both rails get it: the compactThreadMinimapand the fullScrollMap. A page draws only one of them, so the id is unique.cmux.<area>.<control>scheme (plans/cmux-next/agent-interop-ax.md) and is API: add new ids, never rename this one.aria-label("Thread map") stays as it is. No CSS matches#cmux.agent.threadMap; the dots would make it a class selector anyway.Tests
bun test test/thread-minimap-side.test.tsx(inwebviews/): the new case, for the compact and full arms, checks that exactly one element has the id, that it is the rail nav, and that the literal is pinned.Expected length: 1, Received length: 0), 6 pass.Observed / Not run
vp fmt --checkandvp lintpass on the four changed files. The pre-push hooks passed withCMUX_LOCAL_HEAVY_CHECKS=0.vp check) didn't finish locally in time, so CI'sweb lintjob covers them. The change adds one string attribute.get_window_statereports the DOM id in itsidentifierfield (AXDOMIdentifier rather than AXIdentifier) gets checked on the rail lane's next capture.Changelog
none
risk: low (one attribute on one element, plus a test)
🤖 Generated with Claude Code
Agent session: agent session
Open in [code]smith · Need help on this PR? Tag
@codesmith-botwith what you need.Summary by cubic
Gives the "Thread map" rail container a stable DOM id so a release-build capture can find the rail and measure its fixed height, even though release builds have no page debug hook.
id="cmux.agent.threadMap"to the rail's<nav>in both the compactThreadMinimapand the fullScrollMap; macOS accessibility exposes it asAXDOMIdentifier, and a page draws only one rail so the id stays unique.cmux.<area>.<control>naming scheme and is API: add new ids, never rename this one.aria-labelstays "Thread map" and no CSS targets the id.Written for commit bb14d4d. Summary will update on new commits.