# Changelog

## 0.5.7

- Add per-reply clock calibration and matched RTP-frame receive/decoder/playback diagnostics; retain explicit unavailable results on unsupported runtimes.

## 0.5.6

- Automatically report the built SDK version and runtime environment to the connected Agent; custom session starters require no extra forwarding.

## 0.5.5

- Apply optional native `audioCapture` constraints before the first microphone opens and on reconnect. Isolated virtual inputs can disable echo cancellation without changing normal microphone defaults.
- Preserve unavailable timing for overlapping speech fragments, and use the correct 3,000 ms timing RPC timeout.
- Expose per-session native turn detection overrides.

## 0.5.4

- Sample RTC buffers over the first playback interval so cached onset statistics do not hide available measurements; preserve the original playback timestamp.

- Add server wait details, separate ASR/end-of-turn timings, and browser-native RTT/buffering samples to diagnostics. Retain old-worker compatibility and unavailable states.

## 0.5.3

- Observe decoded audio activity when RTC omits its optional audio level, so first-playback estimates still work with those senders.
- Add content-free session diagnostics and same-clock first-playback estimates for paired Avatar audio. Preserve missing, muted and interrupted observations as unavailable.


## 0.5.2

- Upgrade the browser LiveKit client to 2.22.4. The Waffle session and transcript APIs are unchanged.

## 0.5.1

- Expose protected lifecycle state and event methods for the native SDK adapter. Browser behavior is unchanged.

## 0.5.0

- Add opt-in `avatarMotion` support for negotiated, paired audio and motion
  playback. The browser-owned audio clock controls pose and caption progress;
  interruptions stop the matching audio and motion together.
- Buffer and acknowledge bounded motion packets, and report actual playback
  progress and completion to the managed session.
- Keep generated motion disabled by default. Existing integrations continue to
  use ordinary managed audio unless both the Agent and client opt in.

This release contains the Motion work previously tested in `0.4.1-run170.*`.
Existing `^0.4.0` dependencies do not automatically upgrade to this minor version.

## 0.4.0

- Breaking: replace session overrides `persona` and `systemPrompt` with a complete
  `characterCard`. `WaffleSessionClient` implementations must expose the new
  microphone/input controls and return promises for push-to-talk controls.
- Add media clients for backend-authorized application sessions, with a versioned
  capability handshake. Tools and context stay on the separate backend connection.
- Expose live input-mode switching, microphone control, and interruption.
- Return promises for queued push-to-talk controls and report control failures.

## 0.3.5

- Add lazy, creator-BFF-authorized private Developer Feedback for persisted
  Agent Sessions and Assistant messages.
- Expose the server-authored Agent Studio link and named Avatar presentation
  profile from managed Sessions.

## 0.3.4

- Classify public failures with `WaffleError.stage`; connection failures reject
  and emit the same error instance.
- Report the integration family for observability with `reportedSource`,
  defaulting to `SDK`.

## 0.3.3

- Start a fresh connection after an in-flight attempt is disconnected, including setup-cleanup-setup consumers such as React StrictMode.

## 0.3.2

- Emit `declined` when an opted-in Agent deliberately answers a live turn with silence.

## 0.3.1

- Pass SDK-owned request/session identities to managed starters and optional
  end-user context through the default token start.

## 0.3.0

- Require managed Agent session protocol v2 and connect to LiveKit WebRTC.
- Add ephemeral `transcriptProgress` captions while keeping `transcript` as completed persisted messages.
- Preserve the public connection, text, push-to-talk, audio-track, and reconnect lifecycle without transport-specific types.
- Breaking: remove `openaiModel` and `openaiVoice` from managed `WaffleSessionOverrides`; the managed SDK is provider-neutral. The separate Live Conversation OpenAI Realtime implementation is unchanged.

0.3.0 must be published before a managed backend is cut over to protocol v2.
