# HWLAB Web 产品体验

- 长期问题域：
  - HWLAB Cloud Web 的产品信息架构、通用前端能力、页面一致性和用户入口体验。
  - HWLAB 页面所需的同源 API、领域 read model 与合理微服务边界。
- 规格真相：
  - `project-management/PJ2026-01/specs/` 下的 HWLAB L0、Cloud 阶段及对应 L1/L2 SPEC。
  - HWLAB v0.3 实现与真实入口验收以 `NC01/v03` 固定 source workspace 和运行面为准。
- 范围边界：
  - 页面不得重新定义硬件、任务、用户、权限、账本或评价事实。
  - Workbench 主工作流不在本文件内重写，但共享应用壳变更不得造成其回退。


## R1 [completed]

依据 UniDesk OA SPEC 全量重写 HWLAB v0.3 除 Workbench 主工作流外的 Cloud Web 页面：先抽取工业风、高信息密度、渐进披露且符合用户直觉的通用前端模块；MDTODO 保留成熟布局语义后重写；HWPOD/HWPOD Node 重点实现设备卡片/列表、node→HWPOD 管理和 Python 节点接入；必要时补强后端并按职责合理拆分微服务。完整范围、现状证据、战略判断和验收见[任务上下文](./details/hwlab-web-product-experience/R1_Context.md)；执行锚点见[HWLAB #2514](https://github.com/pikasTech/HWLAB/issues/2514)，完成任务后将详细报告写入[任务报告](./details/hwlab-web-product-experience/R1_Task_Report.md)。

### R1.1 [completed]

完成 UniDesk OA SPEC 对齐与产品架构定锚：盘点非 Workbench 全路由、用户旅程、实体 ID、navId/ACL、DTO/API、深链、页面状态和原入口，以 HWLAB L0“云端硬件研发闭环”、Cloud 阶段“多人多端开箱即用/硬件接入”及各 L1/L2 职责判定页面主责、缺口和优先级；确认需新增或修订的 SPEC、架构图、数据流、时序和验收矩阵后再实现。依赖：无，完成任务后将详细报告写入[任务报告](./details/hwlab-web-product-experience/R1.1_Task_Report.md)。

### R1.2 [completed]

依赖 R1.1，建立 HWLAB Cloud Web 工业设计系统与通用前端层：tokens、响应式 AppShell、PageCommandBar、StatusStrip、DataGrid/VirtualList/ResourceCollection、工业实体卡片、图标/列表或密度切换、Dialog/Drawer/Popover、Log/Markdown/JSON/Trace Viewer、AsyncBoundary、Inspector 与 BoundedWorkspace；统一 URL view state、键盘/ARIA、reduced-motion、响应式和大数据有界行为。执行见[HWLAB #2515](https://github.com/pikasTech/HWLAB/issues/2515)，完成任务后将详细报告写入[任务报告](./details/hwlab-web-product-experience/R1.2_Task_Report.md)。

### R1.3 [completed]

依赖 R1.1，可与 R1.2 并行；按硬件池、Agent编排、HarnessRL、客户端、用户管理和平台运维主责补齐 typed DTO、BFF/read model、服务端搜索/排序/cursor、详情与日志/operation 查询。评估抽取 hwlab-hwpod-service 统一 HWPOD registry、node connection、拓扑、operation 和诊断；Cloud API 只保留同源鉴权/路由/correlation，项目与用户事实继续归既有服务，拆分前先更新对应 SPEC，完成任务后将详细报告写入[任务报告](./details/hwlab-web-product-experience/R1.3_Task_Report.md)。

### R1.4 [completed]

依赖 R1.2、R1.3，重写全站应用壳、登录、注册和 404：导航按用户工作流组织，保留或原子迁移 navId/ACL、同源 HttpOnly 会话与安全 redirect；桌面、紧凑桌面和移动端都有明确导航、上下文、命令区和滚动所有者。联动修正 UniDesk HWLAB 外链壳的硬编码 IP，使其从受控配置解析正式入口；共享壳变更不得改写或回退 Workbench 主工作流，完成任务后将详细报告写入[任务报告](./details/hwlab-web-product-experience/R1.4_Task_Report.md)。

### R1.5 [completed]

依赖 R1.2、R1.3，重写 HWPOD“设备资源”子标签：以 typed inventory 展示 HWPOD 四要素、node、声明/实际能力、可用/占用/busy、主要 blocker 和最近 operation；同源支持电路板 SVG 图标卡片与高密度列表。四条链路分别表达 target/workspace/debug/io，仅真实连接、in-flight 或 mismatch 驱动克制动效，并完整支持 reduced-motion、详情深链和渐进披露 Inspector。执行见[HWLAB #2516](https://github.com/pikasTech/HWLAB/issues/2516)，完成任务后将详细报告写入[任务报告](./details/hwlab-web-product-experience/R1.5_Task_Report.md)。

### R1.6 [completed]

依赖 R1.2、R1.3，与 R1.5 协同重写“HWPOD Node”和“节点接入”子标签：管理已连接及声明离线 node，展示平台、版本、心跳、能力、in-flight、诊断和其挂载的零到多个 HWPOD；网页消费 update/download 元数据下载 Python 单文件，展示版本、大小、SHA 和安装条件。按 downloaded→installed→desktop-visible→registered→workspace-ready→hwpod-ready 分阶段引导，凭据仍只走 YAML sourceRef/受控 CLI，完成任务后将详细报告写入[任务报告](./details/hwlab-web-product-experience/R1.6_Task_Report.md)。

### R1.7 [completed]

依赖 R1.2、R1.3，重写 Projects 与 MDTODO：Projects 提供项目卡片/表格、状态/来源筛选、项目详情、任务活动与 blocker 深链；MDTODO 保留成熟的有界三栏、Rxx 树→正文→报告、Source/File 工具栏、inline edit、报告关闭/调整/全屏、RESTful 深链和刷新恢复，并接入新的通用组件。删除 Workbench 私有 store 依赖，只通过公共 Project Management 与 Workbench Launch API 联动。执行见[HWLAB #2517](https://github.com/pikasTech/HWLAB/issues/2517)，完成任务后将详细报告写入[任务报告](./details/hwlab-web-product-experience/R1.7_Task_Report.md)。

### R1.8 [completed]

依赖 R1.2、R1.3，重写 Dashboard、组织/用户协同、API Keys、Usage、Billing、Settings 与 Help：Dashboard 通过后端聚合 read model 提供继续项目/任务、HWPOD、额度和主要异常；集合页统一卡片/列表、筛选、分页和深链；创建/兑换等低频操作进入 Dialog。不得虚构未落地的支付、scope、轮换或跨设备偏好，缺失能力先更新用户管理 SPEC/API，完成任务后将详细报告写入[任务报告](./details/hwlab-web-product-experience/R1.8_Task_Report.md)。

### R1.9 [completed]

依赖 R1.2、R1.3，重写 Users、Access、Secrets/External Secret、Admin Billing 与 Provider Profiles：统一集合→Inspector/深链详情→低频 Dialog，补 typed DTO、服务端分页、筛选、审计/验证历史和有界日志。Access 继续消费权限域真相；Secret 只展示对象、key、presence、fingerprint 与摘要，保留 dry-run/plan 和 YAML-first sourceRef，不新增运行面反解或前端 Apply，完成任务后将详细报告写入[任务报告](./details/hwlab-web-product-experience/R1.9_Task_Report.md)。

### R1.10 [completed]

依赖 R1.2、R1.3，重写 Performance、Gate、Skills、OpenCode 外壳及其他非 Workbench 系统工具页：按“状态→问题→证据→动作”渐进披露，统一时间窗口、视图/密度、详情深链、日志/证据查看和异步状态；Performance 拆分大组件并保持有界可视化，Skills 不在缺少正式 API 时虚构删除/启停，OpenCode 保留同源 ticket、认证和安全 URL，只增强加载/错误/重试外壳，完成任务后将详细报告写入[任务报告](./details/hwlab-web-product-experience/R1.10_Task_Report.md)。

### R1.11 [completed]

依赖 R1.4-R1.10，完成迁移收口：删除所有已被新设计系统替代的旧页面 shell、私有 Panel/Table/Dialog/Viewer、字段名猜测、名称去重、关键事实前端拼装、重复 CSS 和阻碍最新目标的兼容入口；把 Workbench 与普通页面样式按职责拆分，所有源码文件满足体积治理。保持稳定业务 ID、API、权限、Secret、深链和 Workbench 用户主路径无回退，完成任务后将详细报告写入[任务报告](./details/hwlab-web-product-experience/R1.11_Task_Report.md)。

### R1.12 [completed]

依赖 R1.4-R1.11，在 NC01/v03 YAML-selected Cloud Web 原入口完成全量验收：覆盖 1920x1080、960x600、约 390px、键盘/焦点/ARIA、reduced-motion、深链刷新/前进后退、卡片/列表语义一致、loading/refreshing/partial/empty/error/ready、大表/长树/长日志性能和权限差异。用 web-probe observe/analyze 留存证据；HWPOD 覆盖一 node 多设备、离线 node、在线无 spec、invalid spec、mismatch、busy、更新和诊断错误，完成任务后将详细报告写入[任务报告](./details/hwlab-web-product-experience/R1.12_Task_Report.md)。

### R1.13 [completed]

补强 WebProbe 全浏览器入口与 Web 哨兵资源治理（子 issue [pikasTech/unidesk#1907](https://github.com/pikasTech/unidesk/issues/1907)）：所有会创建浏览器的人工入口只以 /proc/meminfo 的 MemAvailable 判定真实物理内存，未满足 owning YAML 策略时先阻断并要求受控 GC 后复核；哨兵未满足策略时不创建 observer/Chrome，跳过本轮等待下一 cadence。将阈值、锁、TTL、样本、截图、性能、历史、响应体和终态关闭上限收敛到 owning YAML，保证成功、失败、timeout、signal 全路径关闭 browser/context，并在 NC01/v03 验证 12GiB swap 不计入资格，完成任务后将详细报告写入[任务报告](./details/hwlab-web-product-experience/R1.13_Task_Report.md)。

#### R1.13.1 [completed]

修复 [UniDesk #1927](https://github.com/pikasTech/unidesk/issues/1927) 的 WebProbe MDTODO 任务引用误报与性能采集状态污染：按语义任务行去重 analyzer，performanceCapture 状态只返回有界摘要和 artifact 下钻，不新增锁、租约、围栏或旁路入口，完成任务后将详细报告写入[任务报告](./details/hwlab-web-product-experience/R1.13.1_Task_Report.md)。
### R1.14 [completed]

依据用户最新反馈全量重写 HWLAB v0.3 管理域导航、授权、密钥、用户、账务与 MDTODO 页面代码（子 issue [pikasTech/HWLAB#2522](https://github.com/pikasTech/HWLAB/issues/2522)）：禁止以换色、圆角、字母方块、薄包装组件或局部 CSS 冒充重写；先抽取工业运营台通用工作区、状态轨、实体索引、权限矩阵、密钥流向、审计/账本时间线、真实线性图标与 Markdown/报告 Viewer，再重建五页组件树、状态组合和样式并删除旧私有实现。MDTODO 只保留成熟的有界三栏、任务树→正文→报告、Source/File、inline edit、报告调宽/关闭/全屏和深链思想；保留 typed API、稳定 ID、revision/fingerprint、ACL、Secret 脱敏与公共 Workbench Launch 合同，完成 1920/960/390 原入口验收，完成任务后将详细报告写入[任务报告](./details/hwlab-web-product-experience/R1.14_Task_Report.md)。

## R2 [in_progress]

执行 [HWLAB #2537](https://github.com/pikasTech/HWLAB/issues/2537)：纠正此前名义完成但真实效果不达标的问题，依据 OA SPEC 和 R1_Context 全量重写 HWLAB v0.3 非 Workbench 页面代码；先抽取工业风高信息密度通用表格、卡片、弹窗、日志/Markdown/JSON/Trace Viewer、Inspector 和图标/列表/密度切换，再重写 AC/SK/UR/AB、MDTODO、HWPOD 与 HWPOD Node，补 Python 单文件节点下载及分阶段接入引导；保留 MDTODO 三栏布局思想、typed API、权限/Secret/硬件/账务 authority 和 Workbench 主路径，完成 1920/960/390、ARIA、reduced-motion 与完整异步状态验收，完成任务后将详细报告写入[任务报告](./details/hwlab-web-product-experience/R2_Task_Report.md)。
