Skip to content

fix(research): preserve historical reading context - #7359

Merged
huangruiteng merged 1 commit into
mainfrom
codex/research-workbench-refinement-20261026
Oct 26, 2026
Merged

huangruiteng merged 1 commit into
mainfrom
codex/research-workbench-refinement-20261026

Conversation

@loopx-agent

Copy link
Copy Markdown
Collaborator

Clicking an older decision could open the question's latest finding. Research now carries the selected finding identity into the existing reader and URL. Closing preserves the expanded decision collection and exact keyboard return; opening a long finding starts at its heading on narrow screens.

The existing source catalog also distinguishes an alias of the same reader from a different physical source: address normalization retains bookmarks, while a real source switch still clears source-local selections. The shared read-only footer keeps one visible state and moves its explanation into the existing hover/focus/tap help.

Validation and limits

  • Packaged production UI with disposable real HTTP/SQLite history: dense/single/missing findings, older decisions, reload/Back, expanded-list return, keyboard/touch and complete original text passed at desktop and 390px. The wrong-finding assertion and narrow-heading assertion failed before their repairs.
  • Research route reading (seven action states, Chinese/English, desktop/tablet/phone), full saved translation/citation/version reading, physical-source switching/failure recovery and ordinary interactive runtime readiness passed. The translation refusal case explicitly fault-injects advertised availability; the real fixture rejects the POST and retains saved results. No live model or benchmark ran.
  • TypeScript/Chat build, source catalog tests, CSS token inventory, bilingual diff check, diff hygiene and the diff-scoped text boundary scan passed. Premerge ran four direct and eight selected checks with zero automatic failures; four binary-image privacy/visual holds require the exact-head review. Author pixel and PNG metadata inspection is recorded separately.
  • An additional combined workspace-health/PNG-text scan was nonpassing on unrelated canonical-authority diagnostics and unsupported binary text inputs; it is not counted as a passing privacy check. No authority migration or guard relaxation was made.

Source 6b8aa16ace17a65006720ead26fa895a6e608377, based on main at 56cedb4c886d1fceaddea4113f4a1c56fa934aee. Existing finding/selection/source owners are reused; no new persisted schema, scientific metric, execution grant or source mutation. Installed App adoption and the broader research workbench remain unqualified. Related saved-report entry (#7337), finding labels (#7343) and read-only empty-chat guidance (#7357) keep their separate scopes.

Visual evidence

Public synthetic data only, packaged browser and real isolated HTTP/SQLite owner. Captures use the proposed UI before the metadata-only rebase; its UI and PNG blobs are unchanged at the source above. The before image records the wrong-finding counterexample during repair, before precise finding dispatch was added. This is source/package evidence, not an installed-user capture. No hosted preview.

Whole research viewport with compact source help

Selected decision Before After
Desktop 1440×900 Clicked comparison 19 but read comparison 20 Comparison 19 opens its own finding

390px starts with the selected title and controls

Observed composition: the selected title and full reading text lead, original questions and citations remain available, and negative/unknown states are retained. The footer no longer repeats a default explanatory paragraph. Existing narrow source-chip truncation is unchanged. This does not certify scientific validity or complete the whole frontend overhaul.

… state

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>

@loopx-agent loopx-agent left a comment

Copy link
Copy Markdown
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewer: model_agent · gpt-6.1-sol · OpenAI · runtime_reported · reasoning_effort=max

Approval conclusion (author-owned PR; GitHub blocks formal self-approval)

未发现阻塞性问题。评审对象为 6b8aa16ace17a65006720ead26fa895a6e608377;这是阅读连续性的有效增量,尚不代表已安装 App 验收或整站改版完成。

动机

研究者从研究时间线打开旧决策,或重开已保存的结论链接时会遇到此问题。 同一问题有 20 条结论时,点击第 19 条原先会打开第 20 条;修复后读到第 19 条,返回仍保留展开的 9 条列表和原入口焦点。 窄屏打开长结论从标题开始,来源说明收进可聚焦的帮助入口,默认保留简短只读状态。 本 PR 不安装或重启 App,不执行研究或模型,也不声称完成整个研究工作台改版。 已安装 App 的原始 Goal 验收、完整研究页改版及科学收益判断仍由原交付任务继续。

改动思路

复用现有结论选择、来源匹配与帮助组件;用稳定的原生展开容器保留列表,不增加第二份历史或展开缓存。 本次边界是既有研究阅读与来源提示,不扩展模型执行、持久化协议或已安装 App。 历史结论已有稳定身份,原来只是在时间线到阅读器的回调中丢失;直接传递比另建一套缓存更小。全景继续挂载,使原生展开状态和键盘入口保留。来源校验复用已有物理身份匹配,不把字符串变化当作来源变化;未知或不同来源仍清除局部选择。帮助入口保留完整权限解释,不承担执行动作。

下表是同一合成输入通过真实 HTTP/SQLite 的实测差异,基线 56cedb4c886d1fceaddea4113f4a1c56fa934aee 与当前 head 使用同一浏览器探针及相同依赖;不是模拟执行图。

操作 基线 当前 head
点击第 19 条 读到第 20 条 读到第 19 条
展开 9 条后返回 退回 3 条,焦点丢失 保留 9 条,回到原入口
相同来源别名重开 清掉书签 保留原结论
390px 打开长文 标题在视口上方 从标题开始

具体改动

关键代码讲解

  • goal-research-timeline.tsx:201 的 TrailList 从既有事件取 result_id,把它和问题 id 一起传递;没有从标题或展示顺序猜身份。
  • goal-research-history.tsx:291 的 choose/select/closeReader 复用既有结论选择、URL、返回焦点。稳定的全景容器保存展开列表;显式选择缺失结论仍显示不可用,问题级入口仍可默认读最新结论。
  • dashboard-page.tsx:3426 的 commitLoadedStatus 复用 statusSourceForUrl 判断同一声明来源的别名;不同物理来源仍清理选择,原有请求栅栏和恢复路径不变。
  • personal-workspace-page.tsx:2982 只调整现有只读页尾:简短状态、共享 ContextHelp 与原权限说明。中文和英文同时修改;普通会话输入框及已链接来源的分支未增加权限。

规范依据为 docs/development/design.md,固定版本 56cedb4c886d1fceaddea4113f4a1c56fa934aee。逐条映射的评审索引:research-reading-context 对应准确历史结论、重开与返回;research-source-isolation 对应同名 Goal 的物理来源隔离;explanations-on-demand 对应完整说明的悬浮、键盘与点按;populated-page-review 对应长内容、展开项和桌面/窄屏整页检查。以上在本次阅读边界均已实现;完整 App 和更广研究页要求保留原任务,不从截图推断完成。

本 diff 为 7 个产品文件、4 个既有验证场景和 4 张公开合成截图,文本增加 80 行、删除 21 行。复用检索覆盖基线和 head 的选择、来源与帮助调用链。类型变化局限于前端回调,沿用既有 Selection.finding 和事件身份,没有新持久化词汇或并行 Python 决策 owner。

对主干的风险

最重要的反例是把别名保留误做成跨来源保留,以及最新结论测试掩盖旧结论错误。真实打包验证已覆盖同名 Goal 的不同物理来源、读取失败与恢复、显式缺失结论、单条/20 条结论、原文/译文、版本与引用返回、键盘/触屏、刷新及 Back。比较探针两边来源字节均不变、写入尝试均为零;拒绝分析的测试仅故意注入可用信号,真实 fixture 仍拒绝 POST,未调用模型。

类型与 Chat 构建、来源目录、普通交互 runtime、CSS token、双语 diff 和卫生检查通过。预合并 4 个直接及 8 个所选自动检查无失败;4 个 PNG 的手工隐私/视觉留置已逐张核对精确提交像素、合成来源和 PNG 元数据,无私人内容或文本/EXIF 元数据。自动扫描不能据此声称检查过图像。额外的全工作区健康加 PNG 文本输入诊断仍非通过:包含本 diff 之外的 authority 诊断及不受支持的二进制文本输入,没有计为本次通过项,也未放宽规则。探针早期的命名空间等待条件与语言选择器设置错误单独保留,修正后同一基线/head 探针完整运行;不冒称产品故障修复。依当前策略不查询、轮询或等待 CI。回滚只需撤销这一个前端提交,无状态迁移。

我的整体评价

长程维度判断为 preserved:原始研究记录、负结果及版本仍完整可读,修复的是后续重开与取阅连续性,不据此声称实验收益、采用或完整成本改善。用户体验判断为 improved,限于本次实际核验的阅读流程:一次打开正确结论,返回无需重新查找和展开,未增加用户陈述、确认或准备轮次。已检查长标题、重复正文、反驳与待检查状态的完整研究页;默认只读说明不再占一整段,选中正文优先,展开后的来源和完整原文仍可读。 未核验已安装 App、私人原始 Goal 或原生 WebView;窄屏来源芯片的既有截断仍在,不将本次阅读修复当作整站视觉完成。

复用现有结论选择、来源匹配与帮助组件;用稳定的原生展开容器保留列表,不增加第二份历史或展开缓存。 本次边界是既有研究阅读与来源提示,不扩展模型执行、持久化协议或已安装 App。 规模和维护成本与可复现问题相称;稳定原生容器已完成同域简化,未增加自定义缓存或新框架。四张 PR 截图及桌面/390px 下方来源与完整原文的展开视图均已检查。可批准此精确版本;评审不授予合并或安装权,仍须当前 change-quality 资格及精确 head 的 merge-readiness。相关 saved-report、标签和空 Chat 提示各自保留原边界,不以无文本冲突宣称后续集成通过。

English verdict: APPROVE — 6b8aa16ace17a65006720ead26fa895a6e608377. Exact historical findings, saved reading context and narrow heading visibility are verified through identical immutable-base/head packaged UI with real isolated HTTP/SQLite. Source separation and zero-write behavior remain intact. Synthetic visuals reviewed; installed App and broader research acceptance remain unqualified. CI was not consulted; merge qualification is separate.

@huangruiteng
huangruiteng merged commit e905d34 into main Oct 26, 2026
25 of 31 checks passed
@huangruiteng
huangruiteng deleted the codex/research-workbench-refinement-20261026 branch October 26, 2026 05:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants