Colliders v2 + edit-mesh pro + physics nodes (CL-A/B/C) - #74
Merged
Conversation
… freeze + gravity + viz + custom compound editing (CL-A) - colliderSpec.js: ONE source of truth for collider shapes (measure, hull verts, custom compound pieces) - consumed by BOTH physics and the viz - physics.js: spec-driven collider construction placed relative to the CURRENT body pose; rebuildColliders/physicsShapeChanged rebuild a body's collider set MID-SIM (no restart, joints/velocity survive); liveParamsJson widened to collider/sensor/freeze/material/mass; per-piece mass split - sensors (userData.physics.sensor): setSensor colliders, pass-through, both directions collected per pair; fireObjectEnter/fireObjectExit dispatch in flowRuntime (replicated nodetrigger stamps; nodes land in CL-C) - physics material presets (ice/rubber/wood/metal) + Inspector Material select above the Bounciness/Friction sliders - freeze axes (userData.physics.freeze rx/ry/rz/px/py/pz) via setEnabledRotations/Translations + Inspector lock rows (dynamic only) - scene gravity: scenePhysics.js replicated latest-wins singleton (scenephysics msg + handshake push), applied at world create AND live; Inspector scene Physics gravity slider + reset - collider viz: colliderHelpers.js (lightHelpers pattern) - scene-root wireframe proxies from the SAME spec, green/amber(sensor), global showColliders (local pref) + per-object union, per-frame follow, hidden in wireframe view mode - custom compound colliders: colliderEdit.js proxy session runs the real Edit Mesh tool on a scene-root proxy (edit-proxy lookup fallback in faceEdit/meshEdit; peer messages no-op); + Box/Sphere piece; Done splits SHELLS (shellsOfTris union-find, shared with CL-B) -> colliderVerts/ colliderPieces (1200-float cap) -> one convexHull piece per shell on one body; Inspector collider select gains Custom (edit...) - MeshEditPopup: collider-session banner state (add piece / Done / Cancel) - suites: collider-viz (13), collider-live (11), collider-custom (13) all green; regressions physics-colliders/particles-impact/mesh-edit-popup/ novr-inset/desktop-face-gizmo green (terrain-sculpt = env-gated two-peer) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ubdivide/flip/weld/bridge + floating toolbar (CL-B) - B1 inset interaction fix: the seated MOVE gizmo intercepted the next face click (dragging||axis guard) so click 2 of an armed inset RIGID-MOVED the face - the gizmo now seats ONLY for the Move op (Scene click path, setFaceOp arms detach, enterFaceEdit restore gated); regression in mesh-ops suite - B2 face-mode wireframe: shared buildEditWireframe + meshEditWireframe display toggle (local pref, honored by BOTH modes, live mid-session); face overlay rebuilds on every geometry swap (commit/gesture/remote/undo) - B3 granularity Face / Triangle / Shell: 'polygon' RENAMED to triangle (legacy value migrates at read time - VR suites untouched), shell = the connected island via shellsOfTris; setFaceGranularity 3-state + toggleFaceGranularity cycles (VR menu label shows Face/Triangle/Shell) - B4 topology ops: subdivide (each target tri -> 4 via welded edge midpoints), flip (winding reversal), weld (vertex multi-selection -> its centroid, ONE meshgeo undo entry - a verts entry can't hold per-handle befores), bridge (exactly two multi-selected faces: ordered boundary loops, equal-count gate, closest-pair anchor + untwist direction pick, outward-wound wall quads; watertight on separated shells) - B5 toolbar redesign: MeshEditPopup rebuilt as a FLOATING draggable segmented toolbar (dragWindow key meshEditToolbar, runes mode) - mode / granularity+multi / ops / display / done segments, keyboard shortcuts (E I G S B F X, W weld) active only while mounted, contextual amount row, collider-session banner preserved; all suite element ids kept - mesh-ops suite (17 checks): inset regression, wireframe toggle, granularity picks + legacy migration, subdivide 4x, flip, watertight bridge, shell pick, weld + undo; desktop+VR face suites all green Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… toolbar - terrainSculpt gains a MESH mode (sculptMode store): weld by full xyz position (split copies never tear), tri-adjacency neighbors, brush displaces welded verts along their averaged NORMAL - raise/lower along normals, flatten pulls to the hit tangent plane, smooth = Laplacian relax toward neighbor average; same smoothstep falloff constants - entry: object context menu 'Sculpt mesh' on any mesh (Terrain keeps its column brush + 'Sculpt terrain'); 45k-float meshgeo cap gates entry - same netcode as terrain: non-indexed conversion synced on entry, throttled meshgeo previews, ONE snapshot + undo per stroke - weld caches carry the position-attribute identity - a same-tick brush after a remote/undo meshgeo swap can never hit a stale cache (the async rebuild hook alone left a gap) - brush cursor ring orients to the surface normal in mesh mode - SculptToolbar rebuilt as a FLOATING draggable toolbar (dragWindow key sculptToolbar) matching the mesh-edit toolbar language; titles the mesh vs terrain session - mesh-sculpt suite (13 checks): mode flip, floating toolbar, normal raise + falloff, one-undo stroke, smooth relax, welded no-tear, meshgeo replication spy, exit, terrain routing Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…locity readout (CL-C) - collider node (Physics group): shape box/sphere/capsule/cylinder/hull/ custom/object + scale + sensor toggle; consumed by collectParams and WINS over the Inspector pick (the mass precedent); shape 'object' hulls the geometry of the Object Selector wired into its source handle (colliderSpecOf gains sourceObject/scale options); node edits re-apply LIVE mid-sim through the CL-A widened liveParams -> collider rebuild - onenter / onexit nodes (Triggers group): pulse on the CL-A sensor overlap edges - same replicated nodetrigger stamps + BFS/implicit-owner targeting as onimpact; OnClickNode card reused with sensor copy - velocity node (Scene group): live speed (m/s) of the wired object (or the graph owner) - LOCAL objectSpeeds feed: exact-ish per-step write-back deltas on the initiator, ~10Hz move-delta approximation on peers (documented on the card), 0 when the feed goes quiet - AnimationNode gains a reusable 'toggle' param kind; new ColliderNode / VelocityNode cards; flowSockets INPUT/OUTPUT typed for all four - NODES.md rows for collider / onenter+onexit / velocity - flow-physics-collider suite (9 checks) all green: node overrides Inspector shape, live mid-sim shape swap, object-source hull, sensor pass-through + enter/exit stamps, velocity >0 rolling / 0 quiet; regressions flow-audit/flow-new-nodes/particles-impact/physics-colliders/ collider-live green (flow-nodes-core + flow-physics-nodes = env-gated two-peer suites, no local signaling) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…d_value crash
- 'bind:hex={undefined}' on a prop WITH a fallback hard-errors since the
svelte 5.56 safe-bump (props_invalid_value) - the uninitialized fogColor
state CRASHED the entire scene drawer on open (badge, environment,
physics, view sections all gone; inspector.test scene checks failing)
- pre-existing on release/1.1 (reproduced with the base Inspector.svelte);
surfaced here because the scene Physics section hosts the new gravity UI
- applyFog/fog inputs already defaulted fogColor ?? '#ffffff' - the
initializer matches, no behavior change beyond not crashing
- inspector suite back to ALL PASS (17 checks)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…nto colliders-v2-editmesh-pro Conflicts: App.svelte debug hook (union: collider libs + trackpadNav); MeshEditPopup.svelte taken from THIS branch (the CL-B floating-toolbar redesign supersedes main's lucide pass on the old pinned strip; the redesign uses no icon classes, so nothing to reconvert).
AlexZ005
added a commit
that referenced
this pull request
Aug 1, 2026
…has + skills + baseline gate 438/62 - CLAUDE.md domain map: faceEdit (Face/Tri/Shell granularity, subdivide/ flip/bridge, inset gizmo-gating fix, shared edit wireframe, scene-root edit proxy, FLOATING toolbar w/ shortcuts), meshEdit (Weld), physics (colliderSpec-driven construction, LIVE mid-sim rebuild, sensors + enter/exit dispatch, material presets, freeze axes, scenePhysics gravity singleton, compound custom colliders, CL-C collider/velocity nodes), colliderHelpers viz, terrainSculpt MESH mode + attr-identity cache guard, floating sculpt/mesh-edit toolbars - new Status (2026-08-01): PR #74 merge summary + new suites + remaining follow-ups (theprototype-docs pages, VR on-device check) - new gotchas: module-level store.subscribe runs at eval (declare let state ABOVE it or SSR TDZ-crashes); svelte 5.56 props_invalid_value on bind:X={undefined} (the fogColor scene-inspector crash) - svelte-check baseline moved DOWN 476/62 -> 438/62: CLAUDE.md notes, e2e-verify skill, release.yml gate all updated - e2e-verify skill: lane-editmesh port 5183 + the [::1] port-shadow trap (strictPort does not catch a v6-only listener; localhost hits the stale server); peer-feature skill: scenePhysics joins the singleton examples Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Feature lane merged with release/next (v1.1.0 icon system + migration Part A) before landing:
🤖 Generated with Claude Code