- git/speed/rate return an empty string when they have no real data
- render() skips empty parts along with their separators, so an absent segment leaves no dangling `|`
- avoids the startup row of placeholders (`| - | ↑ — ↓ — t/s | -`), collapsing the line to only the segments that actually have data
- git: fetch branch and changed files in one `git status --porcelain --branch` (3 subprocesses -> 2)
- transcript: read only the last 1 MB from the file tail instead of parsing the whole jsonl
- color: add a shared palette and route heat() and every widget through it
- widgets: drop the preview bridge functions; preview now calls the component fns directly
- add unit tests for the pure helpers (parse_branch, interval merge, heat, percentages, formatting)
- install: only convert backslashes to slashes on Windows (backslash is a valid char in Unix paths)
- config dir resolution already falls back from USERPROFILE to HOME, covering both platforms
- README: cross-platform build/install instructions, recommend the install command
- locate Claude config via CLAUDE_CONFIG_DIR or ~/.claude
- scope arg: user (default), project, or local
- preserve existing settings and key order; back up to .bak
- set statusLine command to the quoted current executable path (handles spaces)
- parse status JSON from stdin and render a single status line
- widgets: model+thinking, context %, directory, git, token speed, rate limits
- coloring: green-to-red gradient plus fixed per-widget colors
- `test` subcommand previews all widgets with synthetic data
- braille-blank placeholder on the second line