- TextField("30"/"2.0"/"5.0") passed the default value as the label,
which macOS draws inline next to the box — the rows read
"Stale after 30 [30] days" / "Good ΔE ≤ 2.0 [2.0]".
- The three fields are now direct Form children carrying their
descriptive label, so it renders once in the label column and the box
fills the control column, matching the Pickers. The stale-days row
folds "days" into the label ("Stale after (days)").
- New identifier settingsCalStaleDays; docs/21 roster 357→358.
- New testNumericFieldsCarryLabelsNotDuplicatedValues asserts each
field's value, a single label-column staticText, and no staticText
echoing the old label literal. testVerificationRowsStayInsideSheet
updated for label-column geometry (fields end ~3.5 pt inside the
sheet, same as the PopUpButtons — the 12 pt inset only applied to the
old 60 pt boxes).
Refs #165
ICCery Rewrite Specification
Product: ICCery — printer ICC/ICM profiling frontend for ArgyllCMS
Source analysed: git.i3omb.com/gronod/ICCery v0.8.5 (main, merge #229)
Related: gronod/argyllcms (fork of ArgyllCMS 3.5.0), gronod/ICCery-CPU (TargetPrint)
Current stack (do not reuse): Tauri v2 + Rust host + vanilla JS + Three.js
Licence: ICCery GUI is proprietary EULA; ArgyllCMS binaries are AGPLv3 and must remain subprocess-isolated (stdin/stdout/stderr only — never link)
This folder is a complete functional specification of the existing application so it can be reimplemented in a different stack under the same name, using the same graphical assets (CMY ice-cream-cone wordmark).
How to use these documents
Read in this order if you are implementing:
- 01-overview.md — product, wizard, platforms
- 02-architecture.md — process isolation, modules, events
- 03-ipc-and-process-manager.md — spawn / stdin / kill contract
- 04-argyll-binaries.md — every Argyll CLI invocation
- 05-argyll-fork.md —
-uJSON protocols,instlist,-Y l, Windows pipe fix - Wizard stages: 06 → 07 → 08 → 09 → 15 → 16 → 17
- Print (critical): 10 → 11-print-macos.md → 12 → 13 → 14
- 18-gamut-viewer.md
- 21-ui-reference.md — every control id
- 24-issues-invariants.md — bugs that must not be repeated
- 25-rewrite-notes.md — stack-agnostic idiosyncrasies
- 26-v2-mac-ticket-plan.md — reviewed Gitea milestone/ticket plan for the macOS SwiftUI rewrite (executable; supersedes the 2026-09-08 draft)
Non-goals of the original (do not reintroduce)
- Display calibration wizard (
dispwin/dispread) — won't-fix (#90) - i18n (en/de/fr/ja) — won't-fix (#96); Argyll diagnostics are English-only
- Linking against Argyll as a library (AGPL contamination)
Source map (legacy Tauri tree)
| Area | Path |
|---|---|
| Wizard HTML | src/index.html |
| Frontend modules | src/js/*.js |
| Styles | src/styles/main.css |
| Logo | src/assets/ICCery-logo.svg |
| Rust host | src-tauri/src/ |
| Print backends | src-tauri/src/print/{mod,macos,windows,unix}.rs |
| Argyll sidecars | src-tauri/argyll/<platform>/ (not in git; npm run fetch-argyll) |
| Bundled sRGB gamut | src/assets/sRGB.gam |
Analysed at 2026-09-08 from Gitea (109 ICCery issues, 13 Argyll-fork issues, 3 ICCery-CPU issues) plus a full source read of v0.8.5.