Skip to content

Terrain sculpting and terrain-aware vertical editing - #564

Merged
Aymericr merged 4 commits into
mainfrom
feat/terrain-sculpt
Jul 30, 2026
Merged

Terrain sculpting and terrain-aware vertical editing#564
Aymericr merged 4 commits into
mainfrom
feat/terrain-sculpt

Conversation

@Aymericr

@Aymericr Aymericr commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Summary

  • add persistent raise, lower, flatten, and smooth terrain sculpting with compact height-field storage, live grid/brush feedback, subtle continuous SFX, raycasting, collision, and undo-safe strokes
  • make walls, slabs, stairs, fences, floor-placed nodes, auto-room surfaces, and placement tools honor elevation, stacked supports, and terrain foundations without changing authored dimensions
  • add structural elevation handles and vertical guides, restore site-boundary editing, fix compass alignment, and keep terrain dependents updating during every live dab
  • refresh the vertical-model/tooling documentation and prepare a concise, contributor-credited 1.0 beta changelog
  • extend the release workflow with 1.0.0-beta.N versioning and the npm beta dist-tag while preserving latest

Verification

  • bun run check
  • bun run check-types
  • bun test packages/core/src (917 pass)
  • bun test packages/editor/src packages/nodes/src packages/viewer/src apps/editor (1,588 pass, 1 skipped)
  • bun run build
  • manual terrain, wall, slab, stair, site-boundary, snapping, and elevation testing in the hosted editor

Note

High Risk
Touches core elevation, spatial-grid sync, and scene persistence for terrain—bugs could mis-place structures or desync live sculpt from committed geometry; release workflow changes affect how packages are published.

Overview
Ships 1.0.0-beta.1 documentation and release plumbing: a beta bump path in release.yml (prerelease versions, npm publish --tag beta), root release:beta, and a changelog entry describing the beta scope.

Introduces a persistent terrain heightfield in core (codec, brush strokes with live preview via useLiveTerrain, raycast, cached terrainFieldOf / commitTerrainField) and wires the editor Build → Terrain flow to terrain-sculpt mode with TerrainSculptPanel and sculpt tooling.

Makes the scene terrain-aware vertically: floor-placed nodes and walls treat the level base as sampled ground (terrainSupportLift, GROUND_SUPPORT_ID), slab support elections use getSlabSupportForItem, walls gain ground-hosted base elevation with supportOffset, and spatial-grid sync re-dirties grade-level dependents when terrain commits or live dabs change. Auto-room slabs/ceilings can align to enclosing wall construction planes when walls agree.

Also refactors slab-change dirty marking into markSlabChangeDependents and exports the new terrain/support APIs from @pascal-app/core.

Reviewed by Cursor Bugbot for commit 658ce25. Bugbot is set up for automated code reviews on this repo. Configure here.

@Aymericr
Aymericr merged commit 0b05554 into main Jul 30, 2026
3 checks passed

@cursor cursor Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.

Fix All in Cursor

❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.

Reviewed by Cursor Bugbot for commit 658ce25. Configure here.

echo "NPM_TAG=beta" >> "$GITHUB_ENV"
else
echo "NPM_TAG=latest" >> "$GITHUB_ENV"
fi

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Beta publish can tag latest

High Severity

NPM_TAG is set to beta only when bump is beta; every other bump, including none, publishes with --tag latest. After packages are on 1.0.0-beta.N, a none republish would mark that prerelease as latest. Non-beta bumps also parse 1.0.0-beta.1 into a broken patch segment and fail in arithmetic.

Additional Locations (1)
Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 658ce25. Configure here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant