Skip to content
Changelog
Edit
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 git process -- the branch name is read straight out of the repository's HEAD file -- 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 git while 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 profile now 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 --help now 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 -X target 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, --quiet and --verbose are 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: --live BoolFlag 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_limits instead 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_TOKEN env var when .credentials.json is 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.

More tools from this site

  • claudestream Drive Claude Code from Python: run it as a subprocess and read its output as typed events, with async and sync sessions, sandbox policies, and tools you define in Python
  • claudewheel A TUI Claude Code Launcher that lets you have more than one profile, manage sessions lifecycle, pick the exact CC version, model to use (even older unlisted ones), pick which GitHub account to use, etc.
  • dirstat Fast, single-binary directory statistics CLI: every file under a tree grouped by format, with counts, sizes, and lines of code, as a colored terminal table or as JSON
  • fastware A batteries-included ASGI framework: msgspec JSON, a managed Granian server, dependency injection, SSE, WebSockets, auth, and a test client
  • go-toml-edit Zero-dep TOML editing library for Go with comment preservation
  • orxtra
  • pgdesign
  • predraw Declarative rendering pipeline: describe a scene in JSON and get SVG, PNG and WebP out, with light and dark style tokens, reusable components and text converted to path outlines
  • reposummary Turn a git repository's history into a Markdown journal: pick a time window or revision range and get a readable digest of what changed, optionally narrated by an LLM
  • rlsbl Release orchestration and project scaffolding CLI that bumps versions, validates a structured JSONL changelog, tags only the commit CI verified, and publishes to npm, PyPI, Go and more
  • safegit git wrapper CLI that gives each commit its own temporary index and retries ref updates on conflict, so concurrent agents share one repository
  • saferm Command-line replacement for rm that archives every deletion with a mandatory reason and the context it ran in, so deleted files can be listed, inspected and restored
  • selfdoc Static Site Generator that builds a project's documentation site directly from its source code, so the docs can never drift from the code they describe, with SEO/AEO, first-class blog, search, and cross-project linking built in
  • strictcli
  • stricttest An always-on test-isolation floor: a pytest plugin and a Go env-hygiene module that make a test suite structurally unable to reach real credentials, the real HOME, the network, or the development repository.
  • wesktop A Python framework that turns an ASGI web app into a desktop application, serving it from a local Granian server and displaying it in a native OS window via pywebview
Search