fix(calls): harden ML denoise shim against static; fix lint/format
CI / Build & Quality Checks (push) Successful in 10m26s
Trigger Desktop Build / trigger (push) Successful in 17s

ML noise suppression produced loud static on real calls. RNNoise requires
mono 48kHz float input; feeding it stereo or wrong-rate data is the classic
cause of that static. Harden the shim:
- request mono (channelCount:1) + 48kHz capture
- run a 48kHz AudioContext and BAIL to the raw mic if the browser won't
  give a true 48kHz context (wrong-rate data -> static)
- force the worklet node to explicit mono in/out
- use the non-SIMD rnnoise.wasm (SIMD build artifacts on some GPUs)
- share one AudioContext across captures

Also fix the two CI-blocking eslint errors (unused vars in UrlPreviewCard
and useLocalMessageSearch) and apply repo-wide prettier formatting so
check:eslint and check:prettier pass.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-15 20:50:00 -04:00
parent 5deed79b42
commit 4a401cf816
13 changed files with 388 additions and 357 deletions
@@ -282,9 +282,7 @@ export function PollContent({
style={{
padding: '7px 12px',
borderRadius: '8px',
background: selected
? 'var(--accent-cyan-dim)'
: 'rgba(255,255,255,0.04)',
background: selected ? 'var(--accent-cyan-dim)' : 'rgba(255,255,255,0.04)',
border: `1.5px solid ${selected ? 'var(--accent-cyan)' : 'var(--border-color)'}`,
fontSize: '0.88rem',
lineHeight: 1.4,
@@ -308,9 +306,7 @@ export function PollContent({
inset: 0,
right: 'auto',
width: `${pct}%`,
background: selected
? 'var(--accent-cyan-dim)'
: 'rgba(255,255,255,0.03)',
background: selected ? 'var(--accent-cyan-dim)' : 'rgba(255,255,255,0.03)',
pointerEvents: 'none',
transition: 'width 0.3s ease',
}}