pediatric-ai-scribe-v3/src/utils
Daniel 0163d40811
Some checks failed
Forgejo Docker Build / Root app tests (push) Successful in 47s
Forgejo Docker Build / Build Docker image (push) Successful in 6s
Forgejo Docker Build / End-to-end (browser) (push) Failing after 8s
fix: every presentation takes a theme, not only the ones the model designed
"Change template" answered "no slide layout" for 28 of the 41 presentations
in production: the theme lived only inside the deck JSON, and a presentation
whose deck reply failed twice and fell back to markdown slides had nowhere
to keep one. The theme is a column now, written at generation and by the
picker, and the markdown slide builder carries it to the same renderer field
a designed deck uses. A deck's own theme field is kept in step. Articles are
the only thing refused — they have no slides.

A deck reply that fails to parse is logged with its first 240 characters, so
the next "the reply was not a deck" can be read rather than guessed at.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dv6sqaY6Vq3ChZHMem3cnU
2026-09-13 13:32:24 +02:00
..
adminLockdown.js refactor: sign-in codes and registration invitations leave; the SSO has both 2026-09-13 06:11:00 +02:00
ai.js fix: an empty model reply is logged with its finish reason, and a pool batch that gets one is retried once 2026-09-13 06:41:49 +02:00
audioBackupStore.js refactor: one place decides which bucket, on which S3, with which credentials 2026-09-10 17:09:13 +02:00
auditQueue.js Batch of security + scale fixes 2026-04-14 05:24:40 +02:00
buildId.js feat: ship reviewed prompt history, conversation limits and account protections 2026-09-07 04:01:01 +02:00
citationAudit.js fix: recordings that produced nothing, and the boxes that zoomed on iOS 2026-09-11 00:16:19 +02:00
clinicalAnswer.js fix: the export's last table column wraps again, and citations-off strips every marker form 2026-09-13 05:42:32 +02:00
clinicalConversation.js fix: an assistant attachment must be the image type it claims to be 2026-09-12 19:00:10 +02:00
clinicalMcpClient.js refactor: ped-ai calls clinical_semantic_search only 2026-09-10 17:22:40 +02:00
clinicalPromptPool.js fix: a retried starter-question batch gets other snippets, and the pool's model is documented 2026-09-13 06:46:41 +02:00
clinicalPrompts.js fix: mobile layout regression, workspace menu in the assistant rail, prompt as principles 2026-09-09 22:24:10 +02:00
clinicalRetrieval.js refactor: retrieval is text-only; admins can add model ids discovery never returns 2026-09-09 23:35:06 +02:00
clinicalTranslation.js fix: translated answers keep their source chips; the patient take home can be translated 2026-09-09 18:40:23 +02:00
config.js Feat: admin CMS, save/resume encounters, user templates, SSHADESS, well visit notes, sick visit, ROS/PE checklists, ICD-10 diagnoses 2026-03-22 16:43:39 -04:00
crypto.js feat: a ciphertext now only decrypts in the row it was written for 2026-09-12 21:25:24 +02:00
deckBuild.js fix: a second deck reused the first deck's pictures 2026-09-12 08:26:09 +02:00
deckReview.js feat: modifying a deck can see it 2026-09-12 06:55:16 +02:00
deckSample.js feat: a theme is shown by a sample deck you download, not a picture 2026-09-12 22:24:05 +02:00
deckSchema.js fix: an assistant attachment must be the image type it claims to be 2026-09-12 19:00:10 +02:00
docSpec.js feat: a slide can be drawn from primitives when the named layouts have no word for it 2026-09-11 22:12:26 +02:00
documentExport.js fix: every presentation takes a theme, not only the ones the model designed 2026-09-13 13:32:24 +02:00
errors.js harden logging and observability 2026-05-08 19:08:19 +02:00
extensionTransfer.js feat: ship reviewed prompt history, conversation limits and account protections 2026-09-07 04:01:01 +02:00
fileLog.js fix: a second deck reused the first deck's pictures 2026-09-12 08:26:09 +02:00
fileType.js Security hardening: PHI encryption, argon2, DOMPurify, SRI 2026-04-14 02:49:38 +02:00
generatedImageLinks.js feat: retire Learning Hub 2026-09-12 20:14:20 +02:00
generatedImages.js feat: retire Learning Hub 2026-09-12 20:14:20 +02:00
generatedImageStorage.js feat: an image library — every picture this account has made 2026-09-12 14:36:30 +02:00
generationOptions.js Send reasoning options only to supported model 2026-08-27 21:25:38 +02:00
imageTool.js fix: a second deck reused the first deck's pictures 2026-09-12 08:26:09 +02:00
learningRetrieval.js feat: Learning resources can be grounded in the clinical corpus 2026-09-11 14:03:05 +02:00
litellm.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
logger.js fix: a second deck reused the first deck's pictures 2026-09-12 08:26:09 +02:00
metrics.js fix: generation stopped working whenever the slide reviewer was switched off 2026-09-12 00:57:30 +02:00
models.js refactor: Google models go through LiteLLM; the Vertex SDK is gone 2026-09-11 13:51:22 +02:00
modelVision.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
nextcloudFiles.js feat: a ciphertext now only decrypts in the row it was written for 2026-09-12 21:25:24 +02:00
notify.js Add biometric auth, ntfy push notifications, mobile improvements 2026-04-11 02:35:07 +02:00
objectStorage.js refactor: one place decides which bucket, on which S3, with which credentials 2026-09-10 17:09:13 +02:00
openapi.js fix: an array of route paths is several operations, pages are none, and the prompt-pool build says what it did 2026-09-13 06:35:25 +02:00
openapiRoutes.js refactor: sign-in codes and registration invitations leave; the SSO has both 2026-09-13 06:11:00 +02:00
passwords.js Security hardening: PHI encryption, argon2, DOMPurify, SRI 2026-04-14 02:49:38 +02:00
patientTakehome.js feat: patient take home (copy/export/email), composer mic dictation, voice conversation mode, provider-aware translate languages 2026-09-08 20:01:46 +02:00
platform.js Sliding 24h idle timeout (web) + persistent mobile + 2FA backup codes 2026-04-14 04:24:54 +02:00
policy.js feat: ship reviewed prompt history, conversation limits and account protections 2026-09-07 04:01:01 +02:00
promptCatalog.js fix: the image settings card can save again; Learning Hub is out of the admin 2026-09-13 01:39:15 +02:00
promptRevisions.js feat: ship reviewed prompt history, conversation limits and account protections 2026-09-07 04:01:01 +02:00
prompts.js feat: ship reviewed prompt history, conversation limits and account protections 2026-09-07 04:01:01 +02:00
promptSafe.js Batch of security + scale fixes 2026-04-14 05:24:40 +02:00
pubmedSearch.js feat: My Resources says what it is, offers its sources in one place, and Modify gets them too 2026-09-11 18:54:17 +02:00
redact.js harden logging and observability 2026-05-08 19:08:19 +02:00
redis.js feat: improve clinical assistant prompts 2026-06-06 00:01:07 +02:00
resourceImages.js feat: retire Learning Hub 2026-09-12 20:14:20 +02:00
sessions.js Add node-pg-migrate for versioned schema changes + better mobile UA labels 2026-04-14 05:06:19 +02:00
slideShapes.js feat: record what a deck wanted and could not have 2026-09-11 22:51:15 +02:00
slideSpec.js fix: every presentation takes a theme, not only the ones the model designed 2026-09-13 13:32:24 +02:00
sttProvider.js fix: patch nodemailer; Settings offers STT models the gateway really has 2026-09-10 15:54:57 +02:00
ttsProvider.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
urlSafety.js feat: integrate durable image jobs/private assets into current core 2026-09-07 16:53:42 +02:00
visionTool.js fix: the active library view is unmistakable, and a leading question cannot mislead the vision model 2026-09-12 16:27:21 +02:00
webSearch.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