Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
bbd6280
fix(cmux-next): align popovers with their triggers
teamleaderleo Oct 6, 2026
63382df
fix(cmux-next): satisfy anchor namespace lint
teamleaderleo Oct 6, 2026
00052d1
fix(cmux-next): import popover anchor helper
teamleaderleo Oct 6, 2026
6adb062
Merge remote-tracking branch 'origin/feat-cmux-next' into codex/cx-ne…
teamleaderleo Oct 6, 2026
06bd917
fix(cmux-next): cover every composer popover anchor
teamleaderleo Oct 6, 2026
7c0c8c4
Merge remote-tracking branch 'origin/feat-cmux-next' into codex/cx-ne…
teamleaderleo Oct 6, 2026
f866f84
test(cmux-next): drain anchor harness teardown
teamleaderleo Oct 6, 2026
f8778cd
Merge remote-tracking branch 'origin/feat-cmux-next' into codex/cx-ne…
teamleaderleo Oct 6, 2026
ec57215
fix(cmux-next): resolve anchor direction from its document
teamleaderleo Oct 6, 2026
546f09c
Merge remote-tracking branch 'origin/feat-cmux-next' into codex/cx-ne…
teamleaderleo Oct 6, 2026
5e9ab5a
Merge remote-tracking branch 'origin/feat-cmux-next' into codex/cx-ne…
teamleaderleo Oct 6, 2026
c87a594
Merge remote-tracking branch 'origin/feat-cmux-next' into codex/cx-ne…
teamleaderleo Oct 6, 2026
a206382
Merge remote-tracking branch 'origin/feat-cmux-next' into codex/cx-ne…
teamleaderleo Oct 6, 2026
c3776bf
Merge remote-tracking branch 'origin/feat-cmux-next' into codex/cx-ne…
teamleaderleo Oct 6, 2026
6a3d4b9
fix(cmux-next): size composer plus menu to content
teamleaderleo Oct 6, 2026
f8e40b2
build(cmux-next): regenerate agent pane styles
teamleaderleo Oct 6, 2026
24b6339
test(cmux-next): assert plus menu natural size
teamleaderleo Oct 6, 2026
4f34bae
Merge remote-tracking branch 'origin/feat-cmux-next' into codex/cx-ne…
teamleaderleo Oct 6, 2026
8a0cfea
Merge remote-tracking branch 'origin/feat-cmux-next' into codex/cx-ne…
teamleaderleo Oct 6, 2026
28f5970
style(cmux-next): format plus menu anchor assertion
teamleaderleo Oct 6, 2026
8651957
Merge remote-tracking branch 'origin/feat-cmux-next' into codex/cx-ne…
teamleaderleo Oct 6, 2026
581e969
next-batch: regenerate webviews formatting
github-actions[bot] Oct 6, 2026
7c1d8c6
Merge remote-tracking branch 'origin/feat-cmux-next' into codex/cx-ne…
teamleaderleo Oct 6, 2026
aa8671b
build(cmux-next): regenerate agent pane bundle
teamleaderleo Oct 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2133,7 +2133,7 @@
.acpmux-send{flex:none;display:grid;place-items:center;width:32px;height:32px;padding:0;border:0;border-radius:50%;background:var(--agent-highlight,var(--agent-text));color:var(--agent-highlight-text,var(--acpmux-base))}
.acpmux-send:not(.acpmux-send-ready):not(.acpmux-cancel):not(:hover){background:color-mix(in srgb,var(--agent-highlight,var(--agent-text)) 72%,var(--acpmux-base))}
/* The picker menus open above the field at their chip (useUiAnchor). The chip is their containing block, so the width comes from the rows and the viewport, never the chip. */
.acpmux-menu{font:13px/18px -apple-system,BlinkMacSystemFont,"SF Pro Text",system-ui,sans-serif;font-size:14px;position:absolute;bottom:calc(100% + 6px);z-index:3;width:max-content;min-width:min(220px,calc(100vw - 16px));max-width:min(420px,calc(100vw - 16px));max-height:min(360px,50vh);overflow:auto;padding:6px;box-sizing:border-box;border-radius:12px;background:var(--acpmux-menu-bg);box-shadow:inset 0 0 0 .5px var(--acpmux-composer-edge),0 10px 30px var(--agent-shadow,rgb(0 0 0/.35));color:var(--agent-text);line-height:18px}
.acpmux-menu{font:13px/18px -apple-system,BlinkMacSystemFont,"SF Pro Text",system-ui,sans-serif;font-size:14px;position:absolute;bottom:calc(100% + 6px);z-index:3;width:max-content;min-width:min(220px,calc(100vw - 16px));max-width:min(420px,calc(100vw - 16px));height:auto;max-height:min(360px,50vh);overflow-x:hidden;overflow-y:auto;padding:6px;box-sizing:border-box;border-radius:12px;background:var(--acpmux-menu-bg);box-shadow:inset 0 0 0 .5px var(--acpmux-composer-edge),0 10px 30px var(--agent-shadow,rgb(0 0 0/.35));color:var(--agent-text);line-height:18px}
/* The picker menus open above the field, aligned with its edges. */
.acpmux-menu-start{left:0}
.acpmux-menu-end{right:0}
Expand Down
2 changes: 1 addition & 1 deletion webviews/src/agent-session/acpmux/styles.css

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 7 additions & 1 deletion webviews/test/anchor.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import { act, createElement, useRef, useState } from "react";
import { resolveUiOverlayPosition, useUiAnchor, UI_ANCHOR_GAP, type UiAnchorSide } from "../src/ui/anchor";

const menuCases: Array<{ name: string; side: UiAnchorSide }> = [
{ name: "composer-plus", side: "above" },
{ name: "composer-computer", side: "below" },
{ name: "composer-folder", side: "above" },
{ name: "model", side: "above" },
Expand All @@ -26,7 +27,7 @@ const menuGeometry = new Map(
right: 160 + index * 24,
bottom: entry.side === "above" ? 392 : 132,
},
overlay: { width: 180, height: 100 },
overlay: entry.name === "composer-plus" ? { width: 220, height: 160 } : { width: 180, height: 100 },
},
]),
);
Expand Down Expand Up @@ -199,6 +200,11 @@ describe("anchored overlay placement", () => {
: geometry.anchor.top - UI_ANCHOR_GAP - geometry.overlay.height;
expect(Math.abs(Number.parseFloat(overlay.style.left) - expectedLeft)).toBeLessThanOrEqual(2);
expect(Math.abs(Number.parseFloat(overlay.style.top) - expectedTop)).toBeLessThanOrEqual(2);
if (entry.name === "composer-plus") {
const trigger = dom.window.document.querySelector<HTMLButtonElement>(`[data-menu-trigger="${entry.name}"]`)!;
expect(overlay.getBoundingClientRect().width).toBeGreaterThan(trigger.getBoundingClientRect().width);
expect(overlay.getBoundingClientRect().height).toBeLessThanOrEqual(360);
}
}
});
});
Loading