Skip to content

PureCutCNC v0.2.0

Choose a tag to compare

@zabooma zabooma released this 29 Jul 18:52
· 356 commits to main since this release
f3361ee

PureCutCNC 0.2.0 Release Notes

45 merged PRs since v0.1.0 (released 2026-07-15)

Multi-Language Support

Full interface localization with a typed i18n layer, complete Simplified Chinese translation, and built-in language manager/editor for creating, editing, importing, and exporting user language packs. Switching languages never touches the project, undo history, or .camj data. (#317, closes #314 #311)

Built-in translations: German (#324), French (#325), Spanish (#327)

Localized surfaces:

  • Generated PDF/booklet documents (#322)
  • Feature properties panel (#329)

Fixes: Character-break for long booklet labels in German (#334)

Theming System & Visual Redesign

  • Dark, Light, and Follow-System appearance modes (#304)
  • Theme Manager with guided custom-theme editor dialog (#309)
  • Blue accent scheme replacing the previous orange; complete migration of the entire UI to theme tokens (CSS, canvas palette, 3D viewport/simulation colours, print output) with an enforced colour-literal build guard (#346 and the #341 slice series)

Toolpath Optimization & G-code Quality

  • Linear-move optimizer (always-on) that exactly collapses redundant collinear moves
  • Export-stage arc fitting with per-operation preference, machine arc-interpolation capability, modal G2/G3 in I/J or R format, 90° arc splits, and linear fallback when unsupported (#355, issue #354)
  • Exported-motion debug view — interactive 2D SVG overlay comparing raw, optimized, and exported G-code layers in project coordinates, with per-Z-level stats and deviation diagnostics (#360, closes #356)

CAM Algorithm Fixes

  • Medial V-carve resolution auto-scaling — adapts Voronoi/Delaunay sampling to feature size (#301, issue #298)
  • Pocket & surface clearing paths smoothed using rounded inner offsets (jtRound) and bounded corner-fillet setback; boundary-adjacent ring kept sharp so rounded roughing leaves no chip (#345)
  • Closed-line V-carve hardened against enclosing-add islands and even-odd fill in feature-first mode (#342, issue #340)
  • Gear island rest regions now preserved and overlapped correctly around gear features (#353, issue #352)
  • Circle and arc tessellation consistency — circle fragments now produce identical chord density to full circles, eliminating arc-fitting deviations from asymmetric sampling (#361, closes #359)
  • Rounded outside corners now default to on for new operations and for legacy operations loaded without the field set; the unused "Stepover Ratio" field is hidden for edge routes, which never read it (#368, closes #367)
  • Exported-motion arc diagnostic now measures fitted arcs against source vertices instead of chord segments, removing false failures that grew with arc radius (#373, closes #370)
  • Drilling nearest-neighbor ordering no longer mutates the caller-supplied start position as it advances the traversal cursor (#376, closes #375)
  • Arc-fitting candidate search bounded to 128 points, preventing long non-fitting polylines from triggering unbounded cubic-time work (#377, closes #369)

Performance & Internal Refactoring

  • Feature properties panel converted to per-field Zustand selectors and memoized, eliminating whole-panel re-renders on every keystroke (#384, closes #233)
  • Shared effectiveFeed helper unifies feed-rate resolution across the postprocessor, booklet report, playback ratio, and live-feed readout; fixes an O(n²) hot path in areaPathsToDrafts (#387, closes #256)
  • Nearest-neighbor toolpath ordering consolidated from five duplicate implementations into shared, configurable helpers, with V-carve region centroids now cached once per candidate (#380, closes #128)
  • Text-layer profile geometry now shares the canonical helpers from the store layer instead of a diverged private copy — fixes an untranslated circle-center bug specific to text profiles (#388)

Desktop & Window Management

  • Window position and size persist across restarts (#336, closes #316)
  • Binary file writes enabled on desktop for booklet PDF + STL export (#326, fixes #323)
  • Legacy imported model placement preserved during the strict 3.0 conversion (#315)
  • Desktop feature tree reordering restored (#306)
  • Construction (reference) geometry restored in the project tree (#308)
  • Project-as-template now preserves tool definitions (#332)

Windows Build Fixes

  • Path-separator normalization in the color-literal build guard and its coverage test — relative() returns backslashes on Windows, which was rejecting valid theme files and letting deprecated color tokens slip through undetected (#365, #366, issue #341)

Tablet UX & Cross-Device Polish

  • Dialogs fit on tablet screens with visible close buttons (#335)
  • Close icon added to the empty-state onboarding overlay (#339)
  • Grid dynamically extends to cover the full drawing extent on all sides (#338)

UX & Productivity

  • Status-bar feature labels toggle (#312)
  • Status-bar project units shortcut (#348)
  • Unified 3D view-preset dropdown replaces the 7-button row with a single button + pull-down menu showing the current view; shared camera-controls module deduplicates code between 3D preview and simulation; fit-to-model now fills the viewport for flat parts (#362, closes #243)

Documentation & Process

  • Drawing-modes tutorial voice-over added, covering region modes, line/engrave operations, feature tree model order, rest machining regions, and sketch narration (#350)
  • Built-in subagents clarified vs. external worker delegation in AGENTS.md (#364, closes #363)
  • Communication Style section added to AGENTS.md — terse, stay on task, close with a summary scaled to the change; applies across the main session, in-process subagents, and delegated Codex/opencode/DeepSeek workers (#379, closes #378)
  • CI policy documented: feature branches must rebase onto current main before opening a PR, and a conflicting PR receives no CI at all since pr-check.yml runs on a merge ref GitHub can't compute while the branch conflicts (#382)

Chores & Testing

  • Example .camj projects updated to reflect new app features — arc interpolation flag, updated feed rates, rounded outside corners, arc fitting enabled (#372, closes #371)
  • Flaky arc-search performance test replaced with a CPU-time scaling assertion instead of an absolute wall-clock budget (#385)

Statistics

  • 45 PRs merged
  • 4 languages shipped (en, de, es, fr) + zh-CN + user-created packs
  • 22 bug fixes across CAM, desktop, tablet, theming, and Windows builds
  • 10 feature PRs (i18n engine, theme engine, toolpath optimizer, medial auto-scale, rounded clearing paths, export debug view, view-preset dropdown, shared camera controls)
  • 4 performance/refactor PRs (properties-panel selectors, shared feed helper, nearest-neighbor consolidation, profile-geometry sharing)