isRecord was declared locally in 15 modules (with two divergent shapes) and getErrorMessage in 7. Move a single canonical pair into utils/helpers and import it everywhere. The shared isRecord excludes arrays; the call sites that previously allowed them only read named properties, so behavior is unchanged.
clear()/hasItem() and the secureStorage/encryptData/decryptData/isEncrypted aliases had no callers. migratePlaintextKeys now reuses isObfuscated instead of duplicating the prefix literal.
feat(authFiles): refactor OAuth provider handling and improve alias validation
feat(config): implement unsaved changes guard in ConfigPage
feat(dashboard): extend provider stats to include vertex and ampcode
fix(logs): enhance incremental log merging and improve error handling
feat(system): format build time display using utility functions
feat(api): normalize OAuth provider keys in authFiles API
feat(provider): update OpenAI provider deletion method to use index
feat(format): add date formatting utilities for better date handling
- Refactored MainLayout to always show logs in the sidebar.
- Updated i18n files for English, Russian, Simplified Chinese, and Traditional Chinese to include new log-related messages.
- Improved LogsPage styling for better layout and added runtime notices.
- Enhanced LogsPage logic to handle different server runtime kinds (CPA and Home).
- Added new API methods to handle logs fetching and request log downloading with runtime checks.
- Introduced runtime kind detection during authentication and connection status updates.
- Updated types to include server runtime kind and adjusted API responses accordingly.
- Introduced new quota management for xAI/Grok, including types, API calls, and UI components.
- Added localization support for xAI quota in English, Russian, Chinese (Simplified and Traditional).
- Updated styles for xAI quota cards and sections.
- Integrated xAI quota fetching and rendering logic into existing quota management system.
- Enhanced auth file handling to support xAI files.
- Deleted chartConfig.ts and its exports from index.ts, as they are no longer needed.
- Removed latency.ts and its related functions for latency statistics and formatting.
- Cleaned up usageIndex.ts by removing functions related to indexing usage details, as they are not in use.
- Introduced `useProviderRecentRequests` hook to manage recent request data for providers.
- Replaced usage of `useProviderStats` with `useProviderRecentRequests` in relevant components.
- Updated `VertexSection` and other provider components to consume recent request data instead of key stats.
- Removed obsolete `useProviderStats` hook and related usage details.
- Added new utility functions for handling recent request data, including normalization and aggregation.
- Updated API service to fetch recent request usage data.
- Refactored `AuthFileCard` and related components to utilize recent request statistics.
- Cleaned up unused code and types related to previous usage stats implementation.
Add zh-TW as a new supported language, covering all 1500+ translation keys
with Taiwan-standard terminology and phrasing.
Changes:
- src/i18n/locales/zh-TW.json: new file, full Traditional Chinese translation
- src/i18n/index.ts: import and register zh-TW locale
- src/types/common.ts: add 'zh-TW' to Language union type
- src/utils/constants.ts: add zh-TW to LANGUAGE_ORDER and LANGUAGE_LABEL_KEYS
- src/utils/language.ts: add zh-tw/zh-hant browser locale detection
- src/i18n/locales/*.json: add chinese_tw label key to all locales
Co-authored-by: lmanchu <lman.chu@gmail.com>
feat(i18n): update search placeholders and error messages for regex support
feat(uiState): include regex search mode in AuthFiles UI state
feat(regexSafety): implement regex safety check to prevent catastrophic backtracking
drop deprecated 4.5/3-pro-image mappings
add Gemini 3.1 Pro Series group and new model ids
support nested body payload parsing for antigravity usage responses