Repository navigation
Preserve saved research navigation in Goal workspaces - #8595
Conversation
Restore saved chapter focus when returning to Research in the same Goal. Keep the matching bookmark when normalizing the status source and clear the previous Goal's selection when navigating to another Goal or reader. Cover source normalization, tab changes, and browser history with the packaged research reader. Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
loopx-agent
left a comment
There was a problem hiding this comment.
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · max
本次评审对应提交 f8b6b73d163211c16300e893c6b01971129e9b82。
动机 / Motivation
已在研究工作区阅读已保存 Case 的用户,特别是需要在多个 Goal 或控制面来源之间核对原始证据的人。从已保存章节切到同一 Goal 的「任务」再回「研究」,章节锚点会丢,焦点留在「研究」标签;不同 Goal 的地址也可能沿用旧研究字段。回来时可继续读原章节,键盘焦点回到该章节。父 Goal、兄弟 Goal 和另一物理来源各有自己的地址;后退和前进能重放各自的阅读位置。回来时可继续读原章节,键盘焦点回到该章节。父 Goal、兄弟 Goal 和另一物理来源各有自己的地址;后退和前进能重放各自的阅读位置。验证是打包 Dashboard、真实隔离本机 HTTP 和合成研究记录;未安装到原生 App 或验证生产账户、真实模型和线上来源。
改动思路 / Approach
保留浏览器历史和已有来源校验。地址保留与清理留在路由,章节焦点留在阅读组件。这次修复覆盖现有 Goal、研究页和来源之间的切换;不新增持久化位置或新的读写入口。 让同一 Goal 的路由保留研究参数和章节锚点,父 Goal、兄弟 Goal 或不同物理来源清掉上一份书签。Case 在返回可见时核对原 Goal、来源、分析包和章节,再恢复焦点;浏览器历史继续承担上一轮访问。
具体改动 / Changes
关键代码讲解
以 docs/development/frontend-delivery.md#native-app-source-goals @ be64444 为准:SAME-GOAL-CHAPTER、SCOPED-ADDRESS、BROWSER-HISTORY、READ-ONLY-PARITY 均已验证。researchSearchShape 把现有字段聚在一起;commitLoadedStatus 区分原来源地址归一化和跨来源切换。Case 的可见性检查 只恢复原章的焦点,离开研究页时停止。两个不同来源即使用同一 Goal ID,原 pack 仍由原来的 HTTP 读取器提供;浏览器前进、后退分别保留两个作用域的地址。
对主干的风险 / Risks
主要风险是同名 Goal 的第二个来源拿到第一个来源的书签。我让第二来源实际返回 HTTP 503;页面显示所选来源和重试,旧章节不可见。恢复后地址的研究字段与锚点为空;后退找回原来源和章节焦点,前进回到第二来源。两个来源的写入计数均为零,原研究记录未改动。
语义与 CI 对齐
桌面 1440 和窄屏 390 的基线、新版均用同一合成 Case 对照。原来焦点留在研究标签,新版跳回第二章;长文和无分结果仍可读。两个打包构建、研究渲染 smoke、DCO、diff 和双语检查通过。PR 正文的四张截图可读,独立证据提交固定到本 head。未查询托管 CI。
我的整体评价 / Verdict
当前改动满足保存章节续读和原来源隔离,没有发现阻塞问题。提交级结论适用于已经验证的 Dashboard 路径。 桌面和窄屏回到同一节时都能看见焦点轮廓和章节正文。窄屏保留未记录的结果,选中的来源暂不可读时可看到来源名和重试入口。 未验证原生 WebView 及已安装版本。
English verdict: APPROVE. At f8b6b73, the packaged reader restores the saved chapter, clears other Goal/source bookmarks, and recovers correctly from a scoped HTTP 503 without writes.
Goal and delivered outcome
A reader who leaves a saved chapter in a Benchmark child Goal can resume the same chapter and keyboard focus. Switching to the parent, a sibling, or a different physical reader gives that destination its own research address. Browser history can still reopen the previous visit.
The workspace router was dropping the chapter fragment on tab navigation and leaving the previous Goal's pack in the destination's address. The case reader stays mounted across tabs, so it also needs to restore focus when Research becomes visible again.
Author declaration
Written by model_agent, Codex (OpenAI GPT-6).
Implemented against the reproduced behavior in this proposal and the existing source-scoped research navigation in
apps/presentation/dashboardatbe64444a327c79a2722a39b10bb5606fb346469a.Self-check covered the production route, the packaged reader, and both user-visible source boundaries.
Scope and continuation
Complete within the research navigation scope. This change uses the existing saved analysis and history read paths. Independent review and native desktop installation are pending.
Validation
f8b6b73d163211c16300e893c6b01971129e9b82, based onbe64444a327c79a2722a39b10bb5606fb346469anpm --prefix apps/presentation/dashboard run smoke:research-evidence-versionexercised native saved evidence, late citations, status URL normalization, and Back/Forward on the wheel bundle. The research read and bound-conversation smokes passed.Frontend visual evidence
The first viewport after returning to Research by keyboard. The chapter and its negative observation stay readable at both widths. The focus outline moves from the tab to the saved chapter. Captures use the same public synthetic fixture on the packaged base and revised bundles.
The layout and reader controls use the existing design. The screenshots show keyboard focus and the stored chapter at the tested revisions. The screenshots use a revision-pinned review artifact.
Change boundaries
Workspace frontend bug fix using the existing route, case reader, and source catalog. The screenshots use a synthetic case. Both code and visual commits are DCO signed.