Skip to content

Releases: rusty4444/hermes-voice-ha-integration

v0.0.10 — Packaged Hermes plugin installer

14 Jun 21:39
4d1885d

Choose a tag to compare

What's Changed

  • Added a packaged hermes-ha-install-plugins console command for installing the bundled Hermes home_assistant and voice_stack plugins into a Hermes Agent profile.
  • Plugin installs now replace existing plugin directories first, avoiding stale files during upgrades.
  • Updated the README with the pip/GitHub install path and safer manual upgrade steps.
  • Synced Home Assistant integration, add-on, and Hermes plugin metadata to 0.0.10.

Validation

  • python3 -m pytest -q passed locally after installing pytest-asyncio: 128 passed.
  • GitHub CI passed on Python 3.11 and 3.12.

Addresses #30.

v0.0.9 — Fix conversation agent selectable (HA 2026.6+ compat)

13 Jun 22:43

Choose a tag to compare

What's Changed

🐛 Bug Fix — Conversation Agent Selectable Again (HA 2026.6+)

PR #31 fixes a regression where the Hermes conversation agent was greyed out and unselectable in the Assist pipeline dropdown on Home Assistant 2026.6.x.

Root cause: supported_languages in conversation.py was returning ["*"] (a list), but Home Assistant 2026.6+ requires the wildcard language marker to be the plain string "*". The list form caused the agent to appear greyed out.

Fix: Changed supported_languages to return "*" (plain string) instead of ["*"] (list).

How to Update

  • HACS → Updates → Hermes Voice Assistant → Update to v0.0.9
  • Restart Home Assistant
  • Go to Settings → Voice assistants → Assist → select Hermes in the Conversation agent dropdown

Full Changelog: v0.0.8...v0.0.9

v0.0.8 — Assist Conversation Agent + WebSocket Reader Fix

11 Jun 20:36

Choose a tag to compare

What's Changed

