Skip to content

Prompt rail: the Thread map container carries the cmux.agent.threadMap identifier - #35881

Merged
teamleaderleo merged 1 commit into
feat-cmux-nextfrom
lane/rail-ax-id
Nov 4, 2026
Merged

teamleaderleo merged 1 commit into
feat-cmux-nextfrom
lane/rail-ax-id

Conversation

@teamleaderleo

@teamleaderleo teamleaderleo commented Nov 4, 2026 •

Copy link
Copy Markdown
Collaborator

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

  • The rail's <nav> gets the DOM id cmux.agent.threadMap (RAIL_ACCESSIBILITY_ID in threadMinimap/railSide.ts). macOS accessibility exposes a web element's DOM id as its AXDOMIdentifier. Both rails get it: the compact ThreadMinimap and the full ScrollMap. A page draws only one of them, so the id is unique.
  • The name follows the native cmux.<area>.<control> scheme (plans/cmux-next/agent-interop-ax.md) and is API: add new ids, never rename this one.
  • No layout, default or visual change. The 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 (in webviews/): 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.

  • Without the id: 2 fail (Expected length: 1, Received length: 0), 6 pass.
  • With it: 8 pass.

Observed / Not run

  • Observed: the red/green run above. vp fmt --check and vp lint pass on the four changed files. The pre-push hooks passed with CMUX_LOCAL_HEAVY_CHECKS=0.
  • Not run: the type-aware lint and the full type check (vp check) didn't finish locally in time, so CI's web lint job covers them. The change adds one string attribute.
  • Not run: a release-build AX read. Whether CuaDriver's get_window_state reports the DOM id in its identifier field (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


Autofix with [code]smith
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with 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.

  • Adds id="cmux.agent.threadMap" to the rail's <nav> in both the compact ThreadMinimap and the full ScrollMap; macOS accessibility exposes it as AXDOMIdentifier, and a page draws only one rail so the id stays unique.
  • The id follows the cmux.<area>.<control> naming scheme and is API: add new ids, never rename this one.
  • No layout, default, or visual change; the aria-label stays "Thread map" and no CSS targets the id.
  • Tests cover both arms and pin the literal: 8 pass with the id, 2 fail without it.

Written for commit bb14d4d. Summary will update on new commits.

View guided diff Turn on auto-fix

…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
@teamleaderleo teamleaderleo added the risk:low Risk tier (docs/ci/risk-tiers.md) label Nov 4, 2026
@github-actions

github-actions Bot commented Nov 4, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review bb14d4d: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr35881 -f ref=lane/rail-ax-id -f platform=macos -f backend_mode=local

Gallery before/after for bb14d4d: 16 states rendered, 7 images differ, 318 more touched states not rendered. Images are in the run's artifact, not on this public PR; the independent review of this head reads them on its own, so the PR needs no hand-made screenshots of these states.

gh run download 41915863062 -R manaflow-ai/cmux -n gallery-advisory-35881-bb14d4db565bfbe01324e5a4869c3572b31d46c2 (then read gallery-review.json)

