Pascal
0bd0cab533
feat: stair system, scene graph utilities, read-only mode, viewer state improvements ( #210 )
...
Stair system (full stack):
- New StairNode + StairSegmentNode schemas with flights, landings, L/U-shapes
- StairSystem: geometry generation with throttled per-frame updates
- Stair tool, edit system, panels, tree node, and renderers
- Event bus types, scene registry, and command palette entries
Scene graph utilities:
- cloneLevelSubtree: deep-clone a level with remapped IDs
- forkSceneGraph: clone + strip scan/guide nodes for project forking
Core improvements:
- Read-only mode on scene store (blocks create/update/delete when locked)
- readOnly guards on node-actions and collection actions
- Upload store for scan/guide file upload handling
Viewer state:
- previewSelectedIds for box-select live preview
- hoverHighlightMode (default/delete) for delete-mode hover outline
2026-04-05 01:20:43 -04:00
Qiaochu Hu
7d4c8b6bd4
fix: resolve state management issues and memory leaks ( #152 )
...
This commit fixes several issues in the core state management:
1. Fix deleteNodesAction recursive call issue
- Previously, the function recursively called get().deleteNodes()
inside the set() callback, which could cause state inconsistencies.
- Now collects all descendant IDs first in a separate pass, then
deletes them all in a single batch operation.
2. Fix memory leak in use-scene temporal tracking
- Module-level variables (prevPastLength, prevFutureLength,
prevNodesSnapshot) persisted across store re-creations.
- Now cleared in unloadScene() to release stale node references.
- Added clearTemporalTracking() helper function.
3. Remove unused variable in wall-system
- Removed debug variable 'useFrameNb' that was declared but never used.
4. Fix requestAnimationFrame in updateNodesAction
- Previously used RAF without cleanup, causing multiple queued
callbacks when updates happened rapidly.
- Now uses a single tracked RAF with cancellation support.
Co-authored-by: hobostay <hobostay@users.noreply.github.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-26 00:30:16 -04:00
Anton
f06f2fa1b1
feat: 2D editing — floorplan panel, measurements, command palette (v0.3.0)
...
* sync: port 2D editing features from monorepo (v0.3.0)
## New Features
### Floorplan Panel (7.5K LOC)
- Full 2D editing interface with wall drawing, measurement, and unit display
- Interactive floorplan view with pan/zoom, grid snapping
- Wall thickness visualization, door/window placement
- Zone and slab polygon editing
- Guide image overlay support
- Metric/imperial unit toggle
### Command Palette Overhaul
- Complete rewrite with new command registry system
- Keyboard shortcuts UI with ShortcutToken component
- Editor-specific commands (floorplan, measurements, camera focus)
- Improved search and action organization
### Wall Measurements
- Real-time wall length labels in 3D view
- Metric/imperial conversion
- Wall measurement UI component
### Enhanced Tools
- Wall drafting utilities (grid snapping, validation)
- Node action menu for quick operations
- Improved polygon editing for zones/slabs/sites
- Roof segment panel for granular roof control
## Package Changes
### @pascal-app/core@0.3.0
- New wall-footprint.ts: 2D wall footprint calculation
- Wall mitering exports for floorplan view
- camera-controls:focus event
- Space detection undo pause/resume
- Mark sibling nodes dirty on deletion (miter recalc)
### @pascal-app/viewer@0.3.0
- ErrorBoundary component for robust item rendering
- Broken item fallback UI
- Wall renderer: mark dirty on mount
- Ground occluder: only lowest level punches through
- Unit state (metric/imperial) in viewer store
### @pascal-app/editor@0.1.0
- 48 file changes (16 new, 32 modified)
- New stores: useCommandRegistry, usePaletteViewRegistry
- Tree node drag-and-drop system
- Level selection utilities
- Enhanced scene graph operations
## Apps/Editor
- GeistPixelSquare font for pixel-perfect UI
- Blueprint icon asset
- Updated layout and globals for font support
## Security
- Zero AI imports or internal package refs
- All monorepo-specific code excluded
- Clean audit: no API keys or secrets
## Testing
- Security audit passed ✅
- All AI/internal code excluded ✅
- Version bumps applied ✅
79 files modified, 16 files added
~2600 insertions, ~1400 deletions
* fix: lint cleanup — suppress intentional dep warnings, fix missing dep, remove stale ignores
- Add biome-ignore for 3 intentional useEffect reset patterns (levelId, selectedGuide, selectedId)
- Fix actual missing dependency: currentBuildingId in handleSiteEditShortcutSelect callback
- Remove 3 stale biome-ignore comments in r3f.d.ts (rule not active)
Build and lint pass clean.
* fix: type errors — polygon area guards, selection cast, readonly keywords, door guard
- ceiling-panel, slab-panel, ceiling-tree-node, slab-tree-node, zone-tree-node:
guard polygon[i]/polygon[j] array access before arithmetic (TS2532)
- scene.ts: introduce toViewerSelection() helper to cast persisted string IDs
to branded template literal types expected by useViewer.setSelection (TS2345)
- door-panel: guard early return when node is undefined in setSegmentHeightRatio (TS18048)
- editor-commands: remove 'as const' from inline command object, keywords is mutable string[] (TS2322)
All type checks pass. Build and lint clean.
---------
Co-authored-by: Anton Pascal <anton-pascal@users.noreply.github.com>
2026-03-24 19:48:11 +00:00
Aymeric Rabot
1d28e4208f
sync: update core and viewer from monorepo ( #143 )
...
Major changes:
- Roof system rewrite with roof-segment support
- Scene store refactor
- Spatial grid improvements
- Item light system
- Post-processing and selection manager updates
- Perf monitor component
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-20 23:18:30 -04:00
wass08
f2501be2bf
remove community
2026-03-13 09:07:46 +01:00
wass08
b114e60df7
fix hinge + materials
2026-02-25 14:50:17 +09:00
wass08
7608cad748
nice progress on doors
2026-02-25 14:05:32 +09:00
wass08
27e4afb757
draft custom door
2026-02-25 13:28:42 +09:00
wass08
c53f1f9679
ceiling system + reveal/hide
2026-02-25 08:59:04 +09:00
wass08
5deb0b363e
fix render priority for item-system
2026-02-24 07:47:03 +09:00
wass08
d15f601107
item scale
2026-02-23 10:59:42 +09:00
wass08
3894d7c8bf
fixing system orders for ensuring level calculation comes last
2026-02-23 09:08:15 +09:00
wass08
c0676f684e
item surfaces
2026-02-18 16:06:23 +09:00
wass08
a121460965
fix y position on items
2026-02-18 15:05:25 +09:00
wass08
47373eadef
adjusting wall system + adding panel
2026-02-18 13:35:12 +09:00
wass08
be013d26e5
window panel
2026-02-18 13:14:55 +09:00
wass08
076faae7df
window building
2026-02-18 10:41:12 +09:00
wass08
dd5f63df64
wall tool draft
2026-02-17 16:22:45 +09:00
wass08
5d17fecf94
fix holes null
2026-02-16 12:19:58 +09:00
wass08
13070a5630
ceiling holes
2026-02-16 08:59:28 +09:00
wass08
0797a828f8
fix build issues
2026-02-12 10:56:56 +09:00
wass08
29e7fa09ef
slab holes
2026-02-12 10:41:37 +09:00
wass08
1467325475
reduce warning csg lib
2026-02-10 14:20:40 +09:00
wass08
b4375792ab
fix extra rebuild
2026-02-10 14:07:56 +09:00
wass08
7b999b0952
remove log
2026-02-09 11:59:37 +09:00
wass08
a15952055a
wall sides feed with floo fill algorithm
2026-02-03 12:03:03 +09:00
wass08
05ce0323e2
gable-roof back
2026-02-02 14:48:36 +09:00
wass08
5392d66bd6
handle better slab polygon detection
2026-02-02 11:35:44 +09:00
wass08
72a0e3952a
slab panel
2026-02-02 11:17:47 +09:00
wass08
0613f846ef
correct system for not triggering unwanted rerenders
2026-02-02 10:35:00 +09:00
wass08
ff4e2fc2fe
fix entire rebuild on updates
2026-02-02 09:40:11 +09:00
wass08
07dee4aefc
rename items
2026-01-29 15:37:51 +09:00
wass08
9c185c4d33
fix slab detection for wall
2026-01-29 15:08:57 +09:00
wass08
f1a61350c7
roof
2026-01-29 12:52:35 +09:00
wass08
10ef50f186
fix attach items
2026-01-29 07:17:25 +09:00
wass08
2f0e976878
fix init code
2026-01-29 06:44:39 +09:00
wass08
8646cc8748
refacto item-tool
2026-01-28 07:47:47 +09:00
wass08
1a5bd11009
slab outset + wall pushing up
2026-01-27 19:33:30 +09:00
wass08
408fd8b87c
slab polygons elevation
2026-01-27 19:20:01 +09:00
wass08
11aba2af36
draft item-system + elevation
2026-01-27 19:05:08 +09:00
wass08
150a0a4ca1
ceiling rendering + tools fix
2026-01-27 09:36:11 +09:00
wass08
e3e3602d91
ceiling
2026-01-27 09:25:40 +09:00
wass08
8940f70117
slab renderer
2026-01-27 07:32:46 +09:00
wass08
54dd5d0541
fix wall mitering (three-mesh-csg)
2026-01-26 19:52:53 +09:00
wass08
f244f864ba
remove logs
2026-01-26 18:20:18 +09:00
wass08
d4c3fe2afb
perfect wall mitering
2026-01-26 18:17:46 +09:00
wass08
abd8e327fe
fix wall mitering
2026-01-26 18:06:39 +09:00
wass08
e13005dcda
fixed wall mitering
2026-01-26 17:23:42 +09:00
wass08
43226c3dd0
walls mitering on a part of a wall
2026-01-26 10:33:04 +09:00
wass08
dc3f1a6898
wip wall-mitering
2026-01-26 10:08:57 +09:00