Skip to content

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 17 Apr 23:47
· 227 commits to main since this release

Added

  • ai cc-usage push [-d/--dry-run]: scan ~/.claude/projects/ JSONL files and push per-call token usage events (input, cache-creation, cache-read, output tokens) to a configured REST API backend. Cursor-tracked — only events since the last successful push are sent, in batches of 500. Config: [humanware] api_url and api_key in config.toml. (AI-CLI-23)
  • ai cc-usage status: print the number of CC sessions tracked by the push cursor and the timestamp of the last successful push.

Fixed

  • ai --version / ai -V: no longer raises PackageNotFoundError when run in an environment where the package is not installed (e.g. editable dev installs). Falls back to printing unknown.
  • Session resume (bash template): bare except: pass in the Python one-liner that finds the most recent CC session file was catching SystemExit, causing sys.exit(0) to be swallowed after the first match. All subsequent files sharing the same customTitle (e.g. sync-generated conflict-*.jsonl copies) also had their paths written to stdout, producing a concatenated multi-path blob in $matched_file. touch then failed with "File name too long" before CC could launch. Fixed by using except Exception: pass so SystemExit propagates correctly.
  • Session resume (bash template): ls "$cc_project_dir"/*.jsonl &>/dev/null used a shell glob that zsh NOMATCH fires on before the command runs, bypassing &>/dev/null and printing an error to the terminal. Replaced with a find-based check that avoids shell glob expansion entirely.
  • ai statusline quota indicator — disappeared on remote sessions when the weekly quota reset occurred and the anchor file was not yet refreshed by a scrape. The inline week-start computation now advances forward from a stale anchor (matching quota_db._get_current_week_start()) instead of always subtracting one week, which queried the wrong week and returned no rows. (bug)