@@ -12,6 +12,10 @@ interface SettingsModalProps {
1212 setGithubAuth : ( auth : GitHubAuth | null ) => void ;
1313 bgStyle : BackgroundStyle ;
1414 setBgStyle : ( style : BackgroundStyle ) => void ;
15+ systemPrompt : string ;
16+ setSystemPrompt : ( prompt : string ) => void ;
17+ systemPromptEnabled : boolean ;
18+ setSystemPromptEnabled : ( enabled : boolean ) => void ;
1519}
1620
1721// Display labels for background styles
@@ -54,6 +58,10 @@ export default function SettingsModal({
5458 setGithubAuth,
5559 bgStyle,
5660 setBgStyle,
61+ systemPrompt,
62+ setSystemPrompt,
63+ systemPromptEnabled,
64+ setSystemPromptEnabled,
5765} : SettingsModalProps ) {
5866 const [ activeTab , setActiveTab ] = useState < SettingsTab > ( 'general' ) ;
5967 const [ isConnecting , setIsConnecting ] = useState ( false ) ;
@@ -174,6 +182,36 @@ export default function SettingsModal({
174182 { /* General Tab */ }
175183 { activeTab === 'general' && (
176184 < >
185+ { /* System Prompt Section */ }
186+ < div className = "rounded-xl border border-slate-800/60 bg-slate-900/60 p-4" >
187+ < div className = "flex items-center justify-between mb-1" >
188+ < h3 className = "text-sm font-semibold text-slate-200" > System Prompt</ h3 >
189+ < button
190+ onClick = { ( ) => setSystemPromptEnabled ( ! systemPromptEnabled ) }
191+ className = { `relative inline-flex h-5 w-9 items-center rounded-full transition-colors focus:outline-none ${ systemPromptEnabled ? 'bg-blue-500' : 'bg-slate-700' } ` }
192+ aria-checked = { systemPromptEnabled }
193+ role = "switch"
194+ aria-label = "Enable system prompt"
195+ >
196+ < span className = { `inline-block h-3.5 w-3.5 transform rounded-full bg-white shadow transition-transform ${ systemPromptEnabled ? 'translate-x-4.5' : 'translate-x-0.5' } ` } />
197+ </ button >
198+ </ div >
199+ < p className = "text-xs text-slate-400 leading-relaxed mb-3" >
200+ Injected as the first message in every request. Disable for unmodified model behavior.
201+ </ p >
202+ < textarea
203+ value = { systemPrompt }
204+ onChange = { e => setSystemPrompt ( e . target . value ) }
205+ disabled = { ! systemPromptEnabled }
206+ placeholder = "You are a helpful assistant..."
207+ rows = { 5 }
208+ className = { `w-full rounded-lg border px-3 py-2 text-sm font-mono resize-y transition-colors focus:outline-none focus:ring-1 focus:ring-blue-500/50 ${ systemPromptEnabled
209+ ? 'bg-slate-800/60 border-slate-700/60 text-slate-200 placeholder-slate-500'
210+ : 'bg-slate-800/30 border-slate-800/40 text-slate-500 placeholder-slate-600 cursor-not-allowed'
211+ } `}
212+ />
213+ </ div >
214+
177215 { /* GitHub Connection Section */ }
178216 < div className = "rounded-xl border border-slate-800/60 bg-slate-900/60 p-4" >
179217 < h3 className = "text-sm font-semibold text-slate-200 mb-1" > GitHub Connection</ h3 >
0 commit comments