Skip to content
Merged

Dev #66

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
db00a1f
重构 AI 助手对话与巡检流程
kleinlau17 Apr 3, 2026
e37a63c
补齐本地化键并修正入口接线
kleinlau17 Apr 3, 2026
351180a
feat: 完善 AI 巡检流程与报告交互
kleinlau17 Apr 4, 2026
b336e86
完善 AI 助手对话与巡检弹窗并补充测试文案
kleinlau17 Apr 4, 2026
6449efa
fix: 修复 AI 对话类型守卫与 USD 离屏判定
kleinlau17 Apr 4, 2026
981c671
fix: resolve pr #59 merge conflicts and quality issues
cmjang Apr 6, 2026
0630e50
feat(editor): expand handoff import and material workflows
cmjang Apr 7, 2026
6782e31
feat(app): add extension interfaces and expose internal actions for e…
carlvon17 Apr 10, 2026
aa8db57
refactor(editor): consolidate unified viewer workflows
cmjang Apr 10, 2026
0217982
Merge branch 'dev' of https://github.com/OpenLegged/URDF-Studio into dev
carlvon17 Apr 10, 2026
67137d2
chore(gitignore): track start_dev_server.mjs
cmjang Apr 10, 2026
21d41dd
feat(plugin): implement Plugin Registry for dynamic tool management
carlvon17 Apr 10, 2026
f5dd19e
Revert "feat(plugin): implement Plugin Registry for dynamic tool mana…
carlvon17 Apr 10, 2026
cba8d70
feat(app): expose new layout actions for AI tools and optimizers
carlvon17 Apr 10, 2026
2e1dc4c
feat(export+viewer): improve mesh path normalization, generator robus…
cmjang Apr 10, 2026
13fd68d
chore: remove start_dev_server.mjs and simplify dev script to use vit…
cmjang Apr 10, 2026
4015f1a
feat(toolbox): implement ToolboxMenu with dynamic tool registration a…
carlvon17 Apr 11, 2026
d970f4f
refactor: extract shared worker pool client and consolidate material/…
cmjang Apr 11, 2026
b1778a6
feat(app): add exportProjectBlob action to expose project export func…
carlvon17 Apr 11, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ scripts/*
scripts/regression/*
!scripts/regression/validate_sdf_cli_truth.ts
!scripts/regression/run_shadow_hand_hover_regression.mjs
!scripts/regression/validate_unitree_ros_usd_export_benchmark.mjs
!scripts/mujoco/
scripts/mujoco/*
!scripts/mujoco/mjcf_compare.ts
Expand All @@ -22,6 +23,7 @@ scripts/mujoco/*
!scripts/rewrite_dts_aliases.mjs
!scripts/omx_tmux_grid.sh
!scripts/omx_tmux_grid.test.mjs
!scripts/start_dev_server.mjs
!scripts/versioning/
scripts/versioning/*
!scripts/versioning/bump.mjs
Expand All @@ -34,6 +36,7 @@ scripts/versioning/*
output/
tmp/
.playwright-mcp/
log/COLCON_IGNORE
log/latest
log/latest_*
log/list_*/
Expand Down
843 changes: 843 additions & 0 deletions CLAUDE.md

Large diffs are not rendered by default.

66 changes: 0 additions & 66 deletions RELEASING.md

This file was deleted.

4 changes: 2 additions & 2 deletions docs/architecture-boundaries.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,8 @@ Rules for new code:

### Feature Public APIs

- `visualizer` exposes controller + scene/panel surface through `src/features/visualizer/index.ts`
- `urdf-viewer` exposes controller + scene/panel surface through `src/features/urdf-viewer/index.ts`
- `editor`(统一 Editor 公开入口)exposes controller + scene/panel surface through `src/features/editor/index.ts`
- `urdf-viewer`(Editor 实现子目录)retains runtime/components/utils internals through `src/features/urdf-viewer/index.ts`
- `file-io` exposes import/export entry points through `src/features/file-io/index.ts`

### Canonical Data Sources
Expand Down
61 changes: 25 additions & 36 deletions docs/prompts/CLAUDE.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
# URDF-Studio 开发指南

> 单一主 Prompt 上下文。`overview.md`、`URDF_STUDIO_STYLE_GUIDE.md`、`urdf-viewer.md`、`visualizer.md` 只保留轻量入口,避免重复加载同一批信息。
> 单一主 Prompt 上下文。`overview.md`、`URDF_STUDIO_STYLE_GUIDE.md`、`urdf-viewer.md` 只保留轻量入口,避免重复加载同一批信息。

## 1. 最小读取策略

建议按以下顺序读取,控制 token:

