pediatric-ai-scribe-v3/public/js
Daniel ce31a1e343 refactor(client): migrate ui-state.js → client/ui-state.ts (first real
frontend module conversion)

ui-state was the smallest, most isolated module: 35 lines, zero legacy-
global dependencies, single concern (localStorage helpers under the
'ped_ui/' namespace). Ideal first migration to validate the strangler-
fig pattern end-to-end.

Changes:
- New: client/ui-state.ts — exports get/set/del + UIState bundle.
  Keeps (window as any).UIState = UIState assignment so the 10+ legacy
  consumers (sub-nav.js, peGuide.js, app.js, etc.) keep working without
  modification. As each consumer is migrated, it will replace the
  window.UIState read with an explicit import.
- client/main.ts: import './ui-state' so it gets bundled into main.js.
- scripts/build-client.mjs: explicit ENTRIES list (just 'main.ts' for
  now) — was scanning every top-level .ts as an entry, which produced
  duplicate ui-state.js bundle.
- public/index.html: <script defer src="/js/ui-state.js"> removed; the
  TS bundle (/dist/main.js) now provides window.UIState.
- public/js/ui-state.js: deleted (now lives in client/).

Verification:
- npm run typecheck:client → 0 errors
- npm run build:client → 349-byte main.js bundle (gzipped will be ~200B)
- 46/46 unit tests pass
- The 10 cross-file consumers of UIState.get/set/del still work because
  the window assignment lives in the bundle.

Pattern documented for next migrations: each new client/X.ts is
imported as a side-effect from main.ts. The window-bridge stays until
every consumer also moves to ES imports.
2026-04-28 00:42:44 +02:00
..
bedside feat: don't-miss tooltip after notes + bedside suture selector 2026-04-26 20:26:11 +02:00
admin.js fix(admin): restore SSO settings loading on admin panel 2026-04-21 22:19:50 +02:00
app.js feat: don't-miss tooltip after notes + bedside suture selector 2026-04-26 20:26:11 +02:00
audioBackup.js v6.1: Turnstile bot protection, LiteLLM provider, PPTX tables, audio backup fixes, docs 2026-04-04 22:56:24 +02:00
auth.js Hide APK download link on the native Android app 2026-04-14 22:47:59 +02:00
authFetch.js Batch of security + scale fixes 2026-04-14 05:24:40 +02:00
browserWhisper.js FIX: Browser Whisper - 100% self-hosted, zero CDN dependencies 2026-03-31 23:12:21 +00:00
calc-math.js feat: Bedside clinical reference module + age→weight estimator + dose-math unit tests 2026-04-20 02:49:42 +02:00
calculators.js feat(ui-state): persist sub-pill selections across reload + sign-out 2026-04-23 18:58:38 +02:00
chartReview.js Add automatic ICD-10 and CPT billing code suggestions 2026-04-11 01:50:17 +02:00
documents.js Hybrid auth: cookie-only on web, Keychain Bearer on mobile 2026-04-14 04:11:55 +02:00
drugs-loader.js feat: B — extract drug data to public/data/drugs.json (schema v1.0) 2026-04-20 04:23:24 +02:00
e2e-bootstrap.js feat(nav): promote Bedside to its own tab; reorganise sidebar sections 2026-04-23 18:58:38 +02:00
ed-encounters.js feat: ED encounters + notes model selector; remove AI corrections; fix notes framing 2026-04-26 19:06:00 +02:00
encounters.js feat: ED encounters + notes model selector; remove AI corrections; fix notes framing 2026-04-26 19:06:00 +02:00
extensions.js fix(ui): replace native alert/confirm with showConfirm/showToast helpers 2026-04-22 19:29:53 +02:00
hospitalCourse.js Add automatic ICD-10 and CPT billing code suggestions 2026-04-11 01:50:17 +02:00
learningHub.js Security hardening: PHI encryption, argon2, DOMPurify, SRI 2026-04-14 02:49:38 +02:00
liveEncounter.js feat: don't-miss tooltip after notes + bedside suture selector 2026-04-26 20:26:11 +02:00
memories.js feat: ED encounters + notes model selector; remove AI corrections; fix notes framing 2026-04-26 19:06:00 +02:00
milestones.js v6.2: Session management, password change, audit logging, refine context, UI fixes 2026-04-08 20:27:45 +02:00
milestonesData.js v4: Fix milestones display + add OpenID auth + 100MB PDF support 2026-04-01 17:59:51 +00:00
nextcloud.js Fix WebDAV selection, pdf-parse, prompt(), CSP, security issues 1/2/4/5 2026-03-24 02:28:43 -04:00
notes.js feat: ED encounters + notes model selector; remove AI corrections; fix notes framing 2026-04-26 19:06:00 +02:00
pediatricScheduleData.js feat(wellvisit): add Expected Reflexes section to By Visit Age 2026-04-21 22:20:07 +02:00
peGuide.js fix(pe-guide): remove PVC entry from cardiac sounds library 2026-04-23 18:58:38 +02:00
secureStorage.js Add hardware-backed secure storage for mobile auth token 2026-04-14 02:33:32 +02:00
shadess.js feat: ED encounters + notes model selector; remove AI corrections; fix notes framing 2026-04-26 19:06:00 +02:00
sickVisit.js feat: don't-miss tooltip after notes + bedside suture selector 2026-04-26 20:26:11 +02:00
soap.js feat: ED encounters + notes model selector; remove AI corrections; fix notes framing 2026-04-26 19:06:00 +02:00
speechRecognition.js Add Web Speech Recognition option for real-time streaming 2026-03-31 21:57:24 +00:00
transcriptionSettings.js Replace all browser dialogs with modern modal, add OIDC admin UI 2026-04-09 02:43:23 +02:00
voiceDictation.js feat: ED encounters + notes model selector; remove AI corrections; fix notes framing 2026-04-26 19:06:00 +02:00
voicePreferences.js Fix TTS preview for 'Server default' voice option 2026-03-31 16:15:41 +00:00
wellVisit.js feat(ui-state): persist sub-pill selections across reload + sign-out 2026-04-23 18:58:38 +02:00
whisperWorker.js FIX: Browser Whisper - 100% self-hosted, zero CDN dependencies 2026-03-31 23:12:21 +00:00
whisperWorkerV2.js v16: Make Browser Whisper CDN failure graceful with clear warnings 2026-03-31 16:18:46 +00:00