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.