- Add formatUnixTimestamp utility to auto-detect timestamp precision (s/ms/μs/ns)
- Fix incorrect file modification time display in logs page
- Remove fixed height constraint from AuthFilesPage model list
- Add log line parser to extract timestamp, level, status code, latency, IP, HTTP method, and path
- Implement virtual scrolling with load-more on scroll-up to handle large log files efficiently
- Replace monolithic pre block with structured grid layout for better readability
- Add visual badges for log levels and HTTP status codes with color-coded severity
- Add IconRefreshCw icon component
- Update ToggleSwitch to accept ReactNode as label
- Fix fetchConfig calls to use default parameters consistently
- Add request deduplication in useConfigStore to prevent duplicate /config API calls
- Add i18n keys for load_more_hint and hidden_lines
- Add 409 conflict handling for duplicate iFlow config files
- Add key creation hint in cookie login section
- Move extra actions button after delete button for consistency
- Improve OAuth status badge display logic (hide when idle)
- Add config toggle enable/disable i18n translations
- Adjust item-actions spacing from sm to md
- Fix i18next interpolation from {var} to {{var}} format in en.json
- Add gemini_base_url_label translation key for better form labeling
- Add virtual auth file and model list related translations
- Adjust UsagePage title font size to 28px for consistency
- Add page title (h1) to all main pages for consistent hierarchy
- Wrap page content in container/content div structure
- Handle 404 error for unsupported OAuth excluded models API
- Add cache price input field in usage page model pricing
- Add upgrade required i18n messages for older CPA versions
- Import mixins in page-level SCSS modules
- Add cache price field to ModelPrice interface
- Support both cached_tokens and cache_tokens fields for compatibility
- Separate prompt, cache, and completion pricing in cost calculation
- Deduct cached tokens from input tokens before prompt pricing
- Refactor getApiStats/getModelStats to reuse calculateCost function
- Update i18n labels for model pricing
- Add 409 conflict handling for duplicate iFlow config files
- Add key creation hint in cookie login section
- Move extra actions button after delete button for consistency
- Improve OAuth status badge display logic (hide when idle)
- Add config toggle enable/disable i18n translations
- Adjust item-actions spacing from sm to md
- Add ampcodeApi service for upstream URL, API key, and model mappings management
- Implement Ampcode configuration modal in AiProvidersPage
- Add complete i18n translations for Ampcode features (en and zh-CN)
- Enhance UsagePage with mobile-responsive chart improvements and legend display
- Optimize chart rendering for smaller screens
- Improve page layout styles (SystemPage, AiProvidersPage alignment)
- Remove inset box-shadow from stat badges for cleaner appearance
- Add modelCountLabel style for consistent model count display
- Refactor model count layout in AiProvidersPage
- Add openaiTestButton style for proper button height alignment
- Add item-actions flexbox utility style to layout.scss
- Reorganize retry settings into separate Card for better visual hierarchy
- Move retry update button inline with input field via rightElement
- Add excluded-models serialization in provider key configuration
- Add excluded-models normalization support in API transformers with fallback parsing
- Add excludedModels field to ProviderKeyConfig type for Codex and Claude providers
- Add excluded models textarea input in Codex/Claude edit modal
- Display excluded models badges in Codex and Claude provider cards
- Fix header connection status badge vertical alignment with IP address
- Update dark theme to use pure black color scheme
- Add useModelsStore with 30s cache for model list to reduce API calls
- Refactor SystemPage to use cached models from store
- Shorten ConfigPage search placeholder to prevent text truncation