feat(electrobun): project wizard phases 1-5 (WIP)

- sanitize.ts: input sanitization (trim, control chars, path traversal)
- provider-scanner.ts: detect Claude/Codex/Ollama/Gemini availability
- model-fetcher.ts: live model lists from 4 provider APIs
- ModelConfigPanel.svelte: per-provider config (thinking, effort, sandbox, temperature)
- WizardStep1-3.svelte: split wizard into composable steps
- CustomDropdown/Checkbox/Radio: themed UI components
- provider-handlers.ts: provider.scan + provider.models RPC
- Wire providers into wizard step 3 (live detection + model lists)
- Replace native selects in 5 settings panels with CustomDropdown
This commit is contained in:
Hibryda 2026-03-23 13:05:07 +01:00
parent b7fc3a0f9b
commit d4014a193d
25 changed files with 2112 additions and 759 deletions

View file

@ -9,6 +9,7 @@
{ id: 'claude', label: 'Claude', desc: 'Anthropic — claude-opus/sonnet/haiku' },
{ id: 'codex', label: 'Codex', desc: 'OpenAI — gpt-5.4' },
{ id: 'ollama', label: 'Ollama', desc: 'Local — qwen3, llama3, etc.' },
{ id: 'gemini', label: 'Gemini', desc: 'Google — gemini-2.5-pro' },
];
let defaultShell = $state('/bin/bash');
@ -21,6 +22,7 @@
claude: { enabled: true, model: 'claude-opus-4-5' },
codex: { enabled: false, model: 'gpt-5.4' },
ollama: { enabled: false, model: 'qwen3:8b' },
gemini: { enabled: false, model: 'gemini-2.5-pro' },
});
let expandedProvider = $state<string | null>(null);