Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 14 additions & 10 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,8 @@ node test/usd-viewer/scripts/cleanup-headless.cjs # 清理自动化残留浏览

单元测试继续邻近源码放置:`src/**/*.test.*` / `src/**/*.spec.*`。不要把普通单元测试搬到统一 `tests/` 目录。

完整测试金字塔、命令选择和新增测试落点见 [docs/testing.md](docs/testing.md)。浏览器测试体系修复的历史交接与剩余事项见 [docs/testing-rebuild-handoff.md](docs/testing-rebuild-handoff.md)。

给 Codex / Claude 等 agent 选择命令时按以下优先级:

| 场景 | 命令 |
Expand Down Expand Up @@ -181,13 +183,15 @@ node test/usd-viewer/scripts/cleanup-headless.cjs # 清理自动化残留浏览

## 文档导航

| 任务 | 文档 |
| ------------------------------------- | ---------------------------------------------------- |
| Editor / 3D / Viewer / USD runtime | [docs/viewer.md](docs/viewer.md) |
| 导入导出 / Workspace / 组装 | [docs/file-io.md](docs/file-io.md) |
| UI 样式 / 颜色 / 主题 / 可访问性 | [docs/style-guide.md](docs/style-guide.md) |
| AI 助手 / 审阅 / skill 路由 | [docs/ai-features.md](docs/ai-features.md) |
| 架构边界 / 依赖方向 / 例外 / 设计哲学 | [docs/architecture.md](docs/architecture.md) |
| 验收清单 / 测试样本 / 回归命令 | [docs/update-rules.md](docs/update-rules.md) |
| react-robot-canvas 对外库 | [docs/robot-canvas-lib.md](docs/robot-canvas-lib.md) |
| 完整文档索引 | [docs/CATALOG.md](docs/CATALOG.md) |
| 任务 | 文档 |
| ------------------------------------- | ------------------------------------------------------------------ |
| Editor / 3D / Viewer / USD runtime | [docs/viewer.md](docs/viewer.md) |
| 导入导出 / Workspace / 组装 | [docs/file-io.md](docs/file-io.md) |
| UI 样式 / 颜色 / 主题 / 可访问性 | [docs/style-guide.md](docs/style-guide.md) |
| AI 助手 / 审阅 / skill 路由 | [docs/ai-features.md](docs/ai-features.md) |
| 架构边界 / 依赖方向 / 例外 / 设计哲学 | [docs/architecture.md](docs/architecture.md) |
| 测试金字塔 / 命令选择 / 新增测试落点 | [docs/testing.md](docs/testing.md) |
| 浏览器测试体系修复交接 | [docs/testing-rebuild-handoff.md](docs/testing-rebuild-handoff.md) |
| 验收清单 / 测试样本 / 回归命令 | [docs/update-rules.md](docs/update-rules.md) |
| react-robot-canvas 对外库 | [docs/robot-canvas-lib.md](docs/robot-canvas-lib.md) |
| 完整文档索引 | [docs/CATALOG.md](docs/CATALOG.md) |
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

Professional URDF design and visualization workstation. Supports rapid editing, collision optimization, modular assembly, parameter configuration, AI generation, and multi-format export.

