* fix(audio): bound capture reads and support cancellation * fix(recognition): bound and serialize capture shutdown * fix(recognition): cancel retries and report stalled microphones * fix(audio): prefer pulse when the ALSA default is unavailable * fix(recognition): guard late callbacks and finalize capture tests * docs(audio): explain input selection and stall recovery * fix(speech): enforce auto-pause across buffered reload timeouts * fix(speech): recover auto-resume after reload timeout * test(speech): fix auto-pause follow-up test regressions * fix(speech): retain auto-resume after reconfigure timeout * fix(tray): preserve auto-pause recovery across suspend * test(capture-shutdown): give the bare tray the suspend path's shortcut managers _on_system_suspend now releases the main and per-language hotkey listeners before sleep (#1025); the fixture builds TrayIndicator without __init__, so it needs the two attributes present. * fix(tray): release hotkey listeners on suspend even while auto-paused Merging #1025's suspend cleanup with this branch's auto-pause handoff left an early return that skipped shortcut_manager.stop() whenever a configured game was active, keeping EVIOCGRABs held through sleep. The paused branch now only owns the model-lifecycle work; listener release and stopping active recognition run for every suspend. * fix(tray): hold the apply lock only around the download's verify and save Wrapping the whole recommended-model download in _apply_settings_lock blocked every GTK-thread settings apply (e.g. Test Dictation) for the length of the transfer. The engine already serializes reconfigures, so the lock only needs to cover verifying the download still owns the receipt and saving it; an apply that lands mid-download now proceeds instead of freezing the app. --------- Co-authored-by: Jatin K Malik <jatinkrmalik@gmail.com>
Documentation
User and maintainer documentation for Vocalinux.
| Document | Audience | Description |
|---|---|---|
| INSTALL.md | Users | Recommended install, AppImage, AUR, Flatpak, Snap, CLI |
| INSTALL_MANUAL.md | Users | Manual install, system packages, PyPI/pipx |
| TROUBLESHOOTING.md | Users | Common install and runtime failures |
| USER_GUIDE.md | Users | Dictation, engines, models, shortcuts, tips |
| UPDATE.md | Users | How to upgrade; release notes by version |
| DISTRO_COMPATIBILITY.md | Users | Distro matrix, session caveats |
| HTTP_REMOTE.md | Power users | Remote HTTP transcription |
| FLATPAK_REMOTE.md | Users / maintainers | Self-hosted Flatpak remote and publishing |
| GATEWAY_EMBED.md | Users | Optional local VocaGateway integration |
| CUSTOM_DICTIONARY_DESIGN.md | Contributors | Custom terms and correction design |
| ARCHITECTURE.md | Contributors | Application modules, data flow, and threads |
| Performance benchmarks | Contributors | Before and after charts for the performance pass |
| AUR.md | Arch users / maintainers | AUR packages and publish secrets |
| RELEASE_PROCESS.md | Maintainers | Version bump, checklist, tagging |
Project root:
| Document | Description |
|---|---|
| README.md | Project overview and quick start |
| CHANGELOG.md | Release history pointers |
| SUPPORT.md | Where to get help |
| CONTRIBUTING.md | Development setup and pull requests |
| SECURITY.md | Vulnerability reporting and supported versions |
| CODE_OF_CONDUCT.md | Community standards |
Website product and design notes live under web/ (PRODUCT.md, DESIGN.md, README.md). Flatpak packaging: packaging/flatpak/README.md.
Website: vocalinux.com