67 Commits

Author SHA1 Message Date
Wassim SAMAD
f874cecf8f ParametricInspector: fine-grained per-field subscriptions
Subscribe to node.type at the top and to each field's value individually
inside FieldRenderer. Slider drags previously re-rendered the entire
inspector + every field every tick because the panel subscribed to the
whole node object (which gets a new reference on every updateNode).
Primitive field values stay === equal across unrelated mutations, so
now only the dragged field re-renders.

Handlers (move/delete/update) use useScene.getState() inside callbacks
instead of subscribing — they only need the current value, not a
reactive read.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 17:06:02 -04:00
Wassim SAMAD
9d17683feb Add ParametricInspector — auto-derive right-panel UI from definition.parametrics
First slice of Phase 4 work pulled in: an inspector that reads any
registered node's `parametrics` descriptor and renders the right-side
panel automatically. Verifies the parametric descriptor design end-to-end
on shelf and proves the loop (descriptor → UI → store update → render).

ParametricInspector component:
- Reads `nodeRegistry.get(node.type)?.parametrics`.
- Renders one `<PanelSection>` per group, one control per field.
- Field kinds supported in v1:
  * `number` → SliderControl with min/max/step/unit from descriptor
  * `enum`   → dark-themed <select> with prettified labels
  * `color`  → native color picker + hex input pair
  * `vec3`   → 3× SliderControl (X / Y / Z)
- Honors `field.visibleIf(node)` to gate conditional fields.
- Generic Actions footer with Move / Delete, gated on
  `capabilities.movable` / `capabilities.deletable !== false`.
- Title from `presentation.label`, defaults to `node.type`.

Wired as the `default:` arm of panel-manager.tsx's switch — registered
kinds without a hardcoded case (shelf, future kinds) get the auto-derived
panel. Spawn keeps its hand-written panel (the legacy switch catches
it first); we'll switch to registry-first dispatch when Phase 4 finishes
and the hand-written panels can be deleted.

What you can verify after this:
- Click a shelf → right panel shows Dimensions (width/depth/thickness/
  height sliders with units + bounds from the schema) + Style (bracket
  style select + color picker) + Actions (Move / Delete).
- Drag a slider → mesh updates live (store update → renderer re-renders).
- Try to set width > 3.0 — schema rejects, no update fires (the
  parametric bounds are enforced by Zod, same source of truth as MCP
  bound generation in Phase 4's MCP work).

Not in scope for this commit:
- `parametrics.customPanel?` escape hatch.
- `material` / `ref` field kinds.
- `invariants` validation feedback in the UI.
- Migration of legacy panels (spawn/column/etc.) to the auto-generated
  path — those keep working unchanged.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 16:45:57 -04:00
sudhir
9838d2cd4f Refactor elevator runtime into core 2026-05-13 01:56:06 +05:30
sudhir
b782ce9cf2 Merge branch 'main' into feat/elevator-system
# Conflicts:
#	packages/editor/src/components/tools/item/move-tool.tsx
#	packages/editor/src/components/tools/tool-manager.tsx
#	packages/editor/src/components/ui/panels/panel-manager.tsx
#	packages/editor/src/store/use-editor.tsx
#	packages/viewer/src/components/renderers/site/site-renderer.tsx
#	packages/viewer/src/components/viewer/ground-occluder.tsx
#	packages/viewer/src/components/viewer/index.tsx
#	packages/viewer/src/components/viewer/post-processing.tsx
2026-05-13 01:38:55 +05:30
Wassim SAMAD
9c248b7e0c fix max panel height 2026-05-12 12:06:27 -04:00
sudhir
f3444d4275 Add wall drag previews and fix move arrow handles 2026-05-12 11:00:27 +05:30
sudhir
564bfa229e Merge remote-tracking branch 'origin/main' into fix/fri-8-may
# Conflicts:
#	packages/editor/src/components/tools/fence/move-fence-endpoint-tool.tsx
#	packages/editor/src/components/tools/select/box-select-tool.tsx
#	packages/editor/src/components/tools/wall/move-wall-tool.tsx
#	packages/editor/src/components/ui/panels/column-panel.tsx
#	packages/editor/src/components/ui/panels/door-panel.tsx
#	packages/editor/src/components/ui/panels/window-panel.tsx
#	packages/viewer/src/components/renderers/column/column-renderer.tsx
#	packages/viewer/src/components/viewer/index.tsx
#	packages/viewer/src/systems/slab/slab-system.tsx
2026-05-12 00:27:06 +05:30
sudhir
d78308b366 Hide inapplicable door and window panel settings 2026-05-12 00:05:41 +05:30
sudhir
4956de4910 Refine column support selection and polygon handling 2026-05-10 12:51:57 +05:30
sudhir
909f96ef09 Improve elevator floorplan resize and drag controls 2026-05-10 12:20:53 +05:30
sudhir
263228cbf0 Add cab door-open control and align elevator buttons 2026-05-10 02:28:00 +05:30
Wawa
e618175bba Reset core/viewer/editor/mcp packages and apps/editor from private-editor
Wholesale swap of packages/{core,viewer,editor,mcp} and apps/editor with the
versions from the private editor repo, which is the production source of truth.

Setup changes:
- packages/{core,viewer,editor} versions held at 0.7.0 baseline (matching
  the most recent published release) so a bump=minor publishes 0.8.0
- packages/mcp held at 0.1.1 (never published; first publish will go through
  the new release.yml flow)
- peerDependencies and devDependencies for inter-package @pascal-app/*
  references pinned to ^0.7.0 instead of '*' / 'workspace:*' so they are
  valid for npm consumers
- Root package.json: TypeScript bumped to 6.0.2, added overrides for
  @types/react, @types/react-dom, @types/three to prevent JSX namespace
  fragmentation across the workspace
- release.yml extended to also publish editor and mcp; 'both' option renamed
  to 'all'; added a sync step that updates inter-package peerDeps/devDeps to
  match the new versions on every bump (so viewer/editor/mcp tarballs always
  reference the version of core they were built against)
- Root scripts gained release:editor and release:mcp shortcuts

Verification:
- bun install --frozen-lockfile is consistent
- packages/{core,viewer,mcp} build cleanly, dist/index.d.ts emitted
- packages/editor check-types reports 21 pre-existing errors, identical to
  what private-editor currently reports

Open PRs against editor-v2 will need rebasing/conflict resolution.
2026-05-09 20:52:26 +00:00
sudhir
2480be91b1 Optimize elevator editing performance with live previews 2026-05-09 19:09:48 +05:30
sudhir
53393b7def Add procedural support column variants 2026-05-08 12:54:59 +05:30
sudhir
d2d714ba68 Smooth window animations and bay caps 2026-05-07 16:20:22 +05:30
sudhir
133d81e563 Refine window corner shape support 2026-05-07 13:34:16 +05:30
sudhir
eef19804d1 Merge branch 'main' into feat/door-improvement
# Conflicts:
#	packages/core/src/events/bus.ts
#	packages/viewer/src/systems/door/door-system.tsx
2026-05-07 10:40:51 +05:30
sudhir
0de07d6130 Separate runtime door animation and add dual-side handles 2026-05-06 11:22:50 +05:30
sudhir
6df4b4895c Add garage door types and animated door controls 2026-05-05 14:20:41 +05:30
sudhir
1490d280d4 Refine editor layer boundaries and selection handling 2026-05-05 13:26:39 +05:30
sudhir
762c9fc763 Refactor guide events and column placement handling 2026-05-04 23:06:23 +05:30
sudhir
db765f1eb3 Enable pillar duplication in floating action menu 2026-05-04 22:54:52 +05:30
sudhir
848529acb0 Add column presets and procedural shaft controls 2026-05-04 16:38:52 +05:30
sudhir
46548c35e5 Fix curved wall and fence angle measurements 2026-05-04 11:29:01 +05:30
sudhir
b3f7957076 Refactor editor selection and viewer integration 2026-05-01 13:54:23 +05:30
sudhir
09bfb0b484 Add frameless door openings and first-person collider support 2026-05-01 11:35:26 +05:30
sudhir
3df3d12f46 Refactor guide UI state and slab rendering 2026-05-01 00:33:57 +05:30
sudhir
1dc9ea0ba8 Replace spawn marker with box-based figure 2026-04-30 23:34:14 +05:30
sudhir
f375861439 Merge branch 'main' of github.com:sudhir9297/editor into feat/improvement-and-fixes 2026-04-30 22:59:10 +05:30
sudhir
8631622e60 Refactor editor workflow and update UI state handling 2026-04-30 13:37:52 +05:30
Sudhir Yadav
9ff657419c
Merge branch 'main' into feat/upgrade-and-bug-fix 2026-04-29 10:49:11 +05:30
Aymeric Rabot
aa43bb6a43
feat: backport monorepo PRs #297, #302, #306 — floorplan thumbnails + mobile editor UI
Port floorplan item thumbnails, full mobile editor UI, and
mobile polish from the private monorepo into the public editor.

Monorepo PR #297 (feat/item-admin-advanced):
- Add optional floorPlanUrl to item asset schema (core)
- Render 2D floor-plan images inside item footprints on floorplan
- Improve slider drag with modifier key re-anchoring

Monorepo PR #302 (feat/mobile-ui):
- Mobile editor layout with draggable bottom sheet
- Mobile tab bar, selection bar, and panel sheet
- Mobile-aware panel manager and panel wrapper
- useIsMobile rewrite (useSyncExternalStore, SSR-safe)
- Camera actions hideOrbit prop
- GridSnapControl and SecondaryToggles exports
- Action menu hides on mobile contextual tabs
- SidebarTab extended with mobileDefaultSnap/mobileIcon

Monorepo PR #306 (feat/mobile-ui-polish):
- Touch gesture mapping for camera controls (one/two/three finger)
- Snap ratio constants for bottom sheet
- Thumbnail generator WebGL2 fallback (bottom-up row flip)
- ErrorBoundary scope logging, viewer scene wrap
- GPUDeviceWatcher enhanced logging and uncaptured error handler
- WebGPURenderer init error handling and diagnostics
- Post-processing log improvements
- MergedOutlineNode WebGL2 FBO corruption fix

Excluded: apps/community/*, apps/editor/*, packages/community-*,
.cursor/*, .env.example (monorepo-only files)

Co-authored-by: Pascal <open@pascal.app>
2026-04-28 06:36:08 -07:00
sudhir
15daeaace6 Standardize stair controls on slider inputs 2026-04-28 14:50:51 +05:30
sudhir
bead8796d2 Add spawn node support and refine stair and door cutouts 2026-04-28 14:26:24 +05:30
sudhir
025a9b5d28 Add duplicate options to level menus 2026-04-28 11:09:51 +05:30
Sudhir Yadav
bc93f09304
Merge branch 'main' into feat/2d-editor 2026-04-27 18:07:28 +05:30
sudhir
d00ba42b9f Enable drag after duplicating roofs and stairs 2026-04-27 13:32:31 +05:30
sudhir
275a42cc7f Simplify paint material compatibility logic 2026-04-25 00:15:29 +05:30
sudhir
2876f39876 Refactor paint materials to use category-based compatibility 2026-04-23 12:48:50 +05:30
sudhir
88b2f095f1 Merge branch 'feat/color-picker-tool' of github.com:sudhir9297/editor into feat/color-picker-tool 2026-04-23 10:26:54 +05:30
sudhir
4483957a0d Remove material pickers from side panels 2026-04-23 10:21:33 +05:30
Sudhir Yadav
8fde99e7c9
Merge branch 'main' into feat/color-picker-tool 2026-04-22 17:57:26 +05:30
sudhir
5d75e29bc5 Add material paint mode with scrollable palette 2026-04-21 15:00:09 +05:30
sudhir
ec393b0c91 Use live snap settings in polygon editor and slab actions 2026-04-21 11:46:57 +05:30
sudhir
8ae217502c Add curved fence support 2026-04-21 11:26:49 +05:30
sudhir
8cf2df1483 Unify material target selection across wall stair and roof 2026-04-20 22:45:56 +05:30
sudhir
dd5b6e5e83 Fix slab material reload and wall curve step 2026-04-20 14:13:47 +05:30
sudhir
dfdeca4aae Refine roof edit selection behavior and panel actions 2026-04-20 13:08:45 +05:30
sudhir
bbc351d3a4 Add roof material targets and UV mapping 2026-04-20 12:57:06 +05:30
sudhir
4f9b822e54 Add click-targeted stair materials and UV mapping 2026-04-20 12:01:23 +05:30