🎙️ Assist Conversation Agent (#27, #28)

Hermes can now be selected as a conversation agent in Home Assistant Assist pipelines. The flow is: HA Voice wakes/listens → STT → Assist sends text to Hermes → Hermes responds → TTS speaks the response.

  • Added Platform.CONVERSATION and HermesConversationAgent implementing ConversationEntity.async_process()
  • Text is forwarded to Hermes via WebSocket (assist_query / assist_response message types)
  • Graceful error handling with speech fallbacks when Hermes is unavailable

🔌 WebSocket Reader Keep-Alive (#27)

The HA integration now maintains a persistent background reader task that continuously drains messages from the Hermes WebSocket, keeping the aiohttp heartbeat alive.

  • voice_settings commands now return sent: true immediately instead of being queued
  • Auto-reconnect on disconnect
  • Reader task is properly cancelled during shutdown

📦 Other fixes

  • #26: Fixed add-on Hermes home and cache paths for Docker environment
  • Documentation: Added WebSocket message type reference for Assist pipeline and troubleshooting entry for timeouts
  • Code review: Addressed Kimi K2 findings

Protocol Notes

The conversation pathway uses two new WebSocket message types:

  • Outgoing: {"type": "assist_query", "text": "...", "conversation_id": "...", "language": "..."}
  • Incoming: {"type": "assist_response", "text": "...", "conversation_id": "...", "speech": {...}}

v0.0.7

31 May 02:16
d5d3b30

Choose a tag to compare

v0.0.7

Fixes issue #23 and the related plugin load failures reported in Hermes logs.

Fixed

  • Replaced absolute plugins.* imports with package-relative imports so home_assistant and voice_stack load under Hermes' dynamic user-plugin namespace.
  • Added a regression test that imports both plugins from a simulated hermes_plugins namespace without touching a local Hermes source checkout.
  • Updated all release metadata to 0.0.7.
  • Updated README release/install guidance for the Hermes voice bridge.

Verification

  • CI passed on Python 3.11 and 3.12.
  • python scripts/check_release_integrity.py --tag v0.0.7 --no-artifacts
  • python -m pytest -q

v0.0.6: Hermes Conversation Agent for HA Assist

25 May 09:32

Choose a tag to compare

v0.0.6 — 2026-05-29

Added

  • Conversation agent: HA Assist can now route natural-language requests to @hermes-agent via WebSocket.

Changed

  • Raised version to 0.0.6 across all integration, plugin, and addon manifests.

Full changelog:

  • Added HermesConversationAgent that bridges HA Assist to Hermes Agent via WebSocket
  • Implemented request/response correlation using asyncio futures with 10s timeout
  • Enhanced HermesBridge with WS listener, message dispatcher, and pending flush helper
  • Fixed wake_word normalization using const.normalize_wake_word
  • Bumped version to 0.0.6 across all manifests (pyproject, manifest, addon, plugins)
  • Updated changelog and README with release details
  • All 124 tests pass including new conversation agent integration

Source code: https://github.com/rusty4444/hermes-voice-ha-integration/archive/refs/tags/v0.0.6.tar.gz

v0.0.5 — Setup form URL/token guidance

25 May 02:01
10cd02f

Choose a tag to compare

What's changed

  • Added custom_components/hermes/translations/en.json so Home Assistant has the runtime translations needed by the Add Integration dialog.
  • Expanded the setup form copy so the page explains:
    • URL = the Hermes Agent machine/container URL Home Assistant can reach, e.g. http://hermes.local:7860; not your Home Assistant URL.
    • Token = the Hermes API/WebSocket token (HERMES_HA_WS_TOKEN, otherwise API_SERVER_KEY/HERMES_API_KEY); not a Home Assistant long-lived access token.
    • Route: Home Assistant connects → Hermes host/container URL → Hermes API/WebSocket receiver.
  • Bumped integration/add-on/plugin/package metadata to 0.0.5.

Verification

  • python -m pytest tests/ -q — 97 passed
  • python -m build --sdist --wheel
  • Release artifact inspection confirmed custom_components/hermes/translations/en.json is included and contains the required URL/token guidance.

Upgrade note

After HACS updates to v0.0.5, restart Home Assistant. If the old setup copy still appears, hard-refresh the browser or clear HA frontend cache.

v0.0.4 — Home Assistant brand icons

25 May 01:06
4d4b850

Choose a tag to compare

What's changed

  • Added Home Assistant local brand assets under custom_components/hermes/brand/:
    • icon.png
    • logo.png
    • icon@2x.png
    • logo@2x.png
  • Generated those assets from the README logo.png so Home Assistant can serve the same repo logo through /api/brands/integration/hermes/icon.png and /api/brands/integration/hermes/logo.png.
  • Kept the existing root/legacy icon locations in place for HACS/repository contexts.
  • Bumped package/add-on/plugin/custom-integration metadata to 0.0.4.
  • Added missing dev dependencies (PyYAML, build) so a fresh venv can run the existing YAML tests and build workflow.

Verification

  • python -m pytest tests/ -q — 95 passed
  • python -m build --sdist --wheel
  • Release artifact inspection confirmed the sdist includes custom_components/hermes/brand/{icon,logo}.png and @2x variants.

Note

After updating through HACS, restart Home Assistant and hard-refresh the browser. Home Assistant may cache brand assets under /api/brands/integration/hermes/icon.png.

v0.0.3 — setup UI clarity and icons

25 May 00:50
b08d291

Choose a tag to compare

What's changed

  • Clarified the Home Assistant setup UI so the URL field explicitly asks for the Hermes Agent machine/container URL that Home Assistant can reach.
  • Clarified the token field as the Hermes API/WebSocket bearer token (HERMES_HA_WS_TOKEN, falling back to API_SERVER_KEY/HERMES_API_KEY), not a Home Assistant long-lived access token.
  • Switched setup fields to Home Assistant selectors: URL input for the Hermes endpoint and masked password input for the token.
  • Added logo-derived integration icons for HACS/Home Assistant:
    • icon.png
    • custom_components/hermes/icon.png
    • custom_components/hermes/logo.png
  • Added a visual README setup guide showing what belongs in each field and the connection path: Home Assistant → Hermes :7860/api/hermes/ws.
  • Bumped package/add-on/plugin/custom-integration metadata to 0.0.3.

Verification

  • python3 -m pytest tests/ -q — 95 passed
  • python3 -m build --sdist --wheel
  • Release artifact inspection confirmed the sdist contains the new icons, README visual setup guide, custom integration files, add-on config, and plugin manifests.

v0.0.2 — WebSocket receiver + voice action dispatch

25 May 00:29

Choose a tag to compare

v0.0.2

Fixed

  • Fixed type errors in ws_receiver.py by replacing bare Dict usage with modern typing (dict, Mapping).
  • Wired handle_voice_action dispatch to _handle_voice_enable, _handle_voice_disable, and _handle_voice_status from plugins.voice_stack.
  • Bumped release metadata to 0.0.2 across pyproject.toml, addon/config.yaml, manifest.json, plugin YAMLs, tests, README, and egg-info.
  • Added TestVoiceWebSocketReceiver coverage for state_changed, unknown type rejection, voice action dispatch, unsupported action rejection, and auth enforcement.

Verification

  • Release created from existing tag v0.0.2 at commit bf56fc2.

v0.0.1

24 May 02:55

Choose a tag to compare

v0.0.1

First public release of Hermes × Home Assistant Voice Integration.

Highlights

  • Step-by-step README for installing Hermes, configuring Home Assistant access, installing plugins, adding the HA custom integration, and verifying the setup.
  • Home Assistant custom integration with config flow, status sensors, services, and Lovelace action bar resource.
  • Hermes Home Assistant plugin with entity search, state lookup, service calls, overview, service discovery, compound tools, bulk control, event watcher, and safety gates.
  • Hermes voice-stack plugin with wake-word, STT, TTS, and voice pipeline wrappers.
  • Home Assistant add-on scaffold for supervised deployments.

Fixes before release

  • Fixed HA integration unload/setup lifecycle and self-contained status sensors.
  • Removed voice-stack-only dependencies from the HA custom integration manifest.
  • Fixed HA WebSocket event auth/subscription handling.
  • Fixed Lovelace resource serving via HA static path.
  • Routed action bar voice actions through the Hermes WebSocket bridge.
  • Hardened TTS/wake-word edge cases and Docker add-on dependency quoting.
  • Added HACS metadata and source/package manifest coverage.

Verification

  • python3 -m compileall -q custom_components plugins tests
  • python3 -m pytest tests/ -q → 89 passed
  • git diff --check
  • python3 -m build --sdist --wheel
  • Verified sdist/wheel expected artifact contents
  • Independent release-blocker review passed