docs(issues): #0054 implemented in threadnet-call 3f17001

All repo checks green including the connection factory tests that cover the
changed noiseSuppression logic. Two findings while building improved the numbers:
the Dockerfile's gzip glob missed the model wasm in its subdirectory, costing
15.7 MB instead of 4.1 MB per client, and the 23 MB verifiably stay out of the JS
bundle, so the opt-in lazy load works as designed.

sorb chose to commit the assets rather than fetch them at build time — fetching
would have reintroduced the very third-party dependency we removed at runtime,
just moved to build time.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Thore Cimbal
2026-08-15 12:00:00 +00:00
co-authored by Claude Opus 4.8
parent 914eb59575
commit 224f670469
@@ -172,3 +172,43 @@ auf schwachen Geräten schlicht aus bleibt.
(§5 dort ergänzen — die Absage galt der Server-Seite und bleibt gültig).
Der Prototyp liegt außerhalb der Repos und ist Wegwerf-Material; er wird nicht eingecheckt.
## Umgesetzt 2026-08-15 — threadnet-call `3f17001`
Nach ADR-0018 gebaut. Alle Prüfungen des Repos grün: `tsc` 0, `eslint` 0, `prettier` sauber,
`ECConnectionFactory.test.ts` **9/9** (der Test deckt genau die geänderte
`noiseSuppression`-Logik ab), `pnpm build` erfolgreich.
| Datei | Änderung |
|---|---|
| `src/livekit/aiNoiseSuppression.ts` | **neu** — baut den TrackProcessor, `undefined` wenn ausgeschaltet |
| `src/settings/settings.ts` | `ai-noise-suppression` (false), `ai-noise-suppression-level` (35) |
| `ConnectionFactory.ts` | `processor:` in `audioCaptureDefaults`; Browser-NS aus bei aktivem Filter |
| `SettingsModal.tsx` | Checkbox + Regler im **Audio**-Tab (nicht im Entwickler-Tab) |
| `public/assets/dfn3/**` | Modell + wasm, selbst ausgeliefert |
| `Dockerfile` | gzip für das Modell-wasm |
| `docs/axion1337-fork.md` | §5b mit Portier-Checkliste |
### Zwei Funde beim Bauen, die die Zahlen verbessern
1. **Der Dockerfile hätte die 23 MB ungzippt ausgeliefert.** Sein `gzip`-Glob greift nur auf
oberster Ebene, das Modell-wasm liegt aber in einem Unterordner. Gemessen: **15,7 → 4,1 MB**
(26 %). Zusammen mit dem bereits komprimierten Modell sind es **11,7 statt 23,3 MB** pro
Client. Behoben.
2. **Die 23 MB landen nicht im JS-Bundle.** Verifiziert: `dist/assets/index-*.js` bleibt bei
2,9 MB, die Assets liegen daneben als statische Dateien. Das Opt-in-Nachladen funktioniert
also wie entworfen — wer den Filter aus lässt, lädt nichts.
### Entscheidung sorb: Assets ins Git
Statt beim Bauen zu holen. Begründung: ein Build-Zeit-Download von `cdn.mezon.ai` hätte genau
die Fremdabhängigkeit wieder eingeführt, die wir zur Laufzeit entfernt haben — nur verschoben.
So baut das Repo offline und aus sich heraus. Preis: +23 MB dauerhaft (bisher größte Datei:
1,4 MB), und dasselbe nochmal bei jedem Modell-Update.
### Offen
- **Image bauen und ausrollen** — bis dahin läuft die Änderung nirgends.
- **Echter Call zu zweit** als Abnahme: der Prototyp lief gegen die eigenen Kopfhörer, nicht
über die Leitung.
- **Mobil** weiterhin ungeprüft (ADR-0018, bewusst).