173 Commits

Author SHA1 Message Date
Wassim SAMAD
e799ff70da Add DragSession + useDragAction hook (Phase 1, 5/6)
Pure orchestrator in core, thin React wrapper in editor:

- `core/services/drag-session.ts` — `createDragSession(action, scene,
  options)` returns an imperative session with `start / move / commit
  / cancel / dispose / isActive / getDraft`. Pauses history on start,
  resumes on terminate. Per-move runs preview → snap → apply, then
  cascades dirty marks via the relations resolver (deduped across
  ticks). Re-entry guard, idempotent dispose, fires onCommit/onCancel
  callbacks. All tested in bun:test — no React needed.

- `editor/src/hooks/use-drag-action.ts` — wraps the session with the
  editor's grid-event emitter and an Esc-to-cancel keyboard listener.
  Builds a `SceneApi` once via `createSceneApi(useScene)` at module
  init. The hook itself is small enough to read top-to-bottom; all
  behavior lives in the session.

Tests (13 cases) cover the hard parts: history pause/resume bracket,
explicit cancel restoring all touched nodes, dispose mid-drag, commit
returning false short-circuiting to cancel, snap callback wired in,
re-entry rejected, deduped dirty-mark across multiple move ticks,
hosts cascade from the registry firing in apply.

No callers yet — Phase 2 column and shelf tools are the first
consumers.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 12:43:12 -04:00
Wassim SAMAD
2a8eb3e1de Registry-first dispatch in ToolManager (shim 4/4)
Before mounting any legacy build tool, ToolManager checks whether the
active tool's kind has a registered NodeDefinition with a tool
contribution. If yes, the registry tool wins; the legacy tool map and
special-cased spawn/column/elevator branches are skipped for that kind.

Lazy-loaded via React.lazy (cached by loader) and wrapped in Suspense.

Today the registry is empty, so useRegistryTool is always false and
every code path renders unchanged. The moment a kind registers (Phase
2+), its registry tool takes over without further edits here.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 11:39:31 -04:00
sudhir
1ffa3d2d73 Restore item controls and guard placement asset bounds 2026-05-13 22:45:58 +05:30
sudhir
ce69433a1a Refine elevator sync and viewer rebuild handling 2026-05-13 22:28:19 +05:30
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
70c85d7760 Refine wall move previews and expose auto-slab planning 2026-05-12 12:15:45 +05:30
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
be41511474 Fix wall move junction ownership 2026-05-11 23:46:57 +05:30
Wawa
8921e341cc Bump inter-package peerDeps to ^0.8.0 + fix release.yml sync bug
Two bugs in one fix:

1. The 0.8.0 release commit only bumped .version, not the inter-package
   peerDependencies / devDependencies. So the published packages still
   declared peer constraints like "@pascal-app/viewer": "^0.7.0". Caret
   in semver 0.x doesn't allow 0.8.0 to satisfy ^0.7.0, so bun resolves
   workspace consumers (and apps/editor's deep import paths) to the
   stale npm-published 0.7.0 instead of the workspace 0.8.0 — meaning
   local edits never show up in apps/editor or any linked consumer.

2. The release.yml sync step was using $GITHUB_ENV to read back the new
   versions in the same step, which doesn't work — env-file writes only
   surface in subsequent steps. Switched to a bash associative array
   (NEW_VERSIONS) for in-step lookup, kept the $GITHUB_ENV write for the
   downstream publish/commit/tag steps. Also added a final "refs after
   sync" debug print so this is visible in the workflow log.

After this lands and you bun install, packages/editor/node_modules/@pascal-app/viewer
should symlink to the workspace packages/viewer/, not to .bun/@pascal-app+viewer@0.7.0.
Future releases will sync peerDeps correctly on their own.
2026-05-10 13:12:08 +00:00
sudhir
4956de4910 Refine column support selection and polygon handling 2026-05-10 12:51:57 +05:30
sudhir
92a9846193 Refactor elevator systems across core, viewer, and editor 2026-05-10 12:38:44 +05:30
sudhir
909f96ef09 Improve elevator floorplan resize and drag controls 2026-05-10 12:20:53 +05:30
sudhir
fdf08c091f Add elevator floorplan overlay 2026-05-10 10:50:22 +05:30
github-actions[bot]
60dbfcd3fe release: @pascal-app/core@0.8.0 @pascal-app/viewer@0.8.0 @pascal-app/editor@0.8.0 @pascal-app/mcp@0.2.0 2026-05-10 00:41:38 +00:00
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
open-pascal
146f0a846f release: v0.7.0 2026-05-09 14:37:55 +00:00
sudhir
2480be91b1 Optimize elevator editing performance with live previews 2026-05-09 19:09:48 +05:30
Pascal
723ae14e9b release: v0.6.1 2026-05-09 02:25:15 +00:00
sudhir
0514363136 Add column hit testing and align column defaults 2026-05-08 14:31:58 +05:30
sudhir
53393b7def Add procedural support column variants 2026-05-08 12:54:59 +05:30
Wassim SAMAD
e348ccdb08
Merge pull request #296 from sudhir9297/wed-6-may-bug-fix
fix: Improve item surface placement, floorplan resizing, and placement preview stability
2026-05-07 13:09:20 -04:00
sudhir
c0a21058d4 fix list 2026-05-07 17:01:06 +05:30
sudhir
d2d714ba68 Smooth window animations and bay caps 2026-05-07 16:20:22 +05:30
sudhir
8f6a8fbe8b Add first-person window interaction 2026-05-07 13:50:30 +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
cef3f24dad Move door animations into viewer system 2026-05-07 10:11:25 +05:30
sudhir
34c847620f Fix floor item placement cursor height 2026-05-06 15:56:46 +05:30
sudhir
7e86e4628c Fix item surface placement and remove item height annotations 2026-05-06 15:13:37 +05:30
sudhir
d403606b72 Add floorplan side resizing handles 2026-05-06 14:18:44 +05:30
sudhir
70933adf9d Fix floorplan player move and action menu anchoring 2026-05-06 13:54:05 +05:30
sudhir
0de07d6130 Separate runtime door animation and add dual-side handles 2026-05-06 11:22:50 +05:30
Wassim SAMAD
5f57e9bb09
Merge pull request #292 from sudhir9297/feat/mon-4-feat-fix
feat: column node with door/window nodes improvement
2026-05-05 16:39:21 -04:00
wass08
3a181e57da remove override 2026-05-05 09:09:18 -04:00
wass08
823168ddf4 default catalog update 2026-05-05 09:04:49 -04:00
sudhir
f5f80d0f3f Centralize door animation state and operation mapping 2026-05-05 17:23:48 +05:30
sudhir
0ef2254e6b Fix first-person door toggles and colliders 2026-05-05 17:14:28 +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
Pascal
1002a0a980 feat(editor): precise item dimensions — static bounding boxes, placement-math, remove item-mesh-metadata system
- Replace runtime mesh-based bounding-box computation with static dimension-based polygons for item footprints
- Add snapUpToGridStep() and getGridAlignedDimensions() to placement-math for grid-cell-aligned placement wireframes
- Add expandBoundsToGrid() to use-placement-coordinator for consistent wireframe snapping
- Add currentCursorRotationY to PlacementContext; preserve world orientation across item-surface transitions
- Fix item detach from surface: use worldToBuildingLocal() instead of event.localPosition to avoid coordinate-space jump
- Subscribe to useLiveTransforms in FloorplanPanel during placement so R/T keyboard rotation refreshes the 2D overlay immediately
- Fix FloorplanItemImage rotation (+180° to account for top-down camera capture orientation)
- Simplify spatial-grid-manager: single dimension-based getItemLocalBounds(), removes runtime mesh-metadata path
- Remove item-mesh-metadata system (compute-item-mesh-metadata, item-mesh-metadata-system, sync-request)
2026-05-04 19:35:41 +00:00
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
eee7af9e25 Add draggable level reordering to floating selector 2026-05-01 14:55:24 +05:30