- replace the popover list scroll area with a native overflow container
- keep keyboard navigation behavior while restoring wheel scroll in long dropdowns
- only reuse provider catalogs after /api/cliproxy/catalog has resolved
- avoid passing synthesized static fallback catalogs into preset application
- cover quick-setup and cliproxy add-account flows with regression tests
- let applyDefaultPreset accept a caller-provided provider catalog
- pass cached catalog data from cliproxy and quick-setup flows
- add regression coverage for skipping the extra catalog fetch
- fetch live provider model definitions through /api/cliproxy/catalog
- overlay CCS preset metadata without keeping UI dropdowns as the source of truth
- wire /cliproxy and quick setup to the upstream-backed catalog path
- reshape the page into a management-center style control surface
- add activity and CLIProxy error tabs with denser list/detail ergonomics
- switch filters to practical chip groups and update the page tests
Refs #926
- add runtime-aware resume lane diagnostics and auth backup flows
- warn when account resume uses a different plain ccs continuity lane
- surface lane mismatch guidance in the accounts dashboard, docs, and tests
- replace separate readiness and learning cards with one continuity overview surface
- simplify row labels and dialog controls around continuity mode changes
- keep localized continuity guidance aligned with the new component structure
Refs #904
- add derived continuity readiness states for the accounts dashboard
- explain same-group and deeper continuity requirements in the page and sync dialog
- handle partial legacy-confirm updates without leaving stale UI state
Refs #904
- switch live header and summary cards to provider-scoped totals in detail view
- keep the provider grid on global totals when no provider is selected
- add a regression test for provider detail metric scoping
Remove collapsible "More Presets" toggle. All alternative providers are
now always visible in a labeled section below Featured Providers,
improving discoverability for users like Minimax, GLM, DeepSeek.
Closes#892
Move reverse proxy under /api/cliproxy-local so it sits behind auth
middleware. Enforce localhost-only access when dashboard auth is disabled.
Resolve the target port from unified config instead of hardcoding 8317.
Re-serialize parsed JSON bodies before forwarding so writes still work
behind express.json(). Clean up proxy connections on client abort.
On the frontend, point the iframe and health check at the new same-origin
API path, probe the proxy directly, and tighten iframe origin/path
validation before sending the auto-login secret.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- keep Codex team and personal auth files as separate identities
- resolve quota and live monitor stats by token file-backed account id
- surface duplicate-aware account labels across the dashboard and variant UI
In Docker, the browser cannot directly reach the container-internal CLIProxy
port (8317). This adds a reverse proxy at /cliproxy-local/* that forwards
requests through the dashboard Express server to 127.0.0.1:8317 internally.
The control panel embed now uses same-origin API endpoints for health checks
and the proxy path for the management iframe.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Connection Timeline sidebar showed only one account because
generateConnectionEvents() used per-account lastUsedAt as the base
timestamp. Accounts with more recent lastUsedAt dominated the
recency-sorted 100-event cap.
Use the maximum lastUsedAt across all accounts so events interleave
proportionally.
Closes#856