Skip to content

v0.6.4

Choose a tag to compare

@github-actions github-actions released this 30 Oct 14:19
· 118 commits to main since this release
1ce2d4c

context-guru v0.6.4

Keep-alive no longer pays to write the whole conversation again after a sweep question. On one laptop, those re-writes cost $97.97 in 3.9 days, more than half of what Context Guru saved there. The summary checkpoint now survives a proxy restart and a long pause. The Ping button shows only when a press can help.

Items marked [Notice] change something you will see, or need an action from you.

New and changed

  • [Notice] Keep-alive never shortens the cache strategy (#776, #777, #779).
    • The problem: the sweep question, and the summarizer's keep-alive call, could take a planned ping. They read the cache, but did not keep the turn's own cache entry alive. So the next ping wrote the whole conversation again.
    • On one laptop, ping 2 re-wrote the conversation in 26% of cases: $97.97 in 3.9 days. On Sonnet 5.5 it was 54% of ping 2s.
    • After a turn that ends at a tool result (#777): the question now keeps the turn's cache breakpoint. In a live check, ping 2 then read 31,542 tokens and wrote 0, where main wrote 18,053.
    • After a turn that ends at text (#779): every planned ping stays a plain ping, as the strategy plans. The sweep question or the summary goes out once after the last planned ping, 210 s later on the 5-minute defaults. Nothing is sent after it.
    • When a summary and the sweep question are both due in one idle period, only the summary goes.
    • The cost: one extra small request for each idle period after a text turn, about $0.01 to $0.02.
    • The cover: a user who comes back inside the strategy's warm period is covered exactly as without the sweep.
    • The rule is now written in docs/design.md ("Keep-alive: the cache strategy comes first"), and a guard test checks it for every keep-alive request.
  • [Notice] The summary checkpoint survives a restart and a long pause (#769, #770, #775).
    • Before, a proxy restart, or 2.8 hours with no request, deleted the summary checkpoint. The next turn sent the full transcript. On a large session that could be over the window, so the provider refused it and Claude Code compacted the conversation itself.
    • Now the proxy also keeps this state in the dashboard database, in its own session_state table, and keeps it 24 hours in memory. A session that comes back gets its state from the table.
    • It is on whenever the dashboard is on, which is every plugin install. --session-state=false turns it off.
    • What is stored: at the "everything" level, the summary text and the other content the proxy keeps between turns. At "metadata only" (--session-state-metadata-only), only counts and hashes. The copies for expand are never written to disk.
    • State rows expire after 30 days, or when the dashboard deletes or archives their session.
  • [Notice] After a proxy restart, a thread is protected by its own last request (#766, #767). In v0.6.3, a thread's first request after a restart was kept unchanged if it came within one cache lifetime of the restart. Now it is kept unchanged only if the thread's own last request, or a ping that refreshed its cache, was within one cache lifetime. A new thread is not protected. Observe-mode tenants, and a proxy with no dashboard, keep the v0.6.3 rule. The dashboard database gets a new column, session_alias.
  • [Notice] The Ping button shows only when a press can help (#771, #773). Claude Code plugin 0.6.4.
    • The button hides while an automatic ping is due before the cache expires. The band shows ↻ next ping m:ss instead, or ↻ pinging… at the planned moment.
    • After a cache miss, a refused ping or a route failure, the button shows again while the cache is warm and the proxy still holds the request.
    • While the route or the key is marked as failing, the button stays hidden, and the band says ping off: upstream failing.
    • The /ping command is removed. The Ping button does the same.
    • The pane follows the same rule as the band.
  • [Notice] The Overview shows one total and one card per saving (#774). The total is the money Context Guru saved, out of what the same traffic would cost without it. Below it, one card for each part: Cache, Preset, and the tools and skills filter. Percents are now of spend plus savings, so the cards add up to the total. The savings themselves are counted as before.

Fixed

  • The insights commands crashed on a new install (#781, #782). insights, insights details, insights cache details, insights tools and insights tools details exited with an error on a dashboard with no cache expiry yet, or no tool data. The API now sends an empty list as [], and the plugin reads an empty answer from an older proxy as empty too. insights cache details also crashed on any dashboard with a real cache re-write; that is fixed as well.
  • The restart grace missed some conversations (#767). A conversation that sends a session header on some turns and none on others was not always found after a restart. Both ids are now checked, with one rule on both sides.
  • The dashboard could delete state a live session still used (#775). A session that is deleted keeps its state rows while another session still uses the same id. The per-tenant row limit now also cleans up state rows, and the in-use check uses a new index.

How to upgrade

  1. Update the proxy: /context-guru:update.
  2. Update the plugins from the marketplace: Claude Code plugin 0.6.4, Codex plugin 0.2.8.
  3. If you used /ping, press the Ping button instead.
  4. If you do not want the summary text in the dashboard database, start the proxy with --session-state=false or --session-state-metadata-only.
  5. For code that imports the library: modes.Tracker.TurnFrom takes 2 more arguments, and Tracker.SetLastSeen is new (#767).

Known limits

  • Ping 2 is not measured yet after #777 and #779. #778 measures it on real traffic before the next release, and then the ping limit is decided.
  • The 22 laptop misses after a text turn did not show in short live sessions on main. #779 follows the cache strategy in every case, and #778 checks the result on large conversations.
  • On Opus 5.5 with claude -p --resume, a real turn can miss the cache 3 s after the turn before it, with no ping between. The pings are not the cause.
  • The dashboard's savings after a restart can read too high (#766 part 2). It waits for the counterfactual library (#592).
  • --dashboard-content-cap cannot raise the 4,000-byte limit on stored change text (#765).
  • Small clean-ups after the history import removal are open (#762).
  • After the sweep removes outputs on a cold request, the next turns can re-write the conversation to the cache (#729). It showed once, in the v0.6.0 check.
  • Two threads with identical requests can still send identical pings (#718).
  • On a shared proxy with many users, 320 MB may not hold every large thread (#704).

Changelog

Install

No Go toolchain and no C compiler are needed — the binary is statically linked.

Download the tarball for your platform, untar it, and put context-guru-proxy on your
PATH. The archive unpacks into its own directory, so this is safe to run anywhere:

tar xzf context-guru_*_darwin_arm64.tar.gz
install -m 755 context-guru_*/context-guru-proxy ~/.local/bin/

Then see docs/get-started/quickstart-proxy.md.