Skip to content

Jig 0.24.0

Choose a tag to compare

@timessuman timessuman released this 30 Sep 16:58
· 32 commits to main since this release
e617591

The owner's word held to one rule, Jig's instructions in your project's AGENTS.md,
and Jig tested on Linux, macOS and Windows.

Added

  • jig checksum <spec> prints a spec's checksum, the value its
    .checked.json records. It had been left to agents to compute from the
    procedure's description, and a hand-computed value was easily wrong.
  • route: is a spec field, for a page whose surface name does not say where
    it is served.
  • Your project's AGENTS.md carries Jig's instructions for your agent.
    init, install and update create the file if it is missing, or add Jig's
    block to the one you have: load the skill before UI work, how the loop runs,
    the owner's-word rule, and what each of Jig's files is for. With Claude Code,
    a block in CLAUDE.md imports it, so every session loads it. Jig owns only
    what is between its markers. check reports the block missing or edited,
    ship is not ready without it, the Stop hook holds a session that removed it,
    and jig update puts it back.

Changed

  • The owner's word is held to one rule, everywhere Jig records it. A spec
    confirmed, a drawing approved or skipped, a re-judge left for later, a tweak's
    change and a decision's reason are each the owner's own words, and words that
    say that thing: a remark about the layout is not a skip of the mockup, and a
    yes to one question is not a yes to the spec. One check now covers all of
    them. Three had no check before: confirmed: true needs the owner's yes to
    being asked, a tweak's change must be words they said, and decide's quoted
    reasons must be too. The skill states the rule.
  • A field Jig does not read is refused where it would be written. When the
    procedure named no place for something, agents invented one: front-matter
    keys, verdict ids, JSON fields that nothing reads, so what they said reached
    no check. A spec key a session adds, a verdict-file field holding a list or an
    object, and an unknown tweak.json field are now refused, each pointing at the
    place that exists. Keys a spec already had are not held against it.
  • A spec is drafted where Jig reads it, and checked as itself. It is written
    at .jig/specs/<name>.spec.md from the first draft, and its shape is checked
    before the owner is asked to confirm it. Asking to confirm a spec that is not
    there is refused, and so is finishing a spec session without writing it. A
    named spec is never checked in place of another page's.
  • A critique files one problem once. A difference goes under differences
    only when no rule or decision already holds it, so the counts ship reports
    count problems, not entries.
  • The gate asks for the probe files it re-takes to be committed. It renders
    a changed page again as a session stops, after the last commit; like the
    lock, it now stops once to have those files committed on their own.
  • jig gate run by hand reports and renders nothing. Without a transcript
    it cannot tell which pages are in play, and it had re-rendered every one.
  • motion: none can say why, as in none — this page adds no movement.
  • A file a session never wrote is taken as it found it, committed or not,
    so a session is not answerable for a draft it found.

Fixed

  • Jig works the same on Linux, macOS and Windows, and is tested on all three.
    Every change now runs the full suite on each, on Node 22 and 24. The first run
    found that rendering a page needed a WebSocket Node 20 does not have, so Jig
    now needs Node 22 or later (Node 20 is end-of-life) and says so if it is run
    on an older one; and that on Windows no browser was ever found to render with:
    Edge, Chrome installed per user, and commands on PATH are now found.

  • A project checked out on Windows reads the same as anywhere else. Git on
    Windows gives files CRLF line endings. Jig parsed a spec with them as having
    no regions at all, a spec's check no longer matched it, and every comparison
    with a file's committed copy read as a change. Every text file Jig parses or
    compares is now read with its line endings normalised.

  • Two Jig runs at once no longer fail on Windows. Windows refuses to replace
    a file another process has open, where Linux and macOS allow it; writing a
    file Jig records (the install manifest among them) now retries briefly there,
    and the manifest's lock treats a lock file Windows is still deleting as held
    for a moment, not as an error.

  • The docs say what the code does. The README said check reports a
    pre-0.4.0 install's leftovers (only init does); the procedure named five
    reasons ship owes a page (there are six, one a re-probe) and described the
    spec checksum as leaving out one line where the code leaves out two. Tests
    now fail when the procedure stops naming a state ship reports, a line the
    checksum leaves out, or a command the CLI registers.

  • The README no longer counts the rules check decides by hand. It named
    "the seven mechanical rules" from 0.1.0; it now points at rules.index.json.

  • An exempt path works the way you write it. ./src/card.tsx,
    src\\card.tsx and an absolute path inside the project all mean
    src/card.tsx. A path outside the project was dropped without a word; it is
    now named in the report with what to write instead, and a bare file name that
    matches nothing is answered with where that file is.

  • A fact's source that holds a sentence is told to put it in note.

  • The README says what Jig does. It said init was the only command that
    writes into your repo and that nothing of Jig's is kept in it (a project-scope
    install writes the skill and rules into your repo's agent folder); pointed
    agents at AGENTS.md, which users do not receive; counted 95 rules the CLI
    cannot decide (it is 120), two critique readers (three) and four per-page
    commands; described check --ci as errors only; said the token layer changes
    nothing on the page, beside a color-scheme line that does; and claimed Jig
    knows every page that changed, which it does not for a page rendered on
    request. Its exempt example named one project's files as if they were a
    pattern; it now explains how to choose your own: a file that renders outside
    your stylesheets, or a page you will not revisit, since check --all and
    ship read every file. The slash-command table
    lists verdicts, probe and checksum.