Skip to content

ChromIQ v4.0.0

Choose a tag to compare

@github-actions github-actions released this 13 Aug 11:06
· 699 commits to master since this release

v4.0.0

34 new or changed things and 18 fixed problems and 3 internal changes in this release.

✨ What's new

🎯 Verification, from start to finish:

  • Three ways to check a profile, clearly told apart. A chart built from
    the profile's own gamut (the everyday accuracy check), a chart printed
    through the profile (the strict whole-path check), and a sheet printed from
    your own application with the profile applied (the everyday-chain check).
    The Dictionary entry "Which verification should I use? (the three ways)"
    compares them, and the report records which way every sheet was made so
    they are never mixed silently.

  • A verification chart built from your profile's own gamut. The FROM
    PROFILE GAMUT
    module on Create Chart asks the profile which colours it
    can actually print — from a fixed, published reference set — and builds the
    chart out of exactly those, so no patch is wasted on a colour that was
    never possible on this paper. White, black and evenly spaced grey steps
    take about one patch in eight — enough of a grey wedge to catch a
    drifting printer, without swallowing a small chart. Repeated checks of
    one profile always get the same colours, so this month's figures compare
    patch by patch with last month's. The chart already carries the profile, the Print Chart tab selects
    Raw for it by itself, and for a verification run with a built profile this
    module is the one Create Chart opens on.

  • A verification chart can be printed THROUGH its profile. The Print
    Chart tab's Colour row chooses "Through the profile" (ChromIQ converts
    every patch itself — the printer's own colour management stays off, so
    nothing is ever converted twice) or "Raw — no profile". The choice, the
    profile file and the rendering intent are written into a print record
    beside the chart, and the report states them for every sheet.

  • Sheets ChromIQ did not print are asked about, once. Measuring or
    importing a verification sheet that has no print record raises "How was
    this sheet printed?"
    — Raw / With colour management / Not sure (always
    safe, stores nothing). The answer is kept with that one measurement.

  • Import a measurement made in another program. With Run type set to
    Verification, the Measure tab shows an IMPORT module (it exists
    only for verification runs): it files an i1Profiler (or any .ti3)
    measurement as a dated verification — converted, checked patch-for-patch
    against this run's chart, and stored exactly where a native measurement
    would go. Your original file is never touched.

  • The report judges every sheet by the fair yardstick. A print that
    mapped white to the paper — through the profile with relative intent, or
    another application's colour management — is judged relative to its own
    paper white
    ; everything else is judged as measured — no white
    adjustment
    (a way of comparing, not a rendering intent). The report says
    which was used, per sheet, and physical readings like paper white and
    deepest black always stay as measured.

  • Colour accuracy is split into within / beyond the profile's gamut.
    Some design colours are simply not printable on a given paper; their
    distance describes the gamut, not a mistake of the profile. The report
    shows both groups — side-by-side columns in the detail chapters, row
    blocks in the Overview so dated columns stay comparable — and Pass/Fail
    judges the within-gamut figures. Every patch stays counted and visible.

  • Raw sheets get a drift figure instead of an unfair verdict. A sheet
    printed raw is not expected to match the design, so it is never graded
    Pass/Fail against the profile thresholds. Instead the report compares it
    with your previous raw check of the same chart — print against print,
    patch by patch. The first raw check becomes the baseline; checks made with
    different charts are refused rather than mispaired.

  • 📈 The Measurement Report grew into the profile's health record. It
    gathers every dated check of a run automatically, trends colour accuracy,
    paper white, darkest black and the cube corners over time, lets you
    untick individual runs, warns about mixed instruments and mixed printing
    methods, carries adjustable Pass thresholds, and remembers every option
    you set. Save report as PDF produces a print-sharp document (vector
    text, ~300 dpi charts) whose proposed folder always matches what the
    report covers — one dated check, one run's checks, or the whole profile.

🧰 And the rest:

  • 🧭 The run bar — one place that says what you are working on. Above the
    tabs, on every tab: Profile run, Run type (Profiling,
    Verification — and Calibration, once its options are enabled in
    Preferences) and — for verifications — which dated check,
    each with its own ⓘ explanation. Beside them sit the run actions:
    duplicate a run, restore the chart a measurement was made with, and
    delete — with a window first that says exactly what would happen. The
    whole app follows the bar: Create Chart, Print, Measure and Build Profile
    always show the run it points at, and when no project is loaded the bar
    says so instead of guessing.

  • 📦 Ready-made Red River Paper charts. Four built-in starting points in
    Create Chart carry Red River's own 2052-patch Standard Patch Set v25 —
    byte-identical to their published file — laid out and verified for i1Pro
    (A4 and Letter, with the clip-border record) and ColorMunki. The patch
    set is fixed so results stay comparable; every layout control (paper,
    margins, branding) stays yours to change.

  • Every setting belongs to the run you set it on. Create Chart, Measure
    and Build Profile each remember their own settings per run — and per run
    type, verification included; switching run, opening a project or changing
    run type loads them, leaving a tab saves them — without a dialog. This
    holds before any chart exists, and a generated chart's own file records
    the complete recipe that made it, so returning to a run always shows the
    options its sheet was really built with. A brand-new run starts from the
    values of the run you were on — by design, so "make another run like this
    one, with one change" needs no preset.

  • Runs have descriptions. "Matte paper, second attempt" appears in the
    run bar, the measurement report and on the printed chart
    ({rundescription}); verifications and the calibration have one too. The
    profile description writes itself from project, run and date — editable,
    or off. And the installed copy of a profile can be named after its
    description
    (a checkbox on Build Profile), so the profile picker in your
    editor reads like your own words.

  • Calibration is a run type. Once "Enable calibration options" is
    ticked in Preferences, Calibration appears in the Run type list —
    choose it and the whole app follows: chart, measurement, .cal file and
    its description live in the project's cal/ folder, shared by every run,
    and each profile run records which calibration it was built with — one
    run can keep an older calibration with "Include" while another applies
    the new one.

  • 🔔 Sounds during measurement — a strip accepted, a patch misread, a
    session finished — so you can keep your eyes on the chart. Preferences →
    Sounds
    — pick a sound per event, or point ChromIQ at your own sounds.

  • A gentle warning when you swipe a strip too fast. Every instrument
    takes a fixed number of readings per second, so a strip has a minimum
    time it needs — swipe faster and patches get too few readings, even when
    ArgyllCMS still accepts the strip. ChromIQ knows the pace for your
    instrument, shows a live verdict while you measure, and mentions it when
    a strip was read quicker than the minimum, so you can re-read it before
    it costs you accuracy — the strip reading times under the chart preview
    mark such a strip with an . Tune or switch it off under
    Preferences → Measurement ("Warn me when I read a strip too fast").

  • 📖 The "Getting started" help card was rebuilt: a clickable chapter
    index, chapters that walk from first start to a finished profile, its own
    chapter on checking a finished profile (the three ways, and which to
    pick), and a plain-language overview of where your files are stored — in
    all twelve languages.

  • 🌍 Twelve languages, complete — German, Spanish, French, Italian, Dutch,
    Portuguese, Swedish, Norwegian, Polish, Russian, Japanese and Chinese —
    every button, message, tooltip and help text.

  • Demo projects for learning and testing, attached to this release as
    downloads:
    ChromIQ-demo-projects.zip
    demonstrates the file-handling rules step by step (including projects in
    the old 3.13 layout, to watch the migration happen),
    Demo-Report-Matrix.zip
    holds thirteen documented Measurement Report cases with one ready-made
    PDF per case, and
    ChromIQ-Switching-Demo.zip
    demonstrates the per-run settings rules with documented test cases.

  • Preferences → "Hide the log panel on every tab", for when the chart
    preview deserves the room. The full log is still written to disk.