States
State Theme Status Diff Picked by
agent-pane.thread-minimap/card-markdown Apple System Colors Light unchanged 0% own ScrollMap.tsx
agent-pane.thread-minimap/card-markdown Apple System Colors unchanged 0% own ScrollMap.tsx
agent-pane.thread-minimap/card-failure Apple System Colors Light unchanged 0% own ScrollMap.tsx
agent-pane.thread-minimap/card-failure Apple System Colors unchanged 0% own ScrollMap.tsx
agent-pane.thread-minimap/card-metadata Apple System Colors Light unchanged 0% own ScrollMap.tsx
agent-pane.thread-minimap/card-metadata Apple System Colors unchanged 0% own ScrollMap.tsx
agent-pane.thread-minimap/card-prompt-fixed-2 Apple System Colors changed 0% own ScrollMap.tsx
agent-pane.thread-minimap/card-prompt-fixed-2 Apple System Colors Light unchanged 0% own ScrollMap.tsx
agent-pane.thread-minimap/card-prompt-fixed-3 Apple System Colors Light changed 0% own ScrollMap.tsx
agent-pane.thread-minimap/card-prompt-fixed-3 Apple System Colors unchanged 0% own ScrollMap.tsx
agent-pane.thread-minimap/card-prompt-growing Apple System Colors Light changed 0% own ScrollMap.tsx
agent-pane.thread-minimap/card-prompt-growing Apple System Colors unchanged 0% own ScrollMap.tsx
agent-pane.thread-minimap/first-paint Apple System Colors Light unchanged 0% own ScrollMap.tsx
agent-pane.thread-minimap/first-paint Apple System Colors unchanged 0% own ScrollMap.tsx
agent-pane.thread-minimap/rest Apple System Colors Light unchanged 0% own ScrollMap.tsx
agent-pane.thread-minimap/rest Apple System Colors unchanged 0% own ScrollMap.tsx
agent-pane.thread-minimap-foot/resting Apple System Colors Light unchanged 0% own ThreadMinimap.tsx
agent-pane.thread-minimap-foot/resting Apple System Colors unchanged 0% own ThreadMinimap.tsx
agent-pane.thread-minimap-foot/bottom-hovered Apple System Colors Light unchanged 0% own ThreadMinimap.tsx
agent-pane.thread-minimap-foot/bottom-hovered Apple System Colors unchanged 0% own ThreadMinimap.tsx
agent-pane.thread-minimap-foot/tall-draft Apple System Colors Light unchanged 0% own ThreadMinimap.tsx
agent-pane.thread-minimap-foot/tall-draft Apple System Colors unchanged 0% own ThreadMinimap.tsx
agent-pane.thread-minimap-foot/solo-tab-hovered Apple System Colors Light changed 0% own ThreadMinimap.tsx
agent-pane.thread-minimap-foot/solo-tab-hovered Apple System Colors changed 0% own ThreadMinimap.tsx
agent-pane.thread-minimap-height/eighteen-prompts Apple System Colors Light changed 0% own ThreadMinimap.tsx
agent-pane.thread-minimap-height/eighteen-prompts Apple System Colors changed 0% own ThreadMinimap.tsx
agent-pane.thread-minimap-height/seventy-prompts Apple System Colors Light unchanged 0% own ThreadMinimap.tsx
agent-pane.thread-minimap-height/seventy-prompts Apple System Colors unchanged 0% own ThreadMinimap.tsx
agent-pane.thread-minimap-height/tall-pane-caps Apple System Colors Light unchanged 0% own ThreadMinimap.tsx
agent-pane.thread-minimap-height/tall-pane-caps Apple System Colors unchanged 0% own ThreadMinimap.tsx
agent-pane.thread-minimap-incoming/states Apple System Colors Light unchanged 0% own ThreadMinimap.tsx
agent-pane.thread-minimap-incoming/states Apple System Colors unchanged 0% own ThreadMinimap.tsx

Pick other states with a Gallery: entry.id, entry.id/variant line in the PR body.

Shipped in:

@github-actions github-actions Bot added risk:normal Risk tier (docs/ci/risk-tiers.md) and removed risk:low Risk tier (docs/ci/risk-tiers.md) labels Nov 4, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator Author

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

@cmux-bot cmux-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

cmux-bot approves bb14d4d: an independent review passed this exact head (router-review receipt by teamleaderleo). A push needs a new review; a later BLOCK at this head dismisses this approval.

@teamleaderleo
teamleaderleo merged commit fb97295 into feat-cmux-next Nov 4, 2026
250 of 260 checks passed
@teamleaderleo
teamleaderleo deleted the lane/rail-ax-id branch November 4, 2026 21:59

This branch was previously deployed

1 inactive deployment
ci-routing-agent — bb14d4db Deployed Nov 4, 2026 by teamleaderleo via cmux-tui tree preflight #113133
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

risk:normal Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant