jig v1.9.0 — the transcript you can touch
jig v1.9.0 — the transcript you can touch
v1.9.0 is a UX batch: the transcript is now fully interactive — click
thinking, drag the scrollbar, unfold tools one stage at a time, read real
diffs — and the harness stops cutting turns short. It also removes every
harness-imposed output cap and fixes a provider error that killed turns after
1–3 messages.
Interactive transcript
- Thinking, per block. Click a
thinking…line and only that reasoning
block reveals itself;^Tstill toggles everything at once. - A real scrollbar. Proportional thumb on a faint track. Grab it and drag,
or click the track to jump; scrolling back to the bottom re-engages
follow mode. - Tools are one line again. A finished tool shows a single header line
with a faint▸Nmarker. Click to unfold: 1st click a peek (6 lines),
2nd more (24), 3rd full, 4th back to one line. - Real diffs in edit cells.
edit/writenow attach a proper unified
diff (LCS-based hunks,@@bands, green adds / red dels) that the
transcript renders instead of the model-facing hashline echo.
Composer
- Cursor no longer drifts. Word-wrapped input wrapped the visual column
aschars % width, so the cursor slid left on every auto-wrapped line. It
is now measured from the cursor's actual visual segment, and the input box
height is counted with the same word-wrap it draws with.
Turn lifecycle
- Completion contract. The model closes finished work with
<complete>…</complete>wrapping a one-paragraph summary of the changes.
Without the closing tag the turn is continued, not accepted — an early
stop (or a stream cut mid-thinking) no longer ends the turn silently. The
harness re-prompts up to three times before accepting the stop. - No more
max_tokenscaps. The default config no longer truncates
responses: on OpenAI-shaped endpoints the field is omitted entirely
(o-series getsmax_completion_tokensonly when a cap is set explicitly),
and the Anthropic dialect — where the field is mandatory — uses the
model's catalog maximum. - Fixed
400 Invalid assistant message: content or tool_calls must be set. Empty assistant envelopes (left behind by a stream cut mid-reasoning)
are dropped before they reach the wire, and the Anthropic serializer now
filters unsigned thinking and merges consecutive same-role messages — both
deterministically, so the KV-cache prefix stays byte-stable.
Validation
Full workspace gates were run for this release: cargo test (380+ tests),
clippy -D warnings, cargo fmt --check, jig prompt-lint, release build.
The KV-cache snapshot and cache-guard tests were updated for the serializer
changes and pass.
Install
Download jig.exe below (Windows x86_64) and put it on your PATH.