feat: account management overhaul + 7 issue resolutions (#147)
- Add smart JSON export/import with schema validation and deduplication - Add per-account proxy configurations (Issue #79) - Add advanced account sorting engine (Issues #126 & #99) - Add compact horizontal layout, AI credits, inline model visibility (Issues #145 & #134) - Add desktop push notifications for low quota (Issue #53) - Fix Arch Linux AUR process detection bug (Issue #117) - Default theme set to Dark Mode (it's better) - UI Polishing: Improved sort dropdown and symmetrical dialog layouts - Dev Mode: Resolved port conflicts and single-instance locks - Updated README and README.zh-CN with new features
This commit is contained in:
37 files changed
+1989
-455
No files matched your search
@@ -118,6 +118,14 @@ i18n
|
||||
restart_note:
|
||||
'Changes to error reporting will take effect after restarting the application.',
|
||||
},
|
||||
notifications: {
|
||||
title: 'Notifications',
|
||||
description: 'Configure desktop alerts for account events.',
|
||||
quotaAlert: 'Low Quota Alerts',
|
||||
quotaAlertDesc: 'Get notified when a model quota drops below the set threshold',
|
||||
quotaThreshold: 'Alert Threshold',
|
||||
quotaThresholdDesc: 'Percentage below which to trigger an alert',
|
||||
},
|
||||
proxy: {
|
||||
title: 'Upstream Proxy',
|
||||
description: 'Configure a proxy for outgoing requests to Google/Gemini APIs.',
|
||||
@@ -258,6 +266,7 @@ i18n
|
||||
twoCol: '2 Columns',
|
||||
threeCol: '3 Columns',
|
||||
list: 'List',
|
||||
compact: 'Compact',
|
||||
},
|
||||
authDialog: {
|
||||
title: 'Add Google Account',
|
||||
@@ -289,6 +298,13 @@ i18n
|
||||
gemini3Ready: 'Gemini 3 Ready',
|
||||
groupGoogleGemini: 'Google Gemini',
|
||||
groupAnthropicClaude: 'Anthropic Claude',
|
||||
proxy: 'Proxy',
|
||||
proxyPlaceholder: 'e.g. http://127.0.0.1:7890',
|
||||
proxySaved: 'Proxy saved',
|
||||
noProxy: 'No proxy',
|
||||
aiCredits: 'AI Credits',
|
||||
creditsExpiry: 'expires {{date}}',
|
||||
modelVisibility: 'Model Visibility',
|
||||
},
|
||||
identity: {
|
||||
title: 'Identity Profile',
|
||||
@@ -357,6 +373,32 @@ i18n
|
||||
clear: 'Clear Selection',
|
||||
confirmDelete: 'Are you sure you want to delete {{count}} accounts?',
|
||||
},
|
||||
sort: {
|
||||
recentlyUsed: 'Recently Used',
|
||||
quotaOverall: 'Overall Quota',
|
||||
quotaClaude: 'Claude Quota',
|
||||
quotaPro3: 'Pro3 Quota',
|
||||
quotaFlash: 'Flash Quota',
|
||||
},
|
||||
exportImport: {
|
||||
export: 'Export',
|
||||
import: 'Import',
|
||||
exportTitle: 'Export Accounts',
|
||||
exportDesc: 'Choose whether to include authentication tokens in the export file.',
|
||||
includeTokens: 'Include tokens (less secure)',
|
||||
stripTokens: 'Strip tokens (safer for sharing)',
|
||||
exportSuccess: 'Accounts exported successfully',
|
||||
importTitle: 'Import Accounts',
|
||||
importDesc: 'Select a previously exported JSON file.',
|
||||
importStrategy: 'Import Strategy',
|
||||
strategyMerge: 'Merge - Update existing, add new',
|
||||
strategyOverwrite: 'Overwrite - Replace all existing data',
|
||||
strategySkip: 'Skip - Only add new accounts',
|
||||
importSuccess: 'Imported {{imported}}, updated {{updated}}, skipped {{skipped}}',
|
||||
importErrors: 'Import completed with {{count}} error(s)',
|
||||
selectFile: 'Select File',
|
||||
importing: 'Importing...',
|
||||
},
|
||||
},
|
||||
proxy: {
|
||||
title: 'API Proxy',
|
||||
@@ -504,6 +546,14 @@ i18n
|
||||
error_reporting_desc: '发送匿名错误报告以帮助我们改进应用。不收集个人数据。',
|
||||
restart_note: '错误上报设置会在重启应用后生效。',
|
||||
},
|
||||
notifications: {
|
||||
title: '通知',
|
||||
description: '配置账号事件的桌面提醒。',
|
||||
quotaAlert: '低配额提醒',
|
||||
quotaAlertDesc: '当模型配额低于设定阈值时收到提醒',
|
||||
quotaThreshold: '提醒阈值',
|
||||
quotaThresholdDesc: '触发提醒的百分比阈值',
|
||||
},
|
||||
proxy: {
|
||||
title: '上游代理',
|
||||
description: '为发往 Google/Gemini API 的请求配置代理。',
|
||||
@@ -642,6 +692,7 @@ i18n
|
||||
twoCol: '2 列',
|
||||
threeCol: '3 列',
|
||||
list: '列表',
|
||||
compact: '紧凑',
|
||||
},
|
||||
authDialog: {
|
||||
title: '添加 Google 账号',
|
||||
@@ -672,6 +723,13 @@ i18n
|
||||
gemini3Ready: 'Gemini 3 就绪',
|
||||
groupGoogleGemini: 'Google Gemini',
|
||||
groupAnthropicClaude: 'Anthropic Claude',
|
||||
proxy: '代理',
|
||||
proxyPlaceholder: '例如 http://127.0.0.1:7890',
|
||||
proxySaved: '代理已保存',
|
||||
noProxy: '无代理',
|
||||
aiCredits: 'AI 积分',
|
||||
creditsExpiry: '{{date}} 过期',
|
||||
modelVisibility: '模型可见性',
|
||||
},
|
||||
identity: {
|
||||
title: '身份配置',
|
||||
@@ -740,6 +798,32 @@ i18n
|
||||
clear: '取消选择',
|
||||
confirmDelete: '确定要删除选中的 {{count}} 个账号吗?',
|
||||
},
|
||||
sort: {
|
||||
recentlyUsed: '最近使用',
|
||||
quotaOverall: '总体配额',
|
||||
quotaClaude: 'Claude 配额',
|
||||
quotaPro3: 'Pro3 配额',
|
||||
quotaFlash: 'Flash 配额',
|
||||
},
|
||||
exportImport: {
|
||||
export: '导出',
|
||||
import: '导入',
|
||||
exportTitle: '导出账号',
|
||||
exportDesc: '选择是否在导出文件中包含认证令牌。',
|
||||
includeTokens: '包含令牌(安全性较低)',
|
||||
stripTokens: '移除令牌(适合分享)',
|
||||
exportSuccess: '账号导出成功',
|
||||
importTitle: '导入账号',
|
||||
importDesc: '选择之前导出的 JSON 文件。',
|
||||
importStrategy: '导入策略',
|
||||
strategyMerge: '合并 - 更新已有,添加新账号',
|
||||
strategyOverwrite: '覆盖 - 替换所有已有数据',
|
||||
strategySkip: '跳过 - 仅添加新账号',
|
||||
importSuccess: '导入 {{imported}},更新 {{updated}},跳过 {{skipped}}',
|
||||
importErrors: '导入完成,但有 {{count}} 个错误',
|
||||
selectFile: '选择文件',
|
||||
importing: '导入中...',
|
||||
},
|
||||
},
|
||||
proxy: {
|
||||
title: 'API 反代',
|
||||
@@ -889,6 +973,15 @@ i18n
|
||||
restart_note:
|
||||
'Изменения в отчетах об ошибках вступят в силу после перезапуска приложения.',
|
||||
},
|
||||
notifications: {
|
||||
title: 'Уведомления',
|
||||
description: 'Настройте уведомления о событиях аккаунтов.',
|
||||
quotaAlert: 'Уведомления о низкой квоте',
|
||||
quotaAlertDesc:
|
||||
'Получайте уведомления, когда квота модели падает ниже установленного порога',
|
||||
quotaThreshold: 'Порог уведомления',
|
||||
quotaThresholdDesc: 'Процент, ниже которого срабатывает уведомление',
|
||||
},
|
||||
proxy: {
|
||||
title: 'Верхнеуровневый прокси',
|
||||
description: 'Настроить прокси для исходящих запросов к Google/Gemini API.',
|
||||
@@ -1028,6 +1121,7 @@ i18n
|
||||
twoCol: '2 колонки',
|
||||
threeCol: '3 колонки',
|
||||
list: 'Список',
|
||||
compact: 'Компактный',
|
||||
},
|
||||
authDialog: {
|
||||
title: 'Добавить Google Аккаунт',
|
||||
@@ -1059,6 +1153,13 @@ i18n
|
||||
gemini3Ready: 'Gemini 3 готов',
|
||||
groupGoogleGemini: 'Google Gemini',
|
||||
groupAnthropicClaude: 'Anthropic Claude',
|
||||
proxy: 'Прокси',
|
||||
proxyPlaceholder: 'напр. http://127.0.0.1:7890',
|
||||
proxySaved: 'Прокси сохранён',
|
||||
noProxy: 'Без прокси',
|
||||
aiCredits: 'AI Кредиты',
|
||||
creditsExpiry: 'истекает {{date}}',
|
||||
modelVisibility: 'Видимость моделей',
|
||||
},
|
||||
identity: {
|
||||
title: 'Профиль идентичности',
|
||||
@@ -1127,6 +1228,33 @@ i18n
|
||||
clear: 'Снять выделение',
|
||||
confirmDelete: 'Вы уверены, что хотите удалить {{count}} аккаунтов?',
|
||||
},
|
||||
sort: {
|
||||
recentlyUsed: 'Недавние',
|
||||
quotaOverall: 'Общая квота',
|
||||
quotaClaude: 'Квота Claude',
|
||||
quotaPro3: 'Квота Pro3',
|
||||
quotaFlash: 'Квота Flash',
|
||||
},
|
||||
exportImport: {
|
||||
export: 'Экспорт',
|
||||
import: 'Импорт',
|
||||
exportTitle: 'Экспорт аккаунтов',
|
||||
exportDesc: 'Выберите, включать ли токены аутентификации в файл экспорта.',
|
||||
includeTokens: 'Включить токены (менее безопасно)',
|
||||
stripTokens: 'Удалить токены (безопаснее для обмена)',
|
||||
exportSuccess: 'Аккаунты успешно экспортированы',
|
||||
importTitle: 'Импорт аккаунтов',
|
||||
importDesc: 'Выберите ранее экспортированный JSON файл.',
|
||||
importStrategy: 'Стратегия импорта',
|
||||
strategyMerge: 'Объединить - Обновить существующие, добавить новые',
|
||||
strategyOverwrite: 'Перезаписать - Заменить все существующие данные',
|
||||
strategySkip: 'Пропустить - Добавить только новые аккаунты',
|
||||
importSuccess:
|
||||
'Импортировано {{imported}}, обновлено {{updated}}, пропущено {{skipped}}',
|
||||
importErrors: 'Импорт завершён с {{count}} ошибкой(ами)',
|
||||
selectFile: 'Выбрать файл',
|
||||
importing: 'Импорт...',
|
||||
},
|
||||
},
|
||||
proxy: {
|
||||
title: 'API Прокси',
|
||||
|
||||
Reference in new issue
Block a user