Skip to content

feat(console): model cooldown list and bulk check-in feedback - #507

Merged
caigee-cmd merged 1 commit into
caigee-cmd:mainfrom
guyu233:feat/account-model-cooldowns
Nov 13, 2026
Merged

caigee-cmd merged 1 commit into
caigee-cmd:mainfrom
guyu233:feat/account-model-cooldowns

Conversation

@guyu233

@guyu233 guyu233 commented Nov 13, 2026

Copy link
Copy Markdown

Summary

  • Model cooldown list: every account card gets a button that opens an inline list of models currently in cooldown, with a live remaining-time countdown, a count badge, and an empty state when nothing is cooling down. Uses the existing model_cooldowns data and the card's 1s ticker; expired entries are excluded automatically.
  • Bulk check-in feedback: a one-click "check in all" run now pushes the same per-account card feedback (success / already / error with the raw upstream message and a copy button) that a single-account check-in already showed. Failed accounts are no longer swallowed by an empty catch.
  • TypeScript config: removed baseUrl and ignoreDeprecations from frontend/tsconfig.app.json. Under moduleResolution: "bundler", paths does not need baseUrl and Vite already maps @; both the workspace TypeScript 6.0 and the global 5.9 now type-check without errors.
  • Embedded static assets were rebuilt and synced (npm run sync); old hashed bundles removed, new ones added, index.html updated. Added a bilingual changelog fragment.

Validation

  • npx tsc -b --force (workspace TS 6.0.3) and tsc -p tsconfig.app.json --noEmit (global TS 5.9.3): pass
  • npx oxlint on changed files: 0 warnings / 0 errors
  • go build ./...: pass; go test -count=1 for workbuddy / command / codex / console / control and runtime Checkin|Quota|Feedback: pass
  • frontend/dist and internal/webui/static: 13 files byte-identical (SHA256), no stale hashed pairs
  • Real browser (headless Chrome via DSH ego tools) against a freshly built binary:
    • cooldown button visible, orange when models are cooling; list shows 2 models with countdown 3m/2m → 2m/58s, expired model excluded, empty state when none, collapsible
    • copy button writes the full untruncated upstream error to the clipboard and briefly shows "Copied"
    • single-account and one-click bulk check-in both show success / already / error feedback with auto-dismiss after 3s

Every account card gets a model-cooldown button that opens an inline list of
models currently cooling down, with a live countdown and an empty state. The
page creates a fresh feedback object per check-in, so the card derives the
visible notice and copies the full raw upstream error without a synchronous
setState in an effect.

A one-click "check in all" run now pushes the same per-account feedback that
a single-account check-in already showed (success / already / error with the
raw upstream message and copy button), instead of silently swallowing results.

Remove baseUrl and ignoreDeprecations from tsconfig.app.json. Under moduleResolution
"bundler", paths does not need baseUrl, and Vite already maps the @ alias; both
the workspace TypeScript 6.0 and the global 5.9 then type-check without errors.

Rebuild and sync the embedded static assets. Add a bilingual changelog fragment.
@caigee-cmd
caigee-cmd merged commit 947530f into caigee-cmd:main Nov 13, 2026
6 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants