Repository navigation
feat(observer): 导轨画每条泳道自己声明的花符(WUI-03 gap 10 的图标半片) - #232
Merged
Merged
Conversation
viewRegistry 的 32 条泳道行一直各自声明一枚 Lucide 花符,而那个字段零消费者: 导轨画的是 31 枚一模一样的 .nav-dot,所以任何源码级 grep 都读成「已交付」。 花符替换装饰点而不是并列加一枚——gap 10 记录的旧尝试为了变窄藏起 .truncate, 结果是 23 个无法区分的点;加第二枚 15px 方块会挤掉标签,删装饰点不会。 实测:31/31 行有花符、标签截断 0→0、几何/可读性/按下态/窄条四门读数不变。 守卫 laneIcons.contract.test.tsx 5 例,反证(删掉行内图形)转出 2 例具名 FAIL。 DESIGN.md gap 10 与 WUI-03 状态位按实测改判;导轨宽度是否收窄仍是 owner 决定,本轮不动。
DTALEX66
force-pushed
the
feat/lane-icon-set-in-rail-20261029
branch
from
October 28, 2026 20:49
ca84d3c to
d4aeb49
Compare
3 tasks done
DTALEX66
added a commit
that referenced
this pull request
Oct 28, 2026
docs(register): 本轮(2026-10-28/29 队列)收口:PR #232 合并回执 + 按 PR 逐件对号
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
apps/observer/frontend/src/lib/viewRegistry.ts的 32 条泳道行一直各自声明一枚 Lucide 花符(30 枚不同,两处重复是注册表自己的配对约定:executions/execution-detail共用PlayCircle、privacy/trust共用ShieldCheck),但那个字段零消费者——全仓除注册表自身外的.icon命中逐条读过后全是 CSS 类名.empty .icon。导轨画的是 31 枚一模一样的.nav-dot。所以 DESIGN.md gap 10 那句「rail has no per-lane icon set」在数据上从来不成立、在屏幕上成立:一个只有声明没有消费者的字段,源码级 grep 一律读成"已交付"。apps/observer/frontend/src/components/layout/Sidebar.tsx的LaneDef带上icon,行内用该道自己声明的花符替换装饰点而不是并列加一枚。这个选择是被上一次失败逼出来的——gap 10 记录的旧尝试为了变窄把.truncate藏起来,结果 23 条泳道成了 23 个无法区分的点;加第二枚 15px 方块会挤掉标签,删装饰点不会(它aria-hidden、无状态样式、无测试或门读它)。.nav-dot规则留在被 D-11 钉死的apps/observer/frontend/src/skins/b10.css里逐字节不动。overview/标签项目监控)没有注册表行,花符因此与标签同处一个所有者:新增OVERVIEW_ICON,取monitoring那枚Activity而不是新造第 31 枚。Test plan
.project-local/runs/live-probe-20261029/rail_truncation_probe.py):rows=31 glyphs=0 truncated=0→rows=31 glyphs=31 truncated=0,glyph 实宽 15px、导轨宽两侧相同.project-local/runs/live-probe-20261029/rail-after-icons.png(每道一枚可区分图形、标签一个没少、选中行渐变与左侧强调条不受影响)apps/observer/frontend/src/laneIcons.contract.test.tsx5 例(行集==注册表行集、每行恰一枚且等于该行声明的那一枚、装饰点不再出现、加图形不许丢名字、导轨可区分度==数据可区分度)<l.icon/>→ 2 例指名 FAIL、其余 3 例仍绿;还原后源文件sha256 b4bd0bf3…与植入前逐字节相同npx vitest run79 文件 / 970 例;npx tsc --noEmit无输出;node apps/observer/tests/run_all_tests.js39 passed / 0 failedGEOMETRY_GATE_PASS(含 900×600 下限面)、LEGIBILITY_GATE_PASS(CI 形状--all-views --live-backend --sizes 1280 --shell-surfaces,AA 失败 0)、PRESSED_MOTION_GATE_PASS(console/.nav button覆盖仍 40)、HUD_STRIP_GATE_PASS checks=81/81AUTHORITY_INDEX_PATHS_TOTAL broken=0 failed_targets=0、DOC_CITATIONS rewritten=0 blocked=0、REGISTER_TABLE_SHAPE rows=42 wrong_width=0、LIVE_DOC_PATHS missing=0、清单重发后test_tool_inventory_coverage.pyRan 16 tests OK叠合后复跑(#231 合并进 main、本分支 rebase 之后,head
d4aeb493):npx vitest run78 文件 / 969 例(与 #231 合并前基线 79/970 的差值恰为 #231 删掉的 1 文件 1 例);重新构建后四道浏览器门在同一份新包上复跑GEOMETRY_GATE_PASS、PRESSED_MOTION_GATE_PASS(console/.nav button覆盖仍 40)、HUD_STRIP_GATE_PASS checks=81/81、LEGIBILITY_GATE_PASS,并顺带跑 #231 那道REDUCED_MOTION_FLOOR_GATE_PASS surfaces=5 checks=17/17;清单重发trackedTools=83 unclaimed=0、覆盖测试 16 例 OK。