- Extract pure classifyChartreadLine parser with tests for two-line prompts, fiducials, and sheet placement - Add TABLE_PLACE_SHEET and TABLE_ALIGN states with sticky continuation lines - Add 4-step XY sequence panel and hint in Stage 3 - Handle graceful head parking with 'q\n' on cancel - Support --xy mock branch with blocking stdin reads - Align ROADMAP.md and AGENTS.md for Milestone 12
11 KiB
11 KiB
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
targenfor RGB/CMYK patch generation with presets and neutral axis boosting. - Integrated Stage 2
printtargmulti-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 -ustate 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
colprofcLUT profile mathematical generation. - Integrated Stage 5
profchecknumerical 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
rawqueue 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
.gamgamut datasets viaiccgamutand integrated 3D CIELAB WebGL viewer. - Bundled reference
sRGB.gamwireframe overlay for comparative volume analysis. - Resolved platform profile extensions (
.icmon Windows vs..iccon 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
chartreadinstrument workflows. - Decoupled
ChildStdinmutex management from child process wait/reap tasks.
Milestone 8 — Advanced Measurement & Workflow Enhancements (v0.3.0)
- Averaging & Multi-Pass Reading: Integrated Argyll
averagemulti-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_filedialog. - v0.3.2 (#108): Linux CI runner compatibility updated to Ubuntu 22.04 LTS so
.debpackages run without requiring newer GLIBC versions. - v0.3.3 (#127): ArgyllCMS binary sidecars dynamically fetched at build time from
Gronod/argyllcmsreleases; 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
instlistJSON parsing. - v0.3.6 (#137): Interactive
chartreadsupport 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-logwith rotating logs in native OS app log directory and ArgyllCMS stdout/stderr stream capture. - Stage 3 Direct Resume (#140): Open existing
.ti2target 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
targentuning 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_allto 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 1target 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 (CanonCNIJIntent2, EpsonColorCorrection),AP_ColorMatchingMode=AP_ApplicationColorMatchingColorSync 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 usingTHREE.EdgesGeometrywith faint transparent solid volume, per-vertex true-colour profile gamut shading vialabToSrgb(), 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.gamdual-table face parsing with regex fixes for profcheck. - CGATS Dataset Interoperability (#94) (
v0.6.0): Native Rust CGATS and Argyll.ti3dataset 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): Dedicatedselect_profile_filecommand allowing selection of.icc,.icm, and.mppfiles for Stage 1 preconditioning profile input. - Windows Authenticode Code Signing in Gitea CI (
v0.6.4–v0.6.6): Integrated Tauri bundle signing hooks viasign.cmdbatch 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 dedicatedDone & Save .ti3action (d\n),Undo Stripaction (u\n), automated completion state detection, and corrected Tauri IPC deserialization parameter (passIndex) insnapshot_ti3.
3. Future Roadmap
Milestone 9 — macOS Native Support & Enhanced Print Spooling (v0.4.0)
- macOS Platform Bundle: Build and sign universal macOS
.dmgbundles with notarization. - macOS Raw Spooling: Native CoreGraphics/CUPS raw print dialog bypass.
Milestone 13 — UI/UX & Workflow Polish
- Global Button Standardization (#177): Enforce
.btn-sm/.btn-md/.btn-lg/.btn-icon-sqtiers across all stages, remove inline button styles, and add CSS custom properties for button metrics. - Swatch Grid White Patch & Orientation Polish (#178): Finalise
is_padguard documentation, diagonally split swatch tooltips, and validateprinttargrow/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
colprofarg builder tests. - 3D Gamut Viewer Controls (#185): Camera reset, opacity sliders, keyboard shortcut, and full public-API JSDoc.
- Gamut / Profcheck Hardening (#179): Validate
.gamvertex/face parsing, improvedprofcheckregex fallbacks for legacy text output, and user-visible parser warnings.
Milestone 12 — Future Workflow & Advanced Analytics
- Printer Drift Tracking & Verification Analytics (#95): Track longitudinal printer drift in Stage 5 over time with CIEDE2000 trend charts, breach alert banners, RFC-4180 CSV export, and history storage.
- XY Automated Scanning Tables (#93): Full Stage 3 support for automated XY scanning tables (SpectroScan, i1iO) with multi-line prompt classification, fiducial alignment, and sheet placement checklist.
Multi-Language Localization (#96): Closed — Won't Fix (English UI retained as standard color-management terminology).