A Windsurf multi-account management desktop application built with Tauri + Vue 3 + TypeScript, designed to manage multiple Windsurf accounts with features including credit reset, billing query, one-click account switching, subscription payment, and more.
⚠️ Free Software Notice: This software is completely free. If you paid for it, you have been scammed!
🌐 中文版本: README.md




el-tab-pane sections in Settings, Team Management, Auto Reset, Account Info, and related dialogs, preventing all tables, forms, and information panels from mounting when the parent dialog first opensv-if on-demand mounting to reduce initial DOM size and hidden form initialization costAnalyticsDialog is now dynamically imported only when the analytics dialog initializes charts, keeping the charting library out of the account page initial loading pathauto-fit + 1frcontent-visibility lazy-paint placeholders from themed account cards, fixing the issue where lower cards on 100-items-per-page views could show blank shells without their contents being painted promptlyoriginal-light, and the legacy default aurora is migrated to original-light once; frontend theme defaults, settings defaults, and backend configuration defaults stay alignedclientDisplayName assignment from SettingsDialog.vue, fixing vue-tsc TS2304 / TS2339 build errorsWindsurfPostAuth endpoint to require X-Devin-Auth1-Token HTTP header. Added the header in devin_auth_service.rs::windsurf_post_auth; all Devin login/registration/multi-org selection flows automatically benefitget_accounts_by_ids backend API (SQLite WHERE id IN (...) precise query) replaces the old approach of getAllAccounts() loading 100K+ records then filtering on frontend. Export-selected, batch plan change, etc. improve from seconds to millisecondsget_accounts_by_ids and update_group_by_ids auto-batch queries (500 per batch), supporting arbitrary ID countsgetAllAccounts() query to avoid unnecessary batchingImport progress: 3/10(✓ xxx@email.com)), replacing the previous static message that only updated after all completed; throttled UI refresh (500ms) after each successful accountadd_account_by_refresh_token / add_account_by_devin_login / add_account_by_devin_with_org / persist_devin_account_from_login_result, 6 locations total) changed email dedup from get_all_accounts() full-load iteration to SQLite email_exists() index query. Memory overhead drops from tens of MB to ~0; 20-concurrent registrations no longer spike memorycheck_pro_trial_eligibility command changed from receiving frontend authToken to receiving account_id; backend reads full account from SQLite to construct correct AuthContext (auto-distinguishes Firebase/Devin). Fixes Devin accounts always falsely reporting "eligible". Retains protobuf body token + adds with_auth headers for dual authenticationget_trial_payment_link_enhanced command similarly changed to receive account_id; backend fetches token + constructs correct AuthContext. Fixes Devin account 401 errors when "auto-open payment page" is enabledswitch_account_commands.rs adds OperationLog import, already_patched check (avoids misleading re-application logs), operation log recording after successful switch; patch_commands.rs apply/revert messages now use dynamic config.process_name instead of hardcoded strings, check_seamless_status variable names alignedaccounts_*.json to directory-based backup_YYYYMMDD_HHMMSS/ containing accounts.db + all JSON files (6 total); list_backups / restore_from_backup / delete_backup / cleanup all switched to directory operations; added calculate_dir_size helper; Settings gains auto_backup_enabled / backup_interval / backup_max_count fields; lib.rs adds auto-backup task (1-minute startup delay, configurable interval loop)get_stats adds 13 new fields (plan distribution, active/inactive subscription counts, team owners, disabled accounts, quota stats, tag/group/operation-type distributions, Token/RefreshToken counts); frontend StatsDialog.vue upgraded from 3 simple number cards to full 9-section panel (account overview, subscriptions & auth, special accounts, quota, plan/group/tag/operation-type distributions, system settings)addAccount / appendLocalAccount no longer trigger fetchPage() full-page refresh or loading state; only async aggregate stats refresh (sidebar counts). New accounts appear on the correct SQLite-sorted page when user navigatesisMasterAccount function from AutoResetDialog.vue, fixing vue-tsc TS6133 strict check build failure--theme-primary, covering the pagination container, page buttons, active-page highlight, and jump input; subscription/plan badges gain stronger contrast and visual hierarchy across themes while preserving semantic Free / Pro / Teams / Enterprise colorsBatchExportDialog.vue to replace the hardcoded ElMessageBox + dangerouslyUseHTMLString export dialog in MainLayout.vue, removing inline styles and aligning the dialog with the current theme system. The export entry now $ claude mcp add windsurf-account-manager-simple \
-- python -m otcore.mcp_server <graph>