Repository navigation
Releases
Releases · nickcox/highwater
Highwater 0.5.1
- Each entry in the session picker shows when its session last changed rather than created, matching the sort order.
Highwater 0.5.0
highwater reporthas four new findings:cacheMiss: calls that read much less from the cache than the call before, outside a compaction, and whether each followed a pause longer than the cache lifetime.repeatedResultInContext: tool results of at least 1,000 tokens that are identical to an earlier result still in context, such as a file read again before it was edited.largeUnlimitedOutput: shell commands such ascat,git diffandrg, and search tools, that returned at least 5,000 tokens without limiting their output, in each session and across sessions.fixedOverhead: for each harness, how large its sessions' prompts are before any work, what the system prompt, tool definitions and the harness's own messages cost as a share of input and of all cost, and their most expensive parts, with how often each defined tool was used.
- The
token-efficiencyskill explains the new findings and what to suggest for each. repeatedCommandfindings count runs whose result is identical to an earlier run's. Before, results from different calls never matched, so the count was always 0.- Codex tool results are marked as failed when Codex's output header says the command exited with a code other than 0, the script failed or the user stopped it. Before, no Codex result was counted as failed.
- Report JSON token subtotals keep unavailable values as
null, include total-only prompt input and give coverage for each field. Average context uses only calls with complete recorded prompt totals, keeps a measured zero and gives its contributing-call count in thecarriedContextfinding. Text reports say when an average leaves out calls.
Highwater 0.4.0
highwater reportsummarises where recent sessions spent tokens, as text or JSON, without starting the viewer: each session's usage and cost, what made up its context, its most expensive tools and shell commands by program, how much of its input went on conversation from several user turns earlier, large tool results that stayed in context for many calls, commands run repeatedly within a session or across sessions, and commands run again after a compaction removed their results. By default it covers the 10 most recent sessions in the current directory's git repository and its worktrees. The JSON format (--json) is new and may still change in 0.4 releases.highwater showprints one item from a session, such as a tool result a report points to.highwater skill printandhighwater skill installprovide thetoken-efficiencyagent skill, which runs the report and suggests ways to spend fewer tokens.skill installwrites it to~/.agents/skillsby default, to~/.claude/skillswith--agent claude-code, or to the current repository's folder with--project.- The viewer is now the
highwater servecommand. It is the default, sohighwateron its own, or with the viewer's options, works as before.highwater --helplists the commands, andhighwater serve --helpthe viewer's options. - A Pi session made with
/forkor/cloneno longer counts its parent's calls, usage and compactions as its own. The history it copied from the parent is the context of its first call.
Highwater 0.3.0
- Reads OpenAI Codex sessions from
$CODEX_HOME(default~/.codex), or the folders given with--codex-home, including archived and zstd-compressed session files, with titles from Codex's session index. Guardian reviews and spawned subagents are listed as child sessions. - Codex calls take their usage from Codex's token counts, with cached input separated. The system prompt and the Codex app's tools are shown as recorded items; encrypted reasoning is sized by its reported tokens and kept across turns for GPT-5.6 and later models. Compactions show what Codex kept and an encrypted summary. Forked and spawned threads start with their parent's history as context, without repeating the parent's calls.
- A Codex response that ran web searches reports the usage of several requests together, so its input is not compared with its context, and the search results it keeps are measured as Unrecorded request context.
- Where a Codex thread was given little of its parent's history, or its context was reset without a compaction record, Highwater infers the boundary from the reported input and says so in the coverage note.
- Codex calls are priced at the API-equivalent rate, as Claude Code's are.
Highwater 0.2.0
- Child sessions (OpenCode child sessions and Claude Code subagents) are linked to their parents. The session picker leaves them out unless Child sessions is ticked, and then lists each one under the session that started it. A session's summary lists its child sessions, a child session links back to the tool call in its parent that started it, and that tool call's result links to the child session.
- In the River's Items view, bands next to each other no longer share a colour while one of the ten colours is free. Items view, Composition and Context lifespans give each item the same colour.
- An item that takes the place of an earlier one keeps that item's colour and place in the River: a new version of a system prompt or tool definition, the Unrecorded request context measured again after a compaction or a change of model, and an attachment Claude Code sends again after a compaction.
- Items removed by a compaction are described as removed at the compaction, and the summary as replacing them, instead of "structurally replaced".
- The startup line gives the number of sessions found for each harness, and how many of them are child sessions.
- The README lists Homebrew as a way to install.
Highwater 0.1.0
The first release.
- Reads Pi JSON Lines sessions, OpenCode SQLite databases, Claude Code CLI transcripts (including subagents) and VS Code Copilot Chat sessions with their trace records.
- Context River: each context item's estimated size at every model call, with compactions, versions of the system prompt and tool definitions, the input each call reported, zoom, pan and keyboard navigation.
- Composition at one call or across the session, as a treemap or a ranked list.
- Context lifespans, searchable and filterable.
- Cache and cost track, with each call's recorded cost, an estimate from bundled models.dev price data, or an API-equivalent cost for calls covered by a subscription.
- Live updates while a session is being written, and shareable view links.
- Local token counting with OpenAI tokenizers, reconstructed Claude tokenizers and a character estimate.
- Prebuilt binaries for macOS, Linux and Windows, and installs with Nix or Cargo.