Files
ICCery/ROADMAP.md
2026-09-06 16:37:59 +01:00

13 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 configurations (macOS Core Printing / NSPrintPanel, Windows GDI & DEVMODE, 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).
  • Current Version: v0.8.4 (Production release).

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.

Milestone 13 — UI/UX & Workflow Polish (v0.7.0 v0.7.4, v0.8.0)

  • 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.

Hardware Status Feedback Release (v0.8.1)

  • i1Pro 2 LED Status Feedback (#204): Added optional -Y l switch support to chartread driving the dual RGB ring LEDs of the X-Rite i1Pro 2 for visual status feedback (calibration, swipe ready, misread, capture success).
  • macOS CI Cross-Compilation Testing: Hardened .gitea/workflows/build-macos.yml by compiling Apple Silicon tests with --no-run on Intel runner hosts to avoid architecture execution mismatch.

Milestone 12 — Future Workflow & Advanced Analytics (v0.8.2)

  • Printer Drift Tracking & Verification Analytics (#95): Track longitudinal printer drift in Stage 5 over time with historical run logging in verification_history.json (1,000 records), interactive dual-series SVG trend chart with ICCery verification reference bands, consecutive-breach alert recommendation card, and RFC-4180 CSV export.
  • XY Automated Scanning Tables (#93): Full Stage 3 support for automated XY scanning tables (GretagMacbeth SpectroScan, X-Rite i1iO) with pure multi-line prompt classification, fiducial alignment prompts, 4-step sequence checklist, and graceful head parking on cancel.
  • Multi-Language Localization (#96): Closed — Won't Fix (English UI retained as standard color-management terminology).

Maintenance & Reliability Release (v0.8.3)

  • Gamut Viewer Node Test Runner Support (#212): Guarded window and window.__TAURI__ globals in gamut_viewer.js and added polyfill mock harness to gamut_viewer.test.js to enable automated headless test execution via node src/js/gamut_viewer.test.js.
  • Custom Spectrum File Picker Dialog (#210): Implemented native select_spectrum_file command wrapping Tauri file dialog with .sp filter for custom FWA/OBA spectrum selection in Stage 4 profile generation.
  • CGATS Dataset Import File Picker & State Synchronization (#211): Implemented native select_dataset_file command with .ti3, .txt, .cgats, and .csv filter, synchronized wizard target directory and basename upon import, and guarded against empty target states.

Maintenance & Reliability Release (v0.8.4)

  • Atomic Verification History Persistence (#213): Hardened quality_store.rs with atomic temporary file writes (.tmp), explicit flush/sync, and atomic rename to prevent historical drift data loss or corruption upon unexpected system crashes.
  • Frontend Unit Testing & CI Integration (#215): Added standard npm test script executing the 3 frontend test suites (profcheck, chartread, and gamut_viewer) and integrated automated frontend test validation into macOS, Linux, and Windows CI workflows.

3. Future Roadmap

Milestone 9 — macOS Native Support & Enhanced Print Spooling (v0.4.0 / Post-v0.8)

  • macOS Platform Bundle: Build and sign universal macOS .dmg bundles with Apple Developer ID notarization and stapling.
  • macOS Raw Spooling: Native CoreGraphics/CUPS raw print dialog bypass.

Future Architecture Strategy (Post-v0.8.2)

  • Multi-Device Drift Overlays: Overlay drift curves from multiple printers/media types on a shared timeline in Stage 5.
  • Direct Remote Target Dispatch: Send .ti2 target jobs to network print spoolers or remote print labs with automated token callbacks.
  • Embedded ICC Profile Inspector: Direct inspection of cLUT tags, chromatic adaptation matrices, tone reproduction curves (TRC), and profile metadata from saved .icc/.icm files.