Skip to content

Commit 8750c26

Browse files
authored
Merge pull request #4080 from pipecat-ai/changelog-0.0.106
Release 0.0.106 - Changelog Update
2 parents 7ee5fa9 + 3e0c536 commit 8750c26

36 files changed

Lines changed: 212 additions & 35 deletions

CHANGELOG.md

Lines changed: 212 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,218 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
<!-- towncrier release notes start -->
99

10+
## [0.0.106] - 2026-03-18
11+
12+
### Added
13+
14+
- Added optional `service` field to `ServiceUpdateSettingsFrame` (and its
15+
subclasses `LLMUpdateSettingsFrame`, `TTSUpdateSettingsFrame`,
16+
`STTUpdateSettingsFrame`) to target a specific service instance. When
17+
`service` is set, only the matching service applies the settings; others
18+
forward the frame unchanged. This enables updating a single service when
19+
multiple services of the same type exist in the pipeline.
20+
(PR [#4004](https://github.com/pipecat-ai/pipecat/pull/4004))
21+
22+
- Added `sip_provider` and `room_geo` parameters to `configure()` in the Daily
23+
runner. These convenience parameters let callers specify a SIP provider name
24+
and geographic region directly without manually constructing
25+
`DailyRoomProperties` and `DailyRoomSipParams`.
26+
(PR [#4005](https://github.com/pipecat-ai/pipecat/pull/4005))
27+
28+
- Added `PerplexityLLMAdapter` that automatically transforms conversation
29+
messages to satisfy Perplexity's stricter API constraints (strict role
30+
alternation, no non-initial system messages, last message must be user/tool).
31+
Previously, certain conversation histories could cause Perplexity API errors
32+
that didn't occur with OpenAI (`PerplexityLLMService` subclasses
33+
`OpenAILLMService` since Perplexity uses an OpenAI-compatible API).
34+
(PR [#4009](https://github.com/pipecat-ai/pipecat/pull/4009))
35+
36+
- Added DTMF input event support to the Daily transport. Incoming DTMF tones
37+
are now received via Daily's `on_dtmf_event` callback and pushed into the
38+
pipeline as `InputDTMFFrame`, enabling bots to react to keypad presses from
39+
phone callers.
40+
(PR [#4047](https://github.com/pipecat-ai/pipecat/pull/4047))
41+
42+
- Added `WakePhraseUserTurnStartStrategy` for triggering user turns based on
43+
wake phrases, with support for `single_activation` mode. Deprecates
44+
`WakeCheckFilter`.
45+
(PR [#4064](https://github.com/pipecat-ai/pipecat/pull/4064))
46+
47+
- Added `default_user_turn_start_strategies()` and
48+
`default_user_turn_stop_strategies()` helper functions for composing custom
49+
strategy lists.
50+
(PR [#4064](https://github.com/pipecat-ai/pipecat/pull/4064))
51+
52+
### Changed
53+
54+
- Changed tool result JSON serialization to use `ensure_ascii=False`,
55+
preserving UTF-8 characters instead of escaping them. This reduces context
56+
size and token usage for non-English languages.
57+
(PR [#3457](https://github.com/pipecat-ai/pipecat/pull/3457))
58+
59+
- `OpenAIRealtimeSTTService`'s `noise_reduction` parameter is now part of
60+
`OpenAIRealtimeSTTSettings`, making it runtime-updatable via
61+
`STTUpdateSettingsFrame`. The direct `noise_reduction` init argument is
62+
deprecated as of 0.0.106.
63+
(PR [#3991](https://github.com/pipecat-ai/pipecat/pull/3991))
64+
65+
- Updated `sarvamai` dependency from `0.1.26a2` (alpha) to `0.1.26` (stable
66+
release).
67+
(PR [#3997](https://github.com/pipecat-ai/pipecat/pull/3997))
68+
69+
- `SimliVideoService` now extends `AIService` instead of `FrameProcessor`,
70+
aligning it with the HeyGen and Tavus video services. It supports
71+
`SimliVideoService.Settings(...)` for configuration and uses
72+
`start()`/`stop()`/`cancel()` lifecycle methods. Existing constructor usage
73+
(`api_key`, `face_id`, etc.) remains unchanged.
74+
(PR [#4001](https://github.com/pipecat-ai/pipecat/pull/4001))
75+
76+
- Update `pipecat-ai-small-webrtc-prebuilt` to `2.4.0`.
77+
(PR [#4023](https://github.com/pipecat-ai/pipecat/pull/4023))
78+
79+
- Nova Sonic assistant text transcripts are now delivered in real-time using
80+
speculative text events instead of delayed final text events. Previously,
81+
assistant text only arrived after all audio had finished playing, causing
82+
laggy transcripts in client UIs. Speculative text arrives before each audio
83+
chunk, providing text synchronized with what the bot is saying. This also
84+
simplifies the internal text handling by removing the interruption re-push
85+
hack and assistant text buffer.
86+
(PR [#4042](https://github.com/pipecat-ai/pipecat/pull/4042))
87+
88+
- Updated `daily-python` dependency to 0.25.0.
89+
(PR [#4047](https://github.com/pipecat-ai/pipecat/pull/4047))
90+
91+
- Added `enable_dialout` parameter to `configure()` in `pipecat.runner.daily`
92+
to support dial-out rooms. Also narrowed misleading `Optional` type hints and
93+
deduplicated token expiry calculation.
94+
(PR [#4048](https://github.com/pipecat-ai/pipecat/pull/4048))
95+
96+
- Extended `ProcessFrameResult` to stop strategies, allowing a stop strategy to
97+
short-circuit evaluation of subsequent strategies by returning `STOP`.
98+
(PR [#4064](https://github.com/pipecat-ai/pipecat/pull/4064))
99+
100+
- `GradiumSTTService` now takes both an `encoding` and `sample_rate`
101+
constructor argument which is assmebled in the class to form the
102+
`input_format`. PCM accepts `8000`, `16000`, and `24000` Hz sample rates.
103+
(PR [#4066](https://github.com/pipecat-ai/pipecat/pull/4066))
104+
105+
- Improved `GradiumSTTService` transcription accuracy by reworking how text
106+
fragments are accumulated and finalized. Previously, trailing words could be
107+
dropped when the server's `flushed` response arrived before all text tokens
108+
were delivered. The service now uses a short aggregation delay after flush to
109+
capture trailing tokens, producing complete utterances.
110+
(PR [#4066](https://github.com/pipecat-ai/pipecat/pull/4066))
111+
112+
### Deprecated
113+
114+
- `SimliVideoService.InputParams` is deprecated. Use the direct constructor
115+
parameters `max_session_length`, `max_idle_time`, and `enable_logging`
116+
instead.
117+
(PR [#4001](https://github.com/pipecat-ai/pipecat/pull/4001))
118+
119+
- Deprecated `LocalSmartTurnAnalyzerV2` and `LocalCoreMLSmartTurnAnalyzer`. Use
120+
`LocalSmartTurnAnalyzerV3` instead. Instantiating these analyzers will now
121+
emit a `DeprecationWarning`.
122+
(PR [#4012](https://github.com/pipecat-ai/pipecat/pull/4012))
123+
124+
- Deprecated `WakeCheckFilter` in favor of `WakePhraseUserTurnStartStrategy`.
125+
(PR [#4064](https://github.com/pipecat-ai/pipecat/pull/4064))
126+
127+
### Fixed
128+
129+
- Fixed an issue where the default model for `OpenAILLMService` and
130+
`AzureLLMService` was mistakenly reverted to `gpt-4o`. The defaults are now
131+
restored to `gpt-4.1`.
132+
(PR [#4000](https://github.com/pipecat-ai/pipecat/pull/4000))
133+
134+
- Fixed a race condition where `EndTaskFrame` could cause the pipeline to shut
135+
down before in-flight frames (e.g. LLM function call responses) finished
136+
processing. `EndTaskFrame` and `StopTaskFrame` now flow through the pipeline
137+
as `ControlFrame`s, ensuring all pending work is flushed before shutdown
138+
begins. `CancelTaskFrame` and `InterruptionTaskFrame` remain immediate
139+
(`SystemFrame`).
140+
(PR [#4006](https://github.com/pipecat-ai/pipecat/pull/4006))
141+
142+
- Fixed `ParallelPipeline` dropping or misordering frames during lifecycle
143+
synchronization. Buffered frames are now flushed in the correct order
144+
relative to synchronization frames (`StartFrame` goes first,
145+
`EndFrame`/`CancelFrame` go after), and frames added to the buffer during
146+
flush are also drained.
147+
(PR [#4007](https://github.com/pipecat-ai/pipecat/pull/4007))
148+
149+
- Fixed `TTSService` potentially canceling in-flight audio during shutdown. The
150+
stop sequence now waits for all queued audio contexts to finish processing
151+
before canceling the stop frame task.
152+
(PR [#4007](https://github.com/pipecat-ai/pipecat/pull/4007))
153+
154+
- Fixed `Language` enum values (e.g. `Language.ES`) not being converted to
155+
service-specific codes when passed via
156+
`settings=Service.Settings(language=Language.ES)` at init time. This caused
157+
API errors (e.g. 400 from Rime) because the raw enum was sent instead of the
158+
expected language code (e.g. `"spa"`). Runtime updates via
159+
`UpdateSettingsFrame` were unaffected. The fix centralizes conversion in the
160+
base `TTSService` and `STTService` classes so all services handle this
161+
consistently.
162+
(PR [#4024](https://github.com/pipecat-ai/pipecat/pull/4024))
163+
164+
- Fixed `DeepgramSTTService` ignoring the `base_url` scheme when using `ws://`
165+
or `http://`. Previously these were silently overwritten with `wss://` /
166+
`https://`, breaking air-gapped or private deployments that don't use TLS.
167+
All scheme choices (`wss://`, `https://`, `ws://`, `http://`, or bare
168+
hostname) are now respected.
169+
(PR [#4026](https://github.com/pipecat-ai/pipecat/pull/4026))
170+
171+
- Fixed `LLMSwitcher.register_function()` and `register_direct_function()` not
172+
accepting or forwarding the `timeout_secs` parameter.
173+
(PR [#4037](https://github.com/pipecat-ai/pipecat/pull/4037))
174+
175+
- Fixed empty user transcriptions in Nova Sonic causing spurious interruptions.
176+
Previously, an empty transcription could trigger an interruption of the
177+
assistant's response even though the user hadn't actually spoken.
178+
(PR [#4042](https://github.com/pipecat-ai/pipecat/pull/4042))
179+
180+
- Fixed `SonioxSTTService` and `OpenAIRealtimeSTTService` crash when language
181+
parameters contain plain strings instead of `Language` enum values.
182+
(PR [#4046](https://github.com/pipecat-ai/pipecat/pull/4046))
183+
184+
- Fixed premature user turn stops caused by late transcriptions arriving
185+
between turns. A stale transcript from the previous turn could persist into
186+
the next turn and trigger a stop before the current turn's real transcript
187+
arrived. Stop strategies are now reset at both turn start and turn stop to
188+
prevent state from leaking across turn boundaries.
189+
(PR [#4057](https://github.com/pipecat-ai/pipecat/pull/4057))
190+
191+
- Fixed raw language strings like `"de-DE"` silently failing when passed to
192+
TTS/STT services (e.g. ElevenLabs producing no audio). Raw strings now go
193+
through the same `Language` enum resolution as enum values, so regional codes
194+
like `"de-DE"` are properly converted to service-expected formats like
195+
`"de"`. Unrecognized strings log a warning instead of failing silently.
196+
(PR [#4058](https://github.com/pipecat-ai/pipecat/pull/4058))
197+
198+
- Fixed Deepgram STT list-type settings (`keyterm`, `keywords`, `search`,
199+
`redact`, `replace`) being stringified instead of passed as lists to the SDK,
200+
which caused them to be sent as literal strings (e.g. `"['pipecat']"`) in the
201+
WebSocket query params.
202+
(PR [#4063](https://github.com/pipecat-ai/pipecat/pull/4063))
203+
204+
- Fixed `MinWordsUserTurnStartStrategy` including text below the word threshold
205+
in the output by resetting aggregation when the minimum word count is not
206+
met.
207+
(PR [#4064](https://github.com/pipecat-ai/pipecat/pull/4064))
208+
209+
- Fixed audio overlap and potential dropped TTS content when multiple assistant
210+
turns occur in quick succession. `TTSService` now flushes remaining text
211+
before pausing frame processing on `LLMFullResponseEndFrame`/`EndFrame`,
212+
instead of pausing first.
213+
(PR [#4071](https://github.com/pipecat-ai/pipecat/pull/4071))
214+
215+
### Security
216+
217+
- Bumped PyJWT minimum version from 2.10.1 to 2.12.0 in the `livekit` extra to
218+
address CVE-2026-32597 (GHSA-752w-5fwx-jx9f), where PyJWT <= 2.11.0 accepted
219+
unknown `crit` header extensions.
220+
(PR [#4035](https://github.com/pipecat-ai/pipecat/pull/4035))
221+
10222
## [0.0.105] - 2026-03-10
11223

12224
### Added

changelog/3457.changed.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

changelog/3991.changed.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

changelog/3997.changed.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

changelog/4000.fixed.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

changelog/4001.changed.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

changelog/4001.deprecated.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

changelog/4004.added.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

changelog/4005.added.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

changelog/4006.fixed.md

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)