Files
ICCery/ROADMAP.md
T
Gordon Bolton ab2f6e562e fix(stage5): harden gamut .gam parsing and profcheck output parsing (#179)
- Make parseGamutFile support multiple BEGIN_DATA blocks, inline #
  comments, out-of-bounds vertex warnings, and user-visible parser
  warnings (returned in { vertices, faces, warnings }).
- Harden profcheck report parsing: prefer the last JSON object with
  avg_de/max_de/rms_de keys, then fall back to a wider set of regex
  patterns for legacy plain-text output.
- Add parser warnings to the process log when metrics cannot be found.
- Fix loadGamutMesh call signature and add try/catch around gamut load.
- Add manual gamut parser tests in src/js/gamut_viewer.test.js.
- Update AGENTS.md, README.md, and ROADMAP.md.

Generated with Devin
2026-09-04 01:03:07 +01:00

10 KiB
Raw Permalink Blame History

ICCery Development Roadmap & Architecture Strategy

This document outlines the architectural roadmap, completed milestones, and upcoming development goals for ICCery.

Note

Authoritative milestone and issue tracking lives in Gitea Issues → Milestones.


1. Architecture Summary

ICCery is a native, cross-platform desktop application built with:

  • Backend: Rust + Tauri v2, managing asynchronous process pipes, native printer devmode configurations (Windows GDI & Linux CUPS), and filesystem operations.
  • Frontend: Vanilla JS (ES Modules) + HTML5/CSS3 with a modern dark theme and responsive layout.
  • Visualization: Three.js WebGL engine for 3D CIELAB color gamut volumes and sRGB reference comparisons.
  • Engine: ArgyllCMS command-line utilities orchestrated over isolated standard stream IPC (stdin, stdout, stderr).

2. Completed Milestones

Milestone 1 — Core Scaffolding & Subprocess Engine (v0.1.0)

  • Initialized Tauri v2 + Rust multi-threaded asynchronous process manager.
  • Implemented non-blocking event-driven stream pipes (process:stdout, process:stderr, process:exit).
  • Established strict AGPLv3 isolation boundary.

Milestone 2 — Patch Set & Target Generation (v0.1.3)

  • Integrated Stage 1 targen for RGB/CMYK patch generation with presets and neutral axis boosting.
  • Integrated Stage 2 printtarg multi-page layout generation for major spectrophotometers (i1Pro, i1Pro2, ColorMunki, SpyderPrint).
  • Built working directory resolution and cross-platform binary detection.

Milestone 3 — Interactive Measurement & Live Delta E (v0.1.6)

  • Developed bidirectional chartread -u state machine with prompt-driven calibration and strip reading.
  • Real-time JSON stream parsing (ROW_COLORS_JSON) for dynamic swatch grid updates.
  • Implemented live CIEDE2000 (\Delta E_{00}) calculation with traffic light quality indicators.

Milestone 4 — Profile Calculation & Quality Verification (v0.1.9)

  • Integrated Stage 4 colprof cLUT profile mathematical generation.
  • Integrated Stage 5 profcheck numerical verification report (Peak, Average, RMS \Delta E).
  • Added automated dark-theme UI with responsive status indicators.

Milestone 5 — Native OS Printing & Previews (v0.1.13)

  • Added raw unmanaged print pipelines (Windows GDI unmanaged printing + Linux CUPS raw queue printing).
  • Added high-resolution base64 TIFF thumbnail rendering pipeline.
  • Optimized window constraints to 1280×800 minimum bounds.

Milestone 6 — 3D Gamut Visualization & Platform Extension Handling (v0.1.14)

  • Extracted .gam gamut datasets via iccgamut and integrated 3D CIELAB WebGL viewer.
  • Bundled reference sRGB.gam wireframe overlay for comparative volume analysis.
  • Resolved platform profile extensions (.icm on Windows vs. .icc on Unix).

Milestone 7 — Wizard Disk-Artefact Gating & v0.2 Ship (v0.2.0)

  • Implemented disk-artefact gating for wizard stepper navigation (.ti1.ti2.ti3.icc/.icm).
  • Eliminated all hardcoded placeholder and fallback crutches across JavaScript modules.
  • Comprehensive documentation, release testing, and packaging automation.

Hotfix Release (v0.2.1)

  • Resolved P0 process manager deadlock and premature stdin pipe closure affecting interactive chartread instrument workflows.
  • Decoupled ChildStdin mutex management from child process wait/reap tasks.

Milestone 8 — Advanced Measurement & Workflow Enhancements (v0.3.0)

  • Averaging & Multi-Pass Reading: Integrated Argyll average multi-pass measurement sheet workflow for noise reduction.
  • Instrument Auto-Detection: Added hardware detection via instlist.
  • Preset Management: Save, load, export, and import profiling recipes.
  • Full 3D Convex Hull in CIELAB: Replaced 2D projected Delaunay triangulation with full 3D QuickHull in Lab space with touch rotation controls.

Maintenance & Hotfix Releases (v0.3.1 v0.3.6)

  • v0.3.1 (#103): Stage 1 file browse via backend select_target_file dialog.
  • v0.3.2 (#108): Linux CI runner compatibility updated to Ubuntu 22.04 LTS so .deb packages run without requiring newer GLIBC versions.
  • v0.3.3 (#127): ArgyllCMS binary sidecars dynamically fetched at build time from Gronod/argyllcms releases; removed vendored binaries from repository; added Windows NSIS USB instrument driver installer hook.
  • v0.3.4 & v0.3.5 (#119, #134): TIFF preview metadata extraction, printtarg custom patch labels, and robust instlist JSON parsing.
  • v0.3.6 (#137): Interactive chartread support for multi-key prompts (accept/override key combos).

Milestone 10 — Production Ready Features (v0.5.0 v0.5.5)

  • Structured Logging (#139): Integrated tauri-plugin-log with rotating logs in native OS app log directory and ArgyllCMS stdout/stderr stream capture.
  • Stage 3 Direct Resume (#140): Open existing .ti2 target file in Stage 1 to parse header metadata and jump directly to Stage 3 (Measurement).
  • Stage 1 Additional Customisation & Tooltips (#141): Exposure of 11 advanced targen tuning parameters (-g, -s, -n, -c, -N, -G, -A, algorithm selection, -l, -V, -p) in a collapsible section with contextual guidance tooltips and preset support.
  • Subprocess Lifecycle & Clean Exit (#147, #149): Tauri application and window close hooks invoking ProcessManager::kill_all to prevent orphaned hardware-locking processes.
  • Stage 1 Layout Normalization & Stage 2 Deterministic Target Generation (#162, #163) (v0.5.5): Reorganized Stage 1 Advanced Options into structured 2-column grids with normalized heights; enforced deterministic -R 1 target generation with custom seed and raster order (-r) support in Stage 2.
  • macOS Universal Binary Target (#164) (v0.5.5): Added macOS Universal Binary (universal-apple-darwin) build target combining Intel (x86_64) and Apple Silicon (arm64), ArgyllCMS universal sidecar packaging, runtime fallback resolution, and CI release asset automation.

Milestone 11 — Enterprise Colour Workflow (v0.6.0 v0.7.2)

  • macOS Driver Colour Management Bypass & Media Type Selection (#188) (v0.7.2): Direct media type extraction via PPD/lpoptions, vendor uncorrected color bypass detection (Canon CNIJIntent2, Epson ColorCorrection), AP_ColorMatchingMode=AP_ApplicationColorMatching ColorSync suppression, CUPS printer management links, and Media Type selection UI.
  • 3D Gamut Visualisation Rework (#185) (v0.7.1): Purpose-built CIELAB axis scaffold with tick marks and crisp CSS2D HTML text labels, clean sRGB reference rendering using THREE.EdgesGeometry with faint transparent solid volume, per-vertex true-colour profile gamut shading via labToSrgb(), and glassmorphic legend overlay with independent layer visibility toggles.
  • Workflow & Visualizer Enhancements (#176, #177, #178, #179) (v0.7.0): Stage 4 OBA/FWA compensation and viewing conditions UI (-c, -d), global button standardization, Stage 3 swatch grid diagonal split rendering for CIEDE2000 visual comparison, and robust gamut .gam dual-table face parsing with regex fixes for profcheck.
  • CGATS Dataset Interoperability (#94) (v0.6.0): Native Rust CGATS and Argyll .ti3 dataset parser, canonical normalizer (0-255 scaling, field aliasing, metadata synthesis), and direct-jump workflow to Stage 4 (Profile Generation) and Stage 5 (Verification) using imported external datasets.
  • Stage 1 Layout Normalization (#162) (v0.6.1): Standardized control heights and structural flexbox auto-margin layout for multi-column Stage 1 advanced settings.
  • Overlay Tooltip Rendering (#171) (v0.6.2): Rendered tooltips as absolute overlay popups on hover/focus to prevent layout jitter while preserving in-flow hints in global tooltip toggle mode.
  • Preconditioning Profile File Type Filter (#172) (v0.6.3): Dedicated select_profile_file command allowing selection of .icc, .icm, and .mpp files for Stage 1 preconditioning profile input.
  • Windows Authenticode Code Signing in Gitea CI (v0.6.4 v0.6.6): Integrated Tauri bundle signing hooks via sign.cmd batch wrapper with PATH resolution, Gitea Actions secret-based PFX materialization, and ephemeral signing pipeline.
  • Stage 3 Chartread Completion & Snapshot IPC Fix (#175) (v0.6.7 v0.6.8): Added dedicated Done & Save .ti3 action (d\n), Undo Strip action (u\n), automated completion state detection, and corrected Tauri IPC deserialization parameter (passIndex) in snapshot_ti3.

3. Future Roadmap

Milestone 9 — macOS Native Support & Enhanced Print Spooling (v0.4.0)

  • macOS Platform Bundle: Build and sign universal macOS .dmg bundles with notarization.
  • macOS Raw Spooling: Native CoreGraphics/CUPS raw print dialog bypass.
  • SpectroScan & Automated Table Support (#93): Support XY automated scanning tables (i1iO / SpectroScan) in chartread (deferred).

Milestone 13 — UI/UX & Workflow Polish

  • Global Button Standardization (#177): Enforce .btn-sm/.btn-md/.btn-lg/.btn-icon-sq tiers across all stages, remove inline button styles, and add CSS custom properties for button metrics.
  • Swatch Grid White Patch & Orientation Polish (#178): Finalise is_pad guard documentation, diagonally split swatch tooltips, and validate printtarg row/column ordering.
  • Configurable CIEDE2000 Thresholds (#184): User-configurable good/warning ΔE₀₀ upper bounds in Settings, persisted across sessions and applied to the Stage 3 swatch grid.
  • Stage 4 OBA/FWA Tooltips & Tests (#176): Contextual help for OBA/FWA, illuminant, observer, and viewing-condition controls; additional colprof arg builder tests.
  • 3D Gamut Viewer Controls (#185): Camera reset, opacity sliders, keyboard shortcut, and full public-API JSDoc.
  • Gamut / Profcheck Hardening (#179): Validate .gam vertex/face parsing, improved profcheck regex fallbacks for legacy text output, and user-visible parser warnings.

Milestone 12 — Future Workflow & Advanced Analytics (Deferred)

  • Batch Verification & Drift Tracking (#95): Track printer drift over time by comparing periodic verification measurements against a baseline profile.
  • Multi-Language Localization (#96): Full UI internationalization (English, German, French, Japanese).