From e5df9e563cae4ce004fb9469133abe4b476bd587 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=9C=E7=81=AF?= Date: Tue, 20 Oct 2026 04:20:08 +0800 Subject: [PATCH 1/2] fix: prevent full width switch from stealing menu focus Keep the nested switch outside the tab order so pointer openings focus the menu surface and keyboard navigation remains on its rows. Cover pointer and keyboard openings plus row and switch activation. Model: gpt-6.1-sol --- .../session-menu-switch-focus/after.png | Bin 0 -> 67945 bytes .../2026-10-20-session-menu-switch-focus.md | 49 ++++++++++++++ ...2026-10-20-session-menu-switch-focus.zh.md | 41 ++++++++++++ .../src/components/sessions/README.md | 5 ++ .../sessions/session-chat-interface.tsx | 3 + .../tests/session-header-menu.test.tsx | 63 +++++++++++++++++- 6 files changed, 160 insertions(+), 1 deletion(-) create mode 100644 .agents/notes/assets/session-menu-switch-focus/after.png create mode 100644 .agents/notes/implemented/bug-fix/2026-10-20-session-menu-switch-focus.md create mode 100644 .agents/notes/implemented/bug-fix/2026-10-20-session-menu-switch-focus.zh.md diff --git a/.agents/notes/assets/session-menu-switch-focus/after.png b/.agents/notes/assets/session-menu-switch-focus/after.png new file mode 100644 index 0000000000000000000000000000000000000000..91b8f59cc37c771e6a58bb4752108cd68e08c130 GIT binary patch literal 67945 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 literal 0 HcmV?d00001 diff --git a/.agents/notes/implemented/bug-fix/2026-10-20-session-menu-switch-focus.md b/.agents/notes/implemented/bug-fix/2026-10-20-session-menu-switch-focus.md new file mode 100644 index 0000000000..4b3a95be86 --- /dev/null +++ b/.agents/notes/implemented/bug-fix/2026-10-20-session-menu-switch-focus.md @@ -0,0 +1,49 @@ +# Session menu switch focus + +Status: implemented +Translation: current + +[中文](2026-10-20-session-menu-switch-focus.zh.md) + +## Abstract + +Opening the session actions menu with the pointer highlighted Full width while +the pointer remained on the trigger. Its nested switch was tabbable, so the +menu's initial focus chose it and highlighted its containing row. The switch +now stays outside the tab order, leaving keyboard navigation with the menu row. +The switch remains directly clickable, and keyboard opening still focuses an +action; opening alone does not change the preference. + +## Decision and evidence + +This corrects the focus behavior of the trailing switch introduced by +[conversation full-width mode](../feature/2026-09-28-conversation-wide-mode.md). +Base UI 1.7's menu popup focuses its first tabbable descendant on pointer open; +menu rows initially have `tabIndex=-1`, but the nested switch did not. Setting +`tabIndex=-1` on that switch allows the popup surface to receive pointer-open +focus, while Base UI's existing keyboard navigation still reaches the row. +There is no shared menu autofocus override or hidden highlight styling. + +The containing row keeps its keyboard activation and `closeOnClick=false`; +the switch retains its own click handler and propagation stop. This preserves +both direct pointer activation and the visible switch design without giving +the nested control a second keyboard stop. + +## Verification + +The owning session-header and full-width suites pass all 15 tests. Regression +coverage checks pointer opening, arrow navigation, keyboard opening, dismissal, +and preference changes through both row activation and direct switch clicks. +A real SessionHeaderMenu Storybook browser run also verifies pointer opening, +hover, keyboard opening, row activation, direct switch clicks, and Escape dismissal. +The full `pnpm check` passes, including workspace type checking, typed and Effect +lint, all configured workspace tests, i18n validation, and boundary guards. +`pnpm format` also passes. +The documentation check still reports six existing missing local Kimi/Pi +submodule links in the subagent-events note; this change adds no broken links. + +The synthetic Storybook fixture omits optional Share and owner-transfer callbacks; +those production entries retain their existing conditions. The pointer remains +on the trigger when this screenshot is captured. + +![Pointer-opened menu](../../assets/session-menu-switch-focus/after.png) diff --git a/.agents/notes/implemented/bug-fix/2026-10-20-session-menu-switch-focus.zh.md b/.agents/notes/implemented/bug-fix/2026-10-20-session-menu-switch-focus.zh.md new file mode 100644 index 0000000000..2d980fa5f9 --- /dev/null +++ b/.agents/notes/implemented/bug-fix/2026-10-20-session-menu-switch-focus.zh.md @@ -0,0 +1,41 @@ +# 会话菜单开关焦点 + +Status: implemented +Translation: current + +[English](2026-10-20-session-menu-switch-focus.md) + +## 摘要 + +用鼠标打开会话操作菜单时,指针还停留在触发按钮上,“全宽显示”就出现了高亮。 +原因是行内开关可以接收 Tab 焦点,菜单的初始焦点选择了它,并使所在行高亮。 +现在将开关移出 Tab 顺序,键盘导航由菜单行统一承接。 +开关仍然可以直接点击,键盘打开时仍会聚焦操作项;仅打开菜单不会改变偏好。 + +## 决定与证据 + +本次修正[会话全宽模式](../feature/2026-09-28-conversation-wide-mode.md) +引入的行尾开关的焦点行为。Base UI 1.7 的菜单弹层在鼠标打开时会聚焦第一个 +可以通过 Tab 到达的后代;菜单行最初为 `tabIndex=-1`,但嵌套开关没有该限制。 +为开关设置 `tabIndex=-1` 后,鼠标打开时焦点留在菜单表面,原有键盘导航仍会 +进入菜单行。无需覆盖共享菜单的自动聚焦逻辑,也没有用样式隐藏高亮。 + +外层菜单行保留键盘激活与 `closeOnClick=false`;开关保留自己的点击处理与 +阻止冒泡。因此用户仍可直接点击开关,视觉设计保持不变,并且不会多出第二个 +键盘停靠点。 + +## 验证 + +所属的会话菜单与全宽模式测试共 15 项全部通过。回归测试覆盖鼠标打开、方向键导航、 +键盘打开、关闭菜单,以及通过菜单行和直接点击开关改变偏好。 +浏览器中也通过真实 SessionHeaderMenu Storybook 组件验证了鼠标打开、悬停、键盘打开、 +菜单行激活、直接点击开关,以及 Escape 关闭。 +完整的 `pnpm check` 通过,包括工作区类型检查、类型感知与 Effect lint、全部配置的 +工作区测试、国际化验证和边界检查;`pnpm format` 也通过。 +文档检查仍报告 subagent-events 笔记中原有的六个本地 Kimi/Pi 子模块缺失链接; +本次修改没有新增失效链接。 + +截图来自合成的 Storybook 示例,未配置可选的分享和所有者转移回调;生产页面 +仍保留这些入口原有的显示条件。截图时指针停留在触发按钮上。 + +![Pointer-opened menu](../../assets/session-menu-switch-focus/after.png) diff --git a/packages/components/src/components/sessions/README.md b/packages/components/src/components/sessions/README.md index 2c1e4d475e..703f20f9e7 100644 --- a/packages/components/src/components/sessions/README.md +++ b/packages/components/src/components/sessions/README.md @@ -14,6 +14,11 @@ The navigation-sidebar, terminal-dock and right-panel toggles reuse rotated -90 degrees and the right-panel glyph 180 degrees so the filled strip marks the panel's edge; their buttons and toggle behavior stay shared. +The header's Full width row owns keyboard navigation; its trailing switch stays +outside the tab order. Pointer opening focuses the menu surface without +highlighting an action, while keyboard opening and arrow navigation focus rows. +Both the row and the switch toggle the preference without dismissing the menu. + `ask-user-question-card.tsx` owns interactive and read-only question presentation, including independent optional notes and secret masking. Its dedicated `AskUserQuestionCard` stories cover editing, replay, multiple questions and legacy diff --git a/packages/components/src/components/sessions/session-chat-interface.tsx b/packages/components/src/components/sessions/session-chat-interface.tsx index b175aa9519..9c5214e408 100644 --- a/packages/components/src/components/sessions/session-chat-interface.tsx +++ b/packages/components/src/components/sessions/session-chat-interface.tsx @@ -1677,6 +1677,9 @@ export function SessionHeaderMenu({ icon={MoveHorizontal} endContent={ setConversationWide(checked === true)} onClick={(event) => event.stopPropagation()} diff --git a/packages/components/tests/session-header-menu.test.tsx b/packages/components/tests/session-header-menu.test.tsx index 668ad17d5b..6271a659db 100644 --- a/packages/components/tests/session-header-menu.test.tsx +++ b/packages/components/tests/session-header-menu.test.tsx @@ -6,7 +6,7 @@ import { createStore, Provider } from 'jotai'; import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'; import type { SessionId, SessionMeta } from '@lody/shared'; -import { experimentalFeaturesEnabledAtom } from '../src/atoms/settings'; +import { conversationWideModeAtom, experimentalFeaturesEnabledAtom } from '../src/atoms/settings'; import { SessionHeaderMenu } from '../src/components/sessions/session-chat-interface'; import { Tooltip } from '@lody/ui/tooltip'; @@ -75,6 +75,7 @@ describe('SessionHeaderMenu', () => { new TestPointerEvent('mousedown', { bubbles: true, button: 0, + detail: 1, pointerType: 'mouse', }) ); @@ -121,6 +122,66 @@ describe('SessionHeaderMenu', () => { expect(container?.querySelector('[data-testid="fork-result"]')?.textContent).toBe('none'); } + it('leaves pointer-opened actions unhighlighted and toggles full width only on activation', async () => { + const store = createStore(); + store.set(conversationWideModeAtom, false); + await act(async () => { + root?.render( + + + + ); + }); + await openMenu(); + + const menu = document.querySelector('[role="menu"]'); + const fullWidth = menuItem('Full width'); + const toggle = fullWidth.querySelector('[role="switch"]')!; + expect(document.activeElement).toBe(menu); + expect(menu?.querySelector('[data-highlighted]')).toBeNull(); + expect(store.get(conversationWideModeAtom)).toBe(false); + + await act(async () => { + menu?.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowDown', bubbles: true })); + await vi.advanceTimersByTimeAsync(40); + }); + expect(document.activeElement).toBe(fullWidth); + expect(fullWidth.hasAttribute('data-highlighted')).toBe(true); + + await act(async () => { + fullWidth.dispatchEvent(new KeyboardEvent('keydown', { key: 'Enter', bubbles: true })); + }); + expect(store.get(conversationWideModeAtom)).toBe(true); + expect(document.querySelector('[role="menu"]')).toBe(menu); + + await act(async () => toggle.click()); + expect(store.get(conversationWideModeAtom)).toBe(false); + expect(document.querySelector('[role="menu"]')).toBe(menu); + }); + + it('focuses the first action when the menu is opened with the keyboard', async () => { + await act(async () => root?.render()); + const trigger = container!.querySelector( + 'button[aria-label="More actions"]' + )!; + await act(async () => { + trigger.focus(); + trigger.dispatchEvent(new KeyboardEvent('keydown', { key: 'ArrowDown', bubbles: true })); + await vi.advanceTimersByTimeAsync(40); + }); + const fullWidth = menuItem('Full width'); + expect(document.activeElement).toBe(fullWidth); + expect(fullWidth.hasAttribute('data-highlighted')).toBe(true); + + await act(async () => { + fullWidth.dispatchEvent(new KeyboardEvent('keydown', { key: 'Escape', bubbles: true })); + }); + await act(async () => { + await vi.advanceTimersByTimeAsync(40); + }); + expect(document.querySelector('[role="menu"]')).toBeNull(); + }); + it('opens the submenu and forks to a new tab', async () => { await act(async () => root?.render()); await openForkMenu(); From bd7f1c7a14e210f58f999f618235d83ec7e2000a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=9C=E7=81=AF?= Date: Tue, 20 Oct 2026 04:20:43 +0800 Subject: [PATCH 2/2] docs: link session menu focus PR Model: gpt-6.1-sol --- .../implemented/bug-fix/2026-10-20-session-menu-switch-focus.md | 2 ++ .../bug-fix/2026-10-20-session-menu-switch-focus.zh.md | 2 ++ 2 files changed, 4 insertions(+) diff --git a/.agents/notes/implemented/bug-fix/2026-10-20-session-menu-switch-focus.md b/.agents/notes/implemented/bug-fix/2026-10-20-session-menu-switch-focus.md index 4b3a95be86..dcafa7d895 100644 --- a/.agents/notes/implemented/bug-fix/2026-10-20-session-menu-switch-focus.md +++ b/.agents/notes/implemented/bug-fix/2026-10-20-session-menu-switch-focus.md @@ -5,6 +5,8 @@ Translation: current [中文](2026-10-20-session-menu-switch-focus.zh.md) +PR: [#1741](https://github.com/LodyAI/Lody/pull/1741) + ## Abstract Opening the session actions menu with the pointer highlighted Full width while diff --git a/.agents/notes/implemented/bug-fix/2026-10-20-session-menu-switch-focus.zh.md b/.agents/notes/implemented/bug-fix/2026-10-20-session-menu-switch-focus.zh.md index 2d980fa5f9..a90415a7c5 100644 --- a/.agents/notes/implemented/bug-fix/2026-10-20-session-menu-switch-focus.zh.md +++ b/.agents/notes/implemented/bug-fix/2026-10-20-session-menu-switch-focus.zh.md @@ -5,6 +5,8 @@ Translation: current [English](2026-10-20-session-menu-switch-focus.md) +PR: [#1741](https://github.com/LodyAI/Lody/pull/1741) + ## 摘要 用鼠标打开会话操作菜单时,指针还停留在触发按钮上,“全宽显示”就出现了高亮。