Skip to content

Manufacturability drawer: rule grouping, part attribution, premium chrome#221

Merged
ecto merged 4 commits into
mainfrom
claude/upbeat-kilby-d43036
May 13, 2026
Merged

Manufacturability drawer: rule grouping, part attribution, premium chrome#221
ecto merged 4 commits into
mainfrom
claude/upbeat-kilby-d43036

Conversation

@ecto
Copy link
Copy Markdown
Owner

@ecto ecto commented May 13, 2026

Summary

Moves the DFM panel from the right sidebar to a bottom drawer (resurrecting an unmerged refactor) and then iterates on it from first principles. The before-screenshot was 160 redundant cards with backend rule codes (casting.insufficient_draft) and no part attribution; the after is a grouped, triage-able list that names where each issue lives.

What changed

Drawer relocation (cherry-picked from the unmerged refactor-dfm-drawer branch)

  • Sidebar DfmPanel removed; replaced by DfmDrawer + footer DfmChip + Tools menu entry.
  • enabled defaults to on; drawer starts closed; chip stays small with severity counts.

Information architecture

  • Group identical rule firings: 90 "Draft 0.0°" cards → 1 collapsible row Draft <3° — 90 places. Sort errors first, then by frequency.
  • Resolve origin_op → part instance name via a one-pass walk over each PartDef's subtree, so each expanded row reads "FL_thigh_rotor · 0.01 mm measured · 3.00 mm required" instead of an anonymous rule code.
  • Replace process · rule jargon in the in-scene popover with the issue message itself; replace casting.foo subtitle on rows with the measured-vs-limit comparison.

Selection / interaction

  • Background click (onPointerMissed) now also clears the selected DFM issue, symmetric with part selection.
  • Lift selected annotation's zIndexRange from [100,0] to [1000,900] so its popover paints above sibling badges.
  • <Html> badge wrapper now pointer-events: none; only the badge button re-enables it. Wheel/drag falls through to OrbitControls so you can still orbit/zoom while pointing at a cluster.

Chrome polish

  • Sentence-case title with tracking-tight, vertical separator divider.
  • Severity filter chips become a dot + count (monochrome, no rainbow), with tooltip explaining the filter.
  • Native `<input type="checkbox">` replaced with a real On/Off switch (track + sliding thumb, properly inset).
  • Drawer raised to z-30 so it no longer fights the absolute-positioned left sidebar (z-20) — sidebar content was bleeding through the drawer before.

Test plan

  • Open any non-trivial assembly (e.g. Unitree Go2) → footer wrench chip shows red/amber counts.
  • Click the chip → drawer slides up; no z-fighting with the left sidebar.
  • Verify rule groups collapse the issue count (e.g. ~90 → 2 rows for sand casting).
  • Expand a group → instance rows are named (FL_thigh_rotor, etc.) with measured/limit on the right.
  • Click a row → annotation appears in 3D; popover not obscured by neighbour badges.
  • Mouse-wheel while cursor is over the popover/badge cluster → camera still zooms.
  • Click empty viewport → both part selection and DFM card selection clear.
  • Toggle the On/Off switch → thumb slides cleanly inside the track.

🤖 Generated with Claude Code

ecto and others added 4 commits May 12, 2026 11:04
The runDfm WASM binding takes root_node_id as Rust u64, which
wasm-bindgen marshals as a JS BigInt. Passing a regular Number threw
"Cannot convert 8 to a BigInt" the moment the Manufacturability "Live
check" was enabled. Convert at the JS boundary and tighten the local
interface to match.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The DFM panel was wedged into the right sidebar where it fought the
parts tree for vertical space and got clipped on long part lists.
Manufacturability is a diagnostic surface (closer to an IDE "Problems"
pane than a property panel), so move it:

- Footer chip in the status bar showing severity counts in real time —
  the heads-up indicator that something needs attention.
- Bottom drawer (slide-up) holding the full triage UI: process picker,
  severity filters, scrollable issue list. Opens / closes via the chip.
- Tools → "Manufacturability…" menu item for discoverability.
- Live check defaults to enabled now — the chip stays small when there
  are no issues and surfaces problems automatically.

Removes the old DfmPanel.tsx; the new DfmDrawer.tsx is the single home
for this UI.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The toggle in the drawer always read as "Live check" because the
sidebar version didn't have a visible title bar above it. Now that
"Manufacturability" is the panel title, the toggle just needs to say
what it does — turn the whole feature on / off.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Iterative cleanup on the manufacturability drawer after moving it to
the bottom dock:

- Group identical rule firings into one collapsible row ("Section 0.01
  mm — 90 places") so 160 redundant cards collapse to ~10 triage-able
  rows. Sort errors first, then by frequency.
- Resolve `origin_op` → part instance name via a one-pass walk over
  each PartDef's tree, so each expanded issue row names *where* it
  lives instead of leaving it anonymous.
- Replace `process · rule` jargon in the popover and `casting.foo` rule
  codes in the cards with the issue message + measured-vs-limit line.
- Lift the selected annotation's `zIndexRange` so its popover paints
  above sibling badges instead of getting obscured.
- Drawer toolbar refresh: sentence-case title, vertical separator,
  monochrome severity-dot filter chips, custom On/Off switch in place
  of the native checkbox.
- Let wheel/drag pass through the `<Html>` badge cluster to the canvas
  so OrbitControls keep working — only the badge button re-enables
  pointer events.
- Background click clears the DFM card selection (symmetric with
  part-selection clearing on `onPointerMissed`).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@vercel
Copy link
Copy Markdown

vercel Bot commented May 13, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

4 Skipped Deployments
Project Deployment Actions Updated (UTC)
mecheval Ignored Ignored May 13, 2026 3:13pm
vcad Ignored Ignored May 13, 2026 3:13pm
vcad-docs Ignored Ignored May 13, 2026 3:13pm
vcad-mcp Ignored Ignored May 13, 2026 3:13pm

Request Review

@ecto ecto merged commit c70df06 into main May 13, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant