feat: parse retry-after from errors, cache codex usage per account

- Parse "try again at" time from rate-limit errors instead of
  fixed 1-hour cooldown, with 3-min buffer after reset
- Pass error message to rotateToken/rotateCodexToken for parsing
- Cache usage % and reset time per Codex account for dashboard
- Persist cached usage in rotation state file across restarts
- Show rate-limited Codex accounts with cached 100% + reset time
- Fix dashboard text indicators (*!/space) for monospace alignment
This commit is contained in:
Eyejoker
2026-03-24 01:16:54 +09:00
parent 2e6fc4a08e
commit 60dab43a3f
5 changed files with 139 additions and 24 deletions

View File

@@ -616,10 +616,14 @@ async function buildUsageContent(): Promise<string> {
});
}
} else {
// Show cached usage for rate-limited accounts
const pct = acct.isRateLimited && acct.cachedUsagePct != null
? acct.cachedUsagePct : -1;
const reset = acct.resetAt || '';
rows.push({
name: `${label} ${acct.planType}`,
h5pct: -1,
h5reset: '',
h5pct: pct,
h5reset: reset,
d7pct: -1,
d7reset: '',
});