Files
gronodandDevin <158243242+devin-ai-integration[bot]@users.noreply.github.com> 4c2863e52c Add bootstrap docs: AGENTS.md, BUILD-PLAN.md, LICENCE.md, vendored spec (docs/), brand assets
Generated with [Devin](https://devin.ai)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2026-09-08 17:36:50 +01:00

72 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 14 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 `.cal` is 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** `dlopen`s or statically links Argyll. Communication is:
- spawn with piped stdin/stdout/stderr
- `ARGYLL_NOT_INTERACTIVE=1` in the child environment
- structured JSON on stdout for tools compiled with the Gronod fork `-u` switch
- 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, text `ICC` white + `ery` cyan→blue. File: `src/assets/ICCery-logo.svg`.
- App icon: `src/assets/app-icon.svg` and raster set under `src-tauri/icons/`.
- Accent in UI CSS is VS Code blue `#007acc` on 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](24-issues-invariants.md).