- M3: hand-rolled service worker (precache + runtime /ort caching), precache manifest injection, SW registration/update toast, manifest + generated icons, production build script, offline indicator in ModelPicker (D-005/D-007) - M4 backend: bun:sqlite users/sessions (D-009), Passport local strategy behind connect-compat adapter (D-008), /api/auth routes wired into dev+prod serving, Bun.password Argon2id, 38 auth tests - M4 frontend: AuthForms + useAuth + framework-free authClient, session-aware header, anonymous-first fail-silent offline handling, 18 client tests - D-013: server engine (M5) will use faster-whisper via Python sidecar; browser side stays Transformers.js (CTranslate2 has no WASM build) - bun test: 83 pass / tsc --noEmit clean - Note: M3 doc closeout (WorkBreakdown/Architecture/tests/offline.md) still in flight from a background agent; follow-up commit will finish docs Co-Authored-By: Claude Fable 5 <[email protected]>
24 lines
1022 B
HTML
24 lines
1022 B
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8" />
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
<link
|
|
rel="icon"
|
|
href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Ctext y='.9em' font-size='90'%3E%F0%9F%8E%99%EF%B8%8F%3C/text%3E%3C/svg%3E"
|
|
/>
|
|
<!-- Relative hrefs: Bun's HTML loader must resolve every <link href> to a
|
|
real file (absolute URLs fail the build); it hashes + rewrites them.
|
|
The manifest's own icon URLs stay at the fixed /icons/ paths, which
|
|
src/index.ts (dev) and scripts/build.ts (production) serve. -->
|
|
<link rel="manifest" href="./pwa/manifest.webmanifest" />
|
|
<meta name="theme-color" content="#16181d" />
|
|
<link rel="apple-touch-icon" href="./pwa/icons/icon-192.png" />
|
|
<title>Whisper Web — on-device speech-to-text</title>
|
|
</head>
|
|
<body>
|
|
<div id="root"></div>
|
|
<script type="module" src="frontend.tsx"></script>
|
|
</body>
|
|
</html>
|