gallery: agent-pane entries show the product again (renamed controls, raced plays, blank stages)

Merged
TE
15d ago
+325-77

Fourteen agent-pane gallery states had stopped showing the product. Each play hit a missing element, or the stage went blank once its play ran. Gallery fixtures and plays only; no product code changes.

Controls renamed or moved (the product changed; the entries follow it)

  • session-sidebar#search-filtered, #search-clears: the search field is "Search chats" (#19895). The sidebar now fills an acpmux-shell like the pane's, so filtering no longer moves the rail.
  • start-folder#home-question, #root-refused: the home row reads "~" (#22724); the play finds it by its title.
  • permission-panel#allowance: Revoke moved to the composer's access menu in #20303, so it was moved, not lost. The play asserts the old card is gone and that the revoke still reaches the host.
  • bottom-stack#pr-queue: the composer-context strip shows only before a chat's first send (#20869, #21363). The play asserts it stays away.

Plays that raced the stage

  • header-tools#pull-request-status, #pull-request-merge: wait for the PR chip before clicking it.
  • dictation#hide: opens the button's menu with a real context menu.

Stages that drew one part alone

  • harness-health-notice#dismissed, #sudo-update, file-search#escape, home-lists#empty: each draws the pane's frame with the real composer. Not Now, Escape or an empty home now leave the composer in view, not an empty stage. The notice's anchor is the composer.

Test

webviews/test/gallery-agent-pane-entries.test.ts (Chromium on the gallery dev server). It runs each of the 13 states and checks that it reaches ready "1" with no page error and no play error. It also checks its anchors and layout shift. For the blank stages it checks the pane's frame is still there, and that the component drew what the variant is for: no notice after Not Now or for a sudo update, no list rows in an empty home. Long frames don't fail it.

cd webviews && CMUX_BROWSER_TESTS=1 bun test test/gallery-agent-pane-entries.test.ts

  • base 8e797b7aaf9 with the test copied in: 0 pass, 14 fail (no element for input[aria-label="Search sessions"], no element for option "/\/Users\/you$/", no element for .acpmux-header-pr, no element for menuitem "Hide Dictation Button", blank stages)
  • head, merged with base 9aa00c6e20f: 13 pass

Observed / Not run

  • Observed: the test above, red on base and green on head. On a cold dev server, the first run after the base merge hit the shared warmDevServer 100 s limit; the rerun passed 13/13. prepush-gate.py: no new violations.
  • scripts/web-lint.sh: everything passes except formatting in src/agent-session/acpmux/App.tsx, which is a base red at 9aa00c6e20f. This PR doesn't touch that file.
  • Not fixed here, found while checking these entries:
    • session-sidebar#rail-keyboard times out after ArrowDown/End.
    • session-sidebar#view-switching-animation-audit finds no .acpmux-sidebar-active when projects are grouped.
    • harness-health-notice#restart-after-turn layout-shifts about 0.002 because Not Now moves when the main action appears.
    • reply-image#local stays as it is. The React Compiler caches usePathInfo's reads (chips/linkStore.ts) by path, so the host's answer never redraws a local image. Review found that seeding the fixture here hid that bug. The product fix and this entry follow in their own PR.
  • The "waitFor did not hold" plays are left to the gallery-perf lane's accessibleName() fix.

No capture: gallery fixtures only. The gallery advisory run shows these states.

Changelog

none

Agent session: huge-blue

🤖 Generated with Claude Code