Repository navigation
fix(workspace): keep source state and folded actions readable - #7376
Conversation
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 · effort=max
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机
在手机上阅读研究或从折叠输入框打开快捷操作的用户。 来源名原先挤掉“只读”,快捷菜单原先被裁到屏幕外;现在限制直接可见,完整说明按需打开,同一菜单中的操作可点。 默认页保留简洁读数和清楚的只读状态;请求详情完整可读,折叠输入框的快捷操作在窄屏可到达。 本次不改变来源权限、模型调用、预算、持久状态或研究指标,也不代表已安装生效。 真实安装版的完整阅读/引用往返和真实输入归因仍沿原任务继续。
这是对既有可读工作台的完整局部修复,不能据此宣称整个前端、研究效果或正式 App 验收完成。独立基线重现了来源限制被裁掉,以及元素存在但快捷操作无法点击;仅检查文字和 DOM 可见性会漏掉这些问题。
改动思路
沿已有来源标签、ContextHelp和ComposerActions修复展示;删除旧内层定位,让一个现有面板负责滚动与关闭,避免新状态、配置或第二套菜单。 仅修复共享来源状态与折叠菜单的可读/可达性,并补原有整页回归;分析语义、原生安装与真实归因保留原边界。
不改动来源权限判断、消息发送、配置、模型、预算或证据归属;不增加导航、设置步骤、必须确认或提示墙。只增大徽标宽度仍不能提供触屏/键盘说明,单纯增加 z-index 也无法越过内层滚动裁切。因此保留共享帮助和现有菜单 owner、删除旧定位,比加入新组件或固定偏移更合适。
具体改动
基于 设计规范,spec_ref docs/development/design.md,spec_revision 55792873b96727c09f8cbf2d56d8ca7d2659e22b,逐项核对 explanations-on-demand、research-workspace、forms、populated-page-review。
ChannelHeader.runtimeControl 为同一只读来源复用 Eye + ContextHelp;单独名称 span 承担省略,只读状态不参与收缩。删除132px窄屏限制,使用既有主题 token。名称与状态仍来自原 typed source,完整解释没有删改。
折叠菜单样式 删除旧内层弹层及重复分组规则,现有 ComposerActions 只保留一个有高度边界的滚动面板,折叠加号在右侧时面板靠右。展开输入框的原 owner 和操作 callback 均保留。
原 research-history 新增可见文字边界、中文/英文帮助与 Escape 焦点检查;原 goal-showcase 按“刷新快照”定位真实恢复操作,保留错误/恢复原断言,再以 trial click 和原命中判断验证快捷项,而非用 isVisible 代替可操作。没有另建一次性公共脚手架。八张公开截图均来自合成资料,逐张检查像素、来源和 PNG 元数据。
对主干的风险
风险集中在共享头部的空间和折叠菜单定位。已比较桌面1440与390、中英文长名称,检查完整帮助、正常来源与只读来源、失败重试、键盘/触摸、原始证据和后续返回。来源基线中限制文字右缘203.27超出徽标右缘146;修复后在徽标内部。菜单基线 x326、宽306,390屏幕上没有命中;修复后的同一操作通过 trial 和命中检查。
完整打包 research-history 180862ms、goal-showcase 3275ms通过,TypeScript/打包、CSS token、RFC/差异及本地 premerge 的4项直接检查和8项选中检查没有自动失败,CQR有效。原先错误的首按钮定位及基线真正菜单失败保留,不把早期失败改写成通过。前者已改为实际操作名称,后者由删除重叠布局修复。CI依当前策略未查询。八张二进制图仍是自动 manual_review_required,此处人工检查不冒充自动图审或授予合并权限。
我的整体评价
结论 APPROVE,准确 head 2694ff6091f1749323ebda50e410cf8db1622680。交付判断为 justified_increment;long_horizon 为 preserved,user_experience 为 improved。已分别检查默认研究页、完整来源帮助、长名称英文页和窄屏快捷菜单;主要读数与未知状态没有让位给说明,展开文字完整,快捷操作由不可点变为可点。另读当前完整研究回归的长问题/混合判读及下部证据,未把无溢出断言当作视觉结论。
代码量与问题相称:一套来源标签、一套共享帮助、一套既有菜单;没有新增持久状态、协议或兼容分支。已应用同域可逆简化,删除重复弹层定位。没有 default-off 声明或新的 authority/状态语义。正常浏览、帮助和菜单打开仍不调用模型、不启动工作,也不改变未知、失败和实际来源。
尚未核验运行中的原生 App 采用本提交、真实私人 Goal 全部往返、真实模型输入归因或长期收益;截图及后端状态均为合成隔离验证。 该限制保留在原研究与安装验收中;本次评审仅认可经验证的源码/打包可读性改善。首屏与前后比较直接位于 PR 描述,普通方向内细化无额外确认轮次。
English verdict: APPROVE — 2694ff6091f1749323ebda50e410cf8db1622680 fixes clipped read-only source state and unreachable folded actions through existing UI owners. Paired baseline/head browser evidence, full packaged research/showcase regressions and local checks pass; eight image holds were manually inspected. Installed/native and real model attribution remain unverified.
|
Post-merge readback: immutable merged source |
…al title loopx-project#7376 replaced the badge's tooltip with a ContextHelp whose accessible name is "<source> · <read only>". When the Goal title already names the source the visible label is deliberately omitted, so that name and the disclosure heading repeat a title already on screen and announced to assistive technology. The shipped SSR contract then fails in the required chat-bundle-browser step, which keeps merge-gate red for every PR whose classification runs core tests. Name the help by its purpose when the source is already the Goal title, keep the source in the on-demand disclosure, and scope the smoke assertion to the badge's persistent label and visible text instead of a raw HTML slice that now swallows the hidden panel. Fixes loopx-project#7378 Signed-off-by: JasonBuildAI <jasonbuildai@users.noreply.github.com>
…al title loopx-project#7376 replaced the badge's tooltip with a ContextHelp whose accessible name is "<source> · <read only>". When the Goal title already names the source the visible label is deliberately omitted, so that name and the disclosure heading repeat a title already on screen and announced to assistive technology. The shipped SSR contract then fails in the required chat-bundle-browser step, which keeps merge-gate red for every PR whose classification runs core tests. Name the help by its purpose when the source is already the Goal title, keep the source in the on-demand disclosure, and scope the smoke assertion to the badge's persistent label and visible text instead of a raw HTML slice that now swallows the hidden panel. Fixes loopx-project#7378 Signed-off-by: JasonBuildAI <jasonbuildai@users.noreply.github.com>
Research source names could clip the entire read-only restriction on a phone. The header now keeps that restriction visible, truncates only a long name, and opens its full identity and existing execution boundary through shared hover/focus/tap help.
The folded composer's actions also inherited a second popup inside its scrollable menu, placing phone shortcuts outside the reachable surface. Remove that obsolete inner positioning and align the existing single popup to its right-hand trigger. The showcase targets snapshot refresh by its accessible name and checks actual shortcut actionability. Permission, execution, model, measurement and persistence owners are unchanged.
Validation: TypeScript/verified packaged build, CSS token check, complete packaged
research-historywith disposable real SQLite/HTTP, and packagedgoal-showcaseincluding failed read/recovery, desktop/phone, English and motion. Paired source checks cover hover continuity, keyboard/Escape, touch dismissal, long names and unchanged source/no business writes. Prior baseline failures are retained; the corrected refresh selector exposed the actual clipped actions before repair. Eight synthetic images were inspected individually, including metadata; automatic image review is still a manual hold. Installed App adoption and real model/attribution qualification remain open.Visual evidence: before is immutable source
c7710a3(the same header/composer at baseline5579287); after is the product source in2694ff6091f1749323ebda50e410cf8db1622680. These are packaged browser captures of public synthetic fixtures, not live operating context. The long-name case changes only the synthetic source label.