Spaces:
Sleeping
Sleeping
Commit History
-
Faster warm paths and honest numbers for Usage and Overview
Three related fixes after the factory rebuild exposed cold-start costs: - Usage cache is now stale-while-revalidate with last-good fallback, and ccusage gets 60s instead of 20s: a cold scan that used to time out surfaced as "0 tok" next to valid quota bars. The frontend also renders missing numbers as an em-dash-free "—" instead of zero, and buildUsage() joins the boot warmup so the first visit rarely pays the scan. - The Overview's remaining first-open cost was FUSE metadata, not parsing: every rebuild stat'ed hundreds of transcripts and re-walked the directory trees. Dormant files (untouched for a day) now skip the stat for a minute at a time, and directory listings are remembered for 5s. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>0dd286d -
Usage tab: read rollout tails for the codex quota, not whole files
codexQuota() read EVERY codex rollout in full and JSON-parsed every line on the event loop until it found a rate-limit snapshot — with multi-hundred-MB rollouts that froze the entire app whenever the Usage tab opened (and again on every 60s cache expiry). The newest snapshot rides the most recent token_count event, i.e. the END of the file: scan a 256KB tail per file, newest files and newest lines first, at most 20 files. Measured 78ms against a 23MB rollout. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>e1f1450
-
Progressive loading for the Overview and Usage pages
Both pages blocked on their slowest dependency: the Overview on the first full traces build (every transcript on the bucket parsed before anything rendered), Usage on a Promise.all over ccusage subprocesses with 20s timeouts. Three changes: - The traces cache is warmed at server boot, so the expensive first build usually finishes before anyone opens a page. - The Overview renders its full layout instantly from the tree and fills tiles progressively, top of the feed first: a new GET /api/meta/:id parses only that session's transcripts (Claude: the file is sessionUuid.jsonl; Codex: the pinned rollout) with a three-wide client queue, while the bulk poll back-fills db-backed CLIs. Pending tiles/cards show a shimmer instead of a global "reading traces…" screen; parsed files share the per-file cache so nothing is read twice. - Usage fetches each provider separately (/api/usage?provider=…) and renders the frame immediately with skeleton stats and table rows — a hung provi…e34ce4a
-
Decouple names from folders (explicit paths + folder picker, visual-only groups), pin Codex conversations, fix drag-into-group, async usage, WS origin check, secrets filter
Verified signaturefd0a8b6
-
Usage: revert to statusline snapshot; drop refresh/live widgets and cost estimate
Verified signature43e2e47 -
Claude quota: live /api/oauth/usage (no inference), statusline snapshot as fallback
Verified signature6d51a81
-
Public template: auto-locks at runtime, shows duplicate-to-private widget
Verified signature5b5da0e