Commit Graph
2 Commits
Author SHA1 Message Date
ArtemisAIandDraculabo 1e59a1c901 feat: Implement provider groupings with account calculator and compre… (#113)
* feat: Implement provider groupings with account calculator and comprehensive fixes

- Add provider detection utilities (detectProvider, PROVIDER_REGISTRY) for Claude/Gemini/Others categorization
- Implement grouping logic (groupModelsByProvider, calculateProviderStats, calculateAccountStats) with health status calculation
- Create useProviderGrouping hook for collapsible state management and persistence
- Add ProviderGroup component with health indicators, progress bars, and model visibility integration
- Enhance CloudAccountList with account-level calculator showing overall percentage and earliest reset time
- Implement grid layout selector (auto/2-col/3-col/list) with config persistence and tooltips
- Add global quota aggregate bar across all accounts in top statistics
- Fix model visibility settings regression by accessing account.quota.models instead of account.quota
- Show 'Rate Limited' instead of '0%' for exhausted quotas with consistent getQuotaLabel function
- Add comprehensive i18n translations for layout selector and rate limited labels (en, zh-CN, ru)
- Disable batch operations when provider groupings are enabled to prevent conflicts
- Include unit tests for provider detection logic and grouping functionality

Addresses critical issues: model list regression, rate limited display, layout control, global quota visibility, and consistent quota labeling across all components.

* fix: resolve ESLint no-ex-assign violations in proxy service

- Fix exception parameter reassignment in catch blocks
- Rename catch parameters to avoid no-ex-assign rule violations
- Maintain same error handling logic while complying with linting rules

* fix: add missing Models tab to settings page

- Add Models tab between General and Proxy tabs
- Import and integrate ModelVisibilitySettings component
- Fix critical regression where model visibility settings were inaccessible

* fix: add missing React hook imports in settings route

* test: remove obsolete tests for removed controller APIs

---------

Co-authored-by: Draculabo <[email protected]>
2026-02-18 16:38:15 +08:00
ArtemisAI 118fad567e fix(statusbar): reduce process polling from 2s to 10s to prevent heap corruption crash (#110)
## Problem
Application crashes with exit code 0xC0000374 (heap corruption) at ~7 minute mark due to excessive process monitoring subprocess spawning.

## Root Cause
StatusBar component continuously polls process status every 2 seconds (2000ms refetchInterval), triggering:
- ~210 subprocess invocations over 7 minutes
- Each invocation spawns find-process subprocess
- Accumulated process handles lead to heap corruption
- OS terminates renderer with 0xC0000374 exit code

## Solution
Reduce UI polling interval from 2 seconds to 10 seconds:
- Reduces subprocess spawning by 5x (210  42 calls over 7 minutes)
- 10-second UI update delay is imperceptible to users
- Purely cosmetic feature doesn't require real-time responsiveness
- Expected result: App survives 30+ minutes instead of 7 minutes

## Testing
- Can be tested by running app continuously for 30+ minutes
- Monitor for absence of 0xC0000374 exit codes
- Verify StatusBar still updates (with 10s delay instead of 2s)

## Impact
- Risk: LOW (configuration-only change)
- User impact: Minimal (UI status indicator updates slightly slower)
- System impact: CRITICAL - Prevents crash loop
2026-02-14 22:14:28 +08:00