You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Epic: Epic A — Unified mesh-ops registry (foundation) Priority: P0
Context
Mesh-editing logic (repair, decimate, smooth) already exists and works, but it's scattered across individual workflow-node processors (mesh-repair/processor.py, mesh-optimizer/processor.ts, mesh-smoother/). Neither the chat agent nor a future edit panel can call it directly. This ticket extracts that logic into one shared registry that workflow nodes, the agent, and the UI can all consume — the foundation everything else in Epic A/B/C depends on.
Scope
Create api/services/mesh_ops/: a registry of { id, label, params_schema, fn, destructive?, undoable?, category } entries, modeled on generator_registry.py.
Migrate the logic from mesh-repair/processor.py (dedupe, non-manifold, degenerate, fill holes) into registry op(s).
Migrate smooth (already in optimize.py) and the mesh-optimizer/mesh-smoother logic into the registry — decide which decimate implementation to keep (pymeshlab vs meshopt) instead of keeping both.
Workflow nodes become thin wrappers that call the registry (no regression: identical results to before the migration).
Generic endpoint POST /optimize/op/{op_name} + GET /optimize/ops (list + schemas + categories).
Acceptance criteria
A regression test confirms mesh-repair/mesh-optimizer/mesh-smoother produce identical output before/after the migration; the same ops are callable via /optimize/op/.
Epic: Epic A — Unified mesh-ops registry (foundation)
Priority: P0
Context
Mesh-editing logic (repair, decimate, smooth) already exists and works, but it's scattered across individual workflow-node processors (
mesh-repair/processor.py,mesh-optimizer/processor.ts,mesh-smoother/). Neither the chat agent nor a future edit panel can call it directly. This ticket extracts that logic into one shared registry that workflow nodes, the agent, and the UI can all consume — the foundation everything else in Epic A/B/C depends on.Scope
api/services/mesh_ops/: a registry of{ id, label, params_schema, fn, destructive?, undoable?, category }entries, modeled ongenerator_registry.py.mesh-repair/processor.py(dedupe, non-manifold, degenerate, fill holes) into registry op(s).smooth(already inoptimize.py) and themesh-optimizer/mesh-smootherlogic into the registry — decide which decimate implementation to keep (pymeshlab vs meshopt) instead of keeping both.POST /optimize/op/{op_name}+GET /optimize/ops(list + schemas + categories).Acceptance criteria
A regression test confirms
mesh-repair/mesh-optimizer/mesh-smootherproduce identical output before/after the migration; the same ops are callable via/optimize/op/.From
ROADMAP_0.5.md.