three-slicer 0.3.3 → 0.3.5

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,84 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.3.5 — 2026-10-16
4
+
5
+ ### Fixed
6
+
7
+ - The real wipe tower (`wipe_tower_real: true`) read past the end of its filament table on a tool change to or from
8
+ T2 or above (#69). The kernel registered filaments for tools 0 and 1 only, so the third tool's wipe moves took
9
+ their feedrate from whatever memory followed: `F0` or a value that changed from one slice to the next, and the
10
+ toolchange comment named no material. Every tool the change involves is now registered. On a three-extruder
11
+ slice the wipe moves went from 114 `F0` lines to none, and three runs give the same G-code. Each block now has the
12
+ shape the two-extruder tower always had. The default tower (the ring) and two-extruder slices are unchanged.
13
+ `wipe_tower_real` still defaults to `false`.
14
+
15
+ ### Changed
16
+
17
+ - The kernel's own C++ and its tests were rewritten for readability: abbreviated names written out, one statement
18
+ per line, no ternaries, and one shared module for the test meshes. The kernel's output is unchanged, checked with
19
+ the golden G-code dump and a per-call hash of every kernel result in the test suite. Parameter keys, `stats`
20
+ fields and the worker protocol are unchanged.
21
+
22
+ ## 0.3.4 — 2026-10-11
23
+
24
+ ### Added
25
+
26
+ - The G-code follows the printer profile for every FFF printer in the bundled catalog. This applies when the host
27
+ sends a printer's custom G-code; a slice without one stays on the kernel's raw path and its output is unchanged.
28
+ - The custom G-code bridge sets the template variables upstream's `GCode::_do_export` sets, in its order (object
29
+ names, the adaptive bed mesh, preset names, pre-cooling temperatures, every `print_config_def` default).
30
+ `CUSTOM_GCODE_ERROR`s over the catalog: 112 -> 0.
31
+ - Coordinates are written in the printer's frame, centred on `printable_area`: delta and round beds and origins
32
+ other than (0,0) included. The scene draws the real bed outline and checks a footprint against it; 3mf
33
+ placement, injected G-code and the prime tower use the same frame. Profiles printing off the bed centre: 128 -> 0.
34
+ `bedOrigin` / `bedCenter` (`three-slicer/settings`) convert a stored printer coordinate to the plate frame.
35
+ - First-layer and later-layer nozzle and bed temperatures follow upstream's rules, including the `curr_bed_type`
36
+ plate temperatures and chamber `M191`.
37
+ - Machine commands are formatted per firmware flavor: temperatures, pressure advance, absolute E, firmware
38
+ retraction, `z_offset`, the machine envelope, Klipper's velocity limits, the Machinekit postamble.
39
+ - Upstream's per-role speed table, the small-perimeter slowdown, and per-role acceleration and jerk within the
40
+ machine limits.
41
+ - Upstream's `CoolingBuffer`, ported verbatim, runs over each finished layer: fan curves, layer-time slowdown, the
42
+ overhang, bridge, interface and ironing fans. The overhang fan is decided per wall segment from its overlap with
43
+ the layer below (Benchy on an A1 mini: fan commands 19 -> 665, OrcaSlicer 653).
44
+ - `before_layer_change_gcode`, `layer_change_gcode` and `time_lapse_gcode` are expanded in print order.
45
+ - A tool change runs upstream's `set_extruder` sequence: `filament_end_gcode`, `change_filament_gcode` with its
46
+ variables, the T command when the template does not write one (`M1020` on Bambu Lab), `filament_start_gcode`
47
+ and pressure advance. Two-filament sweep over the 921 FFF printers: 0 errors, 0 leftover slot lines.
48
+ - Thumbnails in PNG and QOI where the printer asks for them, and a 512x512 `plate_N.png` in a `.gcode.3mf`.
49
+ `file_start_gcode` is written at the top of the file; `@PRINT_TIME_SEC@`, `@USED_FILAMENT_LENGTH@` and the M73
50
+ lines are filled from the estimate.
51
+ - `reduce_infill_retraction`: a travel that stays inside the layer's internal region is not retracted (Benchy on an
52
+ A1 mini: retractions 4928 -> 2726, OrcaSlicer 1586). The region is wider than upstream's because top and bottom
53
+ surfaces are not split from internal solid infill yet.
54
+ - The slice notice names profile settings the template path does not apply, instead of dropping them silently
55
+ (`partialSupport`, code `PROFILE_PARTIAL_SUPPORT`) — today `retract_length_toolchange`.
56
+ - A user preset file can inherit from an abstract printer of the catalog.
57
+ - `examples/octoprint`: a demo that uploads the exported G-code to an OctoPrint server through `<Viewport onExport>`.
58
+
59
+ ### Changed
60
+
61
+ - A finished FFF slice is previewed from the G-code it exports, start and end G-code included, so a sliced plate and
62
+ the same file opened again show the same layers, segments and filament (Benchy: 241 layers, 5279.3 mm on both; it
63
+ was 240 / 5255.5 mm before). Reading back 13 MB of G-code took 192 ms. Economy mode and resin plates stay on the
64
+ kernel's stream.
65
+ - Consecutive toolpath beads meet at a turn instead of leaving a wedge on its outside: each endpoint carries the
66
+ heading of the extrusion it joins (4 more bytes per segment instance). Turns past 140 degrees keep a square end.
67
+
68
+ ### Fixed
69
+
70
+ - The top layer was lost: the kernel cut each layer at its top, so the top face's plane cut nothing and a 20 mm cube
71
+ printed 99 layers, 19.8 mm. Layers are now cut at their middle, as upstream's `generate_object_layers`, on every
72
+ path. A model's G-code changes in its top shells (cube 99 -> 100 layers); every layer below them is unchanged.
73
+ - Vector enum settings sent by the host (`overhang_fan_threshold`, `z_hop_types`, ...) were read as empty lists, so
74
+ the template path ran on their defaults.
75
+ - A C++ float literal in a schema default list (`280.f`) was extracted as two values. Six defaults were affected,
76
+ `flush_volumes_matrix` among them, so a template-path tool change purged nothing.
77
+ - The viewer shipped the previous extraction's copy of the lean schema.
78
+ - Opening a 3mf whose settings name no printer replaced the chosen printer with the 200 mm default and no start
79
+ G-code. Such a project now keeps the chosen printer.
80
+ - The move scrub read 0 / 0: the toolpath handle had no `setMoveRange` and no `data`.
81
+
3
82
  ## 0.3.3 — 2026-10-01
4
83
 
5
84
  ### Added