Skip to content

fix(research): enter saved reports and preserve the first view return - #7337

Merged
huangruiteng merged 3 commits into
mainfrom
codex/research-reader-resilience-20261026
Oct 26, 2026
Merged

huangruiteng merged 3 commits into
mainfrom
codex/research-reader-resilience-20261026

Conversation

@loopx-agent

@loopx-agent loopx-agent commented Oct 25, 2026 •

Copy link
Copy Markdown
Collaborator

Goal And Delivered Outcome

Saved deep-report links left the account below the metrics, and the first Tasks → Research return reset the reading position. Enter the requested report once its source is ready, then preserve its position from the first view switch onward. Selected records and actively focused source controls keep priority; ordinary metrics-first reading keeps its existing entry.

  • Outcome basis: reproduced saved-link and first-return defects; no separate written feature specification.
  • Observable result: the account is visible after desktop/phone reload, and returning from Tasks retains the finding being read.
  • Intended base: main; one reviewable repair to the existing reading journey.

Author Declaration

  • Written by: model_agent — OpenAI Codex, GPT-6 family.
  • Implemented against: the reproduced defects, task-first delivery and whole-viewport guidance in docs/development/frontend-delivery.md and docs/development/design.md, verified target ec66345f7ecd826c166c9df45628ca52c3df15a2.
Criterion Disposition Owner Evidence
Saved deep URLs reach their account after hydration implemented GoalResearchHistory desktop/phone reload regression; failing-before check
First and later Tasks → Research returns retain position implemented GoalWorkspacePanels fresh-mount round trips at 390×844 and 1280×900; unchanged-owner negative case
Record and active-control focus retain priority implemented existing research focus/route owners selected-finding, source-selection and citation browser cases
Packaged reading and failure recovery implemented existing HTTP/store reader complete packaged research-history, including read-only and error cases

Self-check: inspected the changed owners and populated desktop/narrow viewports, reproduced the first-return failure before repairing it, and ran the checks below. No model generation, runner, scoring, persisted-state or authority change.

Scope And Continuation

Complete within saved-report entry and view-return scope. The initial child layout effect could run before its ancestor's scroll ref was attached, leaving the first view without a position listener. Subscribe after refs are ready; retain before-paint restoration and track the current tab in the layout effect. The existing Goal/source component key still isolates positions.

Bounded refactoring applied within the existing owner: separate subscription lifetime from per-tab restoration. No new module, shared vocabulary, configuration or second route owner. Explicit report-action focus remains because deliberate actions and automatic restoration have different selection priorities. Product comprehension and installed adoption remain unqualified.

Validation

  • Tested revision: bdc1ecc5b388c5504e7301d2033a63aa4bb80305; verified target/merge base ec66345f7ecd826c166c9df45628ca52c3df15a2.
  • Run state: finished.
  • Input classes: synthetic, public_fixture, authorized_private_read_only. Public images contain synthetic data only.
Check kind Result Evidence / limitation
static passed TypeScript; full Chat build and source bundle verification; staged/exact-head bilingual gate; diff hygiene
real_entrypoint / real_backend passed complete development research-history (187015ms) and packaged scenario (180830ms); disposable SQLite/files with production HTTP/process/read owners; synthetic provider, no paid model
regression_parity passed first-return oracle fails with the unchanged scroll owner; first and later returns pass at both widths after repair; saved-link, selected-finding and source-focus cases retained
manual passed isolated saved-report readback at both widths, first/later and rapid returns; source unchanged and zero mutation attempts; no installed App qualification
integration failed packaged goal-showcase still stops at line 121 waiting for the delivery refresh error to clear; the previously tested unchanged base has the same failure; later checks were not reached
integration failed workspace-view-recovery stops at line 23 because the manager message input is missing; reverting only the changed scroll owner reproduces the same failure before a Goal panel mounts; later navigation checks were not reached
static passed premerge: four direct, seven catalog and one public-text check; zero automatic command failures
manual blocked premerge exits 1: current change-quality receipt is stale and four binary-image review holds remain; exact-head independent review/readiness are still required

The complete research scenario covers report/experiment/episode navigation, citation returns, stale reads, source-selector keyboard focus, read-only permissions, failures/recovery, Goal/source isolation and both languages. The return oracle waits for the existing entrance animation and keeps its original 3px threshold. No new scientific effect, timing benefit or cost claim.

Frontend / Visual Evidence

UI impact: changed. The embedded initial-view captures are from the original packaged proposal 5106886f97cf03d456e9ea4187f92c7f1148ce5a, before from 56024f6607d70b5840e898023981ebe435237269. That composition is unchanged by the scroll subscription repair and was inspected again on the tested revision above. The new return cases verify retained position. No public preview deployment; synthetic captures are reproducible from the existing fixture.

Viewport Before After
Desktop, 1280×900 Before desktop After desktop
Phone, 390×844 Before phone After phone

Attention review: a report link opens with the account and explanations; returning from another view retains the reading point. Metrics/history remain navigable, with complete text, unknowns, competing explanations and source controls. No smaller typography or extra labels. Existing narrow source-chip truncation is unchanged.

Craft review: populated report viewports inspected, preserving desktop comparison columns and phone reading order. The two broader scenario failures remain disclosed; author inspection does not clear independent image holds.

Type of Change

  • Bug fix
  • Test update

LoopX Area

  • Public docs or presentation surface

Shared-authority RFC fixture impact

N/A: no authority or provider contract changes.

Boundary Checklist

  • Public text and image sources/metadata inspected; no private state, raw traces, credentials or local paths published. Independent binary review remains open.
  • No duplicated benchmark work or experiment launch.
  • Scoped to the reproduced reading defects.
  • No paired RFC changes; bilingual diff gate passes.
  • Before/after desktop and phone viewports embedded with capture revisions.
  • Every author commit is DCO signed off.

Author handoff only; no self-merge or auto-merge.

Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
@loopx-agent loopx-agent changed the title fix(research): open saved deep-report links at the report fix(research): enter saved reports and preserve the first view return Oct 25, 2026

@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 · max

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

动机

从保存链接重开研究汇报、并在任务页与研究页之间继续阅读的用户。

原来窄屏保存链接把报告正文留在首屏下方,首次切回研究页还会丢失位置;当前提交在来源就绪后进入报告,第一次和后续切换都保留原来的阅读位置。

在独立打包页面和真实只读 HTTP/SQLite 后端中,报告正文进入首屏,首次回返从基线约1209像素的偏移变为0;引用、失败重试和已选记录仍使用原有入口。

本次验收限于已存报告的进入、焦点与阅读连续性;不证明研究结论正确、用户理解收益、科学收益、正式安装采用或完整成本下降。

已存报告的有用性、真实安装态阅读与完整人机成本仍由原研究和产品验收负责,不能由这次布局及位置验证结清。

改动思路

报告焦点复用已有分析面板、URL 和来源身份;滚动位置留在既有 GoalWorkspacePanels,订阅生命周期与按页恢复分开,没有新增路由、配置或第二个状态 owner。

当前 PR 完成交付可独立验证的保存报告阅读修复;原研究结论、完整研究能力与正式安装资格继续保留在原有验收边界。

这里需要记住的是“这个阅读上下文已经进入过报告”,而不是再存一份研究结果。原有 URL 和来源决定读哪份报告,局部集合只防止后续刷新反复抢回阅读位置。订阅改到父节点 ref 就绪之后,页签变化仍在布局阶段恢复位置;一个监听器读取当前页签,组件退出时清理。来源、记录、引用和失败状态继续由已有分析读取器管理。

入口 当前行为
普通研究页 保持既有指标优先入口
保存的深入报告 来源就绪后进入正文一次
已选记录或正在操作来源控件 保留明确焦点,不自动抢回报告
首次及后续任务回返 恢复该页签已有位置
读取失败 保留上次正文,显示失败与重试

具体改动

独立依据是改动前的 docs/development/design.md,不可变修订 ec66345f7ecd826c166c9df45628ca52c3df15a2,相关章节已在看差异前阅读。A reading tab starts with its content、Keep scroll position across tabs、Scope every selection to its Goal and source、Populated Page Review 四项在本切片中 implemented:分别由报告直达、首次与后续恢复、原有来源/Goal 身份及明确焦点优先、真实整页和展开/失败状态验证对应。任务优先交付的依据也是原有读报告任务,没有把设置或创建分析当作完成结果。

关键代码讲解

  • GoalResearchHistory 把 Goal、读取来源和 pack 组成局部进入范围;来源仍在加载就等候,已选记录优先,已有活动控件也不会失焦。只对已打开报告的首次进入执行现有 panel 的 focus 与 scrollIntoView,之后的读取和页签回返不重新触发。
  • GoalWorkspacePanels 把监听订阅放在 ref 可用后的 effect,保留布局阶段的页签恢复。监听通过 currentTab 记录到既有位置表,外层仍按 Goal 和来源隔离,没有把一个来源的位置带到另一个来源。

全差异为两个已有 UI 文件、一个已有场景的28行补充和四张公开合成图,没有新 backend、CLI、配置、共享枚举或权限。最有价值的有界整理已经应用:把监听生命周期和每次恢复分开;继续抽取新框架或持久化滚动状态没有当前必要。

对主干的风险

独立用相同合成报告,在不可变主干与本头分别打包并连接真实 HTTP/SQLite、原生来源校验与文件。390×844 下,保存报告摘要在基线 top=1021.39,当前为438.39;首次往返最后一条结论的基线偏移1208.5px,当前0px。另在390×844和1280×900分别从新挂载检查首次和后续两次往返,保持原3px限制并等待已有动画,不扩大容差。只有已存分析材料是合成数据,没有执行真实模型。

延迟来源读取时,实际来源选择控件保留焦点;原文引用打开后可返回同一引用,深度报告保持打开。断网刷新显示“保留上次结果”和重试,连通后仍读回同一正文。三份隔离服务读回均为来源原字节不变、0次写入尝试。另检查公开315事件捕获中的76条记录与790字符选定原文,刷新后原文一致,窄屏保持16px正文、未知和转向/停止/保留决策可读。

本轮构建及 TypeScript 检查通过,研究 HTTP/process API 19项通过。带原 Goal 策略的 premerge 中4项直接检查、7项 catalog 和1项公共文本扫描通过,当前 CQR 为 valid/pass。完整 premerge 仍是 manual_review_required:四张二进制图片保留独立检查要求,不能写成自动扫描通过。我逐张查看像素并检查 PNG 元数据及来源,均为公开合成内容、无文本或 EXIF 隐私元数据,和正文注明的510修订捕获完全相同;当前提交的实际桌面、窄屏也另行查看。

语义与 CI 对齐

只增加局部瞬时阅读意图,没有新协议或结果分类,也没有把存在报告解释为已采用或已验证。未查、未等 CI。作者另列的概览刷新失败位于未改的验收/交付读取路径,管家输入失败出现在 Goal 面板挂载之前;本轮没有复跑这两个完整场景,也没有宣称它们已修好。它们与正式安装态和完整研究资格继续保留边界。

我的整体评价

当前 bdc1ecc5b388c5504e7301d2033a63aa4bb80305 未发现阻塞性代码问题,结论 APPROVE,交付判断 justified_increment。long_horizon=improved:重复回返和重读不再丢失这个阅读上下文;user_experience=improved:已请求正文直达,明确操作优先,失败可恢复。该结论只对应保存报告的有用阅读修复,不等于完整父研究目标完成。

当前桌面和窄屏已存报告直接以16px正文开场,观察、解释、竞争解释和未知分别可读;四张历史图的原修订与像素来源已核对,当前头另行实看,长记录展开后正文和决策仍可完整滚动读取。

未验证正式安装态、真实用户理解和科学或费用收益;作者列出的概览刷新及管家输入完整场景本轮未复跑。

设计方向和代码规模相称,复用已有 source/Goal/pack 与错误恢复 owner。四张图的独立检查和合并权限仍与代码评审分开;本次不合并、不安装,也不启动研究或模型。其他操作者应依据当前头、保存报告和首次回返反例复验,不能继承旧头的审批。

English verdict: APPROVE — bdc1ecc5b388c5504e7301d2033a63aa4bb80305. Saved report entry and first/later tab return are independently validated against immutable main with real packaged HTTP/SQLite reading. Focus priority, retained-result recovery, original source bytes and 19 API tests pass. CQR passes; four native binary-image manual holds and maintainer merge authority remain separate. No installed adoption, comprehension, scientific benefit or cost reduction is claimed.

@huangruiteng
huangruiteng merged commit 34d3d6a into main Oct 26, 2026
26 of 32 checks passed
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