pediatric-ai-scribe-v3/public/js
Daniel 571a013d29
Some checks failed
Forgejo Android APK / Root app tests (push) Successful in 47s
Forgejo Docker Build / Root app tests (push) Successful in 47s
Forgejo Android APK / Build signed APK (push) Successful in 2m9s
Forgejo Docker Build / Build Docker image (push) Successful in 11s
Forgejo Docker Build / Deploy to the host (push) Failing after 0s
feat: optional web search, admin-enabled and off by default
The one feature here that sends text outside the building, so the defaults are
the careful ones: disabled unless an administrator turns it on, opt-in per
generation even then, and the option is hidden entirely rather than shown as
something a user can tick and be refused.

Only the search query leaves. Library excerpts, the generated resource and
anything about the user never do. Both screens say so plainly, because a topic
typed while drafting clinical material can carry clinical detail and the
provider keeps its own logs.

Four providers behind one shape, so swapping changes nothing downstream: Tavily,
Serper over Google, Brave, and SearXNG — the only one where the query does not
reach a commercial third party at all, which is why it is worth supporting even
though it needs somewhere to run.

The tool description says when NOT to search, because a model handed a search
tool will reach for it constantly: not for settled clinical knowledge, which is
what the indexed library is for, and one search per resource. That last one is
enforced in the route with toolChoice: 'none' on the continuation rather than
trusted to the model.

A failed search never fails a generation — same contract as corpus retrieval.
The resource is written without it and the response says what was searched for
and what came back, so a query that left the network is visible rather than
silent.

The API key is masked on read and preserved when the field is left blank, the
handling the OIDC client secret already gets, so changing provider cannot
silently wipe a working key.

Verified on the running instance: with nothing configured, webSearchAvailable is
false, and a request asking for it anyway is ignored rather than honoured.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dv6sqaY6Vq3ChZHMem3cnU
2026-09-11 15:47:06 +02:00
..
admin fix: the assistant settings page says what saves what 2026-09-11 04:04:31 +02:00
assistant fix: resolve a citation by its number, not its position in the array 2026-09-10 19:10:54 +02:00
bedside
calculators
learningHub feat: integrate durable image jobs/private assets into current core 2026-09-07 16:53:42 +02:00
notes feat: ship reviewed prompt history, conversation limits and account protections 2026-09-07 04:01:01 +02:00
wellVisit
accountBoundary.js feat: ship reviewed prompt history, conversation limits and account protections 2026-09-07 04:01:01 +02:00
admin-docs.js
admin.js feat: optional web search, admin-enabled and off by default 2026-09-11 15:47:06 +02:00
app.js feat: a retried transcript goes back to the tab the audio came from 2026-09-11 12:39:50 +02:00
audioBackup.js feat: a retried transcript goes back to the tab the audio came from 2026-09-11 12:39:50 +02:00
auth.js revert: remove the signed-out assistant preview 2026-09-11 05:09:02 +02:00
authFetch.js revert: remove the signed-out assistant preview 2026-09-11 05:09:02 +02:00
calc-math.js
calculators.js
chartReview.js
clinicalAssistant.js fix: recordings that produced nothing, and the boxes that zoomed on iOS 2026-09-11 00:16:19 +02:00
diagrams.js
documents.js feat: ship reviewed prompt history, conversation limits and account protections 2026-09-07 04:01:01 +02:00
drugs-loader.js
e2e-bootstrap.js
ed-encounters.js feat: a retried transcript goes back to the tab the audio came from 2026-09-11 12:39:50 +02:00
encounters.js feat: ship reviewed prompt history, conversation limits and account protections 2026-09-07 04:01:01 +02:00
extensions.js fix: image Done state, chat titles that keep whole words, and readable extension cards 2026-09-10 06:44:22 +02:00
generatedImages.js perf: store real image previews in MinIO, generated at creation and on demand 2026-09-10 06:39:30 +02:00
hospitalCourse.js
learningHub.js feat: the Learning screen can ask for grounding, and says what it got 2026-09-11 14:39:49 +02:00
liveEncounter.js feat: a retried transcript goes back to the tab the audio came from 2026-09-11 12:39:50 +02:00
memories.js
milestones.js
milestonesData.js
myResources.js feat: optional web search, admin-enabled and off by default 2026-09-11 15:47:06 +02:00
nextcloud.js
notes.js feat: ship reviewed prompt history, conversation limits and account protections 2026-09-07 04:01:01 +02:00
peGuide.js
recordingModules.js feat: a retried transcript goes back to the tab the audio came from 2026-09-11 12:39:50 +02:00
secureStorage.js feat: ship reviewed prompt history, conversation limits and account protections 2026-09-07 04:01:01 +02:00
shadess.js feat: a retried transcript goes back to the tab the audio came from 2026-09-11 12:39:50 +02:00
sickVisit.js feat: a retried transcript goes back to the tab the audio came from 2026-09-11 12:39:50 +02:00
soap.js feat: a retried transcript goes back to the tab the audio came from 2026-09-11 12:39:50 +02:00
speechRecognition.js
transcriptionSettings.js
ui-state.js
voiceDictation.js feat: a retried transcript goes back to the tab the audio came from 2026-09-11 12:39:50 +02:00
voicePreferences.js
wellVisit.js feat: ship reviewed prompt history, conversation limits and account protections 2026-09-07 04:01:01 +02:00