Changelog

Kite 1.0.6, released 5 October 2026. 46 shell patterns are refused unconditionally in the version this page describes. This page summarises the release from the repository changelog; the full text, including every earlier release, is in the repo.

A quieter scrollback, and output you can get back.

Added

  • `/last` reprints the previous tool call in full. the record is captured at tool-end, bounded at 200k characters per payload, and rendered through the existing formatters with no cap and nothing collapsed, so a diff or output body that was truncated on screen is still retrievable afterwards.
  • `/tasks` prints the whole checklist. the full itemized task list now prints alongside the running turn and any queued follow-ups.
  • flashes expire even at an idle prompt. flash expiry is checked on read rather than only when the display is touched, so a flash set at an idle prompt still ages out.

Fixed

  • the scrollback stopped scrolling back. the live task list is one line instead of one row per item, `todo_write` and `todo_read` no longer echo their payload under a checklist that already shows it, and scroll-printed output, write and edit previews, bash blocks and diffs cap at 5 lines with an overflow marker. Approval previews keep their 40-line window.
  • overflow markers named a command that does not exist. the marker pointed at `/diff`, which is not registered. A regression test now cross-checks every marker against the real command list.
  • truncating a diff no longer crashes it. leftover-pair index math in `render_diff` walked past the line-number table whenever a cap cut a `-`/`+` run. Latent at the old 40-line cap, close to universal at 5.
  • deleted sessions stopped leaking sidecars. deleting a session also swept its `.stats.json`, and `delete_all_sessions` collects sidecars orphaned by a crash between unlinks.
  • listing sessions parses far less. `list_sessions` parsed metadata for every session before applying `limit`. It now pre-ranks by transcript and sidecar mtime and parses a bounded head, which matters because a sidecar note bumps `updated_at` without touching the transcript.
  • session readers tolerate damage. readers raised `AttributeError` on valid-JSON-non-object rows, let `UnicodeDecodeError` escape because it is not an `OSError`, and discarded every event over one torn line.
  • a checkpoint no longer counts twice. one saved checkpoint was counted from both its `context_checkpoint` row and its `checkpoint` event. Deduplicated by id.
  • the footer stopped freezing. a turn ending within 125 ms of its last paint could leave the footer on the final `working` line until you typed. `clear_running()` forces the repaint now.
  • context usage can no longer read negative. `context_pct` divided by a negative context window and rendered `ctx -800%`.
  • the release script no longer aborts on Windows. `scripts/bump_release.sh` passed an MSYS path to native Windows Python while splicing `CHANGELOG.md`, which killed the release mid-run.

Changed

  • test suite 119 to 141 collected. still inside the 150 CI budget. New coverage for scrollback density, tool-output retrieval, session hygiene, analytics hygiene and the footer throttle.
  • one duplicated helper. `_trajectory_path` was byte-for-byte identical in two modules and now exists once.

Read the full changelog