diff options
| author | bndw <ben@bdw.to> | 2026-02-28 21:08:40 -0800 |
|---|---|---|
| committer | bndw <ben@bdw.to> | 2026-02-28 21:08:40 -0800 |
| commit | 04c63d4ef601876186e5d7fab980d76575c494ec (patch) | |
| tree | 2620784e148957ae2ee3af0327c2b128983577e7 /src/main/preload.ts | |
| parent | 0da42e4fa414ab3268d4f71896455097239f8590 (diff) | |
feat: **1. `src/main/db/schema.ts`** — add `settings` table … (+10 more)
- ✅ **1. `src/main/db/schema.ts`** — add `settings` table to `initSchema`
- ✅ **2. `src/main/db/settings.ts`** — create file with `getSetting`, `getSettings`, `setSetting`, `deleteSetting`
- ✅ **3. `src/main/claude/phases.ts`** — add `customSystemPrompt?` param to `getPhaseConfig`; add `getDefaultSystemPromptTemplate` export
- ✅ **4. `src/main/claude/index.ts`** — import `getSetting`; load custom prompt in `sendMessage`; pass to `getPhaseConfig`
- ✅ **5. `src/main/ipc/handlers.ts`** — import `settingsDb` + `getDefaultSystemPromptTemplate`; register `settings:get`, `settings:set`, `settings:delete`, `settings:getDefaultPrompts`
- ✅ **6. `src/main/preload.ts`** — add `getSettings`, `setSetting`, `deleteSetting`, `getDefaultSystemPrompts` to interface + api object
- ✅ **7. `renderer/src/styles/globals.css`** — append all new CSS rules
- ✅ **8. `renderer/src/components/settings/SystemPromptsSettings.tsx`** — create file (new directory)
- ✅ **9. `renderer/src/components/SettingsPage.tsx`** — create file
- ✅ **10. `renderer/src/components/Header.tsx`** — add `onOpenSettings` prop + ⚙ button
- ✅ **11. `renderer/src/App.tsx`** — add `showSettings` state; import + render `<SettingsPage>`; pass `onOpenSettings` to Header
Diffstat (limited to 'src/main/preload.ts')
| -rw-r--r-- | src/main/preload.ts | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/main/preload.ts b/src/main/preload.ts index 299a1b5..52e947b 100644 --- a/src/main/preload.ts +++ b/src/main/preload.ts | |||
| @@ -54,6 +54,12 @@ export interface ClaudeFlowAPI { | |||
| 54 | callback: (sessionId: string, message: SDKMessage) => void | 54 | callback: (sessionId: string, message: SDKMessage) => void |
| 55 | ) => () => void; | 55 | ) => () => void; |
| 56 | 56 | ||
| 57 | // Settings | ||
| 58 | getSettings: (keys: string[]) => Promise<Record<string, string | null>>; | ||
| 59 | setSetting: (key: string, value: string) => Promise<void>; | ||
| 60 | deleteSetting: (key: string) => Promise<void>; | ||
| 61 | getDefaultSystemPrompts: () => Promise<Record<"research" | "plan" | "implement", string>>; | ||
| 62 | |||
| 57 | // Dialogs | 63 | // Dialogs |
| 58 | selectDirectory: () => Promise<string | null>; | 64 | selectDirectory: () => Promise<string | null>; |
| 59 | } | 65 | } |
| @@ -110,6 +116,12 @@ const api: ClaudeFlowAPI = { | |||
| 110 | return () => ipcRenderer.removeListener("claude:message", handler); | 116 | return () => ipcRenderer.removeListener("claude:message", handler); |
| 111 | }, | 117 | }, |
| 112 | 118 | ||
| 119 | // Settings | ||
| 120 | getSettings: (keys) => ipcRenderer.invoke("settings:get", keys), | ||
| 121 | setSetting: (key, value) => ipcRenderer.invoke("settings:set", key, value), | ||
| 122 | deleteSetting: (key) => ipcRenderer.invoke("settings:delete", key), | ||
| 123 | getDefaultSystemPrompts: () => ipcRenderer.invoke("settings:getDefaultPrompts"), | ||
| 124 | |||
| 113 | // Dialogs | 125 | // Dialogs |
| 114 | selectDirectory: async () => { | 126 | selectDirectory: async () => { |
| 115 | const result = await ipcRenderer.invoke("dialog:selectDirectory"); | 127 | const result = await ipcRenderer.invoke("dialog:selectDirectory"); |