**Live demo:** [urdf.d-robotics.cc](https://urdf.d-robotics.cc/)
**Live demo:** [urdf.enkeebot.com](https://urdf.enkeebot.com/)

[English](./README.md) | [中文](./README_CN.md)

Expand Down
2 changes: 1 addition & 1 deletion README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

面向 `URDF`、`MJCF`、`USD`、`Xacro`、`SDF` 和 `.usp` 项目工作流的机器人设计、组装、可视化与导出工作台。支持快速编辑、碰撞优化、模块化组装、参数配置、AI 生成与多格式导出。

**在线体验:** [urdf.d-robotics.cc](https://urdf.d-robotics.cc/)
**在线体验:** [urdf.enkeebot.com](https://urdf.enkeebot.com/)

[English](./README.md) | [中文](./README_CN.md)

Expand Down
26 changes: 14 additions & 12 deletions docs/CATALOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,20 @@

> 最后更新:2026-05-26

主入口:[CLAUDE.md](../CLAUDE.md)(项目定位、目录结构、架构红线、Store 表、常用命令、文档导航)
主入口:[CLAUDE.md](../CLAUDE.md)(项目定位、目录结构、架构红线、Store 表、常用命令、测试分层、文档导航)

## 文档清单

| 文档 | 内容 | 行数 |
|------|------|------|
| [CLAUDE.md](../CLAUDE.md) | 项目入口:定位、结构、红线、Store、命令、导航 | ~137 |
| [viewer.md](viewer.md) | Editor/Viewer 子域:拓扑、几何/碰撞/测量、USD runtime、offscreen、hydration | ~115 |
| [file-io.md](file-io.md) | 导入导出链路:App 编排、File I/O、Workspace、组装、project archive | ~140 |
| [wasm-build.md](wasm-build.md) | OpenUSD WASM 构建:源码迁移、编译脚本、故障排查 | ~150 |
| [style-guide.md](style-guide.md) | UI 样式:语义色 token、蓝色约束、暗色层级、面板文案、验收标准 | ~70 |
| [ai-features.md](ai-features.md) | AI 助手:环境变量、审阅标准路径、skill-first 路由 | ~60 |
| [architecture.md](architecture.md) | 架构补充:例外清单、debuggability first、Linux 哲学、内存约束、检查命令 | ~115 |
| [update-rules.md](update-rules.md) | 变更工作流:验收清单、增量命令、测试样本索引、浏览器验证、文档更新映射 | ~142 |
| [robot-canvas-lib.md](robot-canvas-lib.md) | 对外库说明:RobotCanvas API、发布流程、后续拆分建议 | ~85 |
| 文档 | 内容 | 行数 |
| -------------------------------------------------------- | --------------------------------------------------------------------------- | ---- |
| [CLAUDE.md](../CLAUDE.md) | 项目入口:定位、结构、红线、Store、命令、导航 | ~137 |
| [viewer.md](viewer.md) | Editor/Viewer 子域:拓扑、几何/碰撞/测量、USD runtime、offscreen、hydration | ~115 |
| [file-io.md](file-io.md) | 导入导出链路:App 编排、File I/O、Workspace、组装、project archive | ~140 |
| [wasm-build.md](wasm-build.md) | OpenUSD WASM 构建:源码迁移、编译脚本、故障排查 | ~150 |
| [style-guide.md](style-guide.md) | UI 样式:语义色 token、蓝色约束、暗色层级、面板文案、验收标准 | ~70 |
| [ai-features.md](ai-features.md) | AI 助手:环境变量、审阅标准路径、skill-first 路由 | ~60 |
| [architecture.md](architecture.md) | 架构补充:例外清单、debuggability first、Linux 哲学、内存约束、检查命令 | ~115 |
| [testing.md](testing.md) | 测试指南:三层测试金字塔、命令入口、新增测试落点、结果阅读 | ~90 |
| [testing-rebuild-handoff.md](testing-rebuild-handoff.md) | 浏览器测试体系修复交接:已知根因、剩余任务、验证标准 | ~130 |
| [update-rules.md](update-rules.md) | 变更工作流:验收清单、增量命令、测试样本索引、浏览器验证、文档更新映射 | ~142 |
| [robot-canvas-lib.md](robot-canvas-lib.md) | 对外库说明:RobotCanvas API、发布流程、后续拆分建议 | ~85 |
22 changes: 14 additions & 8 deletions docs/architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,15 @@
## 3. 当前存量例外(禁止扩散)

运行时代码:
- `src/shared/hooks/useTheme.ts` -> `@/store/uiStore`
- `src/shared/components/Panel/JointControlItem.tsx` -> `@/store/robotStore`
- `src/features/ai-assistant/utils/pdfExport.ts` -> `@/features/file-io/components/InspectionReportTemplate`
- `src/features/editor/index.ts` -> `src/features/urdf-viewer/index.ts`(Editor facade)
- `src/features/editor/viewerPanelModule.ts` -> `src/features/urdf-viewer/components/ViewerPanels.tsx`
- `src/features/editor/viewerPanelModule.ts` -> `src/features/urdf-viewer/hooks/useResponsivePanelLayout.ts`
- `src/features/editor/viewerPanelModule.ts` -> `src/features/urdf-viewer/hooks/useViewerController.ts`
- `src/lib/components/RobotCanvas.tsx` -> `src/features/urdf-viewer/components/ViewerCanvas.tsx`
- `src/lib/components/RobotCanvas.tsx` -> `src/features/urdf-viewer/components/JointInteraction.tsx`
- `src/lib/components/RobotCanvas.tsx` -> `src/features/urdf-viewer/components/RobotModel.tsx`

上述例外由 `scripts/tools/dependency_boundaries.mjs` 按 importer + specifier + resolved target 精确匹配,禁止扩大为整层或整 feature 例外。

测试期例外(不作为运行时先例):
- `src/features/file-io/utils/usdFloatingRoundtrip.test.ts` -> `urdf-viewer` runtime/utils
Expand All @@ -35,6 +41,7 @@
- `editor`:统一 Editor 公开入口,通过 `src/features/editor/index.ts` 暴露
- `urdf-viewer`:Editor 实现子目录,通过 `src/features/urdf-viewer/index.ts` 暴露
- `file-io`:导入导出入口,通过 `src/features/file-io/index.ts` 暴露
- `app` 层新增对 `src/features/<feature>/...` 子路径的 deep import 必须先收敛到 feature 公开入口;存量 deep import 只保留在 `dependency_boundaries_baseline.json` 的 `knownFeatureDeepImports` ratchet 中,按 `importer -> specifier` 精确计数,修掉后删除对应 baseline 项。

## 5. Canonical Data Sources

Expand Down Expand Up @@ -99,14 +106,14 @@

## 10. 依赖检查命令

分层红线与 import 循环由 `scripts/tools/dependency_boundaries.mjs` 机器化把关(零依赖,复用 `@/* -> src/*` alias):
分层红线、`app` feature deep import surface 与 import 循环由 `scripts/tools/dependency_boundaries.mjs` 机器化把关(零依赖,复用 `@/* -> src/*` alias):

```bash
npm run deps:audit # 报告越层 import 与循环依赖
npm run deps:check # CI 阻断门(存量循环走 dependency_boundaries_baseline.json grandfather,仅挡净新增
npm run deps:audit # 报告越层 import、app feature deep import 与循环依赖
npm run deps:check # CI 阻断门(cycles/deep imports 走 dependency_boundaries_baseline.json grandfather,仅挡净新增与 stale baseline
```

该脚本编码 §1 的方向(core 禁 React/越层、features 禁互相 import、shared/store/lib 禁向上),§3 的存量例外与 editor->urdf-viewer facade、lib RobotCanvas 包装关系已 allowlist。`npm run lint` 已串联 `deps:check`。下列 `rg` 命令仅作快速人工排查备用:
该脚本编码 §1 的方向(core 禁 React/越层、features 禁互相 import、shared/store/lib 禁向上),§3 的存量例外只按精确 importer/specifier/target allowlist。`app` 对 feature 子路径的存量 deep import 单独报告为 `knownFeatureDeepImports`,新增或 baseline stale 都会让 `--check` 失败;import cycles 维持既有 grandfather 机制。`npm run lint` 已串联 `deps:check`。下列 `rg` 命令仅作快速人工排查备用:

```bash
# 检查潜在反向依赖(core/shared/store 对 features 的引用)
Expand Down Expand Up @@ -134,4 +141,3 @@ rg -n "#0088FF|#0088ff" src | rg -v "Slider.tsx|styles/index.css"
- **手写 C-ABI emscripten 源**:`src/core/loaders/wasm/collada_mesh_parser.cpp`、`src/core/loaders/wasm/obj_parser.cpp`。它们是**单翻译单元(single TU)**设计——单 `.cpp` + `-flto` + 匿名 `namespace` 内部链接,所有 helper 文件本地。拆成多 TU/头文件**运行时零收益、只增 header 边界摩擦**,故有意保留单文件;要可读性用 section banner 注释而非物理拆分。注意:构建是 **C-ABI `EXPORTED_FUNCTIONS`** 模式(手动 `HEAPU8` marshalling via `*_get_result_ptr` / `*_get_result_size`),**不是 embind**(无 `emscripten/bind.h` / `EMSCRIPTEN_BINDINGS` / `--bind`)。.cpp 风格由 `.clang-format` 固定。
- **生成产物**:`public/wasm/**`(emscripten JS glue + `.wasm` 二进制,由 `scripts/build/rebuild-*-wasm.sh` 生成,**勿手改**,改 `.cpp` 重跑脚本)、`**/*.generated.*`(ESLint 与 audit 一致跳过)。
- **vendored 源**:`third_party/**`(魔改版 OpenUSD)、`src/features/urdf-viewer/runtime/**`(USD WASM runtime)。

Loading
Loading