diff --git a/README.md b/README.md
index 16a5aa2..4aa0ab5 100644
--- a/README.md
+++ b/README.md
@@ -28,38 +28,38 @@
**A seamless free open-source private voice dictation system for Linux**, comparable to built-in solutions on macOS and Windows.
-## 📚 What's New in v0.8.0-beta
+## 📚 What's New in v0.9.0-beta
-> 🎉 **Major Release: Push-to-Talk, command controls, and reliability upgrades.**
+> 🎉 **Release: Left/Right modifier keys, sound effects toggle, Wayland clipboard fallback, and more.**
-### 🚀 Highlights (v0.7.0 → v0.8.0)
+### 🚀 Highlights (v0.8.0 → v0.9.0)
| Feature | Description |
|---------|-------------|
-| **🎤 Push-to-Talk Mode** | Hold the shortcut key to speak, release to stop |
-| **⚙️ Voice Commands Toggle** | Enable/disable command parsing with smart VOSK auto-enable |
-| **⌨️ Shortcut Reliability** | Improved live mode switching and callback lifecycle stability |
-| **🧠 Better Input Handling** | More robust IBus detection and text injection behavior |
+| **⌨️ Left/Right Modifier Keys** | Choose Left Ctrl vs Right Ctrl (etc.) as your shortcut trigger |
+| **🔔 Sound Effects Toggle** | Enable or disable audio feedback from the Settings dialog |
+| **📋 Wayland Clipboard Fallback** | Automatic clipboard copy when virtual keyboard injection isn't available |
+| **🛠️ Installation Polish** | Better pipx/Debian guidance and headless display detection |
-### ✨ New Features (v0.8.0)
+### ✨ New Features (v0.9.0)
-- **Push-to-Talk Shortcut Mode** — Added a second shortcut mode alongside double-tap toggle
-- **Mode-aware Shortcut UI** — Settings now clearly describe toggle vs push-to-talk behavior
-- **Voice Commands Optional Mode** — Commands can be disabled, with auto mode optimized for VOSK
+- **Left/Right Modifier Key Distinction** — Shortcuts now support `Left Ctrl`, `Right Alt`, etc., with grouped UI in Settings
+- **Sound Effects Toggle** — New Audio Settings toggle to silence start/stop/error sounds
+- **Clipboard Fallback for Wayland** — Auto-copies text via `wl-copy`/`xclip` when injection unavailable (KDE Plasma etc.)
+- **Display Availability Check** — Graceful error message when running in headless environments
-### 🐛 Bug Fixes (v0.8.0)
+### 🐛 Bug Fixes (v0.9.0)
-- **#277**: Detect active IBus input method before using IBus injection path
-- **#275**: Auto-detect supported audio channel count for better microphone compatibility
-- **#268**: Prevent GTK startup dialog crash on Fedora
-- **#261**: Resolve text injection reliability issues across desktop environments
-- **#259**: Prevent recognition-thread state flicker
-- **#262/#263**: Auto-detect device sample rate for broader audio hardware support
+- **#308**: Distinguish left vs right modifier keys (evdev + pynput backends)
+- **#307**: Remove unwanted leading space when starting a new transcription session
+- **#305**: Pass configured shortcut mode to `KeyboardShortcutManager` on startup
+- **#299**: Add clipboard fallback for Wayland compositors without virtual keyboard support
+- **#289**: Improve Debian/pipx installation error messages and cross-distro dependency guidance
-### 🔧 Recent Improvements
+### 🔧 Improvements
-- **Web SEO Expansion** — Added 8 additional optimized pages for discoverability
-- **Web Visual Refresh** — Updated homepage gradients and voice-brand styling
+- **Grouped shortcut selector** — Settings dropdown now organises shortcuts by Either/Left/Right side
+- **pipx documentation** — New `DISTRO_COMPATIBILITY.md` section for pipx users
---
@@ -117,7 +117,7 @@ Here are some screenshots showcasing Vocalinux in action:
Our new interactive installer guides you through setup with intelligent hardware detection:
```bash
-curl -fsSL raw.githubusercontent.com/jatinkrmalik/vocalinux/v0.8.0-beta/install.sh -o /tmp/vl.sh && bash /tmp/vl.sh
+curl -fsSL raw.githubusercontent.com/jatinkrmalik/vocalinux/v0.9.0-beta/install.sh -o /tmp/vl.sh && bash /tmp/vl.sh
```
**Choose your engine:**
@@ -131,25 +131,25 @@ The installer will:
- **Download the appropriate model** (~39MB for whisper.cpp tiny)
- **Install in ~1-2 minutes** (vs 5-10 min with old Whisper)
-> **Note**: Installs v0.8.0-beta. For other versions, check [GitHub Releases](https://github.com/jatinkrmalik/vocalinux/releases).
+> **Note**: Installs v0.9.0-beta. For other versions, check [GitHub Releases](https://github.com/jatinkrmalik/vocalinux/releases).
### Installation Options
**Default (whisper.cpp - recommended):**
```bash
-curl -fsSL raw.githubusercontent.com/jatinkrmalik/vocalinux/v0.8.0-beta/install.sh -o /tmp/vl.sh && bash /tmp/vl.sh
+curl -fsSL raw.githubusercontent.com/jatinkrmalik/vocalinux/v0.9.0-beta/install.sh -o /tmp/vl.sh && bash /tmp/vl.sh
```
Fastest installation (~1-2 min), universal GPU support via Vulkan.
**Whisper (OpenAI) - if you prefer PyTorch:**
```bash
-curl -fsSL raw.githubusercontent.com/jatinkrmalik/vocalinux/v0.8.0-beta/install.sh -o /tmp/vl.sh && bash /tmp/vl.sh --engine=whisper
+curl -fsSL raw.githubusercontent.com/jatinkrmalik/vocalinux/v0.9.0-beta/install.sh -o /tmp/vl.sh && bash /tmp/vl.sh --engine=whisper
```
NVIDIA GPU only (~5-10 min, downloads PyTorch + CUDA).
**VOSK only - for low-RAM systems:**
```bash
-curl -fsSL raw.githubusercontent.com/jatinkrmalik/vocalinux/v0.8.0-beta/install.sh -o /tmp/vl.sh && bash /tmp/vl.sh --engine=vosk
+curl -fsSL raw.githubusercontent.com/jatinkrmalik/vocalinux/v0.9.0-beta/install.sh -o /tmp/vl.sh && bash /tmp/vl.sh --engine=vosk
```
Lightweight option (~40MB), works on systems with 4GB RAM.
@@ -361,6 +361,14 @@ This script generates all three sounds using the same smooth glide algorithm. Yo
We welcome contributions! Whether it's bug reports, feature requests, or code contributions, please check out our [Contributing Guide](CONTRIBUTING.md).
+### Contributors
+
+Thanks to everyone who has contributed to Vocalinux! 🙌
+
+
+
+
+
### Quick Links
- 🐛 [Report a Bug](https://github.com/jatinkrmalik/vocalinux/issues/new?template=bug_report.md)
diff --git a/SECURITY.md b/SECURITY.md
index 4630e6e..a46b573 100644
--- a/SECURITY.md
+++ b/SECURITY.md
@@ -4,10 +4,10 @@
| Version | Supported |
| ------- | ------------------ |
-| 0.8.x | :white_check_mark: |
+| 0.9.x | :white_check_mark: |
+| 0.8.x | :x: |
| 0.7.x | :x: |
-| 0.6.x | :x: |
-| < 0.6 | :x: |
+| < 0.7 | :x: |
## Reporting a Vulnerability
diff --git a/docs/INSTALL.md b/docs/INSTALL.md
index 950686f..7c11254 100644
--- a/docs/INSTALL.md
+++ b/docs/INSTALL.md
@@ -7,10 +7,10 @@ This guide provides detailed instructions for installing Vocalinux on Linux syst
### One-liner Installation (Recommended)
```bash
-curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/v0.8.0-beta/install.sh | bash
+curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/v0.9.0-beta/install.sh | bash
```
-> **Note**: Installs v0.8.0-beta with **whisper.cpp** (our default engine). For other versions, check [GitHub Releases](https://github.com/jatinkrmalik/vocalinux/releases).
+> **Note**: Installs v0.9.0-beta with **whisper.cpp** (our default engine). For other versions, check [GitHub Releases](https://github.com/jatinkrmalik/vocalinux/releases).
That's it! The installer handles everything automatically:
- ✅ Installs whisper.cpp (~1-2 minutes, no heavy dependencies!)
@@ -508,7 +508,7 @@ Already have Vocalinux installed? See the [Update Guide](UPDATE.md) for instruct
Quick update command:
```bash
-curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/v0.8.0-beta/install.sh | bash
+curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/v0.9.0-beta/install.sh | bash
```
## Getting Help
diff --git a/docs/RELEASE_PROCESS.md b/docs/RELEASE_PROCESS.md
index ef0ba4d..afa7656 100644
--- a/docs/RELEASE_PROCESS.md
+++ b/docs/RELEASE_PROCESS.md
@@ -327,6 +327,7 @@ git push origin v0.5.1-beta
| 0.6.3-beta | 2026-02-19 | Beta | GPU detection improvements |
| 0.7.0-beta | 2026 | Beta | Autostart, tabbed settings, Intel GPU support, single instance |
| 0.8.0-beta | 2026-03-01 | Beta | Push-to-talk mode, optional voice commands, input/audio compatibility fixes |
+| 0.9.0-beta | 2026-03-14 | Beta | Left/right modifier keys, sound effects toggle, Wayland clipboard fallback, leading-space fix |
## Questions?
diff --git a/docs/UPDATE.md b/docs/UPDATE.md
index f9346a2..bc804ee 100644
--- a/docs/UPDATE.md
+++ b/docs/UPDATE.md
@@ -2,6 +2,41 @@
This guide explains how to update Vocalinux to the latest version.
+## What's New in v0.9.0-beta
+
+### 🚀 Highlights
+
+| Feature | Description |
+|---------|-------------|
+| **⌨️ Left/Right Modifier Keys** | Choose Left Ctrl vs Right Ctrl (etc.) as your shortcut trigger |
+| **🔔 Sound Effects Toggle** | Enable or disable audio feedback from the Settings dialog |
+| **📋 Wayland Clipboard Fallback** | Automatic clipboard copy when virtual keyboard injection isn't available |
+| **🛠️ Installation Polish** | Better pipx/Debian guidance and headless display detection |
+
+### ✨ New Features
+
+- **Left/Right Modifier Key Distinction** — Shortcuts now support `Left Ctrl`, `Right Alt`, etc., with grouped UI in Settings
+- **Sound Effects Toggle** — New Audio Settings toggle to silence start/stop/error sounds
+- **Clipboard Fallback for Wayland** — Auto-copies text via `wl-copy`/`xclip` when injection unavailable (KDE Plasma etc.)
+- **Display Availability Check** — Graceful error message when running in headless environments
+
+### 🐛 Bug Fixes
+
+- **#308**: Distinguish left vs right modifier keys (evdev + pynput backends)
+- **#307**: Remove unwanted leading space when starting a new transcription session
+- **#305**: Pass configured shortcut mode to `KeyboardShortcutManager` on startup
+- **#299**: Add clipboard fallback for Wayland compositors without virtual keyboard support
+- **#289**: Improve Debian/pipx installation error messages and cross-distro dependency guidance
+
+### 🔧 Improvements
+
+- **Grouped shortcut selector** — Settings dropdown now organises shortcuts by Either/Left/Right side
+- **pipx documentation** — New `DISTRO_COMPATIBILITY.md` section for pipx users
+
+See the [full changelog](https://github.com/jatinkrmalik/vocalinux/releases/tag/v0.9.0-beta).
+
+---
+
## What's New in v0.8.0-beta
### 🚀 Highlights
@@ -44,7 +79,7 @@ See the [full changelog](https://github.com/jatinkrmalik/vocalinux/releases/tag/
Simply re-run the installation command:
```bash
-curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/v0.8.0-beta/install.sh | bash
+curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/v0.9.0-beta/install.sh | bash
```
The installer will:
@@ -58,7 +93,7 @@ The installer will:
```bash
cd vocalinux
git fetch origin
-git checkout v0.8.0-beta
+git checkout v0.9.0-beta
./install.sh
```
diff --git a/src/vocalinux/main.py b/src/vocalinux/main.py
index 68d79a9..4afb0a5 100644
--- a/src/vocalinux/main.py
+++ b/src/vocalinux/main.py
@@ -141,7 +141,7 @@ def check_dependencies():
logger.error("")
logger.error("For the best experience, use the recommended installer:")
logger.error(
- " curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/v0.8.0-beta/install.sh | bash"
+ " curl -fsSL https://raw.githubusercontent.com/jatinkrmalik/vocalinux/v0.9.0-beta/install.sh | bash"
)
return False
diff --git a/src/vocalinux/version.py b/src/vocalinux/version.py
index 83274c2..8eb33ae 100644
--- a/src/vocalinux/version.py
+++ b/src/vocalinux/version.py
@@ -2,8 +2,8 @@
Version information for Vocalinux.
"""
-__version__ = "0.8.0-beta"
-__version_info__ = (0, 8, 0, "beta")
+__version__ = "0.9.0-beta"
+__version_info__ = (0, 9, 0, "beta")
__author__ = "Jatin K Malik"
__email__ = "jatinkrmalik@gmail.com"
__license__ = "GPL-3.0"
diff --git a/web/package.json b/web/package.json
index e71945b..7b64dfa 100644
--- a/web/package.json
+++ b/web/package.json
@@ -1,6 +1,6 @@
{
"name": "vocalinux-website",
- "version": "0.8.0",
+ "version": "0.9.0",
"private": true,
"type": "module",
"scripts": {
diff --git a/web/src/app/changelog/page.tsx b/web/src/app/changelog/page.tsx
index fd9bedb..30cfd96 100644
--- a/web/src/app/changelog/page.tsx
+++ b/web/src/app/changelog/page.tsx
@@ -5,6 +5,21 @@ import { SeoSubpageShell } from "@/components/seo-subpage-shell";
import { absoluteUrl, buildPageMetadata } from "@/lib/seo";
const releases = [
+ {
+ version: "v0.9.0-beta",
+ date: "2026-03-14",
+ type: "beta",
+ highlights: [
+ "Left/right modifier key distinction — choose Left Ctrl vs Right Ctrl for your shortcut",
+ "Sound effects toggle — enable or disable audio feedback from Settings",
+ "Wayland clipboard fallback — auto-copies text when virtual keyboard injection isn't available",
+ "Display availability check — graceful error when running in headless environments",
+ "Fixed unwanted leading space at the start of each new transcription session",
+ "Fixed shortcut mode (toggle/push-to-talk) not applying on startup",
+ "Improved Debian/pipx installation guidance and cross-distro error messages",
+ "Grouped shortcut selector UI — shortcuts organised by Either/Left/Right side",
+ ],
+ },
{
version: "v0.8.0-beta",
date: "2026-03-01",
@@ -160,7 +175,7 @@ export default function ChangelogPage() {
headline: "Vocalinux Changelog - Release History",
description:
"Complete release history for Vocalinux, the offline voice dictation software for Linux.",
- dateModified: "2026-03-01",
+ dateModified: "2026-03-14",
author: {
"@type": "Person",
name: "Jatin K Malik",
diff --git a/web/src/app/page.tsx b/web/src/app/page.tsx
index efc52d2..3744d3d 100644
--- a/web/src/app/page.tsx
+++ b/web/src/app/page.tsx
@@ -65,7 +65,7 @@ const homeJsonLd = [
},
description:
"Offline voice dictation and speech-to-text for Linux with whisper.cpp and VOSK.",
- "softwareVersion": "0.8.0-beta",
+ "softwareVersion": "0.9.0-beta",
author: {
"@type": "Person",
name: "Jatin K Malik",
@@ -78,8 +78,11 @@ const homeJsonLd = [
"100% offline speech recognition",
"Works with X11 and Wayland",
"Toggle and push-to-talk shortcut modes",
+ "Left/right modifier key distinction for shortcuts",
"Optional voice commands with VOSK-aware defaults",
"Adaptive audio and IBus-aware text injection",
+ "Clipboard fallback for unsupported Wayland compositors",
+ "Sound effects toggle for audio feedback",
"whisper.cpp, Whisper, and VOSK support",
"Linux desktop integration",
],
@@ -292,7 +295,7 @@ export default function HomePage() {
/>
Vocalinux
- v0.8.0 Beta
+ v0.9.0 Beta