v0.9.5
thevoiceguy/siphon-aiv0.9.5Jun 19, 2026by thevoiceguy
Upgrading?
AI Summary
Fixes a latent bug where inbound delayed-offer calls were never bridged and adds CDRs for delayed-offer negotiations that fail before going active.
Key Highlights
- Fixed ACK dispatching to finalize bridging for inbound delayed-offer calls.
- Added CDRs for delayed-offer failures with new termination causes (e.g., `ack_timeout`, `invalid_sdp_answer`).
- CDR schema bumped to version 2.
New Features
- CDRs for failed delayed-offer negotiations
Full Release Notes
**Patch release — fixes a latent bug that left inbound delayed offer unbridged, and completes the delayed-offer failure CDRs.** ### Fixed - **Inbound delayed offer never bridged** (latent since 0.9.0). The daemon's packet pump special-cased ACK — it cleared the 200-OK retransmit timer and returned *without* dispatching the request to the UAS — so `on_ack` never fired and the delayed-offer call was never finalized from the ACK's SDP answer. The 200 OK (with our offer) was sent and the dialog existed (so a BYE got a 200), which is why the SIPp tests — asserting only the 200 OK content — missed it. Now a **body-carrying ACK is dispatched to the UAS** (`on_ack` → finalize → bridge); body-less ACKs (early offer) keep the timer-only fast path. The `delayed_offer` SIPp phase now also asserts the bridge actually connected. ### Added - **Per-call CDR for delayed-offer negotiations that fail before going active.** A delayed-offer call whose ACK answer never arrives or is unusable now writes a CDR (not just a metric + log), with one of five new `termination.cause` values: `ack_timeout`, `missing_sdp_answer`, `invalid_sdp_answer`, `no_compatible_codec`, `invalid_remote_media`. These records have an empty `audio` block (no codec was negotiated). - **CDR schema `version` → 2** — the new cause strings can break a strict consumer that exhaustively matched the v1 set (CLAUDE.md §7.7). The record shape is otherwise unchanged. This closes the delayed-offer follow-ups — and makes inbound delayed offer work end-to-end. PR: #197. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
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