Skip to content

Release 0.69.0

Choose a tag to compare

@gfargo gfargo released this 10 Jun 13:26
· 622 commits to main since this release

What's Changed

0.69.0 turns the local usage ledger introduced in 0.68 into a default-on, opt-out feature and adds a per-repo view to the cost report. Recording stays entirely local: the ledger is a plain JSONL file under the cache directory that holds metadata only (task, model, prompt-token estimate, latency, and a repo identifier) and never leaves the machine. It records no prompt, diff, or code content.

Highlights

Opt-out local usage stats

  • Added a telemetry.usage config key that turns the cross-run usage ledger on or off. Recording resolves in this order: the COCO_USAGE_LOG environment variable wins either way (a path, 1, or true forces it on; 0 or false forces it off), then telemetry.usage, then off.
  • Added a first-run consent step to every command. The first time a command runs on an interactive terminal with no preference set anywhere, coco defaults recording on, saves the choice to the global config, and prints a one-time notice. Non-interactive and CI runs stay off, so piped and automated commands are never opted in.
  • Added an opt-out prompt to coco init (defaults to on). The choice is stored per machine in the global config, not in the shared project config, so a cloned repo cannot flip a collaborator's recording on.

Per-repo cost breakdown

  • Tagged each usage record with a readable owner/repo identifier, resolved from the git remote with the working directory name as a fallback. The identifier works for any forge (GitHub, GitLab, Bitbucket, self-hosted).
  • Added a By repo section to coco doctor --cost and a byRepo array to its --json output, so usage can be attributed per project.

Manage the ledger

  • Added coco doctor --clear to delete the local usage ledger.
  • Capped and rotated the ledger automatically. Once the file passes 5 MB it is rewritten with only its most recent records, so a long-lived install stays bounded.

Notable

  • The recording posture changed from opt-in to opt-out. In 0.68 nothing was written unless COCO_USAGE_LOG was set. In 0.69 an interactive first run defaults recording on after a one-time notice, and coco init asks. Recording is still local-only and reversible: opt out with coco init, set telemetry.usage to false, or set COCO_USAGE_LOG=0. The COCO_USAGE_LOG environment variable remains authoritative and overrides the config either way.
  • The preference is per machine. It lives in the global XDG config ($XDG_CONFIG_HOME/coco/config.json), so it follows the user across repos rather than being committed to any one project.

Breaking Changes

None. Existing installs that never set telemetry.usage and never run an interactive command keep recording off, and COCO_USAGE_LOG keeps its 0.68 meaning. The only behavior change is the first-run default for interactive sessions, which prints a notice and is reversible.

Full Changelog: 0.68.0...0.69.0