Skip to content

Commit 10d0e97

Browse files
authored
Merge pull request #188 from jgphilpott/copilot/release-v2631
Release v26.3.1
2 parents 153203e + 7b332a5 commit 10d0e97

File tree

3 files changed

+35
-4
lines changed

3 files changed

+35
-4
lines changed

CHANGELOG.md

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,35 @@ and this project adheres to a calendar-based versioning scheme (YY.M.N).
77

88
## [Unreleased]
99

10+
## [26.3.1] - 2026-03-14
11+
12+
### Added
13+
- **Visualizer: Persist Folder Open/Closed States** - lil-gui folder open/closed states are now saved to `localStorage` and restored on reload (PR #184)
14+
- `saveFolderStates()` and `loadFolderStates()` added to `state.js`; `clearFolderStates()` called in `resetView()`
15+
- `trackFolder()` helper in `ui.js` wires up `open`/`close` events without relying on private `_title`/`_closed` lil-gui internals
16+
- Folder states are ignored when `useDefaults` is active so a full reset produces a clean slate
17+
- **Visualizer: Reset Icon Spin Animation and Confirm Prompt** - reset button now asks for confirmation and plays a one-shot spin on confirm (PR #184)
18+
- `@keyframes spin-once` CSS animation and `.spinning` class added to `visualizer.css`
19+
- Reflow-trick restart, named `SPIN_ANIMATION_DURATION_MS` constant, and `animationend`-driven class removal
20+
- `transition: none` on `#reset.spinning` prevents keyframe/transition conflict
21+
- **Visualizer: Build-Plate-Centered Model Positioning** - loaded models now appear at the same position the slicer uses, eliminating the visual "teleport" on first slice (PR #185)
22+
- `positionMeshOnBuildPlate(object)` exported from `loaders.js`; called on load, after rotation (drag-end), and on printer change
23+
- `getBuildPlateDimensions()` reads printer dimensions from `localStorage`, falls back to a bundled preset table, then defaults to Ender3 220 × 220 × 250 mm
24+
- `updateBuildVolume(width, length, height)` in `scene.js` updates axis endpoints and rebuilds grid lines in-place, preserving all existing visibility-toggle event listeners
25+
- `applyMeshRotation` and `initTransformControls` (drag-end) call `positionMeshOnBuildPlate` so rotation never drifts the mesh off-centre
26+
- Printer `onChange` handler calls `repositionMesh()` to re-centre and redraw the build volume for the new printer
27+
28+
### Fixed
29+
- **G-code Metadata: Version Always Showing "Unknown"** - corrected the `require` path in `coders.coffee` so the real `package.json` version is embedded in the `; Version:` header (PR #186)
30+
- Root cause: path resolved to `src/package.json` (non-existent) instead of the root `package.json`
31+
- Fixed by changing `require('../../package.json')``require('../../../package.json')`
32+
- Metadata test strengthened to assert the emitted version equals `pkg.version` and explicitly rejects `"Unknown"`
33+
- **Skin: Dome Zenith Skin Infill Suppressed by Misclassified Hole Paths** - fixed the regression introduced in PR #182 where small circular hole boundaries near the dome cavity zenith were incorrectly classified as fully-covered regions, suppressing skin infill (PR #187)
34+
- Root cause: removing the 10% size-ratio lower bound (PR #182) allowed interior hole paths to pass all remaining `findCoveredRegions` checks
35+
- Fix: after the boundary-touch check, each candidate's bounding-box centre is tested against all other `regionCandidates` using a bounding-box pre-filter + `pointInPolygon`; an odd nesting count identifies the candidate as a hole/cavity and skips it
36+
- Even-odd rule handles arbitrarily deep nesting (`structure → hole → structure → …`) and correctly preserves lego-stud detection from PR #182
37+
- Dome GCode examples regenerated; regression test added to `cavity.test.coffee`
38+
1039
## [26.3.0] - 2026-03-08
1140

1241
### Added
@@ -266,7 +295,9 @@ and this project adheres to a calendar-based versioning scheme (YY.M.N).
266295

267296
Initial release for January 2026. See GitHub releases and commit history for details on previous versions.
268297

269-
[Unreleased]: https://github.com/jgphilpott/polyslice/compare/v26.2.2...HEAD
298+
[Unreleased]: https://github.com/jgphilpott/polyslice/compare/v26.3.1...HEAD
299+
[26.3.1]: https://github.com/jgphilpott/polyslice/compare/v26.3.0...v26.3.1
300+
[26.3.0]: https://github.com/jgphilpott/polyslice/compare/v26.2.2...v26.3.0
270301
[26.2.2]: https://github.com/jgphilpott/polyslice/compare/v26.2.1...v26.2.2
271302
[26.2.1]: https://github.com/jgphilpott/polyslice/compare/v26.2.0...v26.2.1
272303
[26.2.0]: https://github.com/jgphilpott/polyslice/compare/v26.1.2...v26.2.0

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "@jgphilpott/polyslice",
3-
"version": "26.3.0",
3+
"version": "26.3.1",
44
"description": "Where three.js intersects the physical world, slice your creations into life!",
55
"main": "dist/index.js",
66
"module": "dist/index.esm.js",

0 commit comments

Comments
 (0)