v0.3.0

pascalorg/editorv0.3.0Mar 24, 2026by anton-pascal

AI Summary

Introduces a comprehensive 2D editing workflow with a floorplan panel, wall measurement labels, and a rewritten command palette.

Key Highlights

  • 2D Floorplan panel for drawing walls and editing zones with grid snapping
  • Wall measurement labels with accurate miter geometry in 3D view
  • Command palette rewrite with registry-based architecture
  • New wall footprint geometry function in core
  • Improved selection manager and node action menu

New Features

  • 2D Floorplan panel
  • Wall measurement labels
  • Command palette rewrite
  • Wall footprint geometry
  • Node action menu

Full Release Notes

## What's new in v0.3.0

### 2D Floorplan panel

A full top-down drafting view for drawing and editing building layouts:

- Draw walls with snap-to-grid at 0.5m increments
- Place doors and windows directly on walls
- Edit zone and slab polygons with vertex and midpoint drag handles
- Pan, zoom, marquee selection, multi-select (⌘/Ctrl+click)
- Wall endpoint dragging with junction miter recalculation
- Overlay reference images as tracing guides
- Dark/light theme support

### Wall measurement labels

3D overlay labels that show wall lengths in the viewport. They follow the camera, respect your unit preference (metric/imperial), and account for wall miter geometry so measurements are accurate even at junctions.

### Command palette rewrite

Rebuilt from scratch with a registry-based architecture:

- `useCommandRegistry` and `usePaletteViewRegistry` stores for extensibility
- Commands grouped by category (View, Edit, Navigate, Create)
- Visual keyboard shortcut tokens
- Navigable pages and full-screen modes

### Wall footprint geometry

New `getWallPlanFootprint()` in core — generates miter-aware 2D polygons for walls, used by both the floorplan panel and measurement labels.

### Other improvements

- **Node action menu** — quick operations on selected scene nodes
- **Selection manager** — improved multi-select with ⌘/Ctrl+click toggle
- **Camera focus** — `camera-controls:focus` event centers the camera on a node's bounding box
- **Error boundary** — broken item models show a fallback instead of crashing the viewer
- **Ground occluder fix** — upper floor shadows no longer bleed through lower levels
- **Undo history** — pauses correctly during batch operations (space detection, AI actions)
- **Dirty marking** — siblings and parents marked dirty on deletion so wall miters recalculate

### Packages

- `@pascal-app/core@0.3.0` — [npm](https://www.npmjs.com/package/@pascal-app/core/v/0.3.0)
- `@pascal-app/viewer@0.3.0` — [npm](https://www.npmjs.com/package/@pascal-app/viewer/v/0.3.0)

### Install

```bash
npm install @pascal-app/core@0.3.0 @pascal-app/viewer@0.3.0
```

### Numbers

95 files changed. +12,379 / −1,394 lines. No breaking changes.

---

**Full Changelog**: https://github.com/pascalorg/editor/compare/v0.2.0...v0.3.0