Skip to content

🎨 控制台设备页:加下一台设备的引导 - #17

Merged
CodFrm merged 4 commits into
mainfrom
ui/2026-08-14-add-device-guidance
Aug 14, 2026
Merged

🎨 控制台设备页:加下一台设备的引导#17
CodFrm merged 4 commits into
mainfrom
ui/2026-08-14-add-device-guidance

Conversation

@CodFrm

@CodFrm CodFrm commented Aug 14, 2026

Copy link
Copy Markdown
Contributor

为什么

控制台「设备」页整页没有任何添加设备的入口:所有动作都是对已有设备的(展开、查看对话、解除授权)。空态只有一句「还没有任何设备。」—— 陈述一个事实,然后什么也不做。更别扭的是输入设备码那一屏(/device)其实早就实现了,但导航里到不了它,只有客户端打印的链接能进去,链接丢了就没有第二条路。

规格:agentre/docs/specs/2026-08-14-add-device-guidance.md(桌面端那一半在 agentre 仓库同名分支;两仓分别提交)

改了什么

  • 设备列表上方新增唯一的「添加设备」入口;点开在列表上方展开三步引导(装上 agentred → 让它登录账号 → 输入设备码),引导展开时该入口不渲染
  • 空态改为默认展开引导,取代原来那句孤立的空句;加载失败时仍只显示既有错误,不展开引导、也不改口说没有设备
  • 第 1/2 步按设备类型(只有计算节点 / 桌面端,浏览器已在列表里、mobile 无客户端)与系统给出真命令;登录命令里的服务器地址取自当前控制台的运行时 origin,用户不必手抄
  • 第 3 步复用既有 CodeInput 收 6 位设备码,填满后跳到既有授权确认屏 /device?user_code=…

不新增第二份批准界面

风险说明、代码核对、允许/拒绝、过期倒计时全部继续只由既有授权屏承担 —— 设备页一个字都不复制(规格硬不变量 2)。守卫测试断言第 3 步正文里没有这些东西。

后端一行未改:diff 全在 frontend/ + 一行 e2e/smoke.spec.ts,无 Go / 迁移 / API。

真机验证

正式构建 89c43b6pnpm serve 起在 127.0.0.1:18443,连真 MySQL 与真 Redis;设备接入走真 Device Flow/v1/oauth/device/authorize → 浏览器批准 → /v1/oauth/device/token,注册成 device_id=4)。报告与截图在 e2e/scratch/2026-08-14-add-device-guidance/(gitignore)。

8 条判据 7 holds,2 条未观察:加载失败态(诱发需改码或用替身,红线禁止)、设备码被拒的错误分支(本次未构造被拒的码,正路已覆盖交接本身)。

运行副作用已由 harness 清理并自校验 no residue,全程无 DROP / TRUNCATE / FLUSHDB

收尾

规格核对 + 代码审查两轮独立 review,各修一个真问题:

  • 685870b:本轮删掉 device.manage.empty 后,既有守卫「加载失败不得改口说没有设备」变成了对已不存在字符串的恒真断言 —— 它一直是绿的
  • 89c43b6CommandCard 只存一个 copied 布尔,切换系统后按钮仍显示「已复制」,而剪贴板里是上一条命令

全量:42 文件 / 529 用例 exit 0;tsc -b --noEmit 0;eslint . --max-warnings 0 0。

CodFrm added 4 commits August 14, 2026 17:59
第 3 步复用既有的六格 CodeInput 与 userCode 归一化规则:填满六位就带着
归一化后的设备码跳到既有的 /device 授权确认屏,不足六位就地标红且保留
已填字符。代码存不存在由那一屏回答,设备页不复制风险说明/核对/允许拒绝
/倒计时中的任何一项。

顺带把 e2e 零设备断言指向展开的引导——它取代的那句空态文案已被删除。
CommandCard 只记「复制过没有」,而第 1 步那张卡的命令会随所选系统更换:
复制完 curl 那条再切到 Windows,按钮仍在对一条从没进过剪贴板的 PowerShell
命令显示「已复制」。改成记住复制走的是哪一条命令,复制态由它与当前命令
比对得出;两秒计时仍从点击那一刻起算。

顺带修两条形同虚设的断言:devices.test.tsx 里 queryByText("No devices yet.")
钉的是本轮已删除的空态文案,永远为真。空态用例删掉它(引导在场已由 testid
断言),加载失败用例换成断言顶栏计数不渲染——写着 0 的计数与那句空句
是同一句谎话,且它可被证伪(把 deviceCount 的 loadError 判断去掉即红)。
@CodFrm
CodFrm merged commit f4f001a into main Aug 14, 2026
4 checks passed
@CodFrm
CodFrm deleted the ui/2026-08-14-add-device-guidance branch August 14, 2026 16:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant