v0.18.0: freeze-safe cache expiry, 7d hybrid reset, ≡ cache glyph - #3
Merged
Conversation
Prompt-cache expiry warning that survives idle gaps. Claude Code re-renders the statusline only on activity -- nothing can appear during the idle gap where the cache actually dies, and while active the cache is always ~1 TTL from expiry. So auto stays silent while healthy and speaks only on actual rewrites: - ≡!419k on resume after a gap > TTL (idle-expiry break detection) - Bold red past 200k (premium-band miss) - ≡~ while a large prefix rebuilds - --cache always keeps freeze-safe deadline ≡@15:20 Anchor-slide fix: activity timestamp re-stamps only when usage numbers actually change (vim/permission/model renders carry stale usage). Break hold: 60s wall-clock so debounce can't erase the one frame that caught the rewrite. 7d badge goes hybrid: @nd while >= 24h out, wall-clock @04:00 inside the last day. Fixes the third decaying-countdown bug (after 5h in v0.6 and v0.11). Cache glyph: ≡ (U+2261, triple bar / stacked cache layers) -- one terminal column, slim, terminal-safe, semantically clear. docs/devlog/ gitignored -- working notes, not project content. 266 bats tests, shellcheck -S error clean. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
lroolle
force-pushed
the
feat/v0.18.0-cache-expiry-deadline
branch
from
July 17, 2026 10:31
8c6cce2 to
0439bec
Compare
One ~/.claude used to imply one account; deva-style runners bind-mount a different .credentials.json per container over the same shared config home, and the account-scoped caches bled across accounts: B rendered A's 5h/7d bars whenever A fetched last, profile.cache stuck to the first account for 24h. Tokens rotate, so the credentials file cannot identify itself — the runner says who the session is. - STATUSLINE_ACCOUNT (explicit) or DEVA_AUTH_TAG (deva --auth-with) resolve to an account tag; sanitized before touching any path - user segment renders @tag chip; tag beats profile display name (two accounts can carry the same human name) - account state moves to accounts/<tag>/ under the shared statusline dir: same-account sessions share one fetch, different accounts stop clobbering each other; auth-default and explicit CLAUDE_DATA_DIR / CLAUDE_CACHE_DIR overrides change nothing - chip also renders for api-key/custom-endpoint sessions that skip the OAuth quota block — the sessions only a tag can tell apart - legacy-state migration never lands in a tagged account dir - tests: 3 unit + 6 integration; helpers unset host DEVA_AUTH_TAG so suites running inside tagged deva containers stay hermetic Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
An all-dim ≡ badge disappears next to the bright context bar (reported in real use). building: yellow glyph, dim meta; ok under --cache always: white glyph, dim deadline. Pages demo updated to match.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
autostays silent while healthy (the deadline is always ~1 TTL out during active work, pure noise), speaks only on actual rewrites:≡!419kon resume after idle > TTL, bold red past 200k tokens (premium-band miss),≡~while rebuilding.--cache alwaysadds the freeze-safe deadline≡@15:20.@Ndwhile >= 24h out (decays mildly, one day/day), wall-clock@04:00inside the last day. Fixes the third decaying-countdown bug.Test plan
shellcheck -S errorclean≡renders correctly in target terminal fonts (iTerm2, kitty, Alacritty)≡!Nkfires on resume🤖 Generated with Claude Code