three-slicer 0.4.1 → 0.4.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,63 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.3 — 2026-11-07
4
+
5
+ Performance work measured in Firefox and Chromium, and the changes that let the browser extension be listed on
6
+ Firefox Add-ons (AMO).
7
+
8
+ ### Changed
9
+
10
+ - The single-threaded kernel ships its wasm as a file, `engine/src/slicer_core.wasm`, as the threaded one already did.
11
+ Inlined, the glue was a 7.2MB script, and AMO's validator refuses any JS file over 5MB; it is 85KB now. Vite and
12
+ webpack emit the wasm as an asset. A host that serves the package files itself has to serve this file as
13
+ `application/wasm` too, and from another origin with `Cross-Origin-Resource-Policy: cross-origin`. G-code is
14
+ byte-identical to the inlined build.
15
+ - A plate's toolpaths are skipped when the plate is off screen. Zoomed onto one of 28 sliced plates (Hylian Shield,
16
+ M5 Pro, DPR 2), GPU time per frame went from 16.0 to 1.4 ms in Chromium and from 17.8 to 2.1 ms in Firefox. The
17
+ whole-bed view is unchanged at about 14 ms.
18
+ - Hover, the paint brush and Measure pick through a per-mesh grid instead of testing every facet. Hover picks at most
19
+ once per frame and not while a button is held, so an orbit or a drag no longer raycasts the scene.
20
+ - Slice progress and the plate tabs' run state re-render once per frame, however many pool workers report.
21
+
22
+ ### Added
23
+
24
+ - `npm run pack:firefox` in `web/extension` builds the zip for an AMO upload.
25
+
26
+ ## 0.4.2 — 2026-11-03
27
+
28
+ ### Added
29
+
30
+ - Object tools in the ribbon: Arrange, Orient, Measure, Boolean, Cut, Negative part, Text, Seam painting and Variable
31
+ layers. Boolean, Cut, negative parts and engraving run on the kernel's CGAL (`mesh_boolean`); a non-solid input is
32
+ refused with a typed `MESH_BOOLEAN_…` code. Arrange and Orient are this package's own algorithms.
33
+ - Seam paint reaches the kernel as `seam_enforcers` / `seam_blockers`, on classic, Arachne and multi-material walls, and
34
+ round-trips through a 3mf as `paint_seam`.
35
+ - Variable layer height (`variable_layer_heights`, Z bands). It is refused with support, raft, spiral mode and several
36
+ filaments (`UNSUPPORTED_VARIABLE_LAYERS`), and a band under 0.01 mm is `INVALID_VARIABLE_LAYERS`.
37
+ - `textFonts` prop: fonts the Text tool offers beside its built-in Latin one. The demo binds Noto Sans CJK for Korean,
38
+ Japanese, Simplified and Traditional; a `.ttf` or `.otf` upload lasts for the session.
39
+ - Fine adjust: holding Alt (Option) opens typed position, angle and size for the gizmo's mode, with fine drag snap; a
40
+ Hold button keeps it on.
41
+ - Measure snaps to corners and edges while Ctrl (Cmd) is held, and previews the second point under the pointer.
42
+
43
+ ### Changed
44
+
45
+ - The window is a title row with the menu bar, a labelled ribbon, the canvas and a task pane; sidebar sections are
46
+ collapsible boxes, and the plate tabs sit over a split slice button that fills with each plate's progress.
47
+ - The gizmo stands outside the selection and is sized by it. A rotate ring turns by the angle the pointer sweeps around
48
+ it (a 30 degree sweep measured 56 to 146 degrees before).
49
+ - In move mode a left drag on a model or inside its box moves it on the bed; the right button and empty space orbit.
50
+ The right-click menu opens on release, on an object only.
51
+ - The arrow keys follow the gizmo's mode: 10 mm, 15 degrees, 5% (Shift 1 mm, 5 degrees, 1%), and move every selected
52
+ object.
53
+
54
+ ### Fixed
55
+
56
+ - Text placed low on a wall went under the bed, and the kernel's seat lifted the whole plate by that much (a 20 mm cube
57
+ sliced as 138 layers).
58
+ - An undo after moving a multi-selection restored pivot-relative positions and moved nothing.
59
+ - A copy, a duplicate and a split keep the object's filament.
60
+
3
61
  ## 0.4.1 — 2026-10-28
4
62
 
5
63
  ### Added
package/README.md CHANGED
@@ -705,7 +705,7 @@ Without those headers, the engine falls back to the single-threaded kernel.
705
705
  The multithreaded kernel's wasm is a file beside its glue, `engine/src/slicer_core.mt.wasm`, reached through
706
706
  `new URL('slicer_core.mt.wasm', import.meta.url)`; Vite and webpack emit it as an asset. Serve it as
707
707
  `application/wasm`, and from another origin (a CDN) with `Cross-Origin-Resource-Policy: cross-origin`, or the
708
- cross-origin isolated page cannot load it. The single-threaded kernel still inlines its wasm.
708
+ cross-origin isolated page cannot load it. The single-threaded kernel does the same with `engine/src/slicer_core.wasm`.
709
709
 
710
710
  ## Data Files
711
711
 
package/data/README.md CHANGED
@@ -6,7 +6,7 @@ OrcaSlicer configuration metadata extracted from the original C++ sources, shipp
6
6
  |---|---|
7
7
  | `config-schema.json` | 976 print options: type, label, category, tooltip, min/max, mode, enum values/labels, defaults, source line numbers |
8
8
  | `config-schema-builddump.json` | Build-verified cross-check: the real `print_config_def` (817 options) dumped from a WASM compile of the original `PrintConfig.cpp` — repo-only, excluded from the npm tarball |
9
- | `ui-tree.json` | Tab → page → group → option tree from `Tab.cpp` (34 pages, 618 option references — the SLA tabs included) |
9
+ | `ui-tree.json` | Tab → page → group → option tree from `Tab.cpp` (34 pages, 674 option references — the SLA tabs included) |
10
10
  | `toggle-rules.json` | 231 enable/disable rules with original C++ `enable_if` condition source |
11
11
  | `invalidation-map.json` | Option-change → re-slice step mapping (Print/PrintObject invalidation branches) |
12
12
  | `preset-keys.json` | The option keys belonging to each preset type (`machine`/`process`/`filament`) — what `presetOptionKeys(type)` reads |