v0.4.0

pascalorg/editorv0.4.0Apr 7, 2026by open-pascal

AI Summary

Decouples 2D/3D with a new `useLiveTransforms` store and improves UX parity with crash fixes.

Key Highlights

  • `useLiveTransforms` store decouples 2D floorplan from 3D scene graph
  • 2D stair rendering with tread lines and direction arrows
  • Selection highlight system (indigo/purple tint)
  • Delete tool UX with red material hover
  • Fixes three-mesh-bvh crash from materialIndex overflow

New Features

  • 2D stair rendering
  • Item footprint rendering in floorplan
  • Selection highlight system
  • Delete tool UX with D key shortcut and floating trash cursor
  • Furnish mode (F key) and Zone mode (Z key)
  • Upload + delete for guides/scans
  • Stair/stair-segment support in floating action menu
  • Box-select includes stair nodes
  • Slider precision adapts to modifier keys
  • Infinity dragging slider via PointerLock API
  • Stair system and scene graph utilities
  • Read-only mode

Full Release Notes

## Architecture

- **`useLiveTransforms` store** — New lightweight Zustand store in `@pascal-app/core` that holds ephemeral node positions during drag operations. Decouples the 2D floorplan panel from the 3D scene graph. The floorplan no longer imports from Three.js.
- Enables future **standalone 2D mode** and **bidirectional split-view editing**.

## Features

- **2D stair rendering** with tread lines and direction arrows in the floorplan
- **Item footprint rendering** in floorplan with rotated bounding boxes and diagonal cross marks
- **Selection highlight system** — indigo/purple tint on selected meshes in 3D
- **Delete tool UX** — `D` key shortcut, red material hover, floating trash cursor badge
- **Furnish mode** (`F` key) and **Zone mode** (`Z` key) in the action bar
- **Upload + delete** for guides/scans in view toggles
- **Stair/stair-segment support** in the floating action menu (select, duplicate, delete, move)
- **Box-select** now includes stair nodes (bounding box intersection)
- **Slider precision** adapts to modifier key step size (shift/alt)
- **Editor layout redesign v2** with 3D box select
- **Infinity dragging slider** via PointerLock API
- **Stair system**, scene graph utilities, read-only mode

## Bug Fixes

- Fix **three-mesh-bvh crash** from materialIndex overflow (Sentry EDITOR-M/B, 7,600 events)
- **Camera controls null guards** — prevents crash on setLookAt/getTarget/moveTo (Sentry EDITOR-G)
- **Pointer lock feature detection** for Facebook/Instagram in-app browsers (Sentry EDITOR-6)
- Suppress THREE.Clock deprecation warning from R3F 9.x
- Fix stair elevations syncing with floor slabs
- Release scene singletons on Editor unmount
- Wall-side item bounding box offset fix

## Packages

- `@pascal-app/core@0.4.0`
- `@pascal-app/viewer@0.4.0`
- `@pascal-app/editor@0.4.0`

**Full Changelog**: https://github.com/pascalorg/editor/compare/v0.3.3...v0.4.0