diff options
| author | Adam Malczewski <[email protected]> | 2026-09-24 19:20:37 +0900 |
|---|---|---|
| committer | Adam Malczewski <[email protected]> | 2026-09-24 19:20:37 +0900 |
| commit | 591e2dbe5cbf2283d58debdf92943a075edc4569 (patch) | |
| tree | 11ee2481ed79f257cd6303f44992471ec9282237 /src/app/views | |
| parent | 6556e70e396ec7cc9b2311ef60e00c81722777c7 (diff) | |
| download | dispatch-web-591e2dbe5cbf2283d58debdf92943a075edc4569.tar.gz dispatch-web-591e2dbe5cbf2283d58debdf92943a075edc4569.zip | |
feat(search-backend-selection): Search backend dropdown in Settings
- New features/search-settings: pure view-model (options = available backends
∪ 'None (search disabled)', unconfigured entries disabled with a suffix,
unknown persisted selection prepended, network-seam normalization) + the
SearchBackendField dropdown (save-on-change, spinner/saved/error states,
revert-to-persisted on failure, 503 -> disabled field with a 'search not
available' hint, loading skeleton, help text noting search-mode-only scope).
- store.svelte.ts: searchBackendConfig() / setSearchBackend() over the global
GET/PUT /search/config routes (503 marked unavailable on the failure variant).
- SettingsPane renders the field under the chat limit; ExtensionsPane lists
the new module manifest.
- .dispatch mirrors: wire + transport-contract deltas for the new types/routes.
Diffstat (limited to 'src/app/views')
| -rw-r--r-- | src/app/views/ExtensionsPane.svelte | 2 | ||||
| -rw-r--r-- | src/app/views/SettingsPane.svelte | 5 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/app/views/ExtensionsPane.svelte b/src/app/views/ExtensionsPane.svelte index 7a2343e..6afc2bf 100644 --- a/src/app/views/ExtensionsPane.svelte +++ b/src/app/views/ExtensionsPane.svelte @@ -17,6 +17,7 @@ import { manifest as markdownManifest } from "../../features/markdown"; import { manifest as mcpManifest } from "../../features/mcp"; import { manifest as namedAgentsManifest } from "../../features/named-agents"; + import { manifest as searchSettingsManifest } from "../../features/search-settings"; import { manifest as settingsManifest } from "../../features/settings"; import { manifest as smartScrollManifest } from "../../features/smart-scroll"; import { SurfaceView } from "../../features/surface-host"; @@ -60,6 +61,7 @@ concurrencyManifest, visionManifest, namedAgentsManifest, + searchSettingsManifest, ].map((m) => [m.name, m.description] as const); </script> diff --git a/src/app/views/SettingsPane.svelte b/src/app/views/SettingsPane.svelte index 67a88ec..f119103 100644 --- a/src/app/views/SettingsPane.svelte +++ b/src/app/views/SettingsPane.svelte @@ -8,6 +8,7 @@ */ import { tick } from "svelte"; import { ChatLimitField, type ChatLimitSaveResult } from "../../features/settings"; + import { SearchBackendField } from "../../features/search-settings"; import type { AppViewPorts } from "../view-ports"; let { ports }: { ports: AppViewPorts } = $props(); @@ -31,4 +32,8 @@ <div class="flex flex-col gap-3"> <ChatLimitField chatLimit={store.chatLimit} save={saveChatLimit} /> + <SearchBackendField + load={() => store.searchBackendConfig()} + save={(backend) => store.setSearchBackend(backend)} + /> </div> |
