Register a `resize` sound effect (three round-robin variations with
pitch/pan jitter and an 80ms gap) and emit it from the linear/radial
resize drag handler whenever the snapped+clamped value steps, so width /
length / depth / radius / height drags tick as the size changes.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Registers a paintApply SFX (with rate/volume jitter + a 60ms gap so rapid
multi-face painting doesn't machine-gun), wires the sfx:paint-apply bus
event, and emits it from the material-paint click chokepoint in the
selection manager (fires on apply, not hover/preview). Adds the audio
asset to the editor app's public resources.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
* fix(editor): shelf deletion plays item-delete SFX; refresh delete sounds
Shelves are furniture-like placeable objects, so deleting one should use
the lighter item-delete cue instead of the structure-delete one. Add a
shared emitDeleteSFX(nodeType) helper that maps item-like node types
(item, shelf) to item-delete and everything else to structure-delete,
and route the three delete sites (sledgehammer, floating action menu,
keyboard) through it.
Also refresh the item_delete/structure_delete audio assets and reduce
their pan jitter for a steadier delete cue.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* chore(editor): update item_delete SFX asset
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
* wip sfx
* wip audios
* feat(editor): structure build-start/end cues + menu hover/click SFX
Sound design pass for the build/items experience:
- Split structure-build into a start cue (draft begins) and end cue
(commit). Wall/fence fire start on the first click; slab/ceiling/zone
tick start on every non-closing vertex; roof on the first corner.
- Doors and windows now use the structure-end cue on place + move;
shelves use item-place instead.
- New menu_hover (round-robin retired in favour of a single sample) and
menu_click cues wired to the Build/Items main categories, item-catalog
tiles, the icon rail / tab bar, and the bottom action menu (via the
shared ActionButton).
- Refresh item_pick / item_place / item_rotate samples; drop the
now-unused numbered menu_hover variations.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* fix(editor): silence forEach return lint in updateSFXVolumes
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
* chore(editor): convert SFX wavs to mp3 to shrink assets
Re-encode all SFX samples as 128kbps mp3 (~94% smaller, transparent for
short UI cues) and point the player at the .mp3 sources. Drops the .wav
originals; the freshly converted item_pick/place/rotate.mp3 override the
older committed mp3s.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Wholesale swap of packages/{core,viewer,editor,mcp} and apps/editor with the
versions from the private editor repo, which is the production source of truth.
Setup changes:
- packages/{core,viewer,editor} versions held at 0.7.0 baseline (matching
the most recent published release) so a bump=minor publishes 0.8.0
- packages/mcp held at 0.1.1 (never published; first publish will go through
the new release.yml flow)
- peerDependencies and devDependencies for inter-package @pascal-app/*
references pinned to ^0.7.0 instead of '*' / 'workspace:*' so they are
valid for npm consumers
- Root package.json: TypeScript bumped to 6.0.2, added overrides for
@types/react, @types/react-dom, @types/three to prevent JSX namespace
fragmentation across the workspace
- release.yml extended to also publish editor and mcp; 'both' option renamed
to 'all'; added a sync step that updates inter-package peerDeps/devDeps to
match the new versions on every bump (so viewer/editor/mcp tarballs always
reference the version of core they were built against)
- Root scripts gained release:editor and release:mcp shortcuts
Verification:
- bun install --frozen-lockfile is consistent
- packages/{core,viewer,mcp} build cleanly, dist/index.d.ts emitted
- packages/editor check-types reports 21 pre-existing errors, identical to
what private-editor currently reports
Open PRs against editor-v2 will need rebasing/conflict resolution.