v0.48.2
thevoiceguy/siphon-aiv0.48.2Jul 31, 2026by github-actions[bot]
Upgrading?
AI Summary
Stops RTP transmission when a peer hold forbids it, ensuring silence is transmitted per RFC 3264.
Key Highlights
- Stops RTP transmission during peer hold (RFC 3264 §6.1 compliance)
- Drops WS playout and audio during hold
- Adds new counter for suppressed frames
Full Release Notes
### Fixed - **SiphonAI stops transmitting RTP while a peer hold forbids it** (issue #417). Answering a peer's `a=sendonly`/`a=inactive` re-INVITE with `recvonly`/`inactive` commits us to silence per RFC 3264 §6.1 — but nothing enforced it: the tap kept pushing WS playout to forge at an unbroken 50 pps for the whole held span (live-proven against FreeSWITCH `uuid_hold`, which honors its own `recvonly` in the mirrored case). The `negotiated_direction` doc comment's "(eventually) pause forge's outbound RTP" was that never-landed enforcement. Now the acceptor recomputes a shared tx-suppression flag on **every** accepted direction change — not just the hold/resume event boundary, since a held→held flavor change (`sendonly` → `recvonly`) crosses the may-send line without emitting anything — and the tap drops every caller-leg push while it is set: WS playout (drain-and-drop, same stance as mute — the WS server is never back-pressured and held-era audio is discarded, not queued), barge-in re-queues, the room mix for a peer-held conference member (only that leg's wire — its server audio still mixes for the other members, whose wires are not held), parked MOH, announcements (which stall to be heard on resume rather than play into a deaf leg), and queued outbound DTMF (telephone-events are RTP too). The recording fork is skipped with it — the caller heard nothing. A peer `recvonly` hold (we answered `sendonly`) correctly leaves transmission flowing. New `siphon_ai_peer_hold_tx_suppressed_frames_total` counter + engage/release log lines with per-hold totals; documented in PROTOCOL.md §3.3 and DEPLOY.md. Scope: inbound legs (the same scope as the §3.3 events and the #402 watchdog park — outbound-leg peer re-INVITEs don't reach this handler today). --- **Artifacts** - Static musl binaries for `x86_64` and `aarch64` (`.tar.gz`). - Debian packages (`.deb`) for `amd64` and `arm64` — `apt install ./siphon-ai_*_amd64.deb`. - `SHA256SUMS` — verify with `sha256sum -c SHA256SUMS`. - `*-sbom.cdx.json` — CycloneDX SBOM. - `SHA256SUMS.cosign.bundle` — cosign keyless signature over the checksums. - Container: `ghcr.io/thevoiceguy/siphon-ai:v0.48.2` (multi-arch, cosign-signed). Verify the checksums signature: ``` cosign verify-blob --bundle SHA256SUMS.cosign.bundle \ --certificate-oidc-issuer https://token.actions.githubusercontent.com \ --certificate-identity-regexp 'release.yml@' SHA256SUMS ```
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