Skip to content

v0.24.0 — CNC Cut moves in 2D and 3D, inch files, text-line parsing, viewer fixes

Latest

Choose a tag to compare

@sobechestnut-dev sobechestnut-dev released this 14 Nov 01:37
950d381

All fourteen @chestnutlabs/* packages release in lockstep at v0.24.0 (npm, provenance).

This release brings CNC Cut moves to both views, reads inch files correctly, and fixes several bugs users could see. It comes from a second round of mutation-testing sweeps. FDM files render as before.

CNC, laser and inch files

  • Cut moves get their own cut chunk kind, with a showCut / show-cut toggle on all four adapters (#597). The 2D renderer now draws them too (#604).
  • Cut moves count toward the toolpath bounds, so CNC and laser files frame their work instead of an empty box (#575). A file with no printing moves gets a see-through plate and no contact shadow (#587).
  • G20 (inch) files are converted to mm in the IR. They used to draw 25.4× too small. header.units keeps the file's own declaration, and an info warning units-converted is added (#585).
  • Canned cycles G81/G82/G83 honour L repeats (#595), and G91 cycles follow LinuxCNC's R/Z rules (#553, #562).
  • ( … ) comments are no longer executed (#544).

Text lines are never read as G-code

M117/M118/M486, M23–M33 file names, RESPOND, EXCLUDE_OBJECT and other macro lines are kept as text. M117 Homing G28 no longer homes, and EXCLUDE_OBJECT_START NAME=part2 is not a tool change (#602).

Fixes users could see

  • A 2D view went blank when its layer range was cleared (#554).
  • The pixelRatio option crashed the viewer at construction, in both the toolpath and the model viewer (#608).
  • The web component's /define and /model/define imports were removed from production bundles, so <gcode-preview> and <gcode-model-viewer> never registered (#609).
  • A 2D-only build no longer pulls in three.js at startup; there's a new /lite subpath (#573).
  • Adapter props (layerRange, scrub, scrubTime, colorMode, …) persist across a source change (#565). A scrub set before a file loads applies to that file (#558).

Errors

  • Every error carries cause. E_RENDERER_LOAD gains reason: 'load' | 'start'; 'start' usually means no WebGL (#596).
  • Worker creation blocked by a CSP now fails with E_WORKER_CREATE_FAILED instead of leaving the preview stuck in "parsing" (#571).
  • renderer-unsupported is an event on all four components (#534).

Options

  • Every 3D option is checked synchronously by one shared validator. null and undefined mean "use the default", and a prop cleared to null after mount keeps its value. colorMode: null still throws (#590).
  • Meaningless renderer, theme, 2D and renderStill options throw RangeError (#543, #550, #554, #559).

Hostile files

An STL that overstates its triangle count now fails fast (#572). There's a 3MF vertex cap, E_MODEL_TOO_MANY_VERTICES (#574). The .bgcode decoders reject bad parameters before allocating (#594).

Pre-release check

A smoke run on the release candidate passed 68/68 in headless Chromium on a real GPU. It covered:

  • the Feature Lab flows;
  • pixelRatio on both viewers;
  • all 12 React, Vue, Svelte and web-component example pages;
  • null = default;
  • 2D Cut drawing.

FDM 2D output is pixel-identical to v0.23.0.

Full per-package detail is in each package's CHANGELOG.md.