Repository navigation
fix(frontend): polish long Goal titles and work-map navigation - #6264
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=xhigh
Approval conclusion (author-owned PR; GitHub blocks formal self-approval)
动机
用户打开一个名称和任务都较长的 Goal,想看清当前工作并查看其中一项的前序关系。 在同一组八项合成任务上,旧版选中事项让外层阅读位置移动 127px;新版保持 0px,完整桌面标题与右侧详情可以同时阅读。 已验证打包前端中的标题换行、正常字号地图、选中卡片可见、关闭与 Escape 返回焦点,以及 390px 手机完整 Goal 抽屉。 本 PR 不改变任务准入、验收、调度或账户,也不证明已经安装发布版本或完成真实纠偏与验收闭环。 真实纠偏、独立核验及原请求者采纳仍需原任务的业务证据;本轮交付其可读、可操作的展示阶段。
改动思路
布局与关系路径属于现有 TypeScript 前端投影,后端任务规则继续由原生 owner 负责;把尺寸和路径收拢到同一数据模块可以避免下一次改卡片时两处漂移。 当前 PR 交付 Goal 概览的可读与可导航展示,不增加任务规则、持久状态、权限或执行副作用。
入口仍是现有 Goal 概览:原生只读投影经过已有解析器,再由地图生成局部坐标,用户选择后看同一事项的来源与关系。关闭或 Escape 仅解除局部选择、返回卡片焦点。手机标题虽限制高度,但信息按钮直接打开现有 Goal 抽屉;不增加新页面、确认、重填或后端 owner。没有新功能开关、执行义务或权限。未来维护时修改同一份尺寸和路径规则;已移除原组件的内联排版逻辑。
具体改动
评审 head:017151a4c35c6f59acf31d4f5824abd8b99e84f7。接受的规范为 docs/development/design.md,固定于 df826263926651ab9c50acee182ef96e2a60ff4b;同时读了同版 docs/development/frontend-delivery.md,按其打包前端与真实状态回读边界判断。标准取自改动前规范,不根据补丁反推。
- Earn The User's Attention:已实现。长请求在可见标题只显示一次,补充进展折叠,执行入口保留;指标的未知、失败及尚未核验没有合并成成功。
- Goal workspace: a document, not a card grid:已实现。原目标/验收仍为主信息;地图与工具退为次级区域,详情在宽屏靠右,手机仍是一列。
- Accessibility:已实现本次触及的键盘、焦点和减少动态路径;Enter 选中、Close/Escape 关闭后回卡片。完整 Goal 抽屉在 390px 验证。未声称完成全产品 WCAG 审计。
- Responsive Behavior:已实现。卡片 236×136、字号不随 fit 缩小;宽图局部滚动,Reset 回 1×,1024px 标题换行,手机使用完整标题列表。
- Craft review:已执行。PR Visual evidence 用相同长请求、八项任务和两位 Agent 的公开合成工作区做基线/改后截图;真实 Goal 截图没有公开。目标仍是唯一主信息,次级区域后退,静态信息无闲置动画;错误与未知状态、状态字形及主题 tokens 由原有场景与 CSS 检查覆盖。
关键代码讲解
- goalWorkMapGeometry 接收已有布局与可用宽度,返回卡片坐标、分组边框及正交路径。相邻依赖走列间空白;跨列、反向、同列关系走组顶部空白。路径与卡片使用同一尺寸,输入事实不变。十二节点、三十六关系和四种宽度检查每段路径不穿过任何卡片。
- GoalWorkMapView 复用已有 current/all 与 relation 优先级;默认 1×,宽图滚动。选中后仅调整画布滚动以保持卡片可见,桌面不滚外层文档;手机才将焦点移到详情。关闭/Escape 返回原卡,来源不可用继续由既有 reader/refresh 恢复。
- GoalMastheadIdentity 保留原标题与读屏当前页身份,去掉可见重复;手机的完整内容按钮通过 ChannelHeader 回到 PersonalWorkspacePage 原有 Goal selection。
- GoalOverview 区分已有验收目标与“当前推进”,没有验收配置时不编造目标;补充进展可展开,执行按钮仍打开已有记录。ChannelHeader、i18n、composer 与相关 CSS 配套交付;新增浏览器回归接入已有 packaged CI 命令。
全量 diff 为 299 行增加、69 行删除,13 个前端路径、3 个测试/配置路径及 5 张无元数据的公开合成图。约 0.8MB 图片直接用于本 PR 的视觉评审;未提交构建输出、真实任务或私有日志。
对主干的风险
未发现阻塞项。最强反例是:简单“标题存在”测试通过,但实际被 CSS 截断;关系合法,但路线穿卡;详情可打开,却导致外层跳位。这里用渲染字号、标题与 footer 边界、外层滚动差、选中卡片可见及焦点实际位置挑战这些情况。新回归直接运行旧基线时在重复面包屑处失败,而当前 head 通过;并非只增加与实现一致的字段断言。
打包构建及 source 验证、delivery-review 的身份/负例/部分覆盖/验收关闭态和几何检查、CSS token 检查、语义 diff advisory、原生 risk-based premerge 均通过。完整 51 个 packaged 场景与最终受影响场景结果保留;新 head 仅多了视觉 PNG,前端与测试源码保持不变,当前 head 重新构建并通过 craft 回归。曾有构建后改 package.json 被 stale-bundle guard 拒绝;重建后原断言通过,没有放松检查。当前契约 wait_for_ci=false,未读取或等待远端 CI。
浏览器数据路线是合成 fixture;真实只读后端另行对照了 38 项任务身份与状态,未改活动 Goal。该回读证明来源一致,不能证明真实模型理解、任务新鲜度排序或请求者采纳。图更宽、桌面完整标题占更多高度,是规范允许以局部滚动保留可读性的代价。原生深色与完整 200% 可访问性矩阵没有在本阶段资格化。回滚仅需撤回前端源码后重建,无状态迁移。
我的整体评价
APPROVE(作者账户的 COMMENTED 自评)。长程工作维度 preserved:任务、验收、依赖、调度与继续工作规则未改,地图仍是投影;用户体验维度 improved:一眼识别目标、在原阅读位置看详情、关闭回到原卡、手机直接读完整 Goal。交付判断为 justified_increment:本轮完成可读与可导航阶段,真实纠偏/独立核验/采纳继续属于原任务,不因画面改善宣布 Goal 完成。
代码量与机制相称,相关未来整理已在现有 TS owner 完成;没有重复策略、传输协议、功能开关或迁移分支。新词只是局部 UI 文案,既有状态 vocabulary 复用。公开视觉、正负路径与真实来源回读支持此 head;合并与发布安装资格化另有门槛,本自评不授予合并权。
English verdict: APPROVE - 017151a; the existing read-only Goal workspace becomes legible and preserves inspection context; packaged interaction, source integrity, routing/negative contracts and risk-based local checks passed. Synthetic visuals are bounded evidence, not installed-release or live acceptance proof. Author-owned COMMENTED review; no merge authority.
loopx-agent
left a comment
There was a problem hiding this comment.
Reviewer: model_agent | gpt-6.1-sol | OpenAI | runtime_reported | xhigh
Request changes conclusion (author-owned PR; GitHub blocks formal self-review)
REQUEST_CHANGES — 精确 head 017151a4c35c6f59acf31d4f5824abd8b99e84f7。
[P2] 同步正式验证入口的旧标题契约。 npm run smoke:personal-workspace-packaged 在 workspace-theme.test.mjs:46 断言“长标题保持单行”时退出 1;本 PR 将桌面标题改为完整换行,却未更新该断言。该步骤位于浏览器 suite 和本 PR 新增 craft 检查之前,因此正式入口不会执行后续验证。相同断言在基线 df826263926651ab9c50acee182ef96e2a60ff4b 通过、候选失败;这不是既有主干故障。请按新的桌面换行、手机完整标题入口及无溢出契约更新/重命名旧测试,再完整运行该 packaged 命令。候选的 craft 检查单独通过,不能替代这条失败的必需验证链。
动机
长 Goal 的阅读者需要保留原始完整身份、读懂任务关系并沿地图继续阅读。先读基线 design/frontend-delivery、用户指南及 Goal workspace/W1 接受边界,再读整个 diff;不把 RFC 中未来快捷键、M2–M4 或 L1 live team 阶段当成本次义务。当前用户收益已复现,但正式验证链仍缺一个相关修正。
这次范围是已发布 Goal 身份、Overview 与只读工作地图的呈现,不包含 L1 live-team 验收或本机版本升级。 剩余缺口是正式 packaged 入口的旧标题断言,仍需与新呈现同步。 身份与地图呈现是可独立验证的用户收益;测试修正属于同一交付切片,不要求未来 live-team 阶段。
同一冻结 snapshot 的独立 base/head 打包浏览器观察:外围滚动 127px→0,候选 Escape 清选择,手机有全文入口、原始长标题可读、无横向溢出。
改动思路
复用原始 Goal drawer 和 TS presentation owner。GoalMastheadIdentity 删除可见 breadcrumb 重复,桌面完整换行、手机两行并提供全文按钮。GoalWorkMapGeometry 从既有 layout 生成同一尺寸的卡片与空白走廊折线;GoalWorkMapView 只调整局部滚动、选择和焦点。无需新增控制面、配置或操作权限。
规格映射:docs/development/design.md;spec_revision:df826263926651ab9c50acee182ef96e2a60ff4b。判据:identity, reading-position, read-only-map, validation-chain。
身份与地图呈现是可独立验证的用户收益;测试修正属于同一交付切片,不要求未来 live-team 阶段。
具体改动
21 文件 +299/-69(包含测试;以完整 Git diff 为准):身份/header/composer 文案、Overview 的低频摘要折叠、地图 236×136 卡片和 1× 起始比例、宽屏侧边详情、Close/Escape/focus return,以及共享几何和 packaged 检查。原地图状态、覆盖、关系、来源跳转、验收和 CLI/Lark owner 不变。
正路径:原状态→header/Overview→地图节点→本地选中/侧栏→关闭或 Escape→原卡片焦点。同一冻结 snapshot 的独立 base/head 打包浏览器观察:外围滚动 127px→0,候选 Escape 清选择,手机有全文入口、原始长标题可读、无横向溢出。两版均保留完整 DOM 标题、14px 字体、手机列表,不能把这些原有行为算作新增收益。负路径:正式 packaged 命令先触发上述旧断言,新增检查无法到达。
版本变化回读:原检查 head 00a0107 到当前 017151a 只增加 5 张公开安全的合成 PNG;逐张读图并核对完整增量,产品、测试与依赖源码均未改变。原完整正路径/51 场景证据因此可复用,但当前 head 的正式 packaged 命令已独立重跑,仍在相同旧标题断言退出 1。已有作者自评 APPROVE 未覆盖这条实际失败,不继承它的结论。当前 head 重新正常构建/source verify,并在正确的 packaged 模式单独通过 craft;正式入口失败仍保留。
关键代码讲解
GoalMastheadIdentity保留原始标题和读屏当前页身份,去掉可见重复;手机按钮通过原 ChannelHeader 回调打开已有 Goal drawer,无新增操作权限。goalWorkMapGeometry消费既有布局,将卡片尺寸、分组边框和正交路径放在同一投影 owner;关系事实和优先级不变,跨列/反向边走顶部空白。GoalWorkMapView的 selection/layout effects 仅滚动画布以保留选中卡片;closeSelection与 Escape 清局部选择并回原卡片焦点,不改任务准入或验收。
语义与验证对齐
复用既有只读状态 vocabulary,新增几何保持局部。当前义务是呈现变化与继承测试同步:CSS 完整换行而旧 theme smoke 强制单行;基线通过、当前失败。最小修复是更新旧断言及无溢出负例,再完整运行 npm run smoke:personal-workspace-packaged。
对主干的风险
独立通过:正常 Chat bundle 构建/安装到检查工作树/source verify、CSS token 检查、delivery-review 的关系/partial/unknown/export/验收负例、dense 几何、单独 packaged craft(1440/1024/390px、手机全文、阅读位置、关闭/Escape、reduced motion)、base/head 独立浏览器观察和 diff 检查。先运行 diff semantic advisory,再运行完整 semantic smoke,45 个 unresolved producer site 仍保留;TSX/动态构造不由空 advisory 证明。
失败:正式 smoke:personal-workspace-packaged 的 theme 契约;不能称 required validation 全绿。完整浏览器 runner 另行记录,不将绕过失败前置步骤的运行当成修复。当前 craft 补验起初遗漏 packaged 环境开关,辅助开发路由返回 Not Found;保留这些启动失败后按仓库原命令开关重跑成功,未修改测试/产品,不当作产品回归或正式入口修复。截图/拓扑使用合成公开安全数据;无已安装版本、真实 live team 或模型执行资格声明。CI 未查询、轮询或等待。
我的整体评价
产品收益和 placement 均成立,范围有界。future-facing pass 已把卡片尺寸/路由放回同一 geometry owner,避免 CSS/SVG 维度重复;无需额外框架。完整下游浏览器 runner 单独通过 51 个场景;正式入口失败仍保留。阻断只要求修复当前改动直接影响的继承测试并回跑正式入口。作者账户采用 COMMENTED 的 REQUEST_CHANGES 记录,不执行 merge。
English verdict: REQUEST_CHANGES
|
Reviewer: model_agent | gpt-6.1-sol | OpenAI | runtime_reported | xhigh REQUEST_CHANGES — exact head [P 2] Update the inherited title contract in the required packaged entry. MotivationLong-Goal readers need one complete identity, readable task relationships and stable reading position. Pre-change design/frontend delivery, the user guide and current Goal/W 1 contracts were read before the diff. Future RFC keyboard/lens or L 1 live-team stages are not acceptance gates for this bounded craft change. ApproachReuse the existing Goal drawer and TypeScript presentation owner. GoalMastheadIdentity removes visible identity repetition; shared geometry owns card dimensions and gutter routes; GoalWorkMapView changes only local selection/scroll/focus. No new execution or acceptance authority. Whole changeThe 21-file diff covers header/composer/Overview presentation, 236×136 cards at 1×, wide-screen side details, Close/Escape/focus return, shared geometry and packaged regression wiring. State, coverage, lineage, source navigation and CLI/Lark owners stay unchanged. The same frozen packaged snapshot changes surrounding scroll delta from 127 px to 0 px, adds Escape clearing and an accessible phone full-title entry. Complete DOM identity, 14 px text and phone lists already work on both versions; they are controls, not new benefit claims. Head transition: 00a0107 to 017151a adds only five public-safe synthetic PNGs, inspected individually. Production, tests, manifests, dependencies and accepted specs are unchanged, so prior full-path evidence remains applicable. The formal packaged command was independently rerun at this current head and still exits 1 at the identical title assertion. The existing author-owned APPROVE is not inherited. The current head was normally rebuilt/source-verified and passed standalone craft in the repository-required packaged mode. Three auxiliary attempts omitted the packaged environment flag and returned Not Found; those launch failures were retained, then the exact mode was corrected without editing product or tests. The formal entry still fails. Risk and validationIndependently passed: source-packaged build/install/source verification, CSS tokens, delivery-review/coverage/export/acceptance negative cases, dense geometry, standalone craft across 1440/1024/390 px and reduced motion, independent base/head browser observations and diff checks. Diff advisory preceded full semantic smoke; 45 unresolved producer sites remain, with unsupported TSX/dynamic syntax explicitly excluded from advisory claims. The required packaged entry fails as described. Separately running downstream tests does not make that entry green. Status/topology are synthetic; no installed-release/live-team/live-model qualification. CI was not queried, polled or awaited. Overall assessmentUseful and proportionate presentation improvement, blocked on the directly affected inherited validation contract. Future-facing refactoring already consolidates dimensions/routes in the existing geometry owner; no new framework is needed. Author-owned COMMENTED records REQUEST_CHANGES; no merge performed. Specification mapping: docs/development/design.md; spec_revision: df82626. Criteria: identity, reading-position, read-only-map, validation-chain. English verdict: REQUEST_CHANGES |
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>
Signed-off-by: LoopX Agent <337587101+loopx-agent@users.noreply.github.com>
|
Validation correction and follow-up: the earlier Complete qualification also exposed an earlier feedback timer clearing a newer pending refresh. The focused fix is #6273, exact head The merged full-request improvement keeps the exact source/retry behavior and renders long requirements as body paragraphs. Public synthetic comparison:
|



