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 /renderer/src/components/SettingsPage.tsx | |
| 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 'renderer/src/components/SettingsPage.tsx')
| -rw-r--r-- | renderer/src/components/SettingsPage.tsx | 51 |
1 files changed, 51 insertions, 0 deletions
diff --git a/renderer/src/components/SettingsPage.tsx b/renderer/src/components/SettingsPage.tsx new file mode 100644 index 0000000..5267665 --- /dev/null +++ b/renderer/src/components/SettingsPage.tsx | |||
| @@ -0,0 +1,51 @@ | |||
| 1 | import React, { useState } from "react"; | ||
| 2 | import { SystemPromptsSettings } from "./settings/SystemPromptsSettings"; | ||
| 3 | |||
| 4 | type SettingsSection = "system-prompts"; | ||
| 5 | |||
| 6 | interface SettingsPageProps { | ||
| 7 | onClose: () => void; | ||
| 8 | } | ||
| 9 | |||
| 10 | export function SettingsPage({ onClose }: SettingsPageProps) { | ||
| 11 | const [activeSection, setActiveSection] = | ||
| 12 | useState<SettingsSection>("system-prompts"); | ||
| 13 | |||
| 14 | return ( | ||
| 15 | <div className="settings-overlay"> | ||
| 16 | {/* Header — matches the main app header height/style */} | ||
| 17 | <div className="settings-header"> | ||
| 18 | <div className="settings-header-left"> | ||
| 19 | <span className="settings-title">\u2699 Settings</span> | ||
| 20 | </div> | ||
| 21 | <button | ||
| 22 | className="settings-close" | ||
| 23 | onClick={onClose} | ||
| 24 | title="Close settings" | ||
| 25 | > | ||
| 26 | \u00d7 | ||
| 27 | </button> | ||
| 28 | </div> | ||
| 29 | |||
| 30 | <div className="settings-body"> | ||
| 31 | {/* Side nav */} | ||
| 32 | <nav className="settings-nav"> | ||
| 33 | <button | ||
| 34 | className={`settings-nav-item${ | ||
| 35 | activeSection === "system-prompts" ? " active" : "" | ||
| 36 | }`} | ||
| 37 | onClick={() => setActiveSection("system-prompts")} | ||
| 38 | > | ||
| 39 | System Prompts | ||
| 40 | </button> | ||
| 41 | {/* Future sections added here */} | ||
| 42 | </nav> | ||
| 43 | |||
| 44 | {/* Content */} | ||
| 45 | <div className="settings-content"> | ||
| 46 | {activeSection === "system-prompts" && <SystemPromptsSettings />} | ||
| 47 | </div> | ||
| 48 | </div> | ||
| 49 | </div> | ||
| 50 | ); | ||
| 51 | } | ||
