Generated with [Devin](https://devin.ai) Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
3.5 KiB
01 — Product overview
ICCery is a native desktop GUI that walks a user through creating a printer ICC/ICM profile with ArgyllCMS. It is not a colour engine. All measurement, chart generation, and profile mathematics live in AGPLv3 Argyll binaries spawned as children. ICCery owns UI, artefact gating, unmanaged printing, and visualisation.
Version analysed: 0.8.5 (com.gronod.iccery).
Platforms
| OS | Packaged as | Floor | Notes |
|---|---|---|---|
| Windows x86_64 | NSIS .exe + WiX .msi |
WebView2 | .icm profiles; GDI ICM-off printing; optional Argyll USB driver install |
| macOS Intel + Apple Silicon | .dmg / .app |
12.0 Monterey (LSMinimumSystemVersion) |
Universal binary preferred; WKWebView; NSPrintPanel ColorSync suppression |
| Linux x86_64 | .AppImage / .deb |
Ubuntu 22.04 glibc | CUPS lp -o raw; libcups |
macOS 11 and 10.15 are not supported after #225. Monterey Intel is best-effort: Stages 1–4 work if WebGL dies.
User-facing workflow
[optional Stage 0] printcal / applycal linearization
│
▼
Stage 1 targen → basename.ti1
Stage 2 printtarg + OS print → basename.ti2 + page TIFFs
Stage 3 chartread (+ average) → basename.ti3
Stage 4 colprof (+ applycal) → basename.icc|.icm
Stage 5 profcheck + iccgamut + install → verification, 3D gamut, OS profile store
Navigation is a left stepper. Forward motion is artefact-gated on disk, not on in-memory flags (#60, #151). Backward motion is always allowed.
Colour spaces
- RGB (Printer Driver) —
targen -d 2. Host/driver colour management is expected to be turned off at print time; ICCery prints unmanaged. - CMYK (RIP) —
targen -d 4. Typical for RIP-driven presses. Calibration (Stage 0) is recommended; Stage 1 shows a reminder when no.calis applied.
Instruments (Stage 2 layout + Stage 3 read)
printtarg -i codes used in the UI:
| UI | -i |
Hardware |
|---|---|---|
| i1 Pro / i1 Pro 2 | i1 |
Handheld strip (optional -Y l LEDs on i1Pro 2 Rev E) |
| ColorMunki | CM |
Handheld |
| SpyderPrint | p3 |
Handheld (PrintFix Pro) |
| SpectroScan | SS |
XY table |
| DTP20 / 22 / 41 / 51 | 20 22 41 51 |
Legacy X-Rite |
XY tables (SpectroScan, i1iO) are auto-detected from instlist names matching /spectro\s?scan|i1io/i and from chartread prompts (#93).
AGPL boundary (non-negotiable)
ArgyllCMS is AGPLv3. ICCery is proprietary. The original design never dlopens or statically links Argyll. Communication is:
- spawn with piped stdin/stdout/stderr
ARGYLL_NOT_INTERACTIVE=1in the child environment- structured JSON on stdout for tools compiled with the Gronod fork
-uswitch - keystrokes on stdin for interactive
chartread
A rewrite that in-process-links Argyll contaminates the GUI with AGPL. Keep the process boundary.
Identity & assets
- Wordmark: waffle cone + CMY scoops (C
#00BCEB, M#EC008C, Y#FFED00) + K cherry, textICCwhite +erycyan→blue. File:src/assets/ICCery-logo.svg. - App icon:
src/assets/app-icon.svgand raster set undersrc-tauri/icons/. - Accent in UI CSS is VS Code blue
#007accon dark#1e1e1e/#252526. - Window: 1280×800, min 1100×700, starts hidden until first paint (#225).
What the rewrite must preserve
Everything in this spec is behavioural, not Tauri-specific: CLI flags, JSON prefixes, stdin bytes, PPD keys, ColorSync SPI, artefact names, ΔE bands, collision dialogs, and the bugs listed in 24-issues-invariants.md.