Repository navigation
Restore focus after reading a research group - #8322
loopx-agent wants to merge 1 commit into
Conversation
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent, gpt-6.1-sol, OpenAI, runtime_reported, reasoning_effort=max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机 / Motivation
用键盘、辅助操作或触发后未改变 DOM 焦点的方式浏览研究列表时,用户需要接着原位置阅读。 从日期或相邻点打开多项研究,选中一条问题,再退出问题与分组。 同一份 90 条记录的混合研究数据。先在画布保留焦点,再激活日期组或相邻点组,读问题后逐层退出。六个基线用例都停在画布,候选六个都恢复到原分组按钮。 两处生产组件和一个已存在的 browser scenario。核对时间线日期、相邻点及关系图日期三个入口。 独立走查在 Chromium 复现了不移动焦点的激活。原生 WebKit 手势、已安装 App 和辅助技术未在本轮独立测量。
改动思路 / Approach
组按钮保留真实 DOM 身份。进入问题保留原分组引用,返回时问题行和分组各用自己的已有定位。 分组点击已经知道实际触发按钮,直接交给已有 opener ref 可消除 activeElement 与事件目标不一致。原问题列表和断开 DOM 后的 URL 定位保持同一 owner。 两处生产组件和一个已存在的 browser scenario。核对时间线日期、相邻点及关系图日期三个入口。
具体改动 / Changes
基线为 8a4d4f9dab17b01d6fe3546936155b4d718fc20d。Research Workspace 的设计要求保留分组、问题和键盘返回的准确入口。 基线规范
- 分组焦点。 同一份 90 条记录的混合研究数据。先在画布保留焦点,再激活日期组或相邻点组,读问题后逐层退出。六个基线用例都停在画布,候选六个都恢复到原分组按钮。
- 问题焦点与恢复。 六组对照中,问题退出先聚焦原问题行。候选另测 Enter 打开后 Escape、以及刷新后从 URL 恢复的日期组,均正确返回入口。HTTP owner 记录零写入且原始源逐字不变。
关键代码讲解
记录按钮 → 分组事件 → 退出阅读器。原问题行和按日期找回的顺序未变。
对主干的风险 / Risks
实际入口在窄屏同样可见。原元素断开时仍有当前日期或成员匹配,重载日期对照通过。真实 read-only owner 没有收到任何写请求。
两臂各六个同输入用例,候选另测 Enter 和 reload。两臂 Dashboard/Chat 构建均通过。 Quick premerge 的 4 项直接检查和 4 项选中检查通过。 DCO 与主干合并树通过。 打开首屏与窄屏返回画面均已观察,窄屏日期入口恢复可见焦点框。 远端 CI 未取样。
我的整体评价 / Verdict
代码评审批准。事件目标和原有恢复 owner 一致,三个实际入口都能逐层回到原控制。 独立走查在 Chromium 复现了不移动焦点的激活。原生 WebKit 手势、已安装 App 和辅助技术未在本轮独立测量。
检查了实际打包页面的桌面默认首屏和 390 px 的返回画面。变更作用于返回焦点,横向布局及阅读密度沿用原页面。 视觉观察覆盖同一只读合成数据的已打包浏览器画面,未覆盖已安装客户端。 PR 中的对应画面。
English verdict: APPROVE. Approve. All six matched packaged-browser cases return focus to the exact group trigger on this head, with correct question-row return and post-reload recovery.
Closing a research group after reading a question could leave keyboard focus on the timeline canvas or another control. Remember the date or cluster button that opened the group so Escape restores focus to it. Returning from an individual question still focuses its row.
Visual evidence
The same synthetic read-only source is served to packaged Chat at base
8a4d4f9daband head2a04925aec. The opening view is shared. The return views show where focus lands after closing the question and then the group.Validation