- Added a new `isRefreshing` state to streamline loading logic for the refresh button.
- Updated the refresh button's disabled and loading states for better user experience.
- Simplified the refresh button content display.
- Revised translations for the refresh action in both English and Chinese locales.
- Enhanced styles for button alignment and SVG display.
- Introduced effective view mode logic to manage 'paged' and 'all' views based on file count.
- Added a warning for too many files when in 'all' view, prompting users to switch to 'paged'.
- Updated refresh button to handle loading states more effectively and provide clearer user feedback.
- Enhanced UI with new translations for view modes and refresh actions.
- Adjusted styles for better alignment and spacing in the view mode toggle and refresh button.
- Remove required validation for project ID field
- Update translations to indicate field is optional (zh-CN, en)
- Auto-select first available project when left empty
- Backend already supports empty project ID by fetching project list
This improves user experience by eliminating the need to manually enter project ID for users with only one or a preferred default project.
- 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
- 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)
- 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