Commit Graph
321 Commits
Author SHA1 Message Date
dependabot[bot] 045afb238c Bump docker/build-push-action from 7.3.0 to 7.4.0
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 7.3.0 to 7.4.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/53b7df96c91f9c12dcc8a07bcb9ccacbed38856a...c3c9e263c25d99ce0380d002d59b67737d91b0dc)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: 7.4.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-09-18 17:24:13 +00:00
nick blackandOmar Amin 7c6fbaa4ee docs: remove obsolete option from pipewire aec (#416)
PipeWire no longer honors the 'method' option for the
echo-cancel module. Trying to use it will generate:

aec.method is not supported anymore use library.name

Remove it from all pipewire examples. It could be
replaced by 'library.name=aec/libspa-aec-webrtc',
but as that's currently the default (and only supported
option), I've elided it.

Co-authored-by: Omar Amin <65174210+omaramin-2000@users.noreply.github.com>
2026-09-03 22:33:39 +03:00
Omar Amin 99ee08f7b1 Enhance Satellite1 HAT Board volume button functionality with hold-repeat (#415)
Refactor the Satellite1 HAT Board volume button handling to support continuous hold-repeat behavior.
2026-09-02 01:23:16 +03:00
Omar Amin cfae3c55e2 Update peripheral_api.md 2026-08-31 00:46:44 +03:00
Omar Amin b0c53c41c1 Add unit tests for PeripheralAPIServer (#413)
Adds unit tests for the PeripheralAPIServer, covering initialization, state management, command dispatching, and event emission.
2026-08-26 03:54:40 +03:00
Omar Amin adcef575b7 Peripheral volume display (#411)
Adds the volume display effect to these boards that have LED Ring, when controlling the volume for LVA:

- Satellite 1 HAT Board

- ReSpeaker 4-Mic Array HAT

- ReSpeaker USB Mic Array v2.0

This animation appears on the LED ring temporarily to display an arc that sweeps clockwise when the volume increases and anti-clockwise when the volume decreases. Triggers by the volume_changed event.
2026-08-23 01:31:37 +03:00
d1f5761f75 Restore stop word sensitivity from preferences on startup (#394)
* Restore stop word sensitivity from preferences on startup

The Home Assistant number entity persists preferences.stop_word_sensitivity
whenever it changes, but nothing ever read it back. main() did not pass
stop_word_threshold when constructing ServerState, so it always took the
dataclass default of 0.5, and lowering the sensitivity in Home Assistant
silently reverted at the next restart.

volume and mic_volume are restored at startup, and the two wake word
sensitivities are restored when wake models load. Only the stop word was
missed, so the block that syncs all three sensitivity entities back to Home
Assistant was pushing a default it had never loaded.

Restored alongside volume and clamped the same way. The resolution lives in a
small helper so it can be covered by tests.

* Move the threshold helper to models.py so tests do not import __main__

CI has no PulseAudio daemon. Importing linux_voice_assistant.__main__ pulls in
`import soundcard as sc`, and soundcard/pulseaudio.py instantiates _PulseAudio()
at module scope, which asserts on a live connection. So the four new tests
failed on the runner while passing locally, where a daemon happens to be
running.

That is also why no other test in the suite imports __main__, and why the
existing tests in test_main.py re-implement the logic they check rather than
calling it.

initial_stop_word_threshold() now lives in models.py, which owns both fields it
resolves between: Preferences.stop_word_sensitivity and
ServerState.stop_word_threshold. It imports cleanly, test_models.py already
imports it, and the reference to the ServerState default becomes local.

Behaviour is unchanged. Verified by reproducing the CI environment locally with
PULSE_SERVER pointed at a nonexistent socket: 4 failed before, 298 pass after.

---------

Co-authored-by: ryan felder <7475484+ryanfelder@users.noreply.github.com>
Co-authored-by: Omar Amin <65174210+omaramin-2000@users.noreply.github.com>
2026-08-18 02:07:33 +03:00
Omar Amin a44292654e Add volume persistence on mute/unmute commands
Persist volume state when muting and unmuting.
2026-08-17 21:39:32 +03:00
Omar Amin 8303a96279 Fix peripheral volume_muted state (#403)
Enable updating the `volume_muted` status when muting/unmuting the media player volume, and improve its tracking.
2026-08-17 20:23:16 +03:00
dovy6 e334aa3fb1 Update README.md (#402)
Fix typo. It's a repository, not a repositroy
2026-08-09 10:30:17 +02:00
florian-asche 1543c5df58 Update changelog for v1.1.15
This commit was created by changelog-from-release in 'Generate changelog' CI workflow
2026-08-02 22:32:31 +00:00
43a183a232 Add --music-output-device to route music separately from voice (#350)
* Add --music-output-device to route music separately from voice

Music/media and TTS both play through --audio-output-device today, with no
way to send them to different sinks. Add an optional --music-output-device
(env MUSIC_OUTPUT_DEVICE) that the music player uses instead, defaulting to
--audio-output-device so existing setups are unchanged. Wired through
docker-entrypoint.sh and documented in the README and install docs.

* docs: fix swapped Default/Description columns in env var table

The MIC_VOLUME, MIC_AUTO_GAIN, MIC_NOISE_SUPPRESSION and
AUDIO_INPUT_CHANNELS rows had their Default and Description columns
swapped relative to the table header; fix the ordering and the
'Suppresion' misspelling. Also repair the UNMUTE_SOUND row, whose
description was garbled and which was missing its closing table pipe.

---------

Co-authored-by: Matthew Davis <fedoraproject@virtual.drop.net>
Co-authored-by: Florian Asche <github@florian-asche.de>
Co-authored-by: Omar Amin <65174210+omaramin-2000@users.noreply.github.com>
v1.1.15
2026-08-02 23:49:51 +02:00
Florian Asche a2d0a4e68e fix(docker): correct conditional check for DISABLE_PERIPHERAL_API
Fix the syntax error in the shell script where the comparison was
incorrectly structured, and remove the redundant passing of the
variable value to the flag.
2026-08-02 22:58:16 +02:00
Omar Amin b94a5a4663 Documentation Improvements (#385)
* Enhance README
2026-08-02 02:19:05 +02:00
dependabot[bot] 2b0388f454 Bump docker/login-action from 4.5.1 to 4.6.0 (#386)
Bumps [docker/login-action](https://github.com/docker/login-action) from 4.5.1 to 4.6.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/abd2ef45e78c5afb21d64d4ca52ee8550d9572c7...dbcb813823bdd20940b903addbd779551569679f)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: 4.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-08-01 19:42:01 +02:00
mrbubble62 0eafd4f7cd Update Jabra Speak DOCS.md (#387)
Add instructions for installing the Jabra peripheral controller bare metal as a service.
2026-07-31 14:58:12 +03:00
Omar Amin 8a36a74bda Revise Key Components in AGENTS.md
Clarified API server descriptions in AGENTS.md.
2026-07-29 02:38:08 +03:00
florian-asche bf3bf0d942 Update changelog for v1.1.14
This commit was created by changelog-from-release in 'Generate changelog' CI workflow
2026-07-28 00:16:28 +00:00
Omar Amin acda765964 Fix conditional check for DISABLE_PERIPHERAL_API v1.1.14 2026-07-27 13:37:22 +03:00
Omar Amin 3077e7230b Add optional peripheral API configuration options
Added optional configuration settings for peripheral API in .env.example.
2026-07-27 13:35:36 +03:00
dependabot[bot] ea991e026f Bump docker/login-action from 4.5.0 to 4.5.1 (#377)
Bumps [docker/login-action](https://github.com/docker/login-action) from 4.5.0 to 4.5.1.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/06fb636fac595d6fb4b28a5dfcb21a6f5091859c...abd2ef45e78c5afb21d64d4ca52ee8550d9572c7)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: 4.5.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-26 18:46:17 +02:00
SpiliosDmk 69a4fd3098 docs: add realtime scheduling tuning for constrained hardware (#376)
The core problem in #164 (config fully overriding pipewire.conf) was
already fixed by switching to pipewire.conf.d. This adds the
remaining performance-tuning recommendation (libpipewire-module-rt)
from the issue thread that never made it into the docs, to reduce
audio dropouts on hardware like the Raspberry Pi 3B.

Closes #164
2026-07-26 16:01:33 +02:00
dependabot[bot] 126bdf1862 Bump docker/login-action from 4.4.0 to 4.5.0 (#375)
Bumps [docker/login-action](https://github.com/docker/login-action) from 4.4.0 to 4.5.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/af1e73f918a031802d376d3c8bbc3fe56130a9b0...06fb636fac595d6fb4b28a5dfcb21a6f5091859c)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: 4.5.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-24 17:41:26 +02:00
Florian Asche 3b33730105 feat(ai): integrate Kilo agent framework and coding instructions (#366)
* feat(ai): integrate Kilo agent framework and coding instructions

Add configuration files, agent definitions, and skill sets to enable
AI-driven development workflows and standardized agent behavior.
2026-07-24 17:35:34 +02:00
dependabot[bot] 0f57ca989c Bump actions/checkout from 4 to 7 (#370)
Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v4...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-22 01:12:30 +02:00
litinoveweedleandOmar Amin ba7d834d1f fix race condition between LVA registration to the HA and peripheral registering tot the LVA (#373)
Co-authored-by: Omar Amin <65174210+omaramin-2000@users.noreply.github.com>
2026-07-22 01:10:10 +02:00
aryanhasgithubandFlorian Asche 2eb29470f9 Colored Debug Logging and move Voice Event to Info level in logger (#271)
* Added Colored Debug logging and arhument and changes voice event log to info

---------

Co-authored-by: Florian Asche <github@florian-asche.de>
2026-07-22 01:09:13 +02:00
dependabot[bot] 2378187197 Bump docker/setup-buildx-action from 3 to 4 (#371)
Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 3 to 4.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-21 19:40:21 +02:00
maximilianovermeyer d3874f6a2f Update install.md - Fixed log path (#372)
Fixed a typo in the path of the log dir.
2026-07-21 19:39:52 +02:00
litinoveweedleandFlorian Asche 201896196f fix Respeaker USB Mic Array v2 LEDs (#357)
Fix ReSpeaker USB LED control and suppress stale peripheral disconnect replay

---------

Co-authored-by: Florian Asche <github@florian-asche.de>
2026-07-21 19:16:10 +03:00
Florian Asche 8f788eeff0 chore(ci): update github actions and docker dependencies (#368)
- Update `actions/checkout` from v3 to v4 in workflows
- Enable `allow-unsafe-pr-checkout` in `docker-build-pr.yml` to support
  PR builds with updated checkout version
2026-07-20 18:48:13 +02:00
dependabot[bot] 305b787dd6 Bump docker/login-action from 3.1.0 to 4.4.0 (#360)
Bumps [docker/login-action](https://github.com/docker/login-action) from 3.1.0 to 4.4.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/e92390c5fb421da1463c202d546fed0ec5c39f20...af1e73f918a031802d376d3c8bbc3fe56130a9b0)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-version: 4.4.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-20 18:40:20 +02:00
dependabot[bot] e14844a113 Bump docker/setup-qemu-action from 3 to 4 (#361)
Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 3 to 4.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](https://github.com/docker/setup-qemu-action/compare/v3...v4)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-20 18:40:11 +02:00
dependabot[bot] 9ed97cd8f4 Bump docker/metadata-action from 5.5.1 to 6.2.0 (#362)
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from 5.5.1 to 6.2.0.
- [Release notes](https://github.com/docker/metadata-action/releases)
- [Commits](https://github.com/docker/metadata-action/compare/8e5442c4ef9f78752691e2d8f8d19755c6f78e81...dc802804100637a589fabce1cb79ff13a1411302)

---
updated-dependencies:
- dependency-name: docker/metadata-action
  dependency-version: 6.2.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-20 18:39:57 +02:00
dependabot[bot] e8042ee19d Bump actions/attest-build-provenance from 1 to 4 (#363)
Bumps [actions/attest-build-provenance](https://github.com/actions/attest-build-provenance) from 1 to 4.
- [Release notes](https://github.com/actions/attest-build-provenance/releases)
- [Changelog](https://github.com/actions/attest-build-provenance/blob/main/RELEASE.md)
- [Commits](https://github.com/actions/attest-build-provenance/compare/v1...v4)

---
updated-dependencies:
- dependency-name: actions/attest-build-provenance
  dependency-version: '4'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-20 18:39:47 +02:00
dependabot[bot] 802908cb8f Bump docker/build-push-action from 5.3.0 to 7.3.0 (#364)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.3.0 to 7.3.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/2cdde995de11925a030ce8070c3d77a52ffcf1c0...53b7df96c91f9c12dcc8a07bcb9ccacbed38856a)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-version: 7.3.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-07-20 18:39:37 +02:00
Florian Asche c37b482b87 docs(github): establish repository governance and automation workflows (#359)
Introduce essential GitHub repository files to standardize community
contributions and automate maintenance tasks.

- Add AI usage policy and contribution guidelines
- Implement issue and pull request templates for consistent reporting
- Configure Dependabot for automated dependency updates
- Add workflow for automated PR labeling
- Include funding information and repository metadata
2026-07-20 17:41:57 +02:00
Florian Asche 486ff4bb53 build(dev): enhance local development environment and setup workflow (#358)
Improve the developer experience by providing structured setup scripts,
VS Code workspace configurations, and detailed documentation.

- Add VS Code workspace configuration and recommended settings
- Update README.md with system requirements and VS Code setup instructions
- Refactor `script/setup` to include Python 3.11+ validation and system dependency checks
- Add option to skip PulseAudio wait in `docker-entrypoint.sh` for local development
- Update `.gitignore` to ensure consistent version file handling
2026-07-20 17:38:52 +02:00
Willian WangandFlorian Asche a66c0e4f28 feat: add --listen-during-wake-sound argument (#273)
* feat: add --listen-during-wake-sound argument

---------

Co-authored-by: Florian Asche <github@florian-asche.de>
v1.1.13
2026-07-18 19:16:11 +02:00
aryanhasgithub 9b2a8b4b30 Add Tests For LVA (#312)
* Add Tests
2026-07-18 18:22:25 +02:00
Omar Amin 4a0695ab57 Switch between MWW/OWW models from the UI (#348)
This PR adds the ability to select microWakeWord/openWakeWord models using the wake word dropdown selection via the HA device page at any time without the need for restarting the app/container to change the wake word path.
2026-07-16 03:57:51 +03:00
Omar Amin 2c9c1d2b8a Fix lint_mypy (#352)
* Add type ignore for stop_word attribute assignment

Added type ignore comment for stop_word attribute.

* Refactor exception handling in disconnect process

Updated exception handling to use pylint directive for broad exceptions.

* Fix callback lambda for broadcasting state
2026-07-16 03:38:40 +03:00
d811ae75d4 Broadcast entity state to all API clients; don't desync on a second connection (#329)
The ESPHome API server delivered asynchronous entity-state changes to a single
connection (the entity's `server`), which every new connection reassigns. A
second API client — a diagnostic tool, a second dashboard, or Home Assistant's
own overlapping reconnect — therefore stole state delivery, leaving Home
Assistant stuck on a stale state (e.g. `media_player` showing `playing` after
playback had finished). `connection_lost` also stopped the shared music/TTS
players for *any* dropped connection.

- models.py: add a per-server connection registry and a `broadcast()` helper.
- satellite.py: register/deregister connections in connection_made/_lost; only
  stop shared playback when the last client disconnects; handle the standard
  `SubscribeStatesRequest` by replaying current entity state to the subscriber.
- entity.py: push playback-completion state via broadcast to all clients.

Co-authored-by: Omar Amin <65174210+omaramin-2000@users.noreply.github.com>
Co-authored-by: Florian Asche <github@florian-asche.de>
2026-07-15 19:11:54 +02:00
Florian Asche 2ccb1fb597 perf(player): limit cache to 32 MiB (#309)
* Update libmpv initialization to use demuxer_max_bytes and cache_secs
instead of the deprecated cache-size property. This ensures more
predictable memory usage and better buffering behavior during
playback.
2026-07-15 18:21:58 +02:00
Omar Amin 2e6c726bd8 Modify USB control transfer settings in respeaker_usb_mic_array.py (#349)
Updated USB control transfer parameters for compatibility.
2026-07-14 13:01:42 +03:00
Omar Amin 2d460b6728 Leds and buttons events (#266)
Use events and commands to control custom onboard leds and buttons. Can be used to communicate with an external Python script via a WebSocket API running in a container alongside LVA.
2026-07-03 19:58:45 +03:00
Omar Amin e1770d071c Update README.md 2026-07-01 02:55:40 +03:00
Omar Amin 49b0937a13 Document continue-conversation-delay 2026-07-01 02:48:25 +03:00
Omar Amin 19c6322c28 Add audio input channels env 2026-06-24 22:57:31 +03:00
Omar Amin eb2d3b21b1 Allow using python versions above 3.11 (#345) 2026-06-22 21:53:18 +03:00