## Summary
- Harden continuous server-STT sessions: re-queue speech spoken over
in-flight replies, stitch deferred STT across resume/partials, merge
micro sentence chunks (<8 chars), and remove backchannel continuers
(`backchannelEnabled` and related options are inert).
- Deepdub TTS (`@plumbus/voice-deepdub` **0.1.3**): websocket reconnect
with backoff after idle closes; honor per-turn `DeliveryTone.voiceId`
for emotional style-variant switching.
- Soniox: auto `language_hints_strict` for single-language sessions
(overridable via `stt.options.languageHintsStrict`); LiveKit
docs/guidance to keep client NC off the STT path.
- Core **0.6.17**: `plumbus e2e` port preflight, heap cap, signal
cleanup, and orphan watchdog; treat empty `AI_*_API_KEY=` as unset so
blank dotenv lines do not crash worker boot; agent wiring **v14** +
`continuous-sessions.md` recipe.
- Package bumps: `@plumbus/voice` **0.4.4**, `@plumbus/voice-livekit` /
`@plumbus/voice-soniox` **0.1.3**; docs and consumer instructions
updated accordingly.
## Testing
- `@plumbus/voice`: new/updated coverage for in-flight re-queue, session
hardening, sentence chunker (incl. Hebrew), delivery-tone `voiceId`,
endpoint turn; backchannel tests removed with the feature
- `@plumbus/voice-deepdub`: reconnect / wire tests for backoff and tone
`voiceId` override
- `@plumbus/voice-soniox` / `@plumbus/voice-livekit`:
`language_hints_strict`, NC/STT-path, PCM/session tests
- `@plumbus/core`: `e2e-lifecycle` helpers (port free, `NODE_OPTIONS`
merge, orphan watchdog), empty API-key skip in config loader, `plumbus
init` wiring pointer for `continuous-sessions.md`
- Full suite (`pnpm lint`, `pnpm format:check`, `pnpm typecheck`, `pnpm
test`): Not run in this change-request draft
- Live continuous-session / Deepdub idle-reconnect smoke against real
vendors: Not run