You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+32-1Lines changed: 32 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,6 +7,35 @@ and this project adheres to a calendar-based versioning scheme (YY.M.N).
7
7
8
8
## [Unreleased]
9
9
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
+
10
39
## [26.3.0] - 2026-03-08
11
40
12
41
### Added
@@ -266,7 +295,9 @@ and this project adheres to a calendar-based versioning scheme (YY.M.N).
266
295
267
296
Initial release for January 2026. See GitHub releases and commit history for details on previous versions.
0 commit comments