v0.14.0
thevoiceguy/siphon-aiv0.14.0Jun 21, 2026by thevoiceguy
Upgrading?
AI Summary
This release closes the protocol implementation gap by adding error signaling for `rtp_timeout`, malformed audio frames, and protocol errors, ensuring all documented WebSocket error codes are now emitted.
Key Highlights
- Error signaling for `rtp_timeout`
- Error signaling for `audio_format` (malformed frames)
- Error signaling for `protocol_error`
- Definitive teardown for protocol errors
Breaking Changes
- Protocol errors are now definitive teardowns (not reconnect-eligible)
New Features
- WebSocket error signaling
- Malformed frame rate-limiting
- Protocol documentation alignment
Full Release Notes
The daemon now emits the last three documented WS `error` codes whose conditions it detected but never signaled. **With this, every PROTOCOL.md §3.10 error code is real — the protocol doc↔impl drift (bug #4) is fully closed.**
## Added — error-signaling
- **`rtp_timeout`** — when the media inactivity watchdog fires (no inbound RTP for `[media].inactivity_timeout_secs`), the WS server is now told *why* (`error{rtp_timeout}` + `stop`) before the socket closes, instead of seeing a bare close.
- **`audio_format`** — inbound binary frames are validated against the negotiated frame size (320 B @ 8 kHz, 640 B @ 16 kHz). A wrong-size frame is **dropped** (non-fatal) and reported via `error{audio_format}`, **rate-limited** to the first bad frame + at most one/sec. The call stays up — one malformed frame can't kill it; persistent failure is still caught by the dead-air / rtp watchdog.
- **`protocol_error`** — malformed JSON, an unknown message `type`, or a `call_id` that doesn't match the connection now emits `error{protocol_error}` + `stop` before closing.
## Behavior change
`protocol_error` is a **definitive** teardown (new `DisconnectReason::ProtocolError`) — **not** reconnect-eligible, since a buggy server would just repeat the violation. Previously these conditions tore down silently *and* were reconnect-eligible.
Minor bump. Protocol stays **v1**.
PRs: #223, #224. Closes bug #4 (steps 1–3: v0.13.0 + v0.14.0).Related Repositories
A cross-platform desktop All-in-One assistant for Claude Code, Codex, OpenCode, OpenClaw, Grok Build & Hermes Agent. Only official website: ccswitch.io
An open-source remote desktop application designed for self-hosting, as an alternative to TeamViewer.
Build smaller, faster, and more secure desktop and mobile applications with a web frontend.
π RuView turns commodity WiFi signals into real-time spatial intelligence, vital sign monitoring, and presence detection — all without a single pixel of video.
Incredibly fast JavaScript runtime, bundler, test runner, and package manager – all in one