Skip to content

Release v3.2.0 - #64

Draft
vycdev wants to merge 94 commits into
mainfrom
develop
Draft

Release v3.2.0#64
vycdev wants to merge 94 commits into
mainfrom
develop

Conversation

@vycdev

@vycdev vycdev commented Jul 23, 2026

Copy link
Copy Markdown
Owner

Summary

  • Release Kromacut v3.2.0 from develop into main.
  • Adds camera-free frontlit filament calibration, Hiding Distance migration, enhanced auto-paint optimization, 2D touch-up tools, collapsible controls, 3D inspection modes, a new landing page and /app route, and experimental multi-plate support.
  • Includes export, meshing, profile-validation, dependency-security, and routing reliability improvements.

Why

This promotes the completed v3.2.0 integration work to the release branch while keeping final release preparation visible and reviewable before merge.

User impact

Users gain a more accurate filament-calibration and auto-paint workflow, richer image and preview controls, improved web navigation, and more reliable STL/3MF output.

Validation

  • npm test — 339 tests passed
  • npm run lint
  • npm run build
  • npm run test:e2e

Release checklist

  • Replace “unreleased” with the v3.2.0 release date in CHANGELOG.md
  • Remove the duplicate “Frontlit filament calibration” changelog entry
  • Complete final browser and desktop release smoke tests

Bjohnson131 and others added 30 commits June 12, 2026 16:47
…xports

Signed-off-by: Brice Johnson <1939015+Bjohnson131@users.noreply.github.com>
…d delimiters

Signed-off-by: Brice Johnson <1939015+Bjohnson131@users.noreply.github.com>
Signed-off-by: Brice Johnson <1939015+Bjohnson131@users.noreply.github.com>
Signed-off-by: Brice Johnson <1939015+Bjohnson131@users.noreply.github.com>
@
Add auto-paint detail controls and optimizer tiers

Replace the repeated-swaps toggle with an Off/2/4/6/8/12 selector and add
a transition-detail selector (80/90/95% opacity) so stack height vs color
resolution is an explicit trade-off. Expand the optimizer menu to five
effort tiers (Fast/Balanced/Thorough/Deep/Exact base order) and score
sequences against the already-processed palette with an added detail-
coverage term.

Polish the panel UI: a determinate progress bar, fixed-width label column
so controls align, a quality/speed meter under the algorithm picker, and
nesting the enhanced-matching sub-options under their gate toggle.
@
Replace the repeated-swaps toggle with an Off/2/4/6/8/12 selector and add
a transition-detail selector (80/90/95% opacity) so stack height vs color
resolution is an explicit trade-off. Expand the optimizer menu to five
effort tiers (Fast/Balanced/Thorough/Deep/Exact base order) and score
sequences against the already-processed palette with an added detail-
coverage term.

Polish the panel UI: a determinate progress bar, fixed-width label column
so controls align, a quality/speed meter under the algorithm picker, and
nesting the enhanced-matching sub-options under their gate toggle.
vycdev and others added 30 commits July 8, 2026 20:43
Improve auto-paint reliability and 3MF exports
…aded, Transparent, and Wireframe modes for inspecting surfaces, layers, and mesh edges. Wireframe uses thin, layer-colored feature edges, and the selected view is remembered without changing print settings or STL/3MF export content.
…fers a Simulated/Physical color toggle for Auto-paint results, switching between the estimated blended appearance and the real physical filament colors stacked at each layer without a model rebuild. Only shown for Auto-paint models, the selection is remembered, and it never changes STL/3MF export content.
…rd-edged pixel tools (Brush, Eraser, Fill, Text, and color picker) for direct image editing with palette-safe colors, an on-canvas text box you type into directly with live move, resize, and word wrap, one undo/redo step per edit, and live non-blocking drawing with adjustments staying non-destructive.
…mproved filament calibration understanding

Signed-off-by: Brice Johnson <1939015+Bjohnson131@users.noreply.github.com>
remove multi head ref
feat: add calibration theory documentation
…ted in the 3MF exporter's exact integer coordinate units instead of epsilon-compared floats, so faces that would collapse at serialized precision get re-triangulated during meshing rather than silently dropped at export. This removes the pinhole open/non-manifold edges slicers flagged on large smooth-meshed 3MF exports (STL exports were never affected).
Saving a calibration run required every selected filament to have complete,
valid reads, so a wedge printed for eight filaments could not be saved until
all eight were read in one sitting.

The save path was already partial-aware: handleSave only writes entries with a
complete input and an ok result, and onApply touches only the IDs it is given,
so unread filaments were never at risk. The gate was the blocker. Save now
enables on the first usable filament and reports how many will be written.

The session JND fit previously bailed if any entry was incomplete, which would
have quietly dropped a partially-filled Accurate run to the default JND. It now
fits over the complete entries and ignores blanks.

Discarding stays visible. A filament nobody touched is marked "Not entered" and
dropped silently, which is fine. Anything typed that still cannot be saved --
an Accurate filament with some of its bases read, or a value below 1 -- is
marked "Won't save" with a reason, tracked by whether a field was touched
rather than whether it parsed.

Scoped to whole filaments: a filament is saved once all of its base reads are
in. That keeps handleSave's non-null read assertion valid, which saving from a
subset of bases would break by admitting null opacity layers into stored
calibration records.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
feat: add landing page and app route
Signed-off-by: Brice Johnson <1939015+Bjohnson131@users.noreply.github.com>
Signed-off-by: Brice Johnson <1939015+Bjohnson131@users.noreply.github.com>
…mponent

Signed-off-by: Brice Johnson <1939015+Bjohnson131@users.noreply.github.com>
…tionality

Signed-off-by: Brice Johnson <1939015+Bjohnson131@users.noreply.github.com>
Signed-off-by: Brice Johnson <1939015+Bjohnson131@users.noreply.github.com>
Add Bifrucation for multiplate mode
feat: allow partial calibration entry
Fixes #42.

parseHueForgeCSV() matches column names literally against the header row
(e.g. "Color", "TD", "Brand"). Spreadsheet tools such as Excel commonly
prepend a UTF-8 byte-order mark (U+FEFF) when saving a file as CSV/TSV. When
that happens, the first header cell decodes as "\uFEFFColor" instead of
"Color", so the column lookup for the first header never matches. If the
export happens to lead with the Color column (a common HueForge spool
layout: "Color,TD,..."), every row then looks like it's missing a color and
gets silently skipped, and the import produces nothing.

Fix

Strip a single leading U+FEFF code unit from the CSV/TSV string before any
parsing happens, so the header row is decoded the same way whether or not
the source file carried a BOM. This only touches the very first character
of the input and has no effect on files without a BOM.

Testing

    npm ci
    npm run test     # 341/341 pass, 0 fail (full existing suite + 2 new tests)
    npx eslint . --ext .ts,.tsx --max-warnings=0 src/lib/profileManager.ts tests/profileManager.test.ts
    npx tsc -b --noEmit

Added two regression tests in tests/profileManager.test.ts, both against
the develop branch's parseHueForgeCSV (introduced in #37):
- "strips a leading UTF-8 BOM before parsing the header" - CSV whose header
  begins with "\uFEFFColor,TD,Name" now imports the row correctly, matching
  the exact failure mode described in #42.
- "strips a leading UTF-8 BOM from TSV input as well" - same fix verified
  for the tab-delimited path, since detectDelimiter/parseCSV are shared
  between CSV and TSV.
fix(profiles): strip UTF-8 BOM before parsing HueForge CSV/TSV imports
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants