Skip to content

Releases: ndrco/Listener

Listener v0.2.7 - OpenClaw gateway v4 and emoji display while speaker is off

Choose a tag to compare

@ndrco ndrco released this 01 Jun 18:08
  • Updated Listener's OpenClaw websocket clients to negotiate Gateway protocol v4 for both input-side forwarding and SpeakerAgent history/event reads.
  • Kept emoji-display working even when spoken replies are disabled, so emoji can still appear on the external display while local TTS stays off.
  • Added a loopback-only fallback for reading the local OpenClaw gateway token, which fixes device identity required failures for Listener's websocket path.
  • Added an explicit PATH entry for /home/re/.local/bin in the Listener systemd template so CLI fallback can still find openclaw when needed.
  • Expanded regression coverage for Gateway v4 compatibility and emoji-display behavior with speaker.enabled=false.
  • Bumped runtime version to 0.2.7.

Listener v0.2.6 - Speaker voice controls and ducking recovery

Choose a tag to compare

@ndrco ndrco released this 20 May 16:24
  • Added local voice commands to disable and re-enable spoken replies with phrases like "<Имя> выключи озвучку" and "<Имя> включи озвучку".
  • Added an OpenClaw listener-speaker-off skill/tool for turning Listener speech output off from the workspace.
  • Fixed ducking recovery so persisted baseline volumes survive stream recreation and short sink-input disappearance during or after speech.
  • Taught forced ducking recovery to match streams by route key, not only by the old sink-input id, which helps Chrome/PipeWire sessions recover their volume.
  • Expanded docs and regression coverage for speaker voice controls and ducking restoration.
  • Bumped runtime version to 0.2.6.

Listener v0.2.5 - Emoji display simplification and import resilience

Choose a tag to compare

@ndrco ndrco released this 18 May 18:31

What changed

  • Simplified emoji display delivery: Listener now sends only the latest emoji token from a segment and defaults speaker.emoji_display.send to last.
  • Kept backward compatibility for existing configs by accepting legacy send=all and mapping it to last.
  • Made audio and llm package exports lazy so control, Speaker, and status code paths can import cleanly before optional ML dependencies are loaded.
  • Changed torch-backed SpeechGate and Silero helpers to fail only when those features are instantiated, rather than during unrelated module imports.
  • Expanded README, release docs, and test coverage for the new emoji-display behavior.
  • Bumped runtime version to 0.2.5.

Validation

  • .venv/bin/python -m py_compile main.py agents/control_agent.py agents/openclaw_input_agent.py agents/speaker_agent.py agents/speech_gate_agent.py audio/ducking.py llm/speech_gate.py speaker/*.py utils/listenerctl.py
  • PYTHONPATH=. pytest -q tests/test_control_agent.py tests/test_main_service.py tests/test_speaker_emoji.py tests/test_speaker_config.py tests/test_speaker_events.py tests/test_speaker_service.py tests/test_speaker_tts.py tests/test_speaker_agent.py tests/test_sound_indicators.py -> 76 passed
  • git diff --check -> clean

Listener v0.2.4 - Speaker recovery and service controls

Choose a tag to compare

@ndrco ndrco released this 17 May 19:19

What changed

  • Fixed streaming Speaker routing stalls on file names such as MEMORY.md and AGENTS.md; Listener no longer stops speaking after those dots.
  • Added stronger SpeechGate/Speaker reset flow for service reloads, including ducking recovery and route-setting normalization.
  • Improved Speaker playback reliability on Linux with paplay metadata/volume handling and persisted ducking baselines.
  • Expanded service, OpenClaw, Speaker, emoji, and troubleshooting documentation.
  • Bumped runtime version to 0.2.4.

Validation

  • python -m pytest -q -> 174 passed, 1 warning
  • git diff --check -> clean

Listener v0.2.3 - OpenClaw gateway client fix

Choose a tag to compare

@ndrco ndrco released this 17 May 08:48

Patch release for service installs.\n\n- Use the OpenClaw Gateway-accepted client id for Listener input RPC connections so chat.send can use the persistent WebSocket path instead of falling back to CLI.\n- Add regression coverage for the Gateway connect payload.\n\nValidation: local pytest passed (164 tests), GitHub Actions passed for commit a4799be.

Listener v0.2.2 - Reliable service shutdown

Choose a tag to compare

@ndrco ndrco released this 17 May 08:34

Fixes

  • Make ExecStop best-effort in the systemd user-service template.
  • Prevent listenerctl stop / /shutdown from causing a failed unit result when Listener has already stopped before systemd runs ExecStop.
  • Document the best-effort shutdown behavior.

Verification

  • Local: python -m pytest -q passed with 163 passed, 1 warning.
  • GitHub Actions: latest main workflow passed.

Listener v0.2.1 - Clean service installs

Choose a tag to compare

@ndrco ndrco released this 17 May 08:30

Fixes

  • Do not ship state/runtime_state.json in releases. New installations now start from config/config.json instead of inheriting a developer machine runtime mode.
  • Keep state/ in the repository with .gitkeep and ignore generated runtime state JSON files.
  • Document that runtime mode state is created locally on the installed machine.

Verification

  • Local: python -m pytest -q passed with 163 passed, 1 warning.
  • GitHub Actions: latest main workflow passed.

Listener v0.2.0 - Service-ready voice runtime

Choose a tag to compare

@ndrco ndrco released this 17 May 08:13

Highlights

  • Added Linux systemd --user service support with deploy/systemd/listener.service and utils/install_user_service.py.
  • Added service lifecycle controls: listenerctl health, listenerctl ready, listenerctl stop, plus /ready and /shutdown control API endpoints.
  • Added service.strict_startup for failing service startup when critical components cannot start.
  • Added persisted runtime state for speech-gate/speaker modes across restarts.
  • Reduced spoken-reply latency with persistent TTS/ducking improvements and structured performance logs.
  • Fixed missing spoken reply tails by reconciling streaming final events against chat.history.
  • Improved setup documentation in README.md, INSTALL.md, and docs/service.md.

Verification

  • Local: python -m py_compile ... passed.
  • Local: python -m pytest -q passed with 163 passed, 1 warning.
  • GitHub Actions: latest main workflow passed.

Notes

This release is Linux-first. The recommended service mode is a foreground Python process supervised by systemd --user, so Listener keeps access to the user audio session.

Listener v0.1.0 - Linux voice runtime for OpenClaw

Choose a tag to compare

@ndrco ndrco released this 26 Apr 12:48

Listener v0.1.0 - Linux voice runtime for OpenClaw

  • Linux-first microphone, VAD, STT and AEC loopback pipeline.
  • Whisper STT integration with async executor isolation.
  • SpeechGate directed-speech filtering with OpenClaw identity discovery.
  • Runtime SpeechGate control API and listenerctl.
  • OpenClaw workspace skill for voice-mode control.
  • Removed unused speaker diarization / speaker-recognition functionality.