This release rolls up critical hotfixes and enhancements across Stage 3 (measurement & averaging), Stage 2 (preset DPI round-tripping & raw printing), Stage 5 (gamut extraction & 3D visualization), ProcessManager concurrency safeguards, and security hardening.
Fixed multi-pass averaging logic when running >2 measurement passes by snapshotting canonical .ti3 into _pass{N}.ti3 files and gating the Finish button until pass 2 is measured.
Allowed custom pass selection for profile calculation.
Added #tiffDpi resolution control to Stage 2 layout form and enabled full round-trip preservation of DPI in profiling presets.
Eliminated innerHTML string interpolation in Preset Manager, building DOM elements with textContent to prevent XSS. Added input length and range validation in backend preset importer.
Updated README/ROADMAP for v0.3.3 and cleaned up unused delaunator.min.js.
## ICCery v0.3.3 Hotfix Release
This release rolls up critical hotfixes and enhancements across Stage 3 (measurement & averaging), Stage 2 (preset DPI round-tripping & raw printing), Stage 5 (gamut extraction & 3D visualization), ProcessManager concurrency safeguards, and security hardening.
### Highlights & Fixes
- **Stage 3 Averaging & Workflow (#109, #110)**:
- Fixed multi-pass averaging logic when running >2 measurement passes by snapshotting canonical `.ti3` into `_pass{N}.ti3` files and gating the Finish button until pass 2 is measured.
- Allowed custom pass selection for profile calculation.
- **Stage 3 Instrument Communication Port (#111)**:
- Prevented passing the `instlist` ordinal device index directly to `chartread -c`.
- Tightened hardware detection regex and defaulted to auto-port connection.
- **Gamut Density & Performance (#112)**:
- Replaced hardcoded `-d 50.0` surface density with `-d 10`, preventing excessive vertex count and UI freezes in Stage 5.
- Extracted and unit-tested `build_iccgamut_args`.
- **Presets & Security Hardening (#113, #114)**:
- Added `#tiffDpi` resolution control to Stage 2 layout form and enabled full round-trip preservation of DPI in profiling presets.
- Eliminated `innerHTML` string interpolation in Preset Manager, building DOM elements with `textContent` to prevent XSS. Added input length and range validation in backend preset importer.
- **Process Concurrency Safety (#116)**:
- Added occupancy checks in `ProcessManager::spawn` to reject duplicate active process IDs and avoid map/stream collisions.
- **3D Gamut Visualization Modularization (#117)**:
- Modularized 3D QuickHull into `src/js/vendor/quickhull.js`, verified against standard geometric test fixtures.
- **Documentation & Hygiene (#115)**:
- Updated README/ROADMAP for v0.3.3 and cleaned up unused `delaunator.min.js`.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
ICCery v0.3.3 Hotfix Release
This release rolls up critical hotfixes and enhancements across Stage 3 (measurement & averaging), Stage 2 (preset DPI round-tripping & raw printing), Stage 5 (gamut extraction & 3D visualization), ProcessManager concurrency safeguards, and security hardening.
Highlights & Fixes
.ti3into_pass{N}.ti3files and gating the Finish button until pass 2 is measured.instlistordinal device index directly tochartread -c.-d 50.0surface density with-d 10, preventing excessive vertex count and UI freezes in Stage 5.build_iccgamut_args.#tiffDpiresolution control to Stage 2 layout form and enabled full round-trip preservation of DPI in profiling presets.innerHTMLstring interpolation in Preset Manager, building DOM elements withtextContentto prevent XSS. Added input length and range validation in backend preset importer.ProcessManager::spawnto reject duplicate active process IDs and avoid map/stream collisions.src/js/vendor/quickhull.js, verified against standard geometric test fixtures.delaunator.min.js.