1. 先读仓库根目录 `AGENTS.md`。
1. 先读仓库根目录 `CLAUDE.md`。
2. 再读本文件。
3. 仅在任务相关时再看对应轻量入口:
- UI / 主题 / 可访问性:看本文件第 6 节
- `Visualizer`(`Editor` 下的拓扑 / 硬件能力):看本文件第 7 节
- `URDF Viewer`(`Editor` 下的几何 / 碰撞 / 测量能力):看本文件第 8 节
- `Editor 拓扑/硬件子域`:看本文件第 7 节
- `Editor 几何/碰撞/测量子域`:看本文件第 8 节
- 架构边界 / 对外库 / runtime fallback 审计:看 `docs/architecture-boundaries.md`、`docs/robot-canvas-lib.md`、`docs/runtime-fallback-audit.md`
4. AI 审阅标准直接读取:
- `src/features/ai-assistant/config/urdf_inspect_standard_en.md`
Expand All @@ -22,7 +22,7 @@
- 当前在 `Editor` 中操作的是拓扑、几何/碰撞、还是硬件相关能力
- 涉及电机时的力矩 / 传动 / 阻尼约束

若本文件描述与当前 `src/` 真实结构冲突,以仓库现状和 `AGENTS.md` 为准。
若本文件描述与当前 `src/` 真实结构冲突,以仓库现状和 `CLAUDE.md` 为准。

## 1.5 Skill-first 路由(减少 prompt / MCP token)

Expand Down Expand Up @@ -187,11 +187,11 @@ app -> features -> store -> shared -> core -> types

## 4. 单模式 `Editor`

| 子能力 | 主模块 | 典型任务 |
| ------------------ | ------------- | ---------------------------------------------- |
| 拓扑编辑 | `Visualizer` | Link / Joint 增删、拓扑编辑、关节参数 |
| 几何 / 碰撞 / 测量 | `URDF Viewer` | Visual / Collision、网格、材质、纹理、碰撞变换 |
| 硬件配置 | `Visualizer` | 电机型号、传动比、阻尼、摩擦 |
| 子能力 | 主模块 | 典型任务 |
| ------------------ | ----------------- | ---------------------------------------------- |
| 拓扑编辑 | `Editor 拓扑子域` | Link / Joint 增删、拓扑编辑、关节参数 |
| 几何 / 碰撞 / 测量 | `Editor 几何子域` | Visual / Collision、网格、材质、纹理、碰撞变换 |
| 硬件配置 | `Editor 硬件子域` | 电机型号、传动比、阻尼、摩擦 |

新增功能前,先判断属于 `Editor` 下哪类子能力,避免跨子系统逻辑缠绕。

Expand All @@ -206,7 +206,7 @@ app -> features -> store -> shared -> core -> types

- `src/app/App.tsx`:根组件,装配 Providers、懒加载模态框、全局导入导出入口、debug bridge
- `src/app/AppLayout.tsx`:应用壳、Header、TreeEditor、PropertyEditor、UnifiedViewer 主编排
- `src/app/components/UnifiedViewer.tsx`:统一组合 `Visualizer` / `URDF Viewer`
- `src/app/components/UnifiedViewer.tsx`:统一 `Editor` viewer 组合入口
- `src/app/components/WorkspaceCanvas.tsx`:应用层对共享画布入口的 re-export;底层 runtime 在 `src/shared/components/3d/workspace/*`
- `src/app/components/AppLayoutOverlays.tsx`:延迟加载桥接创建、碰撞优化等浮层
- `src/app/components/ConnectedDocumentLoadingOverlay.tsx` / `src/app/components/DocumentLoadingOverlay.tsx` / `src/app/components/ImportPreparationOverlay.tsx`:导入准备与文档加载反馈
Expand Down Expand Up @@ -320,25 +320,15 @@ app -> features -> store -> shared -> core -> types
- Hover / Active / Focus 行为一致且可感知
- 不新增分散硬编码色值

## 7. Visualizer(Editor 子能力:拓扑 / 硬件
## 7. Editor 统一 Viewer 子域(已合并

### 当前结构

- `src/features/visualizer/components/Visualizer.tsx`
- `src/features/visualizer/components/VisualizerScene.tsx`
- `src/features/visualizer/components/VisualizerPanels.tsx`
- `src/features/visualizer/components/VisualizerCanvas.tsx`
- `src/features/visualizer/components/VisualizerHoverController.tsx`
- `src/features/visualizer/components/nodes/*`
- `src/features/visualizer/components/controls/*`
- `src/features/visualizer/components/constraints/*`
- `src/features/visualizer/hooks/*`
- `src/features/visualizer/hooks/useVisualizerState.ts`
- `src/features/visualizer/hooks/useCollisionMeshPrewarm.ts`
- `src/features/visualizer/utils/mergedVisualizerSceneMode.ts`
- `src/features/visualizer/utils/mergedVisualizerLayout.ts`
- `src/features/visualizer/utils/materialCache.ts`
- 共享面板在 `src/shared/components/Panel/*`
- 公开入口:`src/features/editor/index.ts`
- 实现目录:`src/features/urdf-viewer/components/*`、`src/features/urdf-viewer/hooks/*`、`src/features/urdf-viewer/utils/*`
- 统一场景宿主:`src/app/components/unified-viewer/*`
- 共享 3D 能力:`src/shared/components/3d/*`
- 共享面板:`src/shared/components/Panel/*`

### 核心模式

Expand All @@ -348,22 +338,21 @@ RobotNode (Link) -> JointNode (Joint) -> RobotNode (child Link)

关键 hooks / 能力:

- `useJointPivots`
- `useCollisionRefs`
- `useClosedLoopDragSync`
- `useTransformControls`
- `useVisualizerController`
- `useViewerController`
- `useMouseInteraction`
- `useHoverDetection`
- `useVisualizationEffects`

### 实现约束

- 新能力优先放入 hooks 或新组件,不继续增厚 `Visualizer.tsx`
- 材质必须通过 `materialCache` 复用,不在高频路径直接 `new` 材质
- 新能力优先放入 hooks 或新组件,不要恢复双壳并存
- 材质必须通过 `materials.ts` / `urdfMaterials.ts` 复用,不在高频路径直接 `new` 材质
- 统一使用 `RobotState` 等共享类型,避免 `any`
- TransformControls 依赖的引用注册必须完整、可追踪
- 保持 `RobotNode <-> JointNode` 交替递归模式
- 涉及 THREE 资源时注意释放,避免材质 / 几何体泄漏

## 8. URDF Viewer(Editor 子能力:几何 / 碰撞 / 测量)
## 8. Editor 几何/碰撞/测量子域

### 当前结构

Expand Down Expand Up @@ -392,7 +381,7 @@ RobotNode (Link) -> JointNode (Joint) -> RobotNode (child Link)

### 核心文件

- `src/features/urdf-viewer/components/URDFViewerCanvas.tsx`
- `src/features/urdf-viewer/components/ViewerCanvas.tsx`
- `src/features/urdf-viewer/components/ViewerToolbar.tsx`
- `src/features/urdf-viewer/components/ViewerLoadingHud.tsx`
- `src/features/urdf-viewer/components/UsdWasmStage.tsx`
Expand Down
1 change: 0 additions & 1 deletion docs/prompts/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@
2. 再读 `docs/prompts/CLAUDE.md`
3. 只在需要文件锚点时再看:
- `docs/prompts/URDF_STUDIO_STYLE_GUIDE.md`
- `docs/prompts/visualizer.md`
- `docs/prompts/urdf-viewer.md`
4. 需要边界或对外库说明时再看:
- `docs/architecture-boundaries.md`
Expand Down
11 changes: 6 additions & 5 deletions docs/prompts/urdf-viewer.md
Original file line number Diff line number Diff line change
@@ -1,13 +1,14 @@
# URDF Viewer 模块入口
# Editor 几何/碰撞/测量子域入口

本文件改为轻量入口,完整上下文已并入 `docs/prompts/CLAUDE.md` 第 8 节。
说明:`urdf-viewer` 是 `Editor` 内部子域目录名,不是独立运行模式。

## 快速定位

- 主组件:`src/features/urdf-viewer/components/URDFViewer.tsx`
- 场景编排:`src/features/urdf-viewer/components/URDFViewerScene.tsx`
- 面板编排:`src/features/urdf-viewer/components/URDFViewerPanels.tsx`
- 画布层:`src/features/urdf-viewer/components/URDFViewerCanvas.tsx`
- 主入口:`src/app/components/unified-viewer/ViewerSceneConnector.tsx`
- 场景编排:`src/features/urdf-viewer/components/ViewerScene.tsx`
- 面板编排:`src/features/urdf-viewer/components/ViewerPanels.tsx`
- 画布层:`src/features/urdf-viewer/components/ViewerCanvas.tsx`
- 工具条:`src/features/urdf-viewer/components/ViewerToolbar.tsx`
- Loading HUD:`src/features/urdf-viewer/components/ViewerLoadingHud.tsx`
- USD 嵌入入口:`src/features/urdf-viewer/components/UsdWasmStage.tsx`
Expand Down
29 changes: 0 additions & 29 deletions docs/prompts/visualizer.md

This file was deleted.

4 changes: 2 additions & 2 deletions docs/robot-canvas-lib.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ import { RobotCanvas } from '@/lib';
onJointAnglesChange={(jointAngles) => {
console.log(jointAngles);
}}
/>
/>;
```

## 已完成
Expand All @@ -66,7 +66,7 @@ import { RobotCanvas } from '@/lib';

- `assets` 目前仍是 `Record<string, string>`,后续应升级为 `assetResolver`
- 类型声明现在已切到 `tsc` 自动生成,并对产物里的 `@/` 别名做发布前重写
- `Visualizer` 仍属于应用内编辑壳,尚未抽成独立可发布子包
- `editor` 子域能力仍属于应用内壳,尚未抽成独立可发布子包

## 当前发布方式

Expand Down
13 changes: 13 additions & 0 deletions handoff.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<!DOCTYPE html>
<html lang="en" translate="no">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>URDF Studio Import Handoff</title>
<link rel="icon" type="image/png" href="/logos/logo.png" />
</head>
<body>
<div id="root"></div>
<script type="module" src="/src/handoff/main.ts"></script>
</body>
</html>
Empty file removed log/COLCON_IGNORE
Empty file.
5 changes: 0 additions & 5 deletions metadata.json

This file was deleted.

Loading
Loading