Repository navigation
fix(webviews): dismiss Sources menu without closing Summary - #27584
Conversation
|
Found 9 test failures on Blacksmith runners: Failures
|
|
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 red: cmux-next checks (god files, concurrency, crash safety, l10n); base red: the same failure on the base bf085b4; does not block Shipped in:
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Owned by an agent session · session |
|
Review (subagent claude-opus-5-5 medium): SHIP at 16ec42f Independent read of the PR's own diff against feat-cmux-next plus the merge resolution in SummaryCard.gallery.tsx (both sides kept: base's environment prop and popover variants, this PR's nested-sources-menu variant and tools prop). The card's capture-phase outside-click handler now returns early while a menu trigger inside the card is open ( Follow-ups:
|
There was a problem hiding this comment.
1 issue found across 3 files
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="webviews/test/summary-nested-dismiss.test.ts">
<violation number="1" location="webviews/test/summary-nested-dismiss.test.ts:31">
P2: When both Playwright engines are unavailable, `probeEngineOrSkip` is supposed to skip this lane, but this assertion fails the file instead. Skip setup when the browser map is empty and warm only an available browser.</violation>
</file>
Reply with feedback, questions, or to request a fix.
View guided diff | Turn on auto-fix | Re-trigger cubic
| if (await probeEngineOrSkip("summary nested dismissal", engine.name(), engine)) | ||
| browsers.set(engine.name(), await engine.launch({ headless: true })); | ||
| } | ||
| expect(browsers.size).toBeGreaterThan(0); |
There was a problem hiding this comment.
P2: When both Playwright engines are unavailable, probeEngineOrSkip is supposed to skip this lane, but this assertion fails the file instead. Skip setup when the browser map is empty and warm only an available browser.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. When an issue isn't valid or won't be fixed in this PR, reply in its thread with the reason and then resolve the thread. At webviews/test/summary-nested-dismiss.test.ts, line 31:
<comment>When both Playwright engines are unavailable, `probeEngineOrSkip` is supposed to skip this lane, but this assertion fails the file instead. Skip setup when the browser map is empty and warm only an available browser.</comment>
<file context>
@@ -0,0 +1,101 @@
+ if (await probeEngineOrSkip("summary nested dismissal", engine.name(), engine))
+ browsers.set(engine.name(), await engine.launch({ headless: true }));
+ }
+ expect(browsers.size).toBeGreaterThan(0);
+ await warmGalleryFrame(vite, entry, { browser: browsers.values().next().value, params: { variant } });
+ });
</file context>
Resolve SummaryCard.gallery.tsx against the Inspector -> Session Info rename (#29921). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Review (subagent claude-opus-5-5 medium): SHIP at fde099d Head is a base merge resolving SummaryCard.gallery.tsx against the Session Info rename (#29921); the diff against base is unchanged apart from the renamed props. Follow-ups:
|
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
![Fix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/fix-with-codesmith-light-3x.png)
An outside click with the floating Summary card's Sources menu open dismissed both layers. Summary now detects its open menu trigger before handling an outside press, so the first press dismisses Sources and the next dismisses Summary.
Course item 12: a menu opened inside another layer must dismiss only the innermost layer. The gallery fixture and browser regression exercise the real Summary/Sources pair for outside click, Escape, and selection.
Leo (2026-10-29):
Earlier:
Audit:
webviews/src/agent-session/acpmux/summary/SummaryCard.tsx:156| course 12 | outside pointerdown closes Summary with Sources open | preserve Summary while its menu handles dismissal.Validation
Sources outside keeps Summary open(one per theme). Fixed source: 6 pass, 0 fail. Each passing case runs in both browsers. Tests also verify the next outside click closes Summary.2758e470da72f3bc97392eccb773d1d5aed1f2ff: baseline 4 pass / 2 expected failures, fixed 6 pass / 0 fail. The command then failed a screenshot-transfer size assertion. Current head crops screenshots; product code is unchanged.lane-gh: the broker sent no answerbefore returning run IDs. Their execution status is unknown; no final-head green receipt is claimed.pr-overlapwas invoked but its GraphQL call was refused by the broker; a broker search for SummaryCard dismissal found no existing PR.Risk: the guard relies on Base UI's existing open-trigger marker, with an ARIA fallback. The browser regression exercises that marker through the real Sources component. No new listeners, timers, or observers.
Screenshots
Gallery fixture:
agent-pane.summary-card/nested-sources-menu. Synthetic empty Summary and Documentation tool only. Images show the settled state after the same outside click.Before/after captures pending recovery of the remote broker route.
UI review
Verdict: blocked
Blockers
Should fix
Nits
Needs a human / needs a device
Changelog
Fixed: closing the Sources menu with an outside click keeps its Summary card open.
Agent session: agent session