Repository navigation
37 R11: knife polylines, live symmetry, Smart unwrap core half (1.28) - #340
Merged
Merged
Conversation
- knifeCutCore (pure): corners on the mesh are inserted as vertices first (per welded edge when on one, snapped to the face corner/edge under them), then each segment is a straight cut on the previous result; a cut ending at an inserted vertex fans onto that vertex, so 3+ crossings per triangle resolve segment by segment and stay watertight - Shift/Ctrl+click (or touch multi-select) adds a corner, plain click ends the cut, Enter ends at the last corner, Backspace drops one, Esc cancels; Back/Cut buttons in Tool options while pending; the overlay draws the placed polyline - one undo entry and one broadcast per polyline; knifeCut(from,to) unchanged API - unit meshKnife 11/11 (counterfactual: no corner insertion -> 4 red); e2e mesh-knife gains a real-input polyline section Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- toolbox Symmetry > "live symmetry" (local, not persisted): every edit is mirrored across symAxis from the side the edit CHANGED (editSide); symKeep only breaks a tie - hooks the OPERATOR boundary, never the restore paths: one-shot ops record via recordOp (mirror on a microtask, entry.after rewritten = ONE undo entry), the adjust engine mirrors the pure result (mirrorAdjustResult), vertex-mode ops pass op=true to commitMeshGeoTriple/Snapshot; undo/redo/cancel/peer edits are applied as sent - vertex drags move each vertex's mirror twin live; plane vertices stay on it - mirrorTrisCore = the pure half shared with one-shot Symmetrize - unit meshSymmetryLive 8/8 (counterfactual: a fixed side discards the edit); e2e mesh-symmetry-live (two peers) - first run still queued Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
… e2e (37 R11) - a module installed while the UV editor is mounted (smart-unwrap) now appears in the Unwrap menus without reopening the editor - e2e uv-smart-unwrap installs the modules repo's smart-unwrap.zip (MODULES_REPO) and checks range/degenerate/overlap/undo/peer on box + sphere Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…e suite premises (37 R11) - knifeKeyConsumed no longer defers to defaultPrevented: the shortcut registry's viewport Backspace row (objects.delete-backspace) preventDefaults before its action stands down in a mesh session, so Backspace never dropped a corner (found by e2e r1: 3 points stayed 3) - mesh-symmetry-live: picking cycles selectHandle (each a 'selection' undo entry), so the drag undo check now walks to a mark and counts geometry entries (2 = one per drag) instead of "two undos" - mesh-knife: polyline points projected from the box face, with an elementFromPoint check (fixed pixel offsets landed under the toolbox) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
- the right-hand point landed on the toolbox (elementFromPoint said <P>); both points now sit on the left half of the face, a pending cut is cleared before the peer section, and an unclickable Cut button reports its rect - mesh-knife 41/0 (two peers) Co-Authored-By: Claude Opus 5.5 (1M context) <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.
Roadmap 37 R11 (release 1.28): knife polyline cuts, live symmetry, and the core half of the xatlas Smart unwrap module (the module itself is in theprototype-app/modules on branch
feat/37-mesh).What
recordOp, which mirrors on a microtask and rewrites that same entry, so the op and its mirror are one undo step. The adjust engine mirrors its pure result. Vertex-mode ops passop=truetocommitMeshGeoTriple/Snapshot.mirrorTrisCoreis the pure half it shares with one-shot Symmetrize.Proof
Unit tests:
meshKnife: 11/11. Without corner insertion, 4 fail.meshSymmetryLive: 8/8. With a fixed side instead of the edited side, the edit is discarded.svelte-check: 318/47, the same as the baseline. Build passes.
New and changed e2e suites:
mesh-symmetry-livemesh-knifeuv-smart-unwrapStanding mesh battery: all 19 suites green, plus
mesh-symmetrize16/0 anduv-unwrap-module12/0.mesh-advanced-opsfailed 9 checks once, all in its separate-to-object section. It was 85/0 on 1.25.0 and 85/0 twice in a row on this branch. This lane doesn't touch separate-to-object.Bug found by the run: Backspace never reached a pending cut. The shortcut registry's viewport Backspace row calls
preventDefaultbefore its no-op action, so the knife key handler no longer defers todefaultPrevented.Screenshots:
/home/deck/.code/lanes-30/after-37/37-mesh/05-08*.png.Owed on a device
Decided forks:
QUESTIONS-37-mesh.md. Docs fragment:lanes-30/after-37/37-mesh/docs-fragment.md.🤖 Generated with Claude Code