Repository navigation
Tags
Tags
feat(plan): let Google accounts pick Plus or Pro when no plan is repo… …rted (#70) * feat(plan): let Google accounts pick Plus or Pro when no plan is reported Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore(release): prepare 0.16.2 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
feat(collector): read omp sessions and refresh Antigravity quota on d… …emand (#67) * feat(collector): read omp sessions and refresh Antigravity quota on demand Read omp (oh-my-pi) session files incrementally. Completed assistant messages become requests: opencode-go goes to the OpenCode Go account and google-antigravity joins the active Antigravity account. Requests are deduplicated by message id, time, channel, model and token counts, so moved files and branched sessions do not bill twice. When sync finds new Antigravity usage from agy or omp, run `agy -p /usage` at most once every 5 minutes, merge the four quota windows into quota-<label>.tsv (keeping the plan row) and upload them in the same round. scan never triggers the refresh. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> * chore(release): prepare 0.16.0 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 5.5 <noreply@anthropic.com>
feat(agy): show both Antigravity quota pools on one account (#65) * docs(design): record visual tokens and conventions in DESIGN.md Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(agy): show both Antigravity quota pools on one account The collector now reports one account per Google login, with the Claude/GPT pool on five-hour-3p and seven-day-3p windows. The legacy per-pool accounts are sent with parentExternalId so their history resolves to the merged account. The server must deploy before the collector because the ingest schema is strict. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore(release): prepare 0.15.0 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
feat(collector): read Codex and OpenCode usage in the single collector ( #59) * feat(collector): read Codex and OpenCode usage in the single collector - Codex sessions (including compressed .jsonl.zst) and OpenCode messages are read by the main collector into one state store and one upload path. - Accounts are routed by source and channel through channelAccounts; built-in defaults send Codex/openai to Codex and Go channels to OpenCode Go, and skip everything else. - OpenCode Go quotas no longer use fixed per-model monthly limits; seven-day and monthly windows extrapolate from upstream percentages. - Price book 2026-10-30.1 adds GLM-5.3 Flash, GPT-6.1 Sol/Terra and prices codex-auto-review as gpt-6-luna. - The standalone Codex collector is removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(collector): commit Codex quota and plan with each file and defer oversized archives - Quota samples and plan observations are committed in the same transaction as the file progress, so an interrupted round no longer loses them. - The newest sample wins by sample time across files, independent of file modification order; the latest plan persists across rounds. - A session that only carries quota still creates its account. - A compressed file that does not fit the remaining budget waits for the next round unless it is the first file of the round. - Clarify that OpenCode message content is parsed in memory but never stored or uploaded. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(pricing): price cache writes without a TTL split at the 1-hour rate Claude Code writes 1-hour cache by default and the 1-hour rate is the higher one, so an unsplit record is valued instead of left unpriced. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(collector): resume deferred Codex archives first and keep legacy plans - A file deferred for budget is read first in the next round, so a newer file that never finishes cannot starve it. - A plan stored as a bare name stays until a newer observation replaces it. - An unsplit cache write keeps the known 5-minute part at its own rate and prices only the remainder at the 1-hour rate. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore(release): prepare 0.13.0 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
fix(web): keep detail labels horizontal and show sub-cent costs for 0… ….12.8 (#57) The request detail sheet used a fixed two-column grid, so a long source record ID widened the value column until the Chinese labels wrapped one character per line. Labels now take their content width and never wrap, long values wrap inside the value column, and the duplicate mobile column override is gone. The account filter now lists only active accounts. A selected archived account stays as one extra option labelled 已归档, so opening its requests from the archived list still names the account instead of showing a bare ID. USD amounts derive their fractional digits from magnitude and drop the zeros beyond the two-decimal floor, so cheap model requests show $0.0014 instead of $0.00. The insights per-request and account trend formatters share the same helper. Co-authored-by: Claude Code <noreply@anthropic.com>