From 3268cb93d52eeafec9ffc33acd2cca97abae2ceb Mon Sep 17 00:00:00 2001 From: aconchillo <951761+aconchillo@users.noreply.github.com> Date: Tue, 24 Mar 2026 03:07:36 +0000 Subject: [PATCH] Update changelog for version 0.0.107 --- CHANGELOG.md | 98 +++++++++++++++++++++++++++++++++++++++ changelog/3449.changed.md | 1 - changelog/3449.fixed.md | 1 - changelog/4029.added.2.md | 1 - changelog/4029.added.md | 1 - changelog/4029.fixed.3.md | 1 - changelog/4029.fixed.md | 1 - changelog/4074.added.md | 1 - changelog/4075.fixed.md | 1 - changelog/4082.fixed.md | 1 - changelog/4083.changed.md | 1 - changelog/4090.fixed.md | 1 - changelog/4091.changed.md | 1 - changelog/4093.fixed.md | 7 --- changelog/4104.added.md | 1 - 15 files changed, 98 insertions(+), 20 deletions(-) delete mode 100644 changelog/3449.changed.md delete mode 100644 changelog/3449.fixed.md delete mode 100644 changelog/4029.added.2.md delete mode 100644 changelog/4029.added.md delete mode 100644 changelog/4029.fixed.3.md delete mode 100644 changelog/4029.fixed.md delete mode 100644 changelog/4074.added.md delete mode 100644 changelog/4075.fixed.md delete mode 100644 changelog/4082.fixed.md delete mode 100644 changelog/4083.changed.md delete mode 100644 changelog/4090.fixed.md delete mode 100644 changelog/4091.changed.md delete mode 100644 changelog/4093.fixed.md delete mode 100644 changelog/4104.added.md diff --git a/CHANGELOG.md b/CHANGELOG.md index dfd42c6c9..b96eb9876 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,104 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 +## [0.0.107] - 2026-03-23 + +### Added + +- Added `frame_order` parameter to `SyncParallelPipeline`. Set + `frame_order=FrameOrder.PIPELINE` to push synchronized output frames in + pipeline definition order (all frames from the first pipeline, then the + second, etc.) instead of the default arrival order. + (PR [#4029](https://github.com/pipecat-ai/pipecat/pull/4029)) + +- Added `sync_with_audio` field to `OutputImageRawFrame`. When set to `True`, + the output transport queues image frames with audio so they are displayed + only after all preceding audio has been sent, enabling synchronized + audio/image playback. + (PR [#4029](https://github.com/pipecat-ai/pipecat/pull/4029)) + +- Added `OpenAIResponsesLLMService`, a new LLM service that uses the OpenAI + Responses API. Supports streaming text, function calling, usage metrics, and + out-of-band inference. Works with the universal `LLMContext` and + `LLMContextAggregatorPair`. See + `examples/foundational/07-interruptible-openai-responses.py` and + `14-function-calling-openai-responses.py`. + (PR [#4074](https://github.com/pipecat-ai/pipecat/pull/4074)) + +- Added `audio_out_auto_silence` parameter to `TransportParams` (defaults to + `True`). When set to `False`, the transport waits for audio data instead of + inserting silence when the output queue is empty, which is useful for + scenarios that require uninterrupted audio playback without artificial gaps. + (PR [#4104](https://github.com/pipecat-ai/pipecat/pull/4104)) + +### Changed + +- Renamed tracing span attributes to align with OpenTelemetry GenAI semantic + conventions: `gen_ai.system` to `gen_ai.provider.name`, `system` to + `gen_ai.system_instructions`, `gen_ai.usage.cache_read_input_tokens` to + `gen_ai.usage.cache_read.input_tokens`, and + `gen_ai.usage.cache_creation_input_tokens` to + `gen_ai.usage.cache_creation.input_tokens`. + (PR [#3449](https://github.com/pipecat-ai/pipecat/pull/3449)) + +- `DeepgramSageMakerTTSService` now correctly routes audio through the base + `TTSService` audio context queue. Audio frames are delivered via + `append_to_audio_context()` instead of being pushed directly, enabling proper + ordering, interruption handling, and start/stop frame lifecycle management. + Interruptions now trigger a `Clear` message to Deepgram (flushing its text + buffer) at the right time via `on_audio_context_interrupted`. + (PR [#4083](https://github.com/pipecat-ai/pipecat/pull/4083)) + +- `GradiumTTSService` now sends a per-context `setup` message with + `client_req_id` before the first text message for each TTS context, following + Gradium's multiplexing protocol. Previously, a single setup message was sent + at connection time without a `client_req_id`, which prevented Gradium from + associating requests with their sessions when using `close_ws_on_eos=False`. + (PR [#4091](https://github.com/pipecat-ai/pipecat/pull/4091)) + +### Fixed + +- Fixed stale `system_instruction` in LLM tracing spans by reading from + `_settings.system_instruction` instead of the removed `_system_instruction` + attribute. + (PR [#3449](https://github.com/pipecat-ai/pipecat/pull/3449)) + +- Fixed `SyncParallelPipeline` breaking the Whisker debugger. + (PR [#4029](https://github.com/pipecat-ai/pipecat/pull/4029)) + +- Fixed `SyncParallelPipeline` race condition where concurrent SystemFrame + processing (e.g. from RTVI) could corrupt sink queues and cause deadlocks. + SystemFrames now take a fast path that passes them through without draining + queued output. + (PR [#4029](https://github.com/pipecat-ai/pipecat/pull/4029)) + +- Fixed TTS frame ordering so that non-system frames always arrive in correct + order relative to the `TTSStartedFrame`/`TTSAudioRawFrame`/`TTSStoppedFrame` + sequence. Previously these frames could race ahead of or behind audio context + frames, producing out-of-order output downstream. + (PR [#4075](https://github.com/pipecat-ai/pipecat/pull/4075)) + +- Fixed `SarvamTTSService` audio and error frames now route through + `append_to_audio_context()` instead of `push_frame()`, ensuring correct + behavior with audio contexts and interruptions. + (PR [#4082](https://github.com/pipecat-ai/pipecat/pull/4082)) + +- Fixed audio frame ordering and interruption handling in Fish Audio, LMNT, + Neuphonic, and Rime NonJson TTS services. These services were bypassing the + base `TTSService` audio context serialization queue by pushing audio frames + directly, which could cause out-of-order frames and broken interruptions + during speech. + (PR [#4090](https://github.com/pipecat-ai/pipecat/pull/4090)) + +- Fixed Genesys AudioHook serializer to always include the `parameters` field in + protocol messages. The AudioHook protocol requires every message to carry a + `parameters` object (even if empty), but `_create_message` omitted it when no + parameters were provided. This caused clients that validate message structure + (including the Genesys reference implementation) to reject `pong` and + parameter-less `closed` responses, breaking server sequence tracking and + preventing `outputVariables` from reaching the Architect flow. + (PR [#4093](https://github.com/pipecat-ai/pipecat/pull/4093)) + ## [0.0.106] - 2026-03-18 ### Added diff --git a/changelog/3449.changed.md b/changelog/3449.changed.md deleted file mode 100644 index d5ea2f6d7..000000000 --- a/changelog/3449.changed.md +++ /dev/null @@ -1 +0,0 @@ -- Renamed tracing span attributes to align with OpenTelemetry GenAI semantic conventions: `gen_ai.system` to `gen_ai.provider.name`, `system` to `gen_ai.system_instructions`, `gen_ai.usage.cache_read_input_tokens` to `gen_ai.usage.cache_read.input_tokens`, and `gen_ai.usage.cache_creation_input_tokens` to `gen_ai.usage.cache_creation.input_tokens`. diff --git a/changelog/3449.fixed.md b/changelog/3449.fixed.md deleted file mode 100644 index 7cf01c0cb..000000000 --- a/changelog/3449.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed stale `system_instruction` in LLM tracing spans by reading from `_settings.system_instruction` instead of the removed `_system_instruction` attribute. diff --git a/changelog/4029.added.2.md b/changelog/4029.added.2.md deleted file mode 100644 index 1ae691442..000000000 --- a/changelog/4029.added.2.md +++ /dev/null @@ -1 +0,0 @@ -- Added `frame_order` parameter to `SyncParallelPipeline`. Set `frame_order=FrameOrder.PIPELINE` to push synchronized output frames in pipeline definition order (all frames from the first pipeline, then the second, etc.) instead of the default arrival order. diff --git a/changelog/4029.added.md b/changelog/4029.added.md deleted file mode 100644 index ba3714483..000000000 --- a/changelog/4029.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added `sync_with_audio` field to `OutputImageRawFrame`. When set to `True`, the output transport queues image frames with audio so they are displayed only after all preceding audio has been sent, enabling synchronized audio/image playback. diff --git a/changelog/4029.fixed.3.md b/changelog/4029.fixed.3.md deleted file mode 100644 index 3c812d590..000000000 --- a/changelog/4029.fixed.3.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed `SyncParallelPipeline` breaking the Whisker debugger. diff --git a/changelog/4029.fixed.md b/changelog/4029.fixed.md deleted file mode 100644 index 57930a997..000000000 --- a/changelog/4029.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed `SyncParallelPipeline` race condition where concurrent SystemFrame processing (e.g. from RTVI) could corrupt sink queues and cause deadlocks. SystemFrames now take a fast path that passes them through without draining queued output. diff --git a/changelog/4074.added.md b/changelog/4074.added.md deleted file mode 100644 index c27a8e3cf..000000000 --- a/changelog/4074.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added `OpenAIResponsesLLMService`, a new LLM service that uses the OpenAI Responses API. Supports streaming text, function calling, usage metrics, and out-of-band inference. Works with the universal `LLMContext` and `LLMContextAggregatorPair`. See `examples/foundational/07-interruptible-openai-responses.py` and `14-function-calling-openai-responses.py`. diff --git a/changelog/4075.fixed.md b/changelog/4075.fixed.md deleted file mode 100644 index 97870d4bb..000000000 --- a/changelog/4075.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed TTS frame ordering so that non-system frames always arrive in correct order relative to the `TTSStartedFrame`/`TTSAudioRawFrame`/`TTSStoppedFrame` sequence. Previously these frames could race ahead of or behind audio context frames, producing out-of-order output downstream. diff --git a/changelog/4082.fixed.md b/changelog/4082.fixed.md deleted file mode 100644 index e17e84fea..000000000 --- a/changelog/4082.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed `SarvamTTSService` audio and error frames now route through `append_to_audio_context()` instead of `push_frame()`, ensuring correct behavior with audio contexts and interruptions. diff --git a/changelog/4083.changed.md b/changelog/4083.changed.md deleted file mode 100644 index d9d46957a..000000000 --- a/changelog/4083.changed.md +++ /dev/null @@ -1 +0,0 @@ -- `DeepgramSageMakerTTSService` now correctly routes audio through the base `TTSService` audio context queue. Audio frames are delivered via `append_to_audio_context()` instead of being pushed directly, enabling proper ordering, interruption handling, and start/stop frame lifecycle management. Interruptions now trigger a `Clear` message to Deepgram (flushing its text buffer) at the right time via `on_audio_context_interrupted`. diff --git a/changelog/4090.fixed.md b/changelog/4090.fixed.md deleted file mode 100644 index ff42f09fe..000000000 --- a/changelog/4090.fixed.md +++ /dev/null @@ -1 +0,0 @@ -- Fixed audio frame ordering and interruption handling in Fish Audio, LMNT, Neuphonic, and Rime NonJson TTS services. These services were bypassing the base `TTSService` audio context serialization queue by pushing audio frames directly, which could cause out-of-order frames and broken interruptions during speech. diff --git a/changelog/4091.changed.md b/changelog/4091.changed.md deleted file mode 100644 index a05a981a3..000000000 --- a/changelog/4091.changed.md +++ /dev/null @@ -1 +0,0 @@ -- `GradiumTTSService` now sends a per-context `setup` message with `client_req_id` before the first text message for each TTS context, following Gradium's multiplexing protocol. Previously, a single setup message was sent at connection time without a `client_req_id`, which prevented Gradium from associating requests with their sessions when using `close_ws_on_eos=False`. diff --git a/changelog/4093.fixed.md b/changelog/4093.fixed.md deleted file mode 100644 index 39fabc029..000000000 --- a/changelog/4093.fixed.md +++ /dev/null @@ -1,7 +0,0 @@ -- Fixed Genesys AudioHook serializer to always include the `parameters` field in - protocol messages. The AudioHook protocol requires every message to carry a - `parameters` object (even if empty), but `_create_message` omitted it when no - parameters were provided. This caused clients that validate message structure - (including the Genesys reference implementation) to reject `pong` and - parameter-less `closed` responses, breaking server sequence tracking and - preventing `outputVariables` from reaching the Architect flow. diff --git a/changelog/4104.added.md b/changelog/4104.added.md deleted file mode 100644 index 31c6f3873..000000000 --- a/changelog/4104.added.md +++ /dev/null @@ -1 +0,0 @@ -- Added `audio_out_auto_silence` parameter to `TransportParams` (defaults to `True`). When set to `False`, the transport waits for audio data instead of inserting silence when the output queue is empty, which is useful for scenarios that require uninterrupted audio playback without artificial gaps.