diff --git a/packages/napcat-core/tsconfig.json b/packages/napcat-core/tsconfig.json index 48d3a03b..fd28287c 100644 --- a/packages/napcat-core/tsconfig.json +++ b/packages/napcat-core/tsconfig.json @@ -1,5 +1,8 @@ { "extends": "../../tsconfig.base.json", + "compilerOptions": { + "rootDir": ".." + }, "include": [ "*.ts", "**/*.ts" diff --git a/packages/napcat-framework/tsconfig.json b/packages/napcat-framework/tsconfig.json index 48d3a03b..fd28287c 100644 --- a/packages/napcat-framework/tsconfig.json +++ b/packages/napcat-framework/tsconfig.json @@ -1,5 +1,8 @@ { "extends": "../../tsconfig.base.json", + "compilerOptions": { + "rootDir": ".." + }, "include": [ "*.ts", "**/*.ts" diff --git a/packages/napcat-shell/base.ts b/packages/napcat-shell/base.ts index 1b935ff2..59b04ba3 100644 --- a/packages/napcat-shell/base.ts +++ b/packages/napcat-shell/base.ts @@ -492,7 +492,8 @@ async function handleLoginInner (context: { isLogined: boolean; }, logger: LogWr try { // 检查是否配置了自动登录账号,并尝试 WebUi 快速/密码回退登录。 // 这可以避免在已经有自动登录配置的情况下过早输出二维码。 - const hasAutoLogin = process.env['NAPCAT_QUICK_ACCOUNT'] || (WebUiDataRuntime.getQQQuickLoginList().length > 0); // 假如有历史登录列表 + const quickLoginList = WebUiDataRuntime.getQQQuickLoginList() || []; + const hasAutoLogin = process.env['NAPCAT_QUICK_ACCOUNT'] || (quickLoginList.length > 0); // 假如有历史登录列表 if (hasAutoLogin || process.env['NAPCAT_QUICK_PASSWORD'] || process.env['NAPCAT_QUICK_PASSWORD_MD5']) { hasAttemptedFallback = true; } diff --git a/packages/napcat-webui-frontend/src/pages/dashboard/config/backup.tsx b/packages/napcat-webui-frontend/src/pages/dashboard/config/backup.tsx index f2129b4c..3a519d44 100644 --- a/packages/napcat-webui-frontend/src/pages/dashboard/config/backup.tsx +++ b/packages/napcat-webui-frontend/src/pages/dashboard/config/backup.tsx @@ -92,7 +92,7 @@ const BackupConfigCard: React.FC = () => { onPress={handleExportConfig} title='导出配置' > - + diff --git a/packages/napcat-webui-frontend/src/pages/dashboard/config/theme.tsx b/packages/napcat-webui-frontend/src/pages/dashboard/config/theme.tsx index f8d7f3e6..c03a6191 100644 --- a/packages/napcat-webui-frontend/src/pages/dashboard/config/theme.tsx +++ b/packages/napcat-webui-frontend/src/pages/dashboard/config/theme.tsx @@ -436,15 +436,33 @@ const ThemeConfigCard = () => { } } await FileManager.uploadWebUIFont(file); - toast.success('上传成功,即将刷新页面'); + + // 先自动把选择的字体模式设置为 custom,并保存配置,避免刷新后又变成了旧的/没保存的模式 + const updatedTheme = { ...theme, fontMode: 'custom' }; + await WebUIManager.setThemeConfig(updatedTheme); + originalDataRef.current = updatedTheme; + updateFontCache('custom'); + setHasUnsavedChanges(false); + loadTheme(); + + toast.success('上传并保存成功,即将刷新页面'); setTimeout(() => window.location.reload(), 1000); } catch (error) { - toast.error('上传失败: ' + (error as Error).message); + toast.error('上传或保存失败: ' + (error as Error).message); } }} onDelete={async () => { try { await FileManager.deleteWebUIFont(); + // 删除字体后,若当前选中的是自定义字体,则将其重置为系统默认(或其它)并保存,以防页面报错 + if (theme.fontMode === 'custom') { + const updatedTheme = { ...theme, fontMode: 'system' }; + await WebUIManager.setThemeConfig(updatedTheme); + originalDataRef.current = updatedTheme; + updateFontCache('system'); + setHasUnsavedChanges(false); + loadTheme(); + } toast.success('删除成功,即将刷新页面'); setTimeout(() => window.location.reload(), 1000); } catch (error) {