feat(electrobun): port all Tauri features — full settings, popup menus, provider capabilities

New components (8):
- provider-capabilities.ts: per-provider feature flags (claude/codex/ollama)
- settings/AppearanceSettings.svelte: theme, fonts, cursor, scrollback
- settings/AgentSettings.svelte: shell, CWD, permissions, providers
- settings/SecuritySettings.svelte: keyring, secrets, branch policies
- settings/ProjectSettings.svelte: per-project provider/model/worktree/sandbox
- settings/OrchestrationSettings.svelte: wake strategy, notifications, anchors
- settings/AdvancedSettings.svelte: logging, OTLP, plugins, import/export

Updated:
- ChatInput: radial context indicator (78% demo, color-coded arc),
  4 popup menus (upload/context/web/slash), provider-gated icons
- SettingsDrawer: 6-category sidebar shell
- AgentPane: passes provider + contextPct to ChatInput
This commit is contained in:
Hibryda 2026-03-20 04:50:57 +01:00
parent 54d6f0b94a
commit 0b9e8b305a
15 changed files with 1510 additions and 441 deletions

View file

@ -0,0 +1,45 @@
export type ProviderId = 'claude' | 'codex' | 'ollama';
export interface ProviderCapabilities {
upload: boolean;
context: boolean;
web: boolean;
slash: boolean;
images: boolean;
defaultModel: string;
label: string;
}
export const PROVIDER_CAPABILITIES: Record<ProviderId, ProviderCapabilities> = {
claude: {
upload: true,
context: true,
web: true,
slash: true,
images: true,
defaultModel: 'claude-opus-4-5',
label: 'Claude',
},
codex: {
upload: true,
context: true,
web: false,
slash: true,
images: false,
defaultModel: 'gpt-5.4',
label: 'Codex',
},
ollama: {
upload: false,
context: true,
web: false,
slash: true,
images: false,
defaultModel: 'qwen3:8b',
label: 'Ollama',
},
};
export function getCapabilities(provider: string): ProviderCapabilities {
return PROVIDER_CAPABILITIES[provider as ProviderId] ?? PROVIDER_CAPABILITIES.claude;
}