Commit Graph
6 Commits
Author SHA1 Message Date
jevb c13d5a67a5 docs: add specs for screenshare audio and video focus mode
Two specs for the video/screenshare experience:
1. SCREENSHARE-AUDIO.md — system audio capture + per-tile mute
2. VIDEO-FOCUS-MODE.md — Discord-style opt-in viewing with focus layout
2026-03-26 18:39:50 +01:00
jevb de666d515a docs: sync documentation with codebase — version alignment, config fixes, test scripts
- Fix version misalignment: CLAUDE.md had 1.3.0, README had 1.0.0, actual is 1.2.0
- Fix README config table: upload.max_size_mb 10→100, tls.mode selfsigned→self_signed
- Add missing test scripts to CLAUDE.md (e2e:native, e2e:prod, e2e:ui, watch)
- Add documentation audit report
2026-03-24 21:42:16 +01:00
jevb 7a16182f5b fix: restore audio track attachment for remote playback
The refactored LiveKit session dropped track.attach() for remote audio,
so no <audio> element was created and remote participants were silent.
Also refactors noise suppression to use LiveKit TrackProcessor API,
adds input volume gain node bypass at 100%, and exposes __lkDebug()
on window for DevTools diagnostics.
2026-03-22 15:34:26 +01:00
jevb 3236918012 refactor: server hardening + client decomposition + protocol resilience
Server:
- Split monolithic voice_handlers.go into voice_join/leave/controls/broadcast
- Add metrics endpoint (admin-IP-restricted /api/v1/metrics)
- Add orphaned attachment cleanup in maintenance loop
- Add sentinel errors (db/errors.go, ws/errors.go)
- Add ring buffer for event replay on reconnect
- Add heartbeat monitoring with stale connection sweep
- Improve hub with panic recovery, graceful shutdown, seq tracking
- Typed message structs replace raw map[string]interface{}

Client:
- Decompose MainPage into ChatArea + SidebarArea controllers
- Add disposable.ts lifecycle management pattern
- Add member list right-click context menu (kick/ban/role)
- Tighten CSP (media-src, font-src, object-src, base-uri)
- Improve store with shallowEqual, 500-msg cap, batch updates
- Add search API endpoint wiring
- Fix LiveKit session cleanup and reconnection

Docs:
- Add CODEMAPS for architecture, backend, frontend, data, deps
- Add protocol-schema.json (machine-readable, 36 message types)
- Add platform research report
- Update PROTOCOL.md with seq/replay fields
2026-03-21 10:08:44 +01:00
jevb 620fac778d docs: update specs for LiveKit migration (Phase 4)
- CLAUDE.md: update key features (LiveKit voice/video), remove
  WebRTC track ID rules, update project structure
- PROTOCOL.md: replace voice_offer/answer/ice with voice_token,
  remove soundboard_play, note client-side speaker detection
- CHATSERVER.md: replace Pion SFU with LiveKit companion process,
  update architecture, security, and library references
2026-03-20 05:50:14 +01:00
jevb 5140505704 fix: voice session safety, delete confirm UX, image URL validation, test coverage (BUG-039 through BUG-045)
- BUG-039: switchOutputDevice continues loop on partial failure instead of early return
- BUG-040: clearOnError() prevents stale callback after MainPage destroy
- BUG-041: voice store tests cover localCamera, localScreenshare, setLocalSpeaking
- BUG-042: auth store updateUser tests and UserBar mute/deafen callback tests
- BUG-043: switchInputDevice guards against no active WebRTC session
- BUG-044: replace synchronous confirm() with double-click-to-delete via toast
- BUG-045: isSafeUrl() blocks javascript: URLs in image attachment src
2026-03-18 07:03:53 +01:00