Commit Graph
18 Commits
Author SHA1 Message Date
Lucas WintherandClaude Opus 5.5 4942461f79 Add typecheck + CI checks, light theme with self-hosted Inter, fix real-model test
- Typecheck: typescript 7 devDependency, `bun run typecheck`; CI gains a
  `check` stage (install, typecheck, fast tests) gating image builds (D-038).
- Light theme: every colour is a token; prefers-color-scheme: light
  overrides them. Inter Variable self-hosted from @fontsource-variable/inter,
  kept out of Bun's CSS inlining and precached (scripts/fonts.ts, D-037).
  Backend select no longer overflows on narrow phones.
- tests/live-real-model.test.ts: time budget scales with clip length and
  en_alien gets a measured WER bar; it had failed since July (D-039).
- Delete the temporary isolate_wer2.ts; fix icon "not checked in" comments
  and the README's model-weights location.
- Agent docs: branch naming, typecheck, CI, Bun CSS gotcha, permissions.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 20:52:13 +01:00
Lucas WintherandClaude Opus 5.5 0ece4b3a2a Bootstrap agent-ready docs and permissions (D-036)
Root AGENTS.md is now the single source of truth for coding agents;
CLAUDE.md, GEMINI.md and docs/CLAUDE.md are pointers. The product spec
moves from docs/CLAUDE.md to PRODUCT.md, DESIGN.md records the shipped
visual system, and docs/PERMISSIONS.md defines agent permission tiers
rendered to .claude/, .codex/ and .gemini/. Adds docs/specs/ and
docs/plans/, logs issues noticed (not fixed) in WorkBreakdown.md.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-29 19:51:30 +01:00
Lucas Winther 7ab41f4299 Document D-035: whisper-tiny multilingual vs .en speed gap is a content-dependent hallucination-loop effect, not a config bug
Measured with the ort-web-under-Bun harness: no reliable speed difference on
clean, language-matched audio. On out-of-distribution audio (wrong/undetected
language), the multilingual model's extra forced task token measurably
changes how long its repetition-loop hallucination runs before EOS (434 vs 67
tokens on the da_festuge fixture), which is where the reported slowness comes
from. Both models resolve to identical, merged, KV-cache-enabled decoders at
the same dtype — no catalog/config fix applies here. Documents the mechanism
and flags a future no_repeat_ngram_size/repetition_penalty mitigation as the
actionable follow-up if this recurs.
2026-07-30 08:31:58 +02:00
Lucas Winther 500cf3b36e Don't show the live "recording"/listening indicator until the model is ready
startLive()'s browser-engine branch flipped liveStatus to "listening" (the
red live-dot, "Listening..." hint) the instant the mic was granted, even if
the Whisper pipeline was still loading — the user saw an active-looking
session while nothing was being transcribed yet. transcribeLiveSegment()
already correctly awaits the model-ready gate before posting a segment, so
this was purely a misleading-status bug.

Adds a "loading-model" LiveStatus between "starting" and "listening";
startLive() now waits on the same browserModelReady() gate the transcribe
path uses before claiming "listening", with race-safe cleanup if the load
fails while waiting. Server-engine live is unaffected.

Adds Decisions.md D-034; updates tests/live.md's manual verification steps.
2026-07-30 08:31:23 +02:00
Lucas Winther c5d193600a Show "Loading model from cache" instead of "Downloading" when weights are already cached
Transformers.js's progress_callback always fires status:"download" regardless
of whether the file is actually served from the Cache API — there's no
cacheHit signal for the worker to forward. Since App.tsx already tracks which
models are downloaded (for ModelPicker's badges), it now checks that before
starting a load and threads a loadedFromCache flag into ModelLoadProgress, so
the heading/hint reflect reality for the common already-cached case.

Adds Decisions.md D-033.
2026-07-30 08:30:19 +02:00
Lucas Winther 7040f031a6 Usability and test infrastructure updates. 2026-07-29 09:20:43 +02:00
Lucas Winther 99b1732003 Fix Docker image bloat: exclude local venvs from build context, move transformers.js to devDependencies. 2026-07-29 08:25:00 +02:00
Lucas Winther 214a9ef714 Better error handling 2026-07-29 07:59:16 +02:00
Lucas Winther 78e99fc415 Fixed for decoder dl speed and mobile warnings on low memory devices. 2026-07-29 07:47:42 +02:00
Lucas Winther a0ef5548af Optimize max peak memory usage and add warnings on mobile for higher models 2026-07-28 07:23:37 +02:00
Lucas Winther f6019b3a42 Prefer WASM on firefox cause WebGPU is incredibly slow there. 2026-07-17 16:35:49 +02:00
Lucas Winther 74858f63fc Enhanced transcription usability. 2026-07-17 15:18:15 +02:00
Lucas Winther a5cfd219f6 Implement speedups for transcription. 2026-07-15 14:45:40 +02:00
Lucas Winther 742053144e Fix output text not working. 2026-07-15 14:13:59 +02:00
Lucas Winther 0bd5d326a5 Focus on speedup and not hanging on large audio files. 2026-07-15 13:01:22 +02:00
Lucas Winther dc4eec2e9e Describe clearly you don't need to download models on the server. 2026-07-14 20:38:25 +02:00
Lucas Winther 8464f0e492 Better model download management 2026-07-14 20:35:03 +02:00
Lucas Winther 42fe27d2dd Add live transcription via remote server. 2026-07-14 20:21:48 +02:00