Stage 0: printer calibration (printcal / applycal) #29

Open
opened 2026-09-08 17:44:12 +01:00 by gronod · 0 comments
Owner

Summary

Enable Calibrate Printer. CAL_ artefacts. Reuse Stages 2–3. Captured printcal.

Spec refs

docs/07-stage0-calibration.md, 04-argyll-binaries.md §1.3/§7/§8. #224.

Scope

In: dashboard, cal targen, reuse layout/print/measure, printcal, collision, library, apply toggle, staleness, curve view.
Out: display calibration.

Implementation notes

Basename CAL_{run} never double-prefix.
Generate: targen -v -d{2|4} -s{steps} -g{steps} [-n{steps}] -e{4} [-l TAC] -f 0 CAL_{basename}.
Steps 11–51 default 21. CMYK -l 200–400 default 320.
Layout & Print: reuse Stage 2 with CAL_ basename; builder must omit -K.
Measure: reuse Stage 3.
Compute: runCaptured printcal -v -e [-I] [-z] [-a prev.cal] [-m TAC] [-xC pct]… -o out.cal CAL_{basename}.
JS v0.8.5 sends -I/-z false; keep flags on the builder.
Parse stdout (recommended power, TAC, per-channel limits) + parse .cal CGATS; infer limits from curve max×100 if stdout empty.
Collision: Overwrite / Rename {base}_{ISO}.cal / Cancel.
Apply Calibration toggle → profiling printtarg -K + post-colprof applycal -a.
Stale if older than calibration_stale_days (30) OR printer name differs. Stage 1 CMYK reminder when no cal.
Curve view: solid = post-lin, dashed = identity. TAC card, channel editors, recommended power → targen -p hint.
Library in app-data + iccery-calibration.json project state.

Rewrite invariants

#224 shipped contract. CAL_ never collides. never -K a CAL_ chart.

Dependencies

Blocks-on: 2 (captured), 5, 7, 9, 15, 17, 19, 23, 24.
Unblocks: none.

Test

  • CI/mock: both argv builders; .cal parse fixtures; collision; toggle gates -K/applycal; CAL_ skips -K.
  • Hardware: one cal loop on a real printer.

Acceptance criteria

  • Apply toggle does not put -K on a CAL_ printtarg argv.
## Summary Enable Calibrate Printer. `CAL_` artefacts. Reuse Stages 2–3. Captured printcal. ## Spec refs docs/07-stage0-calibration.md, 04-argyll-binaries.md §1.3/§7/§8. #224. ## Scope In: dashboard, cal targen, reuse layout/print/measure, printcal, collision, library, apply toggle, staleness, curve view. Out: display calibration. ## Implementation notes Basename `CAL_{run}` never double-prefix. Generate: `targen -v -d{2|4} -s{steps} -g{steps} [-n{steps}] -e{4} [-l TAC] -f 0 CAL_{basename}`. Steps 11–51 default 21. CMYK `-l` 200–400 default 320. Layout & Print: reuse Stage 2 with `CAL_` basename; builder must omit `-K`. Measure: reuse Stage 3. Compute: `runCaptured` `printcal -v -e [-I] [-z] [-a prev.cal] [-m TAC] [-xC pct]… -o out.cal CAL_{basename}`. JS v0.8.5 sends `-I`/`-z` false; keep flags on the builder. Parse stdout (recommended power, TAC, per-channel limits) + parse `.cal` CGATS; infer limits from curve max×100 if stdout empty. Collision: Overwrite / Rename `{base}_{ISO}.cal` / Cancel. Apply Calibration toggle → profiling printtarg `-K` + post-colprof applycal `-a`. Stale if older than `calibration_stale_days` (30) OR printer name differs. Stage 1 CMYK reminder when no cal. Curve view: solid = post-lin, dashed = identity. TAC card, channel editors, recommended power → targen `-p` hint. Library in app-data + `iccery-calibration.json` project state. ## Rewrite invariants #224 shipped contract. `CAL_` never collides. never `-K` a CAL_ chart. ## Dependencies Blocks-on: 2 (captured), 5, 7, 9, 15, 17, 19, 23, 24. Unblocks: none. ## Test - CI/mock: both argv builders; `.cal` parse fixtures; collision; toggle gates `-K`/applycal; CAL_ skips `-K`. - Hardware: one cal loop on a real printer. ## Acceptance criteria - [ ] Apply toggle does not put `-K` on a `CAL_` printtarg argv.
gronod added this to the M6 — Gamut, Stage 0, CGATS, release milestone 2026-09-08 17:44:12 +01:00
gronod added the
Priority
High
2
Project/ICCery-v2Feature/BackendFeature/UI
labels 2026-09-08 17:44:12 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: gronod/iccery-v2-mac#29