🔁 Changed

  • The ChromIQ layout engine is the default for new charts — in Manual
    mode too, where printtarg stays one untick away (Guided has used the
    engine all along). A saved echo of the old off-default is migrated once;
    a choice you make yourself is never touched, and charts that exist keep
    the layout recipe recorded in their own file.

  • The chart-reading engine has left the Beta tab. It and its
    companion options (patch flagging, calibration retries, faster
    connection, the misalignment warning) now live at the top of
    Preferences ▸ Measurement, and the engine no longer carries a beta
    label — only the profile engine is still experimental.

  • The measurement report explains its own limits. How to read this
    report
    now says what the one ΔE figure bundles — the profile's
    conversion of each colour, the printer's behaviour on the day, the
    instrument's own small uncertainty — and points to Check & Refine ▸
    Analyse Profile Quality as the check that looks at the profile
    alone. It also says plainly what the figures are for: comparing a
    profile with itself over time, not ranking papers or printers against
    each other. The coverage line in Create Chart and the report's
    within-gamut note now carry percentages besides the counts.

  • Preferences links the ChromIQ website. The "Created by" line above
    the buttons carries a Website link in the app's accent colour — one
    click to the showcase page.

  • The measurement report breathes, and its PDF prints the same
    everywhere.
    A small gap under every section headline, after the intro
    lines, and between the four trend charts; each section starts on its own
    PDF page, and a table always keeps its headline beside it. Headline sizes
    are pinned, so a saved report renders identically wherever it is made.
    The report window opens a little wider, and the console warning about a
    missing "Sans-serif" font is gone.

  • The measurement model is consistent everywhere. Replacing a chart,
    rebuilding one, measuring over an existing measurement, deleting a run —
    each has one window, one wording and one outcome, whichever tab you reach
    it from. The rules live in docs/design/ and the app is tested against
    them.

  • Nothing is deleted, only archived. Replaced measurements, regenerated
    charts, redone calibrations and replaced verification charts all move to a
    dated old/ folder — and the windows say so before you commit.

  • Every measurement keeps a copy of the chart it was measured with, saved
    the moment measuring starts — profile runs, dated verifications and the
    calibration alike — and Restore Used Chart puts it back. A dated
    verification is always judged against the chart it was measured with,
    even if the shared chart was replaced later.

  • File dialogs are ChromIQ's own everywhere — with the sidebar shortcuts
    to your working folder — instead of the bare system dialogs.

  • 🗂️ Existing projects are migrated in place. A project from 3.13 or an
    earlier 3.14 is reorganised into the new folder shape the first time it is
    opened — every old file kept, the plain-language folder guide ("Where are
    my files?" in the Welcome window) always current.

  • The interface holds still. Buttons sit in the same place on every tab,
    the log panel ends on the same line shown or hidden — and can be dragged
    as large as the window allows — the run bar no longer shifts during
    start-up, and windows placed off-screen by the system are nudged back so
    their bottom row of buttons is always reachable.

  • The icons were drawn for the job. Load Project and Load chart have
    their own recognisable icons, the Duplicate and Calibration actions got
    purpose-made marks, and the run bar's action marks were aligned optically
    — reviewed on screen, in light and dark mode, before being adopted.

  • The windows that ask what to do with a chart read like every other
    window
    — explanation in plain text, buttons in a row, Cancel set apart,
    long project names shortened in the middle with the full name given in the
    text.

  • ChromIQ starts a little quicker — the printer list is fetched when you
    first open Print Chart rather than while the window is being built.

🔧 Fixed

This entry covers everything that changed since v3.14.7, the last stable release — 224 betas' worth of work, grouped so you can find what affects you instead of reading a diary. The individual beta histories remain in the repository.

If you only read one paragraph: ChromIQ 4.0 looks after your work — every
run keeps its own chart, measurement and settings, nothing you made is ever
deleted, and checking how good a finished profile really is has become a
guided, honest, repeatable workflow. Your existing projects are picked up
exactly as they are: ChromIQ migrates them in place the first time it opens
them, keeps every old file, and there is nothing you need to do first.

Two headlines in more detail. ChromIQ now keeps track of your work for
you
: a profile run
holds its own chart, its own measurement, its own settings and its own
description; nothing you made is ever deleted, only archived; and every window
that could cost you something says exactly what it is about to do. And
checking a finished profile is now a first-class workflow: three clearly
explained ways to verify, honest statistics for each of them, and a
measurement report that keeps the whole dated history of a profile's health.

(New words along the way — "gamut", "drift check", "judged as measured" —
each have a plain-language Dictionary entry: open the Welcome window's
"Dictionary and terminology" card. The card "Check a finished profile
(verification run)" walks the whole workflow step by step.)

Two hundred and twenty-four betas fixed far more than fits a list — the
per-beta histories in the repository carry the complete record. What users
met most sat in measuring and in chart handling, so those come first:

While measuring:

  • Pressing Esc during a measurement no longer throws your readings away.
  • Patches no longer come back as "inconsistent" for no visible reason
    the tolerance sent to the instrument was stricter than the manufacturer's
    own default.
  • Several measurement windows never appeared at all when the ChromIQ
    reading engine was in use — the abort confirmation, failure windows, and
    two that opened in silence. All reachable now, verified against a real
    instrument, and the sound tables for every window are written down as
    specification.
  • A resume no longer archives the measurement it resumes from, a
    finished re-measurement of a whole chart announces its completion, and a
    good measurement is no longer called foreign while guided refinement
    loses its ticks.
  • The "this chart already has a measurement" window opens showing what
    the panel actually says
    — its old answers could quietly switch an armed
    refinement off and turn the next read into a replacement.
  • "No instrument found" fired once per app run instead of every
    attempt, and the abort window wording was reworked.
  • Text typed for a "New run" is kept, and lands on the run you make.
  • The strip reading times sit exactly under their strips — they used to
    drift right of their strips as the preview re-fitted; they are placed
    live at every paint now, and on a small window they split into two
    staggered rows so every time stays readable.

Charts and previews:

  • "This chart was made for a different instrument" could name the wrong
    instrument
    — it compared your connected device against a setting rather
    than against the chart itself.
  • Restoring a calibration chart put back a completely different chart,
    and a calibration restore redrew the selected run's chart.
  • The chart patch-set editor and the 3D patch view opened the run's
    chart, not the chart you had selected.
  • The windows that ask what to do with a loaded chart were rebuilt
    explanation in plain text, buttons on one row, Cancel set apart, long
    project names shortened without clipping ("JSE AS BASE FOR A NEW
    PROFILE" is gone: windows widen to fit their buttons, everywhere).
  • The auto-update preview judged the wrong chart after switching
    modules, and a switched-off option now looks switched off in both
    themes.
  • printtarg margins were applied in the wrong order (top/right/bottom/
    left confusion) — charts now sit where the instrument minimums say.

Reports, projects and the app around them:

  • Checking for updates works again for stable versions. The check used
    to fail with "No release tag found" whenever the newest releases were all
    betas; it now asks for the latest finished release directly.
  • The measurement report's PDF paginates cleanly — headings stay with
    their tables, the trend legend never overlaps the graph, and charts print
    sharp instead of pixelated. The proposed save folder follows the
    four-location design again. The report window itself keeps its run list
    to five lines, its charts readable and its buttons on screen at every
    window size.
  • A damaged meta.json no longer stops a run remembering anything, and
    runs write their metadata atomically.
  • Help texts tell the truth. The verification help card described a
    colour-management print path the app deliberately prevents; the gamut
    check was described as a drift check; "as measured (absolute)" read like
    a rendering intent. All corrected — and every such correction is now
    guarded by a test.

🔧 Under the hood

  • The test suite no longer writes to your own ChromIQ preferences.
  • docs/design/ holds the agreed, binding specifications: the measurement
    model, the message catalogue, per-target settings, the measurement windows
    and their sounds, calibration as a run type, and verification printing;
    the suite fails when code and specification disagree.
  • Two purpose-built demo generators (scripts/make_demo_projects.py,
    scripts/make_report_demo.py) build test projects entirely from the real
    Argyll pipeline, and on-screen drivers verify the app against them —
    54 automated expectations for the Measurement Report alone.

Every fixed entry above starts with what you would have noticed, so you can find the one that was bothering you without knowing what caused it.