Repository navigation
Conversation
The copy map was only checked after the session had been replaced, and a torn map threw from the Int32Array constructor before the length check could run. Prepare now refuses a map that is not whole int32s or holds numbers below -1, and restore refuses numbers past the copy's own vertex count and drops the edits that waited on a copy it could not load.
Edits made on the edited copy stay pending until the copy is taken into use, and holdsWork and holds looked only at the adopted edits, so opening a project or scan dropped a cleaned-up copy without a warning or refusal. Both now count the pending edits too.
Region vertex numbers were turned into a Uint32Array before the worker checked them, so a number of 2^32 or more wrapped round and silently selected another vertex. The schema now caps them and regionVertices refuses one out of range before the conversion.
A cut's label keeps its offset as String() wrote it in mm, which is exponent form for very small or very large offsets, and the pattern that names it again in inches matched only the exponent's digits. The pattern now takes the exponent with the figure.
Each repaint of the piece's gap set a new colour attribute on its geometry, and three frees an attribute's GPU buffer only for those the geometry still holds when it is disposed, so every replaced one stayed uploaded. The piece now keeps one colour attribute and paints over it.
The island, hole and shell surveys set their result to null while being made and only raised a toast when the worker call failed, so the panel kept showing the survey as in flight for ever. A failure is now kept in the store as surveyFailed, the panels show it with a Retry that makes the survey again.
Six tool panels read the Mesh Tools store with no selector, so every write to it rendered them again, the cut preview among them while its offset is dragged. They now pick the fields they use with useShallow, as the other panels already do.
Every Mesh Tools edit captures a whole PLY of the copy and its vertex map in the undo history, which was bounded only by its count of 64 steps, so a large scan could pin several gigabytes. History sections can now weigh their values, the edited copy section does, and the oldest steps are dropped once the values kept pass a 1 GiB budget.
58 of 65 tasks
This branch has not been deployed
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.
The Mesh Tools items from #34, rebased on 0.9.3, one commit per item, each with a regression test that fails without it:
Notes:
bytes()toHistorySectioninsrc/state/historyStore.ts. There's no notice yet telling the user that older steps went.Build:
npm run buildpasses.npm test(3102),npm --prefix mcp test(127), the plugin boundary and units checks, andnpm run e2e:ciall pass.