Repository navigation
feat(workspace): polish research history reading - #7253
Conversation
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
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)
非阻塞建议 [P3]:用实际文本可见性验证展开阅读,而不是精确CSS属性;位置见当前断言。没有发现阻塞性的功能问题。
动机
研究页读者需要从完整研究历程中找到决策、失败和原文,并在手机上读完整问题。 原视图的控件、阶段、决策列表与读取异常缺少统一层级;原候选还把决策卡片标题截成两行。现在保留同一记录和阅读入口,按3/2/1列排列决策,标题完整换行,失败保留记录并提供原位重试。 当前打包页面可读取三组315条原记录,单Goal的76/76完整读回、分页、切换、返回和异常恢复成立;完整决策标题及390px展开阅读已实际检查。 仅资格化本PR的打包展示与只读恢复,不资格化已安装App、真实用户理解收益、模型分析准确性或研究因果效果。 已安装App/原生WebView、真实研究者理解和科学效用未验证;全版本持续采用与整体2.0验收仍开放。
读者需要保留原问题、否定条件、失败与引用,而不是先处理界面或重新配置已知来源。本次的有用增量是把现有读取与恢复路径做成一个可读的页面,并让默认决策标题不再丢掉末尾条件。我的结论针对实际读回,不将作者提供的截图或“已完成”声明自动当作验收。
改动思路
复用既有研究组件、read controller、引用与Goal配置owner足够;局部refresh和focus函数无需新状态、协议、配置或后端。 本PR交付可独立检查并可撤销的研究阅读层级与读取状态;LoopX2.0整体、安装采用与研究效果继续由原产品和研究owner验收。 研究记录仍由原typed history owner提供;组件只改变排版、空态和错误呈现。刷新复用原revision推进与analysis.read,错误不会把已加载的76条记录清空;空态按钮只滚动并聚焦现有研究模式控件,不开启模式或启动模型。
我比较了不改、只增加说明、在现有组件整理层级和另建工作台四条路径。前两者不能解决控件、长标题和恢复的可发现性;另建页面会增加导航和第二状态owner。当前局部路径足够。原有意图和授权之上没有新增用户问答或确认,查看原文和返回仍用现有入口;刷新重试的额外操作只在读取失败时需要。
具体改动
完整base-to-head为19个路径、+123/-45,含五个展示文件、一个既有场景文件和13张公开PNG。先完整检查了7b76,再逐项检查到3efe的七路径变化:实际产品改动只有决策标题的一条CSS规则,其余是四张卡片对照图及两张更新首屏。旧版捕获按原修订保留;当前构建、完整history和premerge重新执行,没有将旧头批准继承到新头。
先验依据是44050e953aa21f6deb932935fa158b5e415894c1的设计契约,在diff前读取,当前主工作区文本与该版本SHA完全相同。attention-and-reading在原入口、统一控制及完整标题上implemented;truthful-records-and-recovery在真实记录、负状态、失败保留与重试上implemented;populated-and-narrow-readback在整页、下半部、来源和390px展开阅读上implemented。安装/科学效果不属于此切片完成声明,没有为了匹配实现改写规范。
关键代码讲解
GoalResearchHistory:371提取原刷新步骤;没有新调度、调用权限或写入。375行的空态操作只定位已有Goal配置入口,419行的错误面板保留记录、技术细节和原位重试。research-history.css:195调整决策列表与响应式列数。198行的标题现在用正常block和overflow-wrap;公开原标题不被重新命名、推断或缩写,辅助变更预览仍有既有原文入口。research-assessment open规则:53与analysis-episode的同类规则显式清除clamp/overflow。独立前后对照表明展开文本原先也完整,这部分应理解为样式明确化,不能计作新修复收益。researchHistoryScenario:1155仍走真实HTTP与隔离SQLite;完整场景验证分页、跨Goal、引用、恢复与零页面写入。1158行的属性断言保留下面的P3建议。
对主干的风险
实际复跑当前head的类型检查、桌面与Chat生产构建、CSS token检查、完整打包research-history均通过;三个公开checkpoint合计315条,选中Goal完整76/76。标准premerge的四项直接和十三项选中命令通过,原始总门仍因13张图片为manual_review_required。我逐张检查了这些PNG的像素、尺寸和块元数据,未见嵌入文本/EXIF或私人运行内容。当前CQR cqr_674df767a6ad52c202e7为pass并保留test_validation advisory,不能把它说成没有改进项或合并授权。按现行策略没有查询、轮询或等待远端CI。
对最强反例做了额外同源对照:204字长问题在两版指标阅读为280/280px、深度阅读为381/381px;相同四问题结构的edge-aware展开均为80/80px且原文完整。故未复现“展开被两行截断”,不能拿旧computed clamp=2、新none作为功能差异证据。P3:这里把完整可见性的断言换成三个CSS属性,不能单独证明问题从截断变成完整。同一真实SQLite/HTTP注册的四问题夹具,在390px下,旧44050与当前3efe的edge-aware行都已open且clientHeight=scrollHeight=80;204字长问题的指标/深度阅读也分别为280/381px,两端均完整。旧版display:block已经取消实际两行裁切,尽管计算属性仍写2。建议保留可观察的文本/裁切边界断言,并将不能复现的“展开丢字修复”改成样式显式化;公开before-expanded图也应标明真实展开状态。这不否定当前完整卡片标题修复和其他已验证布局,因此作为非阻塞P3。
这与新决策标题修复是两回事:当前真实卡片标题80px完整;临时施加原7b两行规则后,clientHeight为40、scrollHeight仍80,移除该展示探针立即恢复80/80。来源字节和后端记录均未改,读取后source_unchanged=true、mutation_attempts=0。这个独立可见性oracle能区分实际裁切与仅属性变化。先前Ego定位失败来自把隐式命名section当显式role属性,以及未展开逐片段父details;按当前DOM修正后正常,未作为产品失败。
语义与CI对齐
这是明确披露的默认展示调整,没有default-off声明或新能力开关。新class、readFailure和局部refresh都是展示语义;记录、图边、分析权限、Goal/来源隔离、当前状态和引用owner不变。失败技术详情按需读取,重试保留原服务边界;空态聚焦不等于启用功能。当前测试全部通过,不把历史T103的其他scope失败硬套给该UI切片;现有bundle大小警告保留。
我的整体评价
APPROVE,交付判断为justified_increment。复用既有研究组件、read controller、引用与Goal配置owner足够;局部refresh和focus函数无需新状态、协议、配置或后端。 本PR交付可独立检查并可撤销的研究阅读层级与读取状态;LoopX2.0整体、安装采用与研究效果继续由原产品和研究owner验收。 long_horizon在已测读路径上preserved:多次分页、切换、返回和失败恢复没有丢原记录或新增执行;user_experience的现有任务路径preserved,完整决策标题和错误恢复的可发现性在实际页面成立,但不把布局偏好解释为统计上的理解收益。
已检查315条公开研究记录和合成长问题的整页:首屏保留真实Goal、76/76覆盖和研究导航,阶段与负状态可扫读;决策下半部的完整标题及现有阅读器可达,手机展开正文可读。 未验证范围:已安装App/原生WebView、真实研究者理解和科学效用未验证;全版本持续采用与整体2.0验收仍开放。 已检查正常、空态、加载、异常及完整来源;长标题和问题以原文阅读,方法/哈希仍可按需读取。默认列表更宽松,手机仍需向下滚动读决策,这一有限展示成本可直接观察;本次没有新增必须配置或确认的步骤。P3验证表达建议保持公开,但没有把不存在的新运行故障当阻塞项。结论仅绑定 3efe6ed729a17afffaba30768aedc0d145504c93,合并仍需当前readiness和独立维护者权限。
English verdict: APPROVE — 3efe6ed729a17afffaba30768aedc0d145504c93. The existing read journey preserves source records, recovery and authority; decision titles now wrap fully. Current build/type/CSS, complete SQLite/HTTP history and four direct/thirteen selected checks pass; all thirteen public images were inspected. One nonblocking P3 asks for an observable expansion oracle and accurate baseline wording: both versions already show the tested expanded questions fully. Installed adoption and user/scientific benefit remain unqualified.
Goal And Delivered Outcome
real_entrypoint,regression_parity, andmanualrows below qualify these results.main. No issue is closed by this PR.Author Declaration
Implemented against
docs/development/design.mdanddocs/product/releases/v2.0.0.mdat base revision44050e953.goal-research-history.css,goal-research-analysis.css,goal-explore-results.css,goal-research-progress.cssnpm run build --prefix apps/presentation/dashboard; CSS token check; desktop/mobile screenshot reviewgoal-research-history.tsx;examples/personal-workspace-browser/research-history.mjsLOOPX_PERSONAL_WORKSPACE_SCENARIO=research-history node examples/personal-workspace-browser-smoke.mjsorigin/mainbefore submission. Deliberately excluded live model execution, scientific/benchmark qualification, unrelated bundle optimization, and full-repository refactors.Scope And Continuation
Validation
07d1e4f99(implementation);7b76c23dcadds only the public screenshots attached below.staticpassednpm run build --prefix apps/presentation/dashboard: TypeScript, desktop Vite build, and packaged chat bundle passed. Existing large-chunk warning remains non-blocking and unchanged in scope.staticpassednpm run check:css-custom-properties --prefix apps/presentation/dashboard: 31 stylesheets, 60 defined tokens, no undefined references.real_entrypointpassedLOOPX_PERSONAL_WORKSPACE_SCENARIO=research-history node examples/personal-workspace-browser-smoke.mjs: complete scenario passed on the rebased implementation, including desktop/mobile, pagination, Goal isolation, refresh recovery, empty-state focus, citations, and expanded questions.real_backendpassedregression_paritypassed44050e953reproduced the expanded-mobile-question assertion failure and visible two-line clamp. Head07d1e4f99passed the deterministic unclamped-state assertion and the complete scenario; before/after screenshots are included.manualpassedSee validation disclosure guidance.
Frontend / Visual Evidence
44050e953— desktop, mobile, expanded mobile question.07d1e4f99— desktop, mobile, expanded mobile question, loading, empty, and refresh failure.Before / after comparison · 前后对比
Screenshot assets are pinned to
3efe6ed729a17afffaba30768aedc0d145504c93. Before captures show base44050e953; the desktop/mobile after captures were refreshed for the complete-title follow-up below. Original supplemental captures retain the earlier implementation boundary.Click an image to view its full-size original. 点击图片可查看原图。
Complete decision titles · 决策卡片完整标题
Follow-up
3efe6ed72removes the two-line title clamp from the decision trail. Titles wrap in full at the existing body size; long unbroken identifiers wrap inside the card. Supporting change previews keep their existing compact treatment and open the original reader when selected. No research records, analysis, execution or permission rules changed.7b76c23dc)3efe6ed72)Follow-up validation: built both the original and repaired packaged frontend against the same disposable read-only production HTTP owner and existing public checkpoint fixtures. Inspected the full viewport and decision section at both widths. All displayed long titles fit their content; nine decisions after “show more”, refresh/reload, keyboard opening and Escape closing remained usable. A temporary Chinese/unbroken-identifier rendering stress case stayed within its card without horizontal overflow; original source records were preserved and backend mutation attempts remained zero. No live model or installed-App adoption is claimed.
npm run build --prefix apps/presentation/dashboard, CSS custom-property checks and diff/RFC hygiene passed. The scoped standard premerge ran four direct checks and two selected catalog checks with no automated failures; six binary-image manual review holds remain for exact-head review. All six changed images were inspected for pixels, PNG dimensions and embedded text/EXIF metadata. This is author validation, not independent review or merge authorization.Type of Change
LoopX Area
Technical Direction
Shared-authority RFC fixture impact
Boundary Checklist
.loopx/,.codex/goals/, and liveACTIVE_GOAL_STATE.md).python3 scripts/check_rfc_bilingual.py --base origin/main --head HEADpasses, or no paired RFC changed.none.Signed-off-bytrailer (git commit -s).