pediatric-ai-scribe-v3/src/routes
Daniel 07161c6fa8
Some checks failed
Forgejo Docker Build / Root app tests (push) Successful in 47s
Forgejo Docker Build / Build Docker image (push) Successful in 8s
Forgejo Docker Build / End-to-end (browser) (push) Failing after 6s
feat: speech models have a roster; each brings its voices, users choose across all of them
Discover lists speech models with the voices each accepts and a + Add that
puts the model on tts.roster. The Roster card lists every model with a voice
picker, Test, Make default and Remove. Test on any row (or a discovered model
not yet added) fills the test panel's voice list with that model's voices, so
Orpheus and Kokoro can be heard one voice at a time before either is chosen.

The default is a pair — PUT /config/tts/default sets tts.model and tts.voice
together and refuses a voice the model does not accept, naming the ones it
does. The generic setter no longer takes tts.model/tts.voice one at a time,
which is how a Kokoro voice got paired with Orpheus. A default that leaves
the roster stops being the default.

Users pick from the voices of every roster model, grouped by model in
Settings; the stored value is "model|voice" so read-aloud sends the voice to
the model that accepts it. A bare voice saved before there was a roster is
read as a voice of the default model. chooseTTS is the one place the pair is
decided, shared by read-aloud, the admin test and the settings options.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dv6sqaY6Vq3ChZHMem3cnU
2026-09-13 04:49:24 +02:00
..
admin.js feat: ship reviewed prompt history, conversation limits and account protections 2026-09-07 04:01:01 +02:00
adminConfig.js feat: speech models have a roster; each brings its voices, users choose across all of them 2026-09-13 04:49:24 +02:00
adminDocs.js harden clinical assistant source handling 2026-05-09 19:59:04 +02:00
adminMilestones.js fix: admin routers authenticate themselves; track the audit in TODO 2026-09-10 16:03:20 +02:00
audioBackups.js fix: the signed-out preview never worked, because /api was gated wholesale 2026-09-11 02:00:59 +02:00
auth.js feat: a key per search provider, and the sign-in code email looks like our mail 2026-09-13 02:30:17 +02:00
billing.js Batch of security + scale fixes 2026-04-14 05:24:40 +02:00
chartReview.js tighten chart review source coverage 2026-05-08 07:10:00 +02:00
clinicalAssistant.js feat: a text-only model can ask a model that can see; and the image regex is gone 2026-09-12 15:43:36 +02:00
diagrams.js fix: the signed-out preview never worked, because /api was gated wholesale 2026-09-11 02:00:59 +02:00
documents.js fix: the signed-out preview never worked, because /api was gated wholesale 2026-09-11 02:00:59 +02:00
dontMiss.js fix: the signed-out preview never worked, because /api was gated wholesale 2026-09-11 02:00:59 +02:00
edEncounters.js fix: the signed-out preview never worked, because /api was gated wholesale 2026-09-11 02:00:59 +02:00
encounters.js fix: the signed-out preview never worked, because /api was gated wholesale 2026-09-11 02:00:59 +02:00
extensions.js fix: the signed-out preview never worked, because /api was gated wholesale 2026-09-11 02:00:59 +02:00
generatedImages.js feat: retire Learning Hub 2026-09-12 20:14:20 +02:00
hospitalCourse.js feat: ship reviewed prompt history, conversation limits and account protections 2026-09-07 04:01:01 +02:00
hpi.js feat: ship reviewed prompt history, conversation limits and account protections 2026-09-07 04:01:01 +02:00
logs.js harden logging and observability 2026-05-08 19:08:19 +02:00
memories.js feat: retire Learning Hub 2026-09-12 20:14:20 +02:00
milestones.js Prompt-injection wrap: remaining AI routes 2026-04-14 05:31:54 +02:00
myResources.js fix: My Resources uses the image model you chose for it, and says so on save 2026-09-13 02:37:57 +02:00
nextcloud.js feat: a ciphertext now only decrypts in the row it was written for 2026-09-12 21:25:24 +02:00
notes.js fix: the signed-out preview never worked, because /api was gated wholesale 2026-09-11 02:00:59 +02:00
oidc.js feat: ship reviewed prompt history, conversation limits and account protections 2026-09-07 04:01:01 +02:00
patientEducation.js fix: the signed-out preview never worked, because /api was gated wholesale 2026-09-11 02:00:59 +02:00
peGuide.js fix(pe-guide): correct route imports (prod 500 regression) 2026-04-23 18:58:38 +02:00
refine.js Batch of security + scale fixes 2026-04-14 05:24:40 +02:00
sessions.js Stop leaking e.message to clients across all routes 2026-04-14 03:04:24 +02:00
sickVisit.js feat: ship reviewed prompt history, conversation limits and account protections 2026-09-07 04:01:01 +02:00
soap.js feat: ship reviewed prompt history, conversation limits and account protections 2026-09-07 04:01:01 +02:00
transcribe.js fix: transcription that returned nothing, and one Registration card 2026-09-11 00:41:11 +02:00
tts.js feat: speech models have a roster; each brings its voices, users choose across all of them 2026-09-13 04:49:24 +02:00
userPreferences.js feat: speech models have a roster; each brings its voices, users choose across all of them 2026-09-13 04:49:24 +02:00
wellVisit.js feat: ship reviewed prompt history, conversation limits and account protections 2026-09-07 04:01:01 +02:00