diff --git a/core/archipelago/src/api/rpc/package/install.rs b/core/archipelago/src/api/rpc/package/install.rs index a2e0d83e..9607f1b0 100644 --- a/core/archipelago/src/api/rpc/package/install.rs +++ b/core/archipelago/src/api/rpc/package/install.rs @@ -720,7 +720,14 @@ impl RpcHandler { )?; let secret_hex = hex::encode(secret); let settings = format!( - "use_default_settings: true\ngeneral:\n instance_name: Archipelago Search\nserver:\n secret_key: \"{}\"\n bind_address: \"0.0.0.0\"\n port: 8080\n limiter: false\nui:\n default_theme: simple\n", + // `search.formats` MUST include json. SearXNG's default is + // html-only, so the JSON API answers 403 — and AIUI's web + // search is a JSON client (`/aiui/api/web-search` proxies + // straight to `/search`). Without this line every AIUI web + // search fails on a node whose SearXNG is running + // perfectly, which reads as the AI being unable to search + // rather than as one missing config key. + "use_default_settings: true\ngeneral:\n instance_name: Archipelago Search\nserver:\n secret_key: \"{}\"\n bind_address: \"0.0.0.0\"\n port: 8080\n limiter: false\nsearch:\n formats:\n - html\n - json\nui:\n default_theme: simple\n", secret_hex ); tokio::fs::create_dir_all(searx_dir) diff --git a/neode-ui/src/services/contextBroker.ts b/neode-ui/src/services/contextBroker.ts index accbf2fa..41c340e2 100644 --- a/neode-ui/src/services/contextBroker.ts +++ b/neode-ui/src/services/contextBroker.ts @@ -538,7 +538,7 @@ export class ContextBroker { method: 'music.list-tracks', params: { limit: 500 }, }) - return { films: [], songs: adaptLibraryTracks(res.tracks ?? []), podcasts: [] } + return { ...emptyBundle(), songs: adaptLibraryTracks(res.tracks ?? []) } } catch { return emptyBundle() } diff --git a/scripts/first-boot-containers.sh b/scripts/first-boot-containers.sh index 6751f51b..561998e1 100755 --- a/scripts/first-boot-containers.sh +++ b/scripts/first-boot-containers.sh @@ -1225,6 +1225,12 @@ server: bind_address: "0.0.0.0" port: 8080 limiter: false +# json is required: SearXNG defaults to html-only and answers 403 on the +# JSON API, which is the only thing AIUI's web search speaks. +search: + formats: + - html + - json ui: default_theme: simple SEARXCFG