---
title: "coding.sh v0.1.6 (page 4) · Changelog"
description: "What changed in coding.sh v0.1.6, page 4 of 4: every change to Store, Improve, Search, CLI, Query, Harness, Doctor and Gateways, one line each."
canonical: https://coding.sh/changelog/v0-1-6/4
human_url: https://coding.sh/changelog/v0-1-6/4
markdown_url: https://coding.sh/changelog/v0-1-6/4.md
agents_url: https://coding.sh/agents.md
llms_url: https://coding.sh/llms.txt
updated: 2026-11-11
---

[Changelog](https://coding.sh/changelog)

Unreleased · 149 changes · page 4 of 4

# coding.sh v0.1.6

## Store

- Added Every one-way index migration first keeps a copy of the index next to it (`index.db.v<N>.bak`, a copy-on-write clone where the filesystem has one; a full copy is refused with the space it needs when it would not fit), and `coding.sh upgrade-store --restore` puts it back. The index it replaces is kept as `index.db.v<N>.undone`. [Troubleshooting](https://github.com/jackulau/coding.sh/blob/main/docs/troubleshooting.md#a-store-another-codingsh-cant-open)
- Changed The index is about a quarter smaller. The search index no longer keeps its own copy of tool text, each working directory is stored once, and an unused index is gone. On a 756k-event store, after `gc --compact`, it takes 1.38 MB per 1,000 events instead of 1.89. The upgrade builds the new search index and leaves old rows as they are; `gc --compact` empties their old copies and gives the space back. A coding.sh older than 0.1.5 refuses the upgraded index and says to upgrade. [Storage](https://github.com/jackulau/coding.sh/blob/main/docs/design/architecture.md#efficiency).
- Fixed An index upgrade on a store of 100,000 events or more no longer runs silently. It says so on stderr within a second, prints its progress at most once a second, and ends with how long it took and, when old data is left, `gc --compact`. A command that opens the index while another process upgrades it waits and prints that process's progress. Upgrading a 740k-event store from schema v2 took 20 s instead of 119 s. [Troubleshooting](https://github.com/jackulau/coding.sh/blob/main/docs/troubleshooting.md#the-first-command-after-an-upgrade-is-slow).
- Fixed The store records the coding.sh version that last wrote it. A build that is not a newer release than that one (a source checkout, a stale dist) no longer migrates the index by itself, with or without a `bin/`: it stops with `store_version`, and `coding.sh upgrade-store` migrates on request. [Troubleshooting](https://github.com/jackulau/coding.sh/blob/main/docs/troubleshooting.md#a-store-another-codingsh-cant-open)
- Fixed The error for a store a newer coding.sh already migrated says captures are safe in the spool, how many files wait there, which version wrote the store, and to run `coding.sh update`; it offers `upgrade-store --restore` when a copy from before the migration is kept. [Troubleshooting](https://github.com/jackulau/coding.sh/blob/main/docs/troubleshooting.md#a-store-another-codingsh-cant-open)
- Fixed `coding.sh upgrade-store` always leaves `bin/cli-path` naming the running coding.sh (also when there is no `bin/`, or it names a CLI that is gone), and upgrade progress counts events instead of the highest rowid. [Troubleshooting](https://github.com/jackulau/coding.sh/blob/main/docs/troubleshooting.md#the-first-command-after-an-upgrade-is-slow)

## Improve

- Changed `improve check` says Helped only when failures fall: the flagged share, or one flag (Holm-adjusted) with no other rising significantly in its place. A new line the agent follows while flagged sessions stay put is now "Followed, no effect yet", and a change after which sessions make 1.25x the tool calls or take 1.25x as long, with no fall, is "Costlier"; both suggest `refine test git:<previous>` to test the harness without it. `--json` adds `work` and `next`. Regressed and its exit 1 are unchanged. [Improve](https://github.com/jackulau/coding.sh/blob/main/docs/guides/improve.md#5-did-it-help).
- Fixed A `Helped` line from `improve check` now names every flag whose share rose after the change, significant or not, as in `repeated-tool-failure rose 4 to 8 of 12, not significant`. The verdict is unchanged: one flag falling is Helped unless another flag rose significantly. [Improve guide](https://github.com/jackulau/coding.sh/blob/main/docs/guides/improve.md#5-did-it-help)

## Search

- Changed Every search word must match a whole word, and only the last may start a longer one, so `the fix` no longer matches every word that begins with "the". Matches come best first, and a search with more than 20,000 matches lists them newest first instead of ranking them all. On a 756k-event store, `search` for "the", "voxel" and "error" answers in 34, 12 and 38 ms at p95 instead of 719, 171 and 81 ms. The Postgres and ClickHouse plugins and `--where` bare words match the same way. [CLI reference](https://github.com/jackulau/coding.sh/blob/main/docs/reference/cli.md#codingsh-search), [Storage](https://github.com/jackulau/coding.sh/blob/main/docs/design/architecture.md#efficiency).

## CLI

- Changed `--agent`, `--tag`, `--session` and the other repeatable id flags take a comma list: `--agent claude-code,codex` is the same as `--agent claude-code --agent codex`, on `sessions`, `usage`, `search`, `export` and the rest. [CLI reference](https://github.com/jackulau/coding.sh/blob/main/docs/reference/cli.md).
- Changed Default `--json` reads are digests an agent can afford. `sessions --json` rows, `tree --json` nodes and `status --json` `latest` drop `stats.phases` and each derail's `eventId` and `index`. `show --json` on a session over 200 events prints `events: []` with `eventCount` and the phases unless `--limit N` or `--all` is given, each event drops `sessionId` (and `agent`/`cwd` when equal to the session's), and `subagents` lists the first 50 with `subagentCount` and `subagentsTruncated`. `tree --json` and MCP `session_tree` return 50 nodes a page with `nextCursor` and `truncated` (`--limit`/`--cursor`; MCP `limit` up to 200). New `--fields a,b.c` on `sessions` and `show` picks paths from the full document. [Explore guide](https://github.com/jackulau/coding.sh/blob/main/docs/guides/explore.md#long-sessions)

## Query

- Changed A date without a zone in `--since`, `--until`, `since:` and `until:` is local time: `2026-11-09` is local midnight (it was UTC midnight) and equals `2026-11-09T00:00:00`. `today` and `yesterday` work, and `until` is exclusive. `sessions`, `usage` and `stats` print the resolved window on stderr and carry `window` in `--json`. The MCP tools read times the same way, and `GET /api/metrics` reads a date without a zone as midnight in the request's `tz`, the zone its buckets use, so the first and last day of a range are whole days. [Query reference](https://github.com/jackulau/coding.sh/blob/main/docs/reference/query.md#filter-with---where), [API](https://github.com/jackulau/coding.sh/blob/main/docs/reference/api.md#get-apimetrics)
- Changed `sessions --where` with `event.duration` or `error` alone reads an index instead of every event. On a 1.4M-event store on the test desktop, `--where 'event.duration>60s'` went from 840 ms to under 1 ms and `--where 'error:*timeout*'` from 2.7 s to 3 ms. The first run upgrades the index once (schema v11), with progress on stderr and the old index kept beside it; that store (2.7 GB) took 59 s and grew by 1%. [Query reference](https://github.com/jackulau/coding.sh/blob/main/docs/reference/query.md)

## Harness

- Changed `harness audit` (CLI and MCP) reads session rows instead of every event: ingest keeps the memory and instruction files each session's events name in `stats.memoryUse`. On a store of 3,600 sessions and 1.4M events it takes 0.4 s and 132 MB, where it took 10 to 27 s and up to 969 MB. After an upgrade the audit reads events as before until an ingest has refolded the stored sessions. [Memory and instruction files](https://github.com/jackulau/coding.sh/blob/main/docs/guides/explore.md#memory-and-instruction-files)

## Doctor

- Fixed An agent whose hook is not installed or is blocked is a `!` warning row with every blocker and the file and line to change (Codex: `config.toml:<line>`); recent events alone no longer earn a check mark. The last line is `N agents not capturing` instead of `ok`, and `doctor --json` lists them under `warnings`. `ok` and the exit code still report spool and store health only. [Troubleshooting](https://github.com/jackulau/coding.sh/blob/main/docs/troubleshooting.md#run-doctor)

## Gateways

- Fixed `gateway enrich --gateway cliproxyapi` no longer joins another client's usage record to your call. A record whose session id is not in the store is kept for a later run, a record joins by time and model only when it has no session id, and records that name a session join first, so each call gets its own tokens, cost and account. [LLM gateways](https://github.com/jackulau/coding.sh/blob/main/docs/integrations/ai-gateway.md#cliproxyapi)
- Fixed `gateway enrich --gateway cliproxyapi` no longer joins a failed or retried CLIProxyAPI request to a call that answered, which gave every later call its neighbour's usage record. A failed record joins only a call that failed, a record that answered joins only a call that did not fail, and a call whose token counts equal the record's wins over a nearer one. A failed record with no failed call is kept for a day, then dropped. [LLM gateways](https://github.com/jackulau/coding.sh/blob/main/docs/integrations/ai-gateway.md#cliproxyapi)
- Fixed After `init --proxy` chains through a gateway (CLIProxyAPI, OpenRouter, LiteLLM, …), new sessions keep their `gateway:<name>` tag: the proxy names the gateway on each call it logs, also in capture mode `metadata`. `gateway status` and `doctor` report the route, marked "through the coding.sh proxy". [Capture with the proxy](https://github.com/jackulau/coding.sh/blob/main/docs/how-to/capture-with-proxy.md#already-using-a-gateway-or-cliproxyapi)
- Fixed A background re-parse, refold or end-of-turn snapshot no longer drops the `gateway:<name>` tag and the billed cost that `gateway enrich` stored at the same moment. A session that got events while its row was being built is folded again before the row is written, and `gateway enrich` stores its events and the session rows in one transaction. [LLM gateways](https://github.com/jackulau/coding.sh/blob/main/docs/integrations/ai-gateway.md#cliproxyapi)

[Previous page v0.1.6, page 3](https://coding.sh/changelog/v0-1-6/3) [Older release v0.1.5](https://coding.sh/changelog/v0-1-5)

From [CHANGELOG.md](https://github.com/jackulau/coding.sh/blob/main/CHANGELOG.md) · [RSS](https://coding.sh/changelog.xml) · [All releases](https://coding.sh/changelog)

To set coding.sh up for a user, follow the agent workflow at [/agents.md](https://coding.sh/agents.md).
