v0.4.0

eisenzopf/rvoipv0.4.0Oct 12, 2026by github-actions[bot]

Upgrading?

AI Summary

This release introduces bounded lifecycle capabilities and completes the call-history system, alongside significant improvements to media quality and SIP protocol conformance, including RTCP integration and deployment profiles.

Key Highlights

  • Completion of call-history release and bounded lifecycle capabilities
  • Introduction of authenticated UCTP application profiles for QUIC and WebSocket
  • Deployment profiles for servers, trunks, NAT, and mTLS peering
  • Integration of RTCP reporting and improved media quality diagnostics

Breaking Changes

  • Bounded lifecycle capabilities and completed call-history release
  • Marked public configuration structs as #[non_exhaustive]

New Features

  • Expose connection ID budget usage for worker rotation
  • Make TTS codec-aware and encode bounded PCM prompts
  • Add opt-in authenticated UCTP application profiles
  • Opt in to TLS Contact compatibility on observed TLS ingress
  • Retain bounded analytics-block redress diagnostics
  • Supervise and drain periodic SDK workers
  • Expose bounded identifier-free resource snapshots
  • Add experimental browser and Node UCTP WebSocket client
  • Support authenticated UCTP application profiles via QUIC
  • Offer a=rtcp-mux by default so RTCP flows on muxing peers
  • Deployment profiles for servers, trunks, NAT and mTLS peering with OPTIONS keep-alive

Full Release Notes

Detailed release notes: https://github.com/eisenzopf/rvoip/blob/v0.4.0/crates/sip/rvoip-sip/docs/RELEASE_NOTES_NEXT.md

Protected qualification run and full evidence: https://github.com/eisenzopf/rvoip/actions/runs/38195041080


<!-- Release notes generated using configuration in .github/release.yml at v0.4.0 -->

## What's Changed
### Breaking changes
* fix(core): bounded lifecycle capabilities and completed call-history release by @vapi-eisen in https://github.com/eisenzopf/rvoip/pull/259
### Features
* feat(core): expose connection ID budget usage for worker rotation by @eisenzopf in https://github.com/eisenzopf/rvoip/pull/265
* feat(core): make TTS codec-aware and encode bounded PCM prompts by @vapi-eisen in https://github.com/eisenzopf/rvoip/pull/291
* feat: add opt-in authenticated UCTP application profiles by @vapi-eisen in https://github.com/eisenzopf/rvoip/pull/262
* feat(sip): opt in to TLS Contact compatibility on observed TLS ingress by @vapi-eisen in https://github.com/eisenzopf/rvoip/pull/287
* feat(sip): retain bounded analytics-block redress diagnostics by @vapi-eisen in https://github.com/eisenzopf/rvoip/pull/290
* feat(core): supervise and drain periodic SDK workers by @vapi-eisen in https://github.com/eisenzopf/rvoip/pull/277
* feat(core): expose bounded identifier-free resource snapshots by @vapi-eisen in https://github.com/eisenzopf/rvoip/pull/289
* feat: add experimental browser and Node UCTP WebSocket client by @vapi-eisen in https://github.com/eisenzopf/rvoip/pull/271
### Fixes
* fix(sip): release dialog locks before asynchronous DNS resolution by @eisenzopf in https://github.com/eisenzopf/rvoip/pull/264
* fix(sip): reject early INVITE setup failures with safe diagnostics by @vapi-eisen in https://github.com/eisenzopf/rvoip/pull/283
* fix(core): reconcile tenant quotas against configured capacity by @vapi-eisen in https://github.com/eisenzopf/rvoip/pull/275
* fix(media): advance stereo playout RTP timestamps per channel by @vapi-eisen in https://github.com/eisenzopf/rvoip/pull/276
* fix(sip): reframe variable-duration Opus before graph encoding by @vapi-eisen in https://github.com/eisenzopf/rvoip/pull/286
* fix(codec): correct G.711 utility encoding and decoding by @vapi-eisen in https://github.com/eisenzopf/rvoip/pull/273
* fix(core): cancel blocked playback and supervise stream workers by @vapi-eisen in https://github.com/eisenzopf/rvoip/pull/282
* fix: retain RTCP reporting for late SDP and add opt-in SIP mux policy by @vapi-eisen in https://github.com/eisenzopf/rvoip/pull/260
* fix(media): normalize RTP source epochs and reset replacement decoders by @vapi-eisen in https://github.com/eisenzopf/rvoip/pull/285
* fix(sip): reuse admitted direct TLS flow for in-dialog requests by @vapi-eisen in https://github.com/eisenzopf/rvoip/pull/288
### Documentation
* docs: propose application-scoped SIP diagnostic observation by @vapi-eisen in https://github.com/eisenzopf/rvoip/pull/281
* docs: add runnable authenticated UCTP application profile example by @vapi-eisen in https://github.com/eisenzopf/rvoip/pull/272
### Other changes
* build(deps): bump the github-actions group across 1 directory with 7 updates by @dependabot[bot] in https://github.com/eisenzopf/rvoip/pull/178
* vapi: add safe diagnostics for socket write stalls by @vapi-eisen in https://github.com/eisenzopf/rvoip/pull/263
* feat(websocket): own listener drain and inbound peer shutdown by @eisenzopf in https://github.com/eisenzopf/rvoip/pull/293
* feat(quic): support authenticated UCTP application profiles by @eisenzopf in https://github.com/eisenzopf/rvoip/pull/292
* build(deps): bump hickory-resolver from 0.26.1 to 0.26.2 in /examples by @dependabot[bot] in https://github.com/eisenzopf/rvoip/pull/294
* build(deps): bump hickory-resolver from 0.26.1 to 0.26.2 by @dependabot[bot] in https://github.com/eisenzopf/rvoip/pull/295
* release: require a changelog entry for every release by @eisenzopf in https://github.com/eisenzopf/rvoip/pull/296
* build(examples): record rvoip-sip's url dependency in the examples lockfile by @eisenzopf in https://github.com/eisenzopf/rvoip/pull/301
* docs(sip): document the jitter buffer, RTCP behaviour and deployment profiles by @eisenzopf in https://github.com/eisenzopf/rvoip/pull/299
* fix(sip): RFC 4028 session timer conformance and in-dialog Request-URI by @eisenzopf in https://github.com/eisenzopf/rvoip/pull/309
* 0.4.0 integration: RTCP fully wired, media quality, deployment profiles, non_exhaustive configs by @eisenzopf in https://github.com/eisenzopf/rvoip/pull/308
* api!: mark public configuration structs #[non_exhaustive] by @eisenzopf in https://github.com/eisenzopf/rvoip/pull/302
* feat(sip): deployment profiles for servers, trunks, NAT and mTLS peering; OPTIONS keep-alive by @eisenzopf in https://github.com/eisenzopf/rvoip/pull/305
* fix(sip): survive rejected session refreshes; route every in-dialog request to the remote target by @eisenzopf in https://github.com/eisenzopf/rvoip/pull/310
* feat(sip): offer a=rtcp-mux by default so RTCP flows on muxing peers by @eisenzopf in https://github.com/eisenzopf/rvoip/pull/303
* build(deps): bump the github-actions group with 2 updates by @dependabot[bot] in https://github.com/eisenzopf/rvoip/pull/300
* release: 0.4.0 changelog, migration guide, release notes, API baseline and docs by @eisenzopf in https://github.com/eisenzopf/rvoip/pull/312
* Prepare v0.4.0 by @github-actions[bot] in https://github.com/eisenzopf/rvoip/pull/313
* fix: 0.4.0 qualification blockers (rustdoc, Jambonz 0.9.14, re-INVITE race, BYE-before-shutdown) by @eisenzopf in https://github.com/eisenzopf/rvoip/pull/316
* release: finalize the 0.4.0 release notes for publication by @eisenzopf in https://github.com/eisenzopf/rvoip/pull/317

## New Contributors
* @dependabot[bot] made their first contribution in https://github.com/eisenzopf/rvoip/pull/178

**Full Changelog**: https://github.com/eisenzopf/rvoip/compare/v0.3.12...v0.4.0

Related Repositories