All notable changes to this project are documented here.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
--name-maxoption for the repository name and--model-maxfor the model name. Both acceptoff; anything unparseable falls back to the default, and values below 3 are raised to 3.--name-maxtakes one budget per path depth, the last entry covering everything deeper. The new default12,8,6gives a plain repository name twelve characters, a two-level path eight per level, and six from three levels on. A single fixed number keeps every part short but lets the whole field grow with each level; shrinking the budget as the path deepens holds it to roughly one width and spends the freed room on the common case, which is a single name.scripts/tests/test-options.sh, driving the real script with real stdin — the failure worth catching is not a wrong rule but an option that never reaches it.- Invariant tests across every budget from 3 to 14: no path level exceeds its budget, and a larger budget never yields a shorter result.
- The repository name gets 12 characters by default instead of 4, so most names now arrive intact. The model name stays at 3.
- An acronym directly in front of a word swallowed that word's first letter:
XMLParserwas split intoXMLP+arserand rendered asXMLParswhereXML+Parserwas meant. The last capital of a run now goes back to the word it starts. Acronyms at the end of a name are unaffected.
Version 1 was written when Claude Code did not yet pass usage limits to a statusline, so it fetched them from Anthropic's OAuth API and cached the answer. Claude Code passes them now. Everything the statusline shows comes from its stdin, and the whole network layer is gone.
--context-maxoption deciding what a full context bar means. Accepts500000,500kor1M; defaults to500k. The warning thresholds derive from the same number, so bar and color always agree.- Model and reasoning effort, shortened to three characters plus the level:
✱ Ops (xhi). - Current repository name, shortened to four characters per path level:
#TePo. Git submodules with a generic name are prefixed with their parent, soUmbrella/Servershows asUmbr/Srvr. - Token-based warning levels for the context, applied alongside the percentage. The higher of the two levels wins, which is what makes a 1M window warn before it is nine-tenths full.
- Tests for the name shortening, extracted from the shipped script so they cannot drift.
- The context bar is now five segments that can each be a third filled, giving eleven states in 50k steps at the default. Filling rounds down, so the empty state actually occurs and a full bar means exactly the configured limit.
- Both usage windows share a filling circle (
○ ◔ ◑ ◕ ●) and always show their reset time, which is what tells the five-hour window apart from the weekly one. - Everything that is not a warning is drawn in a single dim gray. Previously the line used three brightness levels plus a purple accent, so it was loud even when nothing was happening.
- Percentages round up rather than to nearest, matching
/usage. A usage gauge must not under-report. - Above 70% the absolute value decides the color even when the pace looks sustainable — 94% used with 94% of the window gone is still one turn from the wall.
- The Anthropic OAuth API call, the keychain credential lookup and the five-minute cache file. This also removes a three-second HTTP request on every redraw and a silent fallback to stale cached numbers that were indistinguishable from fresh ones.
- The
5h: ? (setup: claude auth)hint, which can no longer occur.
- Claude Code 2.1 or newer. Older versions do not pass
rate_limits, and the two usage circles will be omitted. curlis no longer needed.
- Usage cache is invalidated when the active Claude account changes, so the statusline no longer shows the previous account's numbers for up to five minutes after a switch.
- README wording and installation hints.
- Initial release: context window bar, 5-hour and 7-day usage from the Anthropic OAuth API, rate-aware coloring.