Item 10: remove the disabled decorative topbar search input (each page has its own working search); CSS rule and media-query reference removed. Item 11: menu/title renames — 服务器 -> 节点管理, 客户与订阅 -> 用户订阅, 转发与节点 -> 入站&出站, 设置与运维 -> 设置 (nav, TITLES/breadcrumb and cross-references synced); the chains page add button is now 添加入站 and its count reads N 个入站; the 安装与命令 page is merged into 设置 (commandsHTML block between the settings grid and the jobs table) and the page itself is removed from nav, PAGES, TITLES, load() and the view map — an old #commands hash now lands on the SPA's standard overview fallback. Item 12: remove the system page's 最近活动 panel (rendering and its audit label map plus orphaned CSS); backend audit records untouched. Item 13: the settings jobs table gets the w-jobs treatment — ID, status and time cells never wrap, compact row padding, and the error column is capped at 22% width so an empty error column no longer balloons. Also fixes a class collision from the item-8 batch: the exit-mode segmented control is renamed .seg -> .segctl so it no longer draws a border box around the system page info-bar segments. Golden re-captured: the only diff is the served index HTML inside errors.badSubscription, audited character by character as exactly these renames and removals.
Go 面板金标准回归基线(golden)
2026-10-21 起 Node 实现冻结退役、Go 单一真源,difftest(Node 差分)随之退役。 本目录把 Go 面板在种子库上的当前行为冻结为回归基线,替代 difftest 的 守门角色:
golden.mjs— 抓取/校验脚本。复用../difftest/的种子库(seed.json) 与学习式 Normalizer(../difftest/lib.mjs):以种子副本启动一个 Go 面板, 按固定剧本驱动(登录 → 种子 agent 心跳 → 列表 → 凭据 → 订阅全格式 → 建服务器/注册 agent → 建客户/节点/分配/部署并 drain 部署任务 → 用量上报 两轮 → 呈现投影 → UI 式全量 PATCH 节点 →/api/system结构 → 备份导出 → 错误用例),全部响应归一化后存入golden.json(25 个 section)。golden.json— 冻结的行为快照(2026-10-21,基线提交时的 Go 现状, 二进制由 HEAD156a31c构建)。
用法:
node golden.mjs capture [--bin /path/to/nexusgate-panel] # 重新冻结(仅在确认行为变更为预期时)
node golden.mjs verify [--bin /path/to/nexusgate-panel] # 与基线比对,有差异退出码 1 并打印首个 diff 路径
约定:
- verify 出现 diff 时,先判定是预期变更(本版 9 项修改各自的预期 diff 在 NEXT-ROUND-REPORT.md 中逐项登记)还是回归;预期变更在对应项提交里 一并重新 capture 并在提交说明中注明 section 名。
/api/system的数值多为实时采样,脚本只保留结构与确定性计数 (nodesTotal/customersTotal/online* /connections),其余数值与 IP 压成 占位;uptime 类键同样压平。其余 section 的数值都是剧本确定性结果, 逐字比对。- 剧本对时间的依赖已被窗口设计吸收(presence 180s 窗口、心跳在线判定), 正常复跑应恒 PASS;偶发 FAIL 先复跑一次区分抖动与真回归。