v0.2.0 — no lockouts, the account is the identity, the ledger reads as days
Why upgrade
If ccpace ever sat on rate limited (429) (retry in 59m) while /usage in Claude Code worked fine, or its 5h-window ledger went blank in a deva container: both are gone.
- A failed fetch is a badge, not a lockout. Last good numbers stay on screen with
(stale 12m · !429); the next poll is the retry. ccpace never writes or gates on statusline'susage.err. - The account is the identity, not the directory. The default
.credentials.jsonfollows the statusline's own rule (STATUSLINE_ACCOUNT›DEVA_AUTH_TAG› root); history is read from every store and partitioned by account uuid — the ledger cannot vanish because of where a sample landed..credentials.work.jsonno longer collides with the default account. - Watch asks only when the answer can have changed: no Claude Code activity since the last fetch and no reset → no request;
roverrides.has_commandno longer crashes the loop on Linux; notifications are fenced. --barkreads the bark CLI's env (BARK_KEY/BARK_SERVER/BARK_GROUP/BARK_ICON).- The ledger reads as days:
▅▁▂ ▃▅ˍ▃▅ ▃▃▁▂▁ … ▆▆ˍ▂▮▯▯— day gaps in history,ˍnegligible,▯ahead; the first window of the week is no longer lost to a jitteredresets_at. Same grammar as claude-code-statusline's new week row. DESIGN.md: the language on one page.
Full rationale in CHANGELOG.md. uvx ccpace (PyPI upload follows).