Repository navigation
refine(frontend): replace repetitive explanations with contextual help - #7264
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>
…lyphs Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
…d target 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 · max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机
在 LoopX 前端阅读目标进展、研究结果和设置的用户。此前同一页反复解释快照覆盖、空列表和未知值,读者需越过说明才能找工作与结果;现在真实读数保留,辅助说明在所属区域的语义图标按需读取。桌面与窄屏能先找到当前工作、测量和设置入口,再通过悬停、聚焦或点按读完整说明;读取帮助不触发执行。不改变模型、实验计分、原始消息与证据、Goal 写入授权、调度额度或迁移执行规则。
以变更前契约 docs/development/design.md,版本 a6f28057b49fe03bb234fa6ce1bac5d61df0c58f 为评审依据,逐项核对 earn-the-users-attention、explanations-on-demand、populated-page-review 和 task-first-delivery。前两项要求主内容优先、详情按需;后两项要求丰富内容与真实后端旅程。更严格的图标默认来自维护者本轮明确要求,不能只以本 PR 新写的规范自行证明通过。已安装 App 的最终采用回读和用户理解收益尚待产品交付验证;打包浏览器与合成数据不能代替它们。
改动思路
保留共享 ContextHelp、原设置路由和 typed Goal owner;展示层承担折叠与布局,迁移与执行继续由现有 owner 决定。无需新配置、提示词分类器或第二份状态。本 PR 交付全前端辅助解释、稳定本机设置入口及一个冷态只读回显修复;已安装采用是随后同一产品交付的回读步骤。
原方案只修截图两处无法覆盖共同入口;直接删除说明会丢失未知和权限边界,全局 CSS 隐藏、按句长分类或新建帮助服务也不合适。这里让布局先表达标题、读数和控制关系,再复用原生 popover 读取完整解释。ContextHelp 保留默认 Info,可选择适合当前事实的符号,点击不传播给外层折叠;解释用正文大小而不是继续缩字。界面没有新增配置、请求来源或持久状态。
| 路径 | 原问题 | 本次处理 |
|---|---|---|
| 概览、任务、研究、成果和设置 | 同一覆盖、空态、方法解释多处重复 | 保留实际值和完整正文,所属标题/读数旁读取完整帮助 |
| 本机设置与原实验存档 | Goal 只读误挡本机入口 | 根据宿主判断入口,选中 Goal 后仍遵守其只读限制 |
| 冷态所有权读取 | 已注册但未迁移,被当作目标无效 | 只投影已有 canonical=false;不读旧策略、不准许迁移写入 |
具体改动
ContextHelp 是唯一帮助交互 owner,仍使用浏览器 top layer、Escape、外侧关闭与原焦点路径。GoalVitals 把真实值和完整解释分开,已知零与未采集保持不同,部分记录也不会被标成不可用;GoalAcceptanceObservationCard 保留实际缺口、限制数量、完整要求与检查结果。研究范围、原生测量、采用增量、语言和原文证据均继续来自原 typed owner,未运行模型或 benchmark。
设置页、能力中心、Lark 与私聊面板、团队结果、通知、原生工作会话和 Dashboard 研究展示的说明复用该入口。实际投递计数、失败、输入约束、必要授权与执行后果仍直显,不因旧 CSS 名为 hint 就隐藏。导航保持独立滚动的长 Goal 目录和稳定页脚;完成一次外侧指针动作才关闭,内部空白、文字选择、拖动、滚动与输入不误关,父层 Escape 在内层帮助之后处理。
GoalOwnershipRequestMixin._ownership_readback 先核注册身份,只接住 CanonicalAuthorityRequired 并返回已有未迁移字段;其他异常继续走原错误/恢复 owner。十二个真实 HTTP File/SQLite 用例覆盖这条正向读取、禁止冷态预览写入、未知 Goal、provider 故障,以及原备份、CAS、重放和未结算 lease 防护。此前 cold settings 保留的 400 失败,由该明确修复解决;原末尾 console-error 断言没有删除。
对主干的风险
最强风险是机械移动段落时把实际状态、操作后果或用户正文也藏掉。因此逐个消费者核对完整 diff,并在 200 个任务、30 个长 Goal 名称、重复问题、未知/负结果和只读混合状态中复核默认与展开页面;不是把“字段仍存在、没有横向溢出”当作可读结论。私密会话未作公开截图,13 张公开图均来自合成场景,逐张视觉检查并检查 PNG 元数据。说明读取没有执行、模型或写入副作用。
本地 TypeScript、完整 dashboard/Chat 构建、CSS、Python Ruff、真实冷态设置、研究历史/搜索/语言/原生结果、通知及管家范围、导航/焦点/点按和相关单元合同通过。标准 premerge 的 6 项 direct、19 项 selected 检查无失败;13 项二进制图像 hold 由本次逐图视觉审查记录解释,精确 CQR cqr_c96c97b1ce5409cd58f2 有效。广域本机健康检查的既有未迁移 Goal 与二进制读取限制单列在 PR,不冒称为源码检查通过。依当前 wait_for_ci=false 策略未查询、轮询或等待远程 CI。
我的整体评价
对当前 6189cf05368641b901553f312c5d4b5145924ec1 的完整范围给出 APPROVE,属于可独立集成的真实增量。保留共享 ContextHelp、原设置路由和 typed Goal owner;展示层承担折叠与布局,迁移与执行继续由现有 owner 决定。无需新配置、提示词分类器或第二份状态。本 PR 交付全前端辅助解释、稳定本机设置入口及一个冷态只读回显修复;已安装采用是随后同一产品交付的回读步骤。
完整页面的工作读数、原生测量和标题先于方法与限制;覆盖说明不再在摘要、空态和页尾重复。390px 的展开分析保留完整判读和证据,帮助使用正文大小且未遮掉父级返回路径。未认证所有设置目录、原生 macOS 输入法或触摸硬件,也未进行研究者理解实验;实际安装读回在合并后的同一交付继续。不会把合成截图、规范加载或测试数等同于实际使用收益。方法、覆盖与来源可以完整读取,原始分析和必要错误并未因默认更安静而消失;本轮没有发现需要阻断的新增正确性或权限问题。保持已有会话、任务和证据 owner,后续实际 App 回读沿原交付继续。
English verdict: APPROVE — 6189cf05368641b901553f312c5d4b5145924ec1. Reuses the existing accessible help, settings and typed ownership owners; preserves primary content, unknowns and write guards. Local real-path/negative checks and exact-scope CQR passed. Synthetic packaged visual evidence is separate from installed adoption and human comprehension. Remote CI was not consulted.
概览、任务、研究、对话、成果与设置反复堆叠覆盖、空态和方法说明,遮住了实际内容。现在这些辅助解释集中到所属标题、读数或控件的小图标,悬停、键盘聚焦和点按均可读取完整说明。实际数字、用户内容、原始证据、权限后果和错误恢复继续直接呈现。
The frontend uses the shared contextual help control for auxiliary explanations, including partial/unavailable snapshots. The design standard now requires this consistently and distinguishes primary readouts from optional explanation. Help is body-sized, accessible on hover/focus/tap and closes without triggering its parent disclosure or an operation.
Settings stays reachable from an archived Goal when the host is editable. The footer has a compact search control; outside-pointer dismissal preserves focus and avoids click-through. Selecting an archived Goal still blocks Goal edits. A real cold-storage check also exposed a pre-existing error: registered unpromoted Goals were reported as invalid targets. The read transport now returns the existing unpromoted state; migration/writes remain denied, and provider outages remain errors.
Validation and limits
loopx checkdiagnostic remains nonzero for two existing unmigrated local Goal contracts and its unsupported binary-image reads; it is not claimed as a passing PR check.Visual evidence
Synthetic data only. Baseline navigation:
c10d8c2; after source:6189cf05368641b901553f312c5d4b5145924ec1. The later transport fix does not change these rendered UI captures. The research views use the production HTTP reader and isolated synthetic sources, without running benchmark jobs.The default partial/empty Overview keeps explanations at their owning regions:
Explicit archived Goal remains read-only