v0.9.0
What's Changed
- docs(changelog): fold codec floor and thinking-coalescing into unreleased 0.9.0
- docs(changelog): describe thinking-delta coalescing and aiortp 0.3.2 codec floor
- refactor(ai): split oversize thinking flushes, dedupe coalescer setup
- perf(ai): coalesce thinking-stream deltas into time/size windows
- chore(deps): require aiortp>=0.3.2 for vectorised RTP codecs
- docs(changelog): stamp 0.9.0
- chore: reword history-narration comments to current-state
- fix(fastrtc): skip sends on non-open RTCDataChannel
- perf(voice): vectorise mu-law encode and rms_db, keep numpy lazy
- perf(core): size RoomContext.recent_events to what bound channels read
- feat(realtime): warn when falling back to the pure-Python sinc resampler
- perf(realtime): split tool-call loop step and instrument its segments
- refactor(aec): collapse duplicated reference log into logger.log(level)
- fix(examples): honor the documented MUTE_MIC override in the Gemini example
- fix(local): feed playback-time AEC reference continuously, silence included
- fix(local): prebuffer realtime speaker playback to absorb provider jitter
- perf(aec): vectorise energy diagnostics and move them off the AEC lock
- perf(realtime): skip context build for hookless partials and speech events
- refactor(realtime): extract _reset_outbound_resampler helper
- feat(sip): expose outbound pacer prebuffer/headroom on SIPVoiceBackend
- perf(realtime): move per-session resampling off the event loop
Full Changelog: v0.8.0...v0.9.0