v2.27.0 - 2026-10-27
🎉 New Features
- Corpus drafts, and sanitize and compat handle redacted and relayed recordings fa05422
🐛 Bugfixes
- Answer only the digest challenges JAIN-SIP can compute cc90735
- A TLS connection the EdgePort opens sends what it queued during the handshake 85ef226
- A challenge that arrives after the caller hung up is not answered 1b3dc0d
- Route sets with several entries reach the wire in order 47f6a43
- A cancelled call is remembered, so a late challenge never rings the callee 43bfd90
- The pending TLS handshake message is sent under JAIN-SIP's wrap lock 1804d87
- A call forwarded to a peer EdgePort drops Routes that point back at this one 92204be
- Ack-2xx pairs the ACK with the INVITE Routr forwarded, not only the 2xx's CSeq 93df67f
- Sanitize leaves an identity parameter untouched when no rewrite applies fa82341
- Compat still reports a lost SDP on a record the media relay rewrote 79c7525
🪚 Refactors
- The identity Record-Route parameters are defined once, in @routr/common a862149
📚 Documentation Changes
- Sanitize looks up credentials by the username as rewritten, and says so c864db0
🔍 Tests
- A real call to a WhatsApp user, as a draft for review a222b7e
- A real WhatsApp call cancelled while ringing (draft) 9aec1b6
💅 Code Style Changes
- Each auth helper keeps its own javadoc 7e500e9