The renamed D-Bus interface stops being write-only. Alongside the existing toggle, start, and stop methods it exposes dictation state — idle, listening, processing — as a signal and a readable property, so status bars, widgets, and user scripts can reflect what dictation is doing without scraping the tray. Command-line triggers keep working exactly as before under the new names.
Acceptance criteria
Subscribing to the renamed interface shows a state emission for each transition through a full dictation cycle (idle to listening to processing to idle).
Reading the state property at any moment returns the current state, including immediately after application start (idle).
Starting dictation twice or stopping while idle does not emit duplicate or impossible transitions.
Existing toggle, start, and stop triggers (D-Bus and command line) behave unchanged.
Behaviour tests cover the transition sequence and the no-duplicate guarantee.
## Parent
[Spec: Voculinux — Void Linux (glibc) Wayland/niri port of Vocalinux](https://git.bongbetic.com/xavierk/voculinux/issues/16)
## What to build
The renamed D-Bus interface stops being write-only. Alongside the existing toggle, start, and stop methods it exposes dictation state — idle, listening, processing — as a signal and a readable property, so status bars, widgets, and user scripts can reflect what dictation is doing without scraping the tray. Command-line triggers keep working exactly as before under the new names.
## Acceptance criteria
- [ ] Subscribing to the renamed interface shows a state emission for each transition through a full dictation cycle (idle to listening to processing to idle).
- [ ] Reading the state property at any moment returns the current state, including immediately after application start (idle).
- [ ] Starting dictation twice or stopping while idle does not emit duplicate or impossible transitions.
- [ ] Existing toggle, start, and stop triggers (D-Bus and command line) behave unchanged.
- [ ] Behaviour tests cover the transition sequence and the no-duplicate guarantee.
## Blocked by
- [Rename user-visible identity to voculinux with one-time legacy import](https://git.bongbetic.com/xavierk/voculinux/issues/18)
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Parent
Spec: Voculinux — Void Linux (glibc) Wayland/niri port of Vocalinux
What to build
The renamed D-Bus interface stops being write-only. Alongside the existing toggle, start, and stop methods it exposes dictation state — idle, listening, processing — as a signal and a readable property, so status bars, widgets, and user scripts can reflect what dictation is doing without scraping the tray. Command-line triggers keep working exactly as before under the new names.
Acceptance criteria
Blocked by
Merged in integration/spec16
1dd3986383pushed to fork/integration/spec16 (https://github.com/soubarnak/vocalinux/tree/integration/spec16), review PASS, gates flake8 E9,F63,F7,F82 + black --check + isort --check + mypy src/ clean, pytest 37 passed, npm jest 11 suites/92 tests + lint 0 errors + tsc clean + build OK