All notable changes to this project should be documented here.
This project uses version tags such as v0.2.0. Release binaries are published
through GitHub Actions and GoReleaser.
- New
limitping redeemspends a banked Codex rate-limit reset credit (with--dry-runto see which one first). Settingauto_redeem = trueunder[codex]letswatchandcontinuespend one on their own once it is close to lapsing — within 24h with usage worth reclaiming, or in its final hour. Redeeming is irreversible, so it stays off by default; the backend refuses with "nothing to reset" when no window is eligible, so a credit is never burned for nothing. - Reset and expiry times in
status/bg statusnow carry their UTC offset (e.g.resets in 3h14m (Sun 00:10 UTC+8)), so a time read from a log or a screenshot taken in another zone is unambiguous. The offset is used rather than the zone abbreviation because abbreviations collide (CST is both China and US Central). - Claude usage 429s are now disambiguated with Anthropic's free token-counting endpoint: an explicit subscription-auth denial gets an actionable subscription-access error, while real or inconclusive rate limits retain the original 429. Claude pings also no longer report success when the interactive CLI displays the same access-disabled error.
- Reset credits in
status/bg statusnow show the remaining lifetime until each unredeemed credit expires (e.g.expires Jul 27 07:50 (in 11d20h)), so a banked reset about to lapse is visible at a glance. - Localized the text output of
status,bg status, andpingfor Chinese locales (window lines, reset credits, weekday names, error lines), and fixed locale detection to honor POSIX precedence soLC_ALL=en_USoverridesLANG=zh_CN. English output is unchanged. - Adapted Codex to the weekly-only limit regime introduced on 2026-07-12 (the
5h limit is temporarily removed): usage windows are now classified by their
length instead of their position in the response, a missing window renders as
"not currently enforced" (its key is omitted from
status --json), andwatchpings at the weekly reset instead of every 5h while no 5h window is enforced. The reset-credit count embedded in the usage response is used as a fallback when the detail endpoint is unavailable.
- Added
limitping schedule [provider], a foreground scheduler that runs pings on fixed intervals (--every 5h) or at one or more daily local times (--at 05:00 --at 13:00, or comma-separated values). It reuses the existing ping path and supports--dry-run. - Added best-effort Codex reset credit reads from the Codex backend reset-credit
endpoint. When available,
statusandstatus --jsonnow report available reset credits without failing the usage read if that private endpoint is unavailable. - Added
usage_display = "used" | "remaining"for textstatus/bg status, and addedremaining_percentto JSON window output so scripts can consume both views.
- Added
limitping continue <provider>, an interactive proxy that launches the provider's real CLI through a PTY (your terminal passes straight through) and auto-injects a continue message the moment the 5h limit recovers, so a parked long task resumes itself instead of waiting for you. Flags after the provider pass through verbatim (e.g.continue codex --yolo). It only fires on a genuine recovery edge and respects the weekly limit (weekly_threshold, credits included), writing a diagnostic timeline tocontinue.log. The resume message is the new per-providercontinue_promptconfig key (default"continue"). Unix only for now (needs a PTY). - Shared the "weekly window exhausted" rule between the scheduler and the
continue proxy via
usage.Usage.WeeklyExhausted, so both honorweekly_thresholdand usable credits identically.
- Added
status --json, which emits each provider's 5h/weekly usage, plan, credits, and reset timing as a JSON array for scripts and dashboards. Progress output is suppressed so stdout stays a single valid document, a provider that fails to read becomes{"provider": ..., "error": ...}, and-vembeds the raw response underraw.
- Fixed Codex pings to use the interactive, TTY-backed Codex CLI instead of
headless
codex exec, so the ping anchors the subscription-backed 5h window. - Updated Codex trigger docs and examples to match the interactive command path and clarify that per-ping token/cost output is not available in this mode.
- Fixed Claude/Codex usage reads to match the official client request shape
more closely, including provider-specific headers and Codex
chatgpt_base_urlhandling. - Added status-aware handling for usage endpoint 429s so
watchpauses reads instead of repeatedly retrying a rate-limited endpoint. - Fixed usage reads on networks where Go's HTTP/2 client path returns EOF or malformed responses by using a dedicated HTTP/1.1 usage client.
watchnow draws a live status line on an interactive terminal: a spinner plus each provider's current state and a live countdown to its next ping, redrawn beneath the scrolling log. It auto-disables when output isn't a TTY (e.g.bg's log file or a pipe), so logs stay free of control sequences.- Added
limitping background(aliasbg) to runwatchas a detached background process, freeing the terminal:bg start [provider] [--dry-run]launches it,bg status(or barebg) reports pid/uptime/log path plus the resolved list of watched providers and each one's current 5h/weekly usage,bg stopends it, andbg logs [-f] [-n N]shows its output. Only one background watcher runs at a time; state and logs live under the config dir (bg.json/bg.log). - Fixed the Claude trigger: the interactive session now actually submits the prompt (and waits for the turn to run) instead of exiting before any message was sent, so the 5h window reliably starts.
- Added hook-based active-session detection:
limitping hooks install/uninstallregisters limitping's hooks in~/.claude/settings.jsonand~/.codex/hooks.jsonsowatchcan tell when a session is genuinely mid-turn (between a prompt and itsStop) rather than just having a live process. The install script sets the hooks up automatically. Without hooks,limitpingskips the active-session check and pings as soon as the window resets — there is no process-list fallback (it produced false positives from unrelated Claude/Codex agent processes). - Removed the experimental GLM (Zhipu / Z.ai) provider.
limitpingnow targets Claude Code and Codex only; the[glm]config block andglmprovider argument are gone.
- Added short command aliases such as
ping/p,status/s,watch/w,version/v,upgrade/up, anduninstall/rm. - Updated help output to show command aliases inline and clarify accepted
ping/watchprovider arguments. - Added Chinese CLI help text when the system locale is Chinese.
- Documented upgrade, uninstall, and command aliases in the English and Chinese READMEs.
watchnow defers automatic pings while a Claude/Codex CLI task is already running, letting that task naturally start the next 5h window.
- Switched Claude triggering to the interactive Claude Code CLI so subscription window pings keep working after headless print mode moves to Agent SDK/API billing.
- Added retry handling for transient usage endpoint failures and removed
duplicate
statuserror output. - Added
limitping upgrade/limitping updateto update the installed binary from the latest GitHub release. - Added
limitping uninstall, which removes the binary and config/cache by default, with--keep-configto preserve config/cache. - Added open-source governance, security, privacy, and contribution guidance.
- Initial public release target.