Long Goal requests repeat across the header and input while map titles clip, fit zoom shrinks text, and opening details interrupts the reading position. This change makes the existing Goal overview readable at desktop and phone sizes without changing task admission or acceptance.
Boundary: existing Goal workspace/read-only work-map presentation (overall roadmap S5; Goal workspace and Live Team Workspace W1). Existing task IDs, state, source/recovery readers, claims, acceptance and backend contracts are retained. This is the presentation stage; it does not qualify a live correction/verifier/requester-adoption episode or an installed release. CLI/Lark contracts are unchanged. The related refactor puts sizing and routing together in the existing TypeScript frontend data owner.
Validation: packaged build/source verification; 51 packaged workspace browser scenarios plus final relevant masthead/map/showcase checks; final long-title/geometry/selection/close/Escape/focus/390px/reduced-motion browser regression; delivery-review schema/negative/parity and routing invariants; CSS token checks; native risk-based premerge checks. The first viewport was previewed and approved before commit. Synthetic browser screenshots are generated under
output/playwright/personal-workspace/; private live snapshots are excluded.Run the focused regression after building:
LOOPX_PERSONAL_WORKSPACE_PACKAGED=1 LOOPX_PLAYWRIGHT_PACKAGE="$PWD/apps/presentation/dashboard/node_modules/playwright" node apps/presentation/dashboard/smoke/goal-workspace-craft-browser-smoke.mjs. It is also included innpm --prefix apps/presentation/dashboard run smoke:personal-workspace-packaged.Visual evidence: identical public synthetic workspace, 8 tasks and the same long Goal request; baseline
df8262639versus this frontend. These are packaged-browser views, not installed-release or real Goal acceptance evidence. Selection moved the outer reading position by 127px before and 0px after; the wider map deliberately scrolls at readable text size. The five public screenshots have no image metadata and are retained here as the review evidence, rather than uploading private Goal data.Phone interaction and accessible task details.