sudhir
2480be91b1
Optimize elevator editing performance with live previews
2026-05-09 19:09:48 +05:30
sudhir
8f6a8fbe8b
Add first-person window interaction
2026-05-07 13:50:30 +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
762c9fc763
Refactor guide events and column placement handling
2026-05-04 23:06:23 +05:30
sudhir
848529acb0
Add column presets and procedural shaft controls
2026-05-04 16:38:52 +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
e688792c34
Refactor first-person and spawn selection handling
2026-04-29 10:35:34 +05:30
Sudhir Yadav
1c2746f538
Merge branch 'main' into feat/upgrade-and-bug-fix
2026-04-28 14:37:10 +05:30
sudhir
bead8796d2
Add spawn node support and refine stair and door cutouts
2026-04-28 14:26:24 +05:30
Aymeric Rabot
0711cad660
Merge remote-tracking branch 'origin/main' into feat/mcp-server
2026-04-27 17:22:14 -04:00
sudhir
8cf2df1483
Unify material target selection across wall stair and roof
2026-04-20 22:45:56 +05:30
sudhir
71ddb7052b
Add two-sided wall material targeting
2026-04-20 11:18:20 +05:30
Adrian Perez
e8d0b13ff5
feat(mcp,editor): Option A+B storage + 10 agent deliverables (Phase 7)
...
Ships the combined filesystem/Supabase storage adapter + MCP scene
lifecycle tools + Next.js API routes + editor /scene/[id] route, so
an MCP save is directly openable at /scene/<id> without any
injection hack. End-to-end verified: 10/10 e2e steps pass.
Storage (A1/A2/A3):
- SceneStore interface + error classes + slug helpers
- FilesystemSceneStore at $PASCAL_DATA_DIR (defaults XDG/~/.pascal)
with atomic writes, .index sidecar, optimistic locking
- SupabaseSceneStore with scenes + scene_revisions tables, RLS
migration SQL, mock-backed unit tests
- createSceneStore(env) auto-selects based on SUPABASE_URL +
SUPABASE_SERVICE_ROLE_KEY
MCP tools (A4, A8, A9, A10):
- save_scene / load_scene / list_scenes / delete_scene / rename_scene
- list_templates / create_from_template (3 seed templates:
empty-studio, two-bedroom, garden-house)
- generate_variants (7 mutation kinds, seeded RNG, save=true|false)
- photo_to_scene (vision sampling → scene graph → save)
Editor (A5, A6):
- /api/scenes + /api/scenes/[id] with RFC 7232 If-Match locking
- /scene/[id] and /scenes route pages with save button, SceneLoader
- Removed the window.__pascalScene dev injection hack
Security + UX edges (A7, A8):
- AssetUrl Zod validator: asset:// blob: data:image/ /path https:
(http://localhost for dev) + PASCAL_ALLOWED_ASSET_ORIGINS env
allowlist. Hardens scan.url, guide.url, item.asset.src,
material.texture.url, MaterialMaps.*Map
- Auto-frame camera on empty→non-empty scene transition
(camera-controls:fit-scene emitter event)
Shared utilities:
- rehydrateSiteChildren() extracted to packages/mcp/src/lib/ and
used by both create-from-template and generate-variants to work
around the SiteNode.children-as-objects vs. ids inconsistency
(CROSS_CUTTING §2)
- Storage + MCP subpath exports added to packages/mcp/package.json
(CROSS_CUTTING §4)
Tests: 293 pass / 0 fail across 40 files (was 142 pre-Phase-7).
Biome: clean.
Phase-7 e2e script at packages/mcp/test-reports/phase7-e2e.ts:
MCP HTTP + editor Next.js both point at $PASCAL_DATA_DIR =
/tmp/pascal-e2e, save_scene from MCP, GET /api/scenes/<id> from
editor server, /scenes list page renders all saved scenes, scene
page renders SceneLoader, delete_scene works.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-18 19:29:28 +02:00
Pascal
5c16aa4225
feat: improve thumbnails, placement, and editor responsiveness ( #258 )
...
* wip: backport monorepo PRs 278 280 281 283 284
* refactor(editor): align floorplan panel with monorepo split version
2026-04-17 15:14:40 -04:00
Sudhir Yadav
a205e4f778
Feat/stairs fence update ( #226 )
...
* feat: railing on the straight stairs and new fence
* feat: added spiral and curved stairs with bug fix for fence
* feat:fence are linked to each other ... so moving one move the other sharing the same coordinate
* fix: update stair railing logic to include front-side attachments for terminal landings
* Integrate fence rendering into the fence system
* fix: pass nodeId instead of undefined node to WallTreeNode and FenceTreeNode
TreeNode was passing `node` (undefined variable) instead of `nodeId` to
WallTreeNode and FenceTreeNode, causing a runtime ReferenceError.
Updated FenceTreeNode to accept nodeId and look up the node from the
scene store internally, consistent with all other tree node components.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: update fence icon with new isometric design
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Aymeric Rabot <aymeric@pascal.app>
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-13 23:31:57 -04:00
Pascal
00b8f42899
feat: move/rotate building + relative positioning for all tools ( #220 )
...
Sync monorepo PRs #243 and #248 to the open-source editor.
Move/Rotate Building:
- New move-building-tool with grid snapping, R/T rotation, and Esc cancel
- Floating building action menu with move button
- Building helper with keyboard shortcut hints
- BuildingRenderer now applies position and rotation from node data
Building-Relative Coordinate System:
- GridEvent gains localPosition (building-local coords)
- use-grid-events computes building-local intersection from building mesh
- ToolManager wraps building-relative tools in a building-local <group>
- All tools (wall, slab, ceiling, stair, roof, zone, polygon-editor,
placement coordinator) updated to use event.localPosition
- Placement coordinator adds worldToBuildingLocal helper for cursor
position conversion
2D Floorplan Fix:
- SVG layers wrapped in <g transform=rotate(...)> for building rotation
- Pointer-to-plan conversion un-rotates when building is rotated
- Grid events from 2D include localPosition
Store Changes:
- useEditor movingNode union includes BuildingNode
- NodeActionMenu onDelete is now optional (buildings can move but not delete)
2026-04-09 14:36:34 -04:00
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
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
d79d54c4d8
evader for preset
2026-03-04 15:17:01 +01:00
wass08
23ed54cb6a
thumbnail generation
2026-03-04 15:13:07 +01:00
wass08
27e4afb757
draft custom door
2026-02-25 13:28:42 +09:00
Anton Pascal
ee30f17129
feat: rename properties to projects
...
- Rename all DB tables: properties → projects, properties_addresses → projects_addresses, properties_models → projects_models, property_likes → projects_likes
- Add projects_likes as proper Drizzle schema table (was SQL-only before)
- Rename ID prefixes: property_xxx → project_xxx
- Rename auth_sessions column: active_property_id → active_project_id
- Simplify project creation: address is now optional (no longer required to get started)
- Update all actions, stores, types, components, and routes
- Rename route: /editor/[propertyId] → /editor/[projectId]
- Add SQL migration for table/column/index/policy/function renames
- Update RPC functions: increment_project_views, get_project_like_count
- Update storage bucket reference: project-thumbnails
- All types/exports follow existing Drizzle patterns (pgTable, relations, zod schemas)
2026-02-17 20:40:52 +00:00
wass08
dd5f63df64
wall tool draft
2026-02-17 16:22:45 +09:00
wass08
d833245fbf
esc key cancel tool
2026-02-17 12:29:00 +09:00
wass08
078b2500a3
handle thumbnails (manual)
2026-02-17 12:07:32 +09:00
wass08
39f9f595d8
scene starting with site and not with building anymore
2026-02-05 14:42:46 +09:00
wass08
875cf277e0
camera actions
2026-02-05 13:52:16 +09:00
wass08
8edcda1b75
default seleciton manager
2026-01-30 08:30:57 +09:00
wass08
f1a61350c7
roof
2026-01-29 12:52:35 +09:00
wass08
e3e3602d91
ceiling
2026-01-27 09:25:40 +09:00
wass08
8b1fbb4c1d
slab type
2026-01-27 07:05:37 +09:00
wass08
fb3cd3e34e
zones as nodes
2026-01-26 07:34:53 +09:00
wass08
eb0ccac30f
zone editor
2026-01-22 12:24:55 +09:00
wass08
1f23792f9c
camera view
2026-01-22 08:14:42 +09:00
wass08
b1d6f61e4f
hover / selection manager
2026-01-21 10:45:48 +09:00
wass08
5de0818633
biome
2026-01-21 10:03:29 +09:00
wass08
dabaefc57a
different level edition + fix
2026-01-20 08:26:47 +09:00
wass08
a217d0d3a6
drafting wall attach system
2026-01-19 07:59:06 +09:00
wass08
536c2e94cc
draft wall builder
2026-01-16 13:58:01 +09:00
wass08
1b954d3416
events handlers
2026-01-16 11:42:10 +09:00
wass08
c0626662a8
event systems
2026-01-15 11:24:41 +09:00