eb4f218c7d
* ✨ feat: make API server default to closed/disabled - Add `enabled` field to ApiServerConfig interface with default value false - Update Redux store to include apiServer.enabled setting (defaults to false) - Add setApiServerEnabled action to control server state - Modify main process to only auto-start API server if explicitly enabled - Update UI to show enable/disable toggle in API server settings - Add migrations to handle existing configurations - Server controls now only visible when API server is enabled The API server will no longer start automatically on application launch unless explicitly enabled by the user through the settings interface. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> * 🔧 chore: improve build and lint commands - Move typecheck and i18n checks to lint command for better developer experience - Simplify build:check to focus on linting and testing - Ensure all quality checks run together during development 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com> --------- Co-authored-by: Claude <noreply@anthropic.com>
68 lines
1.8 KiB
TypeScript
68 lines
1.8 KiB
TypeScript
import { ApiServerConfig } from '@types'
|
|
import { v4 as uuidv4 } from 'uuid'
|
|
|
|
import { loggerService } from '../services/LoggerService'
|
|
import { reduxService } from '../services/ReduxService'
|
|
|
|
const logger = loggerService.withContext('ApiServerConfig')
|
|
|
|
class ConfigManager {
|
|
private _config: ApiServerConfig | null = null
|
|
|
|
async load(): Promise<ApiServerConfig> {
|
|
try {
|
|
const settings = await reduxService.select('state.settings')
|
|
|
|
// Auto-generate API key if not set
|
|
if (!settings?.apiServer?.apiKey) {
|
|
const generatedKey = `cs-sk-${uuidv4()}`
|
|
await reduxService.dispatch({
|
|
type: 'settings/setApiServerApiKey',
|
|
payload: generatedKey
|
|
})
|
|
|
|
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
|
|
}
|
|
}
|
|
|
|
return this._config
|
|
} 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()}`
|
|
}
|
|
return this._config
|
|
}
|
|
}
|
|
|
|
async get(): Promise<ApiServerConfig> {
|
|
if (!this._config) {
|
|
await this.load()
|
|
}
|
|
if (!this._config) {
|
|
throw new Error('Failed to load API server configuration')
|
|
}
|
|
return this._config
|
|
}
|
|
|
|
async reload(): Promise<ApiServerConfig> {
|
|
return await this.load()
|
|
}
|
|
}
|
|
|
|
export const config = new ConfigManager()
|