On this page
#Changelog
#0.16.0
The fastest Claude Code statusline, measured against the others by a reproducible harness: git ahead/behind and changed-file counts return through a detached two-second cache, the theme cache is two seconds, and the documentation moved onto selfdoc's .stricttools/ layout.
#Features
- A reproducible comparison with other statuslines. A new harness installs pinned builds of the other Claude Code statuslines into a scratch directory, feeds every one of them the same status object, and records each one's median render time and peak memory. The measured table, the caveats behind it and the steps to rerun it are on the new comparison page, and the README's performance section now carries those medians instead of a comparison against the old Node.js implementation.
- A faster render. Finding the git branch no longer starts a
gitprocess -- the branch name is read straight out of the repository'sHEADfile -- and the desktop light/dark preference behind the gradient is detected once and reused instead of being asked for on every render. On the machine the comparison page is measured on, the median render dropped from 11.2 ms to 5.9 ms, ahead of every other statusline the harness measures. - The branch counts are back, without the git process. The statusline shows the branch's ahead and behind counts against its upstream again, and the number of changed paths in the working tree, without starting
gitwhile it renders: a detached refresh writes them to a cache file the render reads, so the counts trail the working tree by up to two seconds and the render still costs no fork.
#Fixes
- The description says what it now is. The project's one-line description, which the README, the docs site, the CLI help and the package metadata all repeat, now reads "The fastest Claude Code statusline: context window, 5-hour, and weekly limit usage as three customizable gradient bars, rendering in about 6 ms".
- A theme switch shows up right away. Switching the desktop between light and dark now reaches the statusline within a couple of renders instead of up to ten seconds later.
#0.15.1
Documentation frontmatter converted to TOML for the current selfdoc; no user-facing change.
#Infrastructure
- Documentation frontmatter converted to TOML for the current selfdoc; no user-facing change.
#0.15.0
Current strictcli, go-toml-edit and stricttest dependencies with a fuller top-level help line, in-repo config default seeding, version injection fixed, and the project describes itself consistently with its docs at the unified site.
#Features
- **
howmuchleft profilenow explains itself in--help.** The group and its install, list and uninstall commands carry full descriptions -- including that install refuses to overwrite another tool's statusLine and that the profile directory defaults to$CLAUDE_CONFIG_DIR, then~/.claude. - **
howmuchleft --helpnow says what the tool actually does.** The top-level help line was the bare phrase "Claude Code statusline tool"; it now describes the three progress bars for context window, 5-hour and weekly usage and their green-to-red shading.
#Fixes
- Config migration no longer depends on a retired third-party library. The config file is created and kept complete by an in-repo mechanism; existing values, comments and custom keys are preserved as before.
- Correct version reporting. Released binaries reported a fallback version instead of the released one, because the linker's
-Xtarget named a symbol that did not exist. - The project describes itself consistently in its README and package documentation. The README opened with a tagline instead of a definition, the Go packages carried no doc comments, and the site metadata had no description at all.
- Documentation links point at the unified site, and the docs build works again with current strictcli. Project documentation moved from its own host to the main site's /howmuchleft path, and the CLI framework bump restores schema generation so the published reference matches the shipped commands again.
#0.14.1
Repair the publish pipeline: allowlist the public OAuth client ID so the release secret scan stops blocking binary builds.
Context
The 0.14.0 scaffold update added a gitleaks dir . source scan to the publish workflow. It flagged internal/oauth/oauth.go's OAuthClientID -- Claude Code's public OAuth client identifier, which is not a credential -- as a generic-api-key, so goreleaser never ran and the v0.14.0 GitHub Release shipped without its binary archives.
This release adds a .gitleaks.toml allowlist for that one public identifier and re-runs the publish pipeline, restoring the pre-built binaries. It carries no user-facing code changes, hence bump = "infra".
#Infrastructure
- Repair the publish pipeline: allowlist the public OAuth client ID so the release secret scan stops blocking binary builds.
#0.14.0
Migrate to the go-strictcli effect model: every command declares its effect, and --dry-run, --quiet and --verbose are now framework-provided on every invocation.
Context
go-strictcli 0.29.0 made effect classification mandatory: each command must declare whether it reads, writes, or performs a consequential action. Adopting it means the framework now supplies the --dry-run/--quiet/--verbose flag quartet uniformly across every command, replacing per-command ad-hoc handling.
Known ceiling in this release: --dry-run does not yet suppress the embedded config migration that runs on startup, so a dry-run invocation can still migrate the config file. This is documented in the effect classification and will be addressed separately.
#Features
- Effect classification and the framework flag quartet. Every command now declares its strictcli effect, and
--dry-run,--quietand--verboseare provided by the framework on every invocation.
#0.13.0
Add Fable model support with separate usage tracking, fix cache bugs, and consolidate duplicated code
#Breaking
- Breaking. Upgrade go-strictcli to v0.17.0:
--liveBoolFlag now has explicit default.
#Features
- New feature. Add Fable model support with separate usage tracking (F5 alias, 4th progress bar, Fable-specific rate limit display).
#Fixes
- Bug fix. Fix WriteUsageFromStdin reading wrong keys from stdin data.
#0.12.2
Fix OAuth detection to use stdin rate_limits
Context
v0.12.1 checked CLAUDE_CODE_OAUTH_TOKEN env var, but Claude Code doesn't pass it to statusline subprocesses. Now uses the presence of rate_limits in stdin instead, which is reliable and requires no external files or env vars.
#Fixes
- Fix. Detect OAuth from stdin
rate_limitsinstead of relying on env var or credentials file, fixing tier display for claudewheel-launched sessions.
#0.12.1
Fix subscription tier detection for claudewheel-launched sessions
Context
When claudewheel launches Claude Code, it sets CLAUDE_CODE_OAUTH_TOKEN instead of writing .credentials.json. howmuchleft now checks this env var as a fallback, showing 'OAuth' instead of incorrectly displaying 'API'.
#Fixes
- Fix. Detect OAuth authentication from
CLAUDE_CODE_OAUTH_TOKENenv var when.credentials.jsonis absent, showing "OAuth" instead of "API" for claudewheel-launched sessions.
#0.12.0
Breaking. CLI migrated from Cobra to go-strictcli. No user-facing command changes, but the underlying framework is now strictcli.
#Breaking
- Breaking. CLI migrated from Cobra to go-strictcli. No user-facing command changes, but the underlying framework is now strictcli.