diff --git a/package.json b/package.json index ba47244ed5..7727d0a13f 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,7 @@ "dev": "dotenv electron-vite dev", "debug": "electron-vite -- --inspect --sourcemap --remote-debugging-port=9222", "build": "npm run typecheck && electron-vite build", - "build:check": "yarn typecheck && yarn check:i18n && yarn test", + "build:check": "yarn lint && yarn test", "build:unpack": "dotenv npm run build && electron-builder --dir", "build:win": "dotenv npm run build && electron-builder --win --x64 --arm64", "build:win:x64": "dotenv npm run build && electron-builder --win --x64", @@ -66,7 +66,7 @@ "test:lint": "eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts", "test:scripts": "vitest scripts", "format": "prettier --write .", - "lint": "eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix", + "lint": "eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix && yarn typecheck && yarn check:i18n", "prepare": "git config blame.ignoreRevsFile .git-blame-ignore-revs && husky" }, "dependencies": { diff --git a/src/main/apiServer/config.ts b/src/main/apiServer/config.ts index d9b73d521a..15d7a244a3 100644 --- a/src/main/apiServer/config.ts +++ b/src/main/apiServer/config.ts @@ -22,12 +22,14 @@ class ConfigManager { }) this._config = { + enabled: settings?.apiServer?.enabled ?? false, port: settings?.apiServer?.port ?? 23333, host: 'localhost', apiKey: generatedKey } } else { this._config = { + enabled: settings?.apiServer?.enabled ?? false, port: settings?.apiServer?.port ?? 23333, host: 'localhost', apiKey: settings.apiServer.apiKey @@ -38,6 +40,7 @@ class ConfigManager { } catch (error: any) { logger.warn('Failed to load config from Redux, using defaults:', error) this._config = { + enabled: false, port: 23333, host: 'localhost', apiKey: `cs-sk-${uuidv4()}` diff --git a/src/main/index.ts b/src/main/index.ts index 5b61299e4f..d724efdbec 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -143,9 +143,13 @@ if (!app.requestSingleInstanceLock()) { // Start API server if enabled try { - await apiServerService.start() + const config = await apiServerService.getCurrentConfig() + logger.info('API server config:', config) + if (config.enabled) { + await apiServerService.start() + } } catch (error: any) { - logger.error('Failed to start API server:', error) + logger.error('Failed to check/start API server:', error) } }) diff --git a/src/renderer/src/pages/settings/ApiServerSettings/ApiServerSettings.tsx b/src/renderer/src/pages/settings/ApiServerSettings/ApiServerSettings.tsx index f612e2f93d..2fb22e9588 100644 --- a/src/renderer/src/pages/settings/ApiServerSettings/ApiServerSettings.tsx +++ b/src/renderer/src/pages/settings/ApiServerSettings/ApiServerSettings.tsx @@ -1,7 +1,7 @@ import { useTheme } from '@renderer/context/ThemeProvider' import { loggerService } from '@renderer/services/LoggerService' import { RootState, useAppDispatch } from '@renderer/store' -import { setApiServerApiKey, setApiServerPort } from '@renderer/store/settings' +import { setApiServerApiKey, setApiServerEnabled, setApiServerPort } from '@renderer/store/settings' import { IpcChannel } from '@shared/IpcChannel' import { Button, Input, InputNumber, Tooltip, Typography } from 'antd' import { Copy, ExternalLink, Play, RotateCcw, Square } from 'lucide-react' @@ -64,6 +64,7 @@ const ApiServerSettings: FC = () => { } catch (error) { window.message.error(t('apiServer.messages.operationFailed') + (error as Error).message) } finally { + dispatch(setApiServerEnabled(enabled)) setApiServerLoading(false) } } diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts index 12d0069a36..a4cd0ba5d8 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -1925,6 +1925,7 @@ const migrateConfig = { // Initialize API server configuration if not present if (!state.settings.apiServer) { state.settings.apiServer = { + enabled: false, host: 'localhost', port: 23333, apiKey: `cs-sk-${uuid()}` diff --git a/src/renderer/src/store/settings.ts b/src/renderer/src/store/settings.ts index 4e366e7edc..62437cbbcc 100644 --- a/src/renderer/src/store/settings.ts +++ b/src/renderer/src/store/settings.ts @@ -382,6 +382,7 @@ export const initialState: SettingsState = { navbarPosition: 'left', // API Server apiServer: { + enabled: false, host: 'localhost', port: 23333, apiKey: `cs-sk-${uuid()}` @@ -791,6 +792,12 @@ const settingsSlice = createSlice({ state.navbarPosition = action.payload }, // API Server actions + setApiServerEnabled: (state, action: PayloadAction) => { + state.apiServer = { + ...state.apiServer, + enabled: action.payload + } + }, setApiServerPort: (state, action: PayloadAction) => { state.apiServer = { ...state.apiServer, @@ -926,6 +933,7 @@ export const { setEnableDeveloperMode, setNavbarPosition, // API Server actions + setApiServerEnabled, setApiServerPort, setApiServerApiKey } = settingsSlice.actions diff --git a/src/renderer/src/types/index.ts b/src/renderer/src/types/index.ts index 9eff1e5c6a..d2ee286be7 100644 --- a/src/renderer/src/types/index.ts +++ b/src/renderer/src/types/index.ts @@ -842,6 +842,7 @@ export type S3Config = { export type { Message } from './newMessage' export interface ApiServerConfig { + enabled: boolean host: string port: number apiKey: string