Codex, Claude, and Gemini keys reject the disabled field, so toggling them made the whole config fail to load. Keep that field for OpenAI-compatible providers, disable native keys with excluded-models, and repair existing configs before the core starts.
Add independent controls for the startup model and Subagent model. Preserve Claude Code model selection and inheritance when CPA management is disabled.
Fixes#348
Use plain model name and alias inputs for credential aliases, discard unsaved credential settings on close, and replace usage filters with select-only menus.
- Preserve hashed management keys written by the v8 core
- Avoid rewriting hashed keys with the GUI plaintext value
- Prevent duplicate top-level management mappings
Fixes#351
- Add a display setting to enable or disable fixed record heights
- Allow users to adjust row height with a draggable slider
- Persist row height preferences across sessions
- Improve display settings layout and translations
- Save pagination, visible columns, and column widths to the app data directory
- Migrate existing localStorage preferences and restore them on startup
- Preserve user choices instead of applying new defaults during upgrades
- Add regression tests for preference recovery and update preservation
Keep the current event rows visible while the next page loads, and refresh filter options only when the time range changes. Resize columns directly in the DOM and commit the width when the drag ends.
Use the native disabled flag for individual keys, dim disabled rows, and mark partially disabled groups. Name the actual add action in the empty state, count easy-mode platforms by provider group, and use the Meta icon.
Drop the separate reasoning-effort column from request details and render the raw effort, or auto, directly beneath the model name. Include it in the model tooltip, reset saved layouts that still use the old default column, and keep the field in CSV export.
Render each request as a rounded card without changing columns or fields. Prefix upstream error messages with their HTTP status when it is not already present.
- Set default light background color to pure white across html, body, and app-shell
- Replace grayish background, diffuse card shadows, and translucent pills in usage records with pure white surfaces and clean borders
- Ensure usage tables and subpage panels render consistently as pure white documents
- Update UI accessibility regression tests to assert pure white surfaces
Add realistic quota, credential, usage, OAuth, and error scenarios.
Support in-memory mutations for imports, resets, cooldowns, and deletions.
Add browser UI and runtime regression tests with mock usage documentation.
- Remove redundant reset count and applicability labels
- Display each Codex and Claude reset expiry directly
- Improve reset expiry layout with clearer spacing and separators
- Update quota panel and quota page tests
- List each expiry chronologically instead of showing only the earliest
- Update auth file panels, quota cards, and reset confirmation dialogs
- Preserve separate entries for credits with identical expiry times
- Add translations and regression coverage
- Add reset counts and actions to auth file and quota pages
- Reuse the Codex confirmation flow with Claude eligibility and cooldown checks
- Preserve request IDs on retries to prevent duplicate credit consumption
- Add translations, regression tests, and layout checks
- Remove the redundant page title and table headings
- Adapt card columns to the available content width
- Compact quota details and prevent controls from overlapping
- Add layout regression coverage for 11 viewport configurations
Fixes#342
- Simplify protocol selection with subtle accent backgrounds and clear focus states
- Remove conflicting workspace styles from protocol tabs
- Expand usage tables to fill available width while preserving horizontal scrolling
- Allow token metrics to wrap in narrow columns
- Preserve provider credentials, aliases, headers, and network settings during migration
- Normalize Claude cloak metadata and repair previously saved invalid types
- Use streaming Gemini health probes and honor group and key proxy settings
- Retain Codex customizations for temporarily unavailable models
- Add regression tests for migration, metadata, proxy routing, and catalog persistence