# v0.8 节点卡片瘦身执行文档

> Status: 执行中（2026-05-30）
> 触发：用户两张实测截图 + 自审两条（用户视角 / 极简）
> 原则：见 `CLAUDE.md`

## 0. 一句话

**把节点卡片上一切没有用户行动价值的元素删掉。**

## 1. 范围矩阵

| 编号 | 文件 | 改 | 估时 |
|---|---|---|---|
| W1 | `src/ui/onboarding/OnboardingWizard.tsx` + `NomiStudioApp.tsx` | wizard 从 Drawer 改回 Modal（已完成代码，待 build） | 0 |
| C1 | 新建 `nodes/render/ErrorBadge.tsx` | ⚠ 图标 + tooltip 看完整 error | 10 min |
| C2 | `BaseGenerationNode.tsx` | 删描述文字、删 image/footer 分隔线、长 error 改 ErrorBadge、删 "分镜 NN" 标签、composer 去白底/阴影 | 15 min |
| C3 | `CharacterCardNode.tsx` | 删 "角色" tag、删 "或选中..."、删内层 border、信息区条件渲染、角色名 inline 可编辑 | 15 min |
| C4 | `PropCardNode.tsx` | 同 C3（道具卡）| 8 min |
| C5 | `SceneCardNode.tsx` | 同 C3（场景卡）| 8 min |
| C6 | `AudioStripNode.tsx` | 扫一遍同样的噪音元素 | 5 min |
| B | build + dmg + reinstall + relaunch | | 5 min |
| G | git commit | | 2 min |

总：~70 分钟。

## 2. 决策表（已和用户确认）

| 决策 | 结果 |
|---|---|
| "分镜 NN" 编号标签 | **删** — 用户靠位置/缩略图区分 |
| "承接上游提示词生成图片。" 描述行 | **删** — 节点自明 |
| 节点头的 "角色 / 道具 / 场景" tag | **删** — 与父分组重复 |
| "或选中后输入提示词生成" hint | **删** — 进 tooltip |
| 图像内层 border | **删** — 圆角套圆角违反 Design.md |
| 信息区固定 80px | **改条件渲染** — 内容为空时 0px |
| 长 error stack 直接渲染 | **改 ErrorBadge ⚠ + tooltip** |
| Composer 白底 + 阴影 | **删** — 用 line-soft 虚分割 |
| 角色名 / 道具名 / 场景名 | **inline 可编辑**（点击进入编辑态，失焦保存）|
| 使用计数 | **保留但半透明**，hover/选中显著 |

## 3. 不动

- `Design.md` token / 设计系统
- generationCanvasStore（数据层）
- AudioStripNode 主体（仅扫噪音元素）
- 节点之间的连线 / 流转
- 时间轴
- 上游提示词逻辑

## 4. 回滚策略

- 一个 commit 一刀切：build 跑挂或视觉错乱 → `git revert` 单 commit 即可
- 节点交互（点击 / 拖拽 / 生成）行为不变 — 这次只动视觉

## 5. 验收

build + 真机测：
1. ✓ 编译 0 错
2. ✓ 启动 Nomi.app 不崩
3. ✓ 工作台进项目可见节点
4. ✓ 节点上**看不到**：分镜编号、节点类型 tag、节点功能描述、长 error block、内层 image border、空信息区、白底 composer
5. ✓ 节点上**仍能看到**：图、prompt 输入、模型、生成按钮，必要时小红 ⚠
6. ✓ 角色名可点击 inline 编辑、失焦保存
7. ✓ Wizard 打开是中心居浮 Modal（480px 宽），不再 Drawer 全屏

## 6. 执行结果（事后回填）

> 待执行完成回填
