@@ -28,7 +28,7 @@ function AIConfigPanel() {
2828 const { configureAI, isConfigured, modelInfo } = useAITheme ( ) ;
2929 const [ apiKey , setApiKey ] = useState ( '' ) ;
3030 const [ provider , setProvider ] = useState < typeof PROVIDERS [ number ] [ 'value' ] > ( 'openai' ) ;
31- const [ remember , setRemember ] = useState ( true ) ;
31+ const [ remember , setRemember ] = useState ( false ) ;
3232 const [ expanded , setExpanded ] = useState ( ! isConfigured ) ;
3333
3434 // Load saved config on mount
@@ -40,6 +40,7 @@ function AIConfigPanel() {
4040 if ( key ) {
4141 setApiKey ( key ) ;
4242 setProvider ( p || 'openai' ) ;
43+ setRemember ( true ) ;
4344 configureAI ( {
4445 provider : p || 'openai' ,
4546 apiKey : key ,
@@ -70,6 +71,7 @@ function AIConfigPanel() {
7071 } else {
7172 localStorage . removeItem ( AI_CONFIG_STORAGE_KEY ) ;
7273 }
74+ setApiKey ( '' ) ;
7375 setExpanded ( false ) ;
7476 } ;
7577
@@ -90,7 +92,10 @@ function AIConfigPanel() {
9092 { expanded && (
9193 < div className = "ai-config-form" >
9294 < p className = "ai-config-hint" >
93- Enter your API key to enable AI theme generation. It stays in your browser only.
95+ Your API key is stored only on your device and is never sent to our servers or collected. It is used only to call the AI provider you choose.
96+ </ p >
97+ < p className = "ai-config-security" >
98+ We never collect or log your key. For stronger security, uncheck Remember so the key is not saved to disk (session only).
9499 </ p >
95100 < div className = "ai-config-row" >
96101 < select
@@ -105,9 +110,11 @@ function AIConfigPanel() {
105110 ) ) }
106111 </ select >
107112 < input
108- type = "password"
109- className = "ai-config-input"
113+ type = "text"
114+ autoComplete = "off"
115+ className = "ai-config-input ai-config-key-input"
110116 placeholder = "API Key"
117+ spellCheck = { false }
111118 value = { apiKey }
112119 onChange = { ( e ) => setApiKey ( e . target . value ) }
113120 onKeyDown = { ( e ) => e . key === 'Enter' && handleSave ( ) }
@@ -197,8 +204,8 @@ function AIGenerator() {
197204 try {
198205 await generate ( prompt ) ;
199206 setPrompt ( '' ) ;
200- } catch ( e ) {
201- console . error ( 'Failed to generate:' , e ) ;
207+ } catch {
208+ // Error shown via useAITheme() .error; do not log to avoid leaking any sensitive data
202209 }
203210 } ;
204211
0 commit comments