Skip to content

feat(app): adopt v3 design system tokens + transparent 3D viewport#220

Merged
ecto merged 2 commits into
mainfrom
claude/crazy-shannon-2f8dbc
May 13, 2026
Merged

feat(app): adopt v3 design system tokens + transparent 3D viewport#220
ecto merged 2 commits into
mainfrom
claude/crazy-shannon-2f8dbc

Conversation

@ecto
Copy link
Copy Markdown
Owner

@ecto ecto commented May 13, 2026

Summary

Applies the canonical vcad v3 design system from the design bundle (ui_kits/app/) to the running app, and removes the colored 3D viewport background so only the grid, part, and lighting paint.

What changed

packages/app/src/index.css — design tokens

  • Light (.light): Vercel-clean — #FFFFFF bg/surface, #D4D4D4 hairlines, pure-black text, #666 muted, #F4F4F5 fills.
  • Dark (default): tuned-warm Apple neutrals — #0E0E10 stage, #1A1A1D chrome, #3A3A40 border, #F5F5F5 / #9C9CA3 / #6A6A70 text scale, #26262B hover. No more pure-black voids.
  • Fonts: --font-sans and new --font-display lead with SF Pro Text / SF Pro Display on Apple platforms; Inter remains the designed-identity fallback. Berkeley Mono kept for code-shaped surfaces only.
  • New tokens: --hairline (0.5px), --ease-spring (AppKit cubic-bezier), full --radius-xs/sm/md/lg/xl/pill stack, --border-soft, --text-2/-tert, --fill/-strong, --selection-bg/-fg.
  • Brand pink #F92672 unchanged — same hot-spot usage (wordmark dot, primary actions, focus, selection rail, footer heartbeat). Used sparingly so it earns its weight.
  • Tauri-mac vibrancy block retuned so chrome rides the new palette over AppKit's UnderWindow / Sidebar materials without losing contrast.

Viewport.tsx + ViewportContent.tsx — transparent 3D viewport

  • <Canvas> now uses gl={{ alpha: true }} with style={{ background: "transparent" }}. The page bg (var(--bg)) shows through, leaving only grid + part + lighting visible.
  • Removed the fallback <color attach="background" args={[isDark ? BG_DARK : BG_LIGHT]} />scene.background stays null so the alpha clear takes over. Doc-defined Solid backgrounds still win.
  • BG_DARK/BG_LIGHT exports retained as "transparent" for legacy callers; unused import dropped from ViewportContent.

.claude/launch.json — preview port fix

  • The dev-server preview was hitting chrome-error:// when another worktree owned :5173. Forwarding the launcher's $PORT to Vite (--port ${PORT:-5173} --strictPort) makes the preview work in any worktree.

Why

The handoff bundle from claude.ai/design locks v3 (Vercel-clean light + warm-Apple dark + SF Pro / Berkeley Mono + pink reserved) as the canonical direction. This PR brings the running app in line with the bundle's ui_kits/app/chrome.css and colors_and_type.css token contract.

Test plan

  • Browser preview verified in both light and dark — tokens resolve to the v3 spec values (--bg, --surface, --border, --text, --hover).
  • 3D viewport renders grid + robot arm + shadows on a transparent canvas; no scene-background regression.
  • No new console errors (only pre-existing Radix DialogTitle warnings).
  • Sanity-check Tauri-mac vibrancy on a real macOS build before merging.

🤖 Generated with Claude Code

Apply the canonical vcad v3 design system from the design bundle —
Vercel-clean light (#FFFFFF chrome, #D4D4D4 hairlines, pure-black text),
tuned-warm Apple dark (#0E0E10 stage / #1A1A1D chrome / #3A3A40 border,
softer text scale, no pure-black voids). Brand pink #F92672 unchanged
and reserved for hot-spots (wordmark dot, primary actions, focus,
selection, heartbeat). Font stack now leads with SF Pro Display /
SF Pro Text on Apple platforms, Inter as the designed-identity
fallback. Adds --font-display, --hairline, --ease-spring, the full
--radius-* stack, --text-2/-tert, --fill/-strong, and selection
tokens. Tauri-mac vibrancy block retuned to the new palette.

The 3D viewport canvas is now alpha:true / transparent — the
underlying chrome (--bg) shows through so only the grid, part, and
lighting paint. The fallback <color attach="background"> is removed;
doc-defined Solid backgrounds still win.

Also fixes the preview dev-server port collision when a sibling
worktree owns 5173 by forwarding the launcher's $PORT to Vite via
--port ${PORT:-5173} --strictPort.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@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:34pm
vcad Ignored Ignored May 13, 2026 3:34pm
vcad-docs Ignored Ignored May 13, 2026 3:34pm
vcad-mcp Ignored Ignored May 13, 2026 3:34pm

Request Review

Sweep through the app removing hard corners, raw red destructives, over-loud
brand-pink usage, and Material-curve timing on chrome animations. Aligns
every user-visible surface with the v3 design system (Apple-like with brand
pink reserved for hot-spots).

Primitives (cascade across the app)
- ui/dialog.tsx, ui/button.tsx, ui/scrub-input.tsx, ui/expression-input.tsx
  now ship with v3 radii (rounded-xl panel, rounded-md inputs/buttons),
  ease-spring transitions on buttons.

Popovers
- Header menubar dropdowns (rounded-lg, padded list, hairline separator).
- ContextMenu content + submenus (rounded-lg, items now use rounded-sm with
  bg-hover highlight instead of brand-pink wash).
- CommandPalette shell (rounded-xl + softer shadow); kbd hints now mono and
  rounded.

Modals (one rounding pass across the cluster)
- AboutModal, FeedbackModal, ForkPromptModal, InputPreferencesDialog,
  InlineOnboarding, ProductModal, ShareDialog, UsernamePickerModal,
  WhatsNewPanel, UpgradeModal, VersionHistoryModal, DocumentPicker — all
  rounded-xl with shadow-xl (down from shadow-2xl).
- DrawingToolbar floating dock → rounded-full capsule.
- QuotePanel → rounded-xl.

Chrome
- AppShell header underline + right-sidebar divider lifted from border/40
  to full --border so the panels read as defined sheets on the new
  Vercel-clean palette.

Brand pink demotions
- InlineProperties + FeatureTree rename inputs: neutral border with a brand
  focus ring instead of a resting brand stroke.
- PropertyPanel workflow-entry buttons ("Edit Circuit", "Open Embroidery"):
  fill-strong neutral instead of brand wash.
- ChatSidebar context pills: mono neutral chips instead of brand fills.
- ContextMenu items, FeatureTree primitive tiles, drag preview, destructive
  raw-red button all softened to neutral hover / proper rounded variants.

Motion
- vcad-chip-in, changelog-tooltip, upgrade-content, vcad-success-in,
  path-popover all moved off ease-out / (0.16, 1, 0.3, 1) to --ease-spring.

Tokens
- index.css @theme block now exposes --color-border-soft, --color-text-2,
  --color-text-tert, --color-fill, --color-fill-strong so Tailwind picks up
  the full v3 palette.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@ecto ecto merged commit 06c773d 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