diff --git a/CHANGELOG.md b/CHANGELOG.md index a9b0eee..21d584f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,17 @@ named rather than smoothed. ## [Unreleased] +## [0.17.1] — 2026-09-07 + +Seven fixes and one knob. Spoken approvals in a Discord room now reach the +host under the field name it actually reads, so they stop failing with HTTP +400 (the first outside fix to a live production lane, by @danclaw93). The +cascade voice stops forcing a generation per chunk and lets ElevenLabs buffer +the turn, the dashboard relay no longer deadlocks on the servers Hermes +actually runs, cloned-voice playback is gapless, and a browser that cannot +stream says so instead of going mute. `TALK_CASCADE_SPEED` sets the delivery +pace. + ### Added - `TALK_CASCADE_SPEED` — delivery pace for the cascade voice, `0.7`–`1.2` (`1.0` is normal), resolved at call time so an operator's edit lands on @@ -36,7 +47,9 @@ named rather than smoothed. - Room-scoped spoken approvals now return the approval event's exact `request_id` under the field name required by the Hermes run API. They no longer fail with HTTP 400 `approval_request_required` while a pending action - waits for an answer. + waits for an answer. Fixed by + [@danclaw93](https://github.com/danclaw93), the first outside fix to a + live production lane. - The dashboard cascade relay no longer deadlocks on the servers Hermes actually runs on. `POST /api/plugins/hermes-talk/cascade-tts` returned HTTP 200 and then zero bytes of PCM, followed by a `ClientDisconnect` in diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3c21c68..aef706b 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -85,8 +85,8 @@ uv run --extra dev pytest -q uv run --extra dev ruff check . ``` -Either way you get the pinned `ruff==0.16.5` from the dev extra — the pin is -load-bearing, see below. +Either way you get the ruff version pinned in the dev extra (see +`pyproject.toml`). The pin is load-bearing, see below. **Why `--extra dev` on every `uv run`:** pytest and the pinned ruff live in the `dev` extra, not in the dependencies. `uv run` only guarantees the base diff --git a/README.md b/README.md index 497d9f3..09863b9 100644 --- a/README.md +++ b/README.md @@ -894,7 +894,11 @@ it does not claim that hot lifecycle support already exists here. ### Contributors -[@kvnloo](https://github.com/kvnloo) — PulseAudio WebRTC echo cancellation +[@danclaw93](https://github.com/danclaw93): room-scoped spoken approvals send +the `request_id` the Hermes run API reads, so they stop failing with HTTP 400 +(0.17.1). + +[@kvnloo](https://github.com/kvnloo): PulseAudio WebRTC echo cancellation on Linux, and the fix that stopped quiet words being clipped during playback ([#81](https://github.com/TheSmokeDev/hermes-talk/pull/81)); semantic turn-detection controls across the three lanes diff --git a/dashboard/manifest.json b/dashboard/manifest.json index 9752a34..21adfda 100644 --- a/dashboard/manifest.json +++ b/dashboard/manifest.json @@ -3,7 +3,7 @@ "label": "Talk", "description": "Realtime speech-to-speech voice in the browser — duplex audio over WebRTC, live tool calls, background runs spoken when they land.", "icon": "MessageSquare", - "version": "0.17.0", + "version": "0.17.1", "tab": { "path": "/talk", "position": "end" }, "entry": "dist/index.js", "css": "dist/style.css", diff --git a/plugin.yaml b/plugin.yaml index 140d885..c638e88 100644 --- a/plugin.yaml +++ b/plugin.yaml @@ -1,5 +1,5 @@ name: hermes-talk -version: 0.17.0 +version: 0.17.1 manifest_version: 1 kind: standalone description: "OpenAI Realtime speech-to-speech voice for Hermes: duplex talk with live tool calling." diff --git a/pyproject.toml b/pyproject.toml index 3f97f47..7dbc2ff 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "hermes-talk" -version = "0.17.0" +version = "0.17.1" description = "Realtime speech-to-speech voice for Hermes Agent — OpenAI, xAI Grok, or Gemini Live — duplex talk with live tool calling." readme = "README.md" requires-python = ">=3.11"