From c1f12db845d8a2dbb8aceb06d6571377ade37794 Mon Sep 17 00:00:00 2001 From: Jatin K Malik Date: Mon, 30 Mar 2026 00:31:08 -0700 Subject: [PATCH] chore(release): prepare v0.10.1-beta (#358) * chore(release): prepare v0.10.1-beta * chore(release): update release notes with new fixes from main --- README.md | 47 ++++++++++++++++++---------------- docs/RELEASE_PROCESS.md | 1 + docs/UPDATE.md | 44 ++++++++++++++++--------------- install.sh | 2 +- src/vocalinux/version.py | 4 +-- web/package-lock.json | 4 +-- web/package.json | 2 +- web/src/app/changelog/page.tsx | 19 +++++++++++++- web/src/app/page.tsx | 4 +-- 9 files changed, 76 insertions(+), 51 deletions(-) diff --git a/README.md b/README.md index 79bea54..24a8677 100644 --- a/README.md +++ b/README.md @@ -32,39 +32,42 @@ It's a free, GPLv3-licensed desktop app that lets you dictate text into *any* ap No internet required. No data leaves your machine. Just speak and type. -## ๐Ÿ“š What's New in v0.10.0-beta +## ๐Ÿ“š What's New in v0.10.1-beta -> ๐ŸŽ‰ **Release: reliability hardening across keyboard/audio/tray handling, stronger IBus activation, and better CI/testing quality.** +> ๐ŸŽ‰ **Release: focused stability patch for tray resources, engine switching safety, keyboard layout preservation, settings dialog compatibility, and suspend/resume reliability.** -### ๐Ÿš€ Highlights (v0.9.0 โ†’ v0.10.0) +### ๐Ÿš€ Highlights (v0.10.0 โ†’ v0.10.1) | Feature | Description | |---------|-------------| -| **โŒจ๏ธ Keyboard Robustness** | Better modifier alias matching across layouts and SYN_DROPPED recovery in evdev | -| **๐ŸŽ™๏ธ Audio Compatibility** | Device channel probing now validates supported sample rates for safer defaults | -| **๐Ÿ–ฅ๏ธ IBus + Tray Stability** | IBus activation uses `register_component`; tray updates use icon names reliably | -| **๐Ÿงช Quality & CI Upgrades** | Test coverage rose to 80%+, with Node 24 and path-filtered CI pipelines | +| **๐Ÿ–ผ๏ธ Tray Resource Reliability** | Packaged resources now include tray assets to prevent missing icon scenarios | +| **๐Ÿง  Engine Switch Safety** | Recognition is stopped before engine changes to prevent segfaults | +| **โŒจ๏ธ Layout Preservation** | IBus activation now preserves XKB keyboard layout state | +| **๐ŸชŸ UI Compatibility** | Settings dialog includes a dedicated Close button for better WM compatibility | +| **โšก Suspend/Resume Recovery** | App now automatically recovers speech recognition and keyboard shortcuts after system suspend/resume | +| **๐ŸŽค Push-to-Talk Reliability** | Fixed premature transcription triggering on silence during push-to-talk mode | -### โœจ New in v0.10.0-beta +### โœจ Scope -- **IBus registration flow improvements** - Text injection now uses explicit component registration for more reliable engine activation -- **Expanded IBus test coverage** - Launch mode and main entrypoint paths are now covered in tests -- **Improved project defaults** - Minimum supported Python version is now 3.9+ +- **Patch release focused on reliability** - No new features, only targeted fixes and maintenance updates +- **Desktop UX hardening** - Better behavior across tray, settings dialog, and keyboard layout workflows +- **Suspend/Resume stability** - New D-Bus handler ensures app survives system sleep cycles +- **Operational maintenance** - Dependency updates for the web and dev toolchains -### ๐Ÿ› Bug Fixes (v0.10.0) +### ๐Ÿ› Bug Fixes (v0.10.1) -- **#342**: Generalized pynput modifier alias matching across keyboard layouts -- **#341**: Channel probing now verifies sample-rate support for selected audio devices -- **#339**: evdev backend now handles `SYN_DROPPED` to avoid stale modifier state -- **#333**: Settings dialog now forces window decorations to fix missing-titlebar scenarios -- **#330**: Tray icon updates now use icon names for AppIndicator compatibility -- **#304**: IBus activation now uses `register_component` for more reliable startup behavior +- **#349 / #354**: Bundle resources in package to fix missing system tray icons +- **#350 / #355**: Stop recognition before switching engines to prevent segfaults +- **#323 / #356**: Add Close button to settings dialog for better window-manager compatibility +- **#292 / #343**: Preserve XKB layout when activating the Vocalinux IBus engine +- **#359**: Prevent premature transcription during push-to-talk silence +- **#367 / #369**: Auto-recover speech recognition after system resume via new suspend handler +- **#371**: Restart keyboard shortcut backend after system resume +- **#372**: Delay keyboard restart to allow USB device re-enumeration after resume ### ๐Ÿ”ง Improvements -- **Installation fallback hardening** - Installer now resolves latest tag via GitHub API and improves piped-shell behavior -- **CI runtime modernization** - Deploy workflow upgraded to Node.js 24 with smarter path-based workflow filtering -- **Repo cleanup** - Removed stale `setup.py` and legacy website build script +- **Dependencies** - Updated npm/yarn dependency group and `brace-expansion` dev dependency --- @@ -368,7 +371,7 @@ Vocalinux is part of a family of privacy-first, offline voice dictation tools. S | Platform | Project | Website | GitHub | Status | |----------|---------|---------|--------|--------| -| ๐Ÿง Linux | **VocaLinux** | [vocalinux.com](https://vocalinux.com) | [jatinkrmalik/vocalinux](https://github.com/jatinkrmalik/vocalinux) | โœ… Beta v0.10.0 | +| ๐Ÿง Linux | **VocaLinux** | [vocalinux.com](https://vocalinux.com) | [jatinkrmalik/vocalinux](https://github.com/jatinkrmalik/vocalinux) | โœ… Beta v0.10.1 | | ๐ŸŽ macOS | **VocaMac** | [vocamac.com](https://vocamac.com) | [jatinkrmalik/vocamac](https://github.com/jatinkrmalik/vocamac) | ๐Ÿš€ Beta | | ๐ŸชŸ Windows | **VocaWin** | [vocawin.com](https://vocawin.com) | [jatinkrmalik/vocawin](https://github.com/jatinkrmalik/vocawin) | ๐Ÿ“‹ Planned | diff --git a/docs/RELEASE_PROCESS.md b/docs/RELEASE_PROCESS.md index ed8df27..48b8c40 100644 --- a/docs/RELEASE_PROCESS.md +++ b/docs/RELEASE_PROCESS.md @@ -339,6 +339,7 @@ git push origin v0.5.1-beta | 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 | | 0.10.0-beta | 2026-03-25 | Beta | Keyboard/audio reliability hardening, IBus/tray stability fixes, CI + test coverage improvements | +| 0.10.1-beta | 2026-03-27 | Beta | Stability patch: tray resource bundling, engine-switch segfault prevention, settings close action, XKB layout preservation | ## Questions? diff --git a/docs/UPDATE.md b/docs/UPDATE.md index f5855c4..8c42724 100644 --- a/docs/UPDATE.md +++ b/docs/UPDATE.md @@ -2,39 +2,43 @@ This guide explains how to update Vocalinux to the latest version. -## What's New in v0.10.0-beta +## What's New in v0.10.1-beta ### ๐Ÿš€ Highlights | Feature | Description | |---------|-------------| -| **โŒจ๏ธ Keyboard Robustness** | Better modifier alias handling across layouts and evdev `SYN_DROPPED` recovery | -| **๐ŸŽ™๏ธ Audio Compatibility** | Audio channel probing now validates sample-rate support per device | -| **๐Ÿ–ฅ๏ธ IBus + Tray Stability** | IBus activation is more reliable and tray icon refresh is more consistent | -| **๐Ÿงช Testing & CI Upgrades** | Coverage increased to 80%+, with modernized Node 24 CI workflows | +| **๐Ÿ–ผ๏ธ Tray Resource Reliability** | Bundled package resources now prevent missing system tray icons | +| **๐Ÿง  Engine Switch Safety** | Recognition now stops before engine changes to avoid segfaults | +| **โŒจ๏ธ Keyboard Layout Preservation** | XKB layout is preserved when activating the Vocalinux IBus engine | +| **๐ŸชŸ Settings Dialog Compatibility** | Added an explicit Close button for improved WM interoperability | +| **โšก Suspend/Resume Recovery** | App now automatically recovers speech recognition and keyboard shortcuts after system suspend/resume | +| **๐ŸŽค Push-to-Talk Reliability** | Fixed premature transcription triggering on silence during push-to-talk mode | -### โœจ New Features +### โœจ Scope -- **IBus registration improvements** โ€” Text injection activation now uses `register_component` -- **Expanded IBus test coverage** โ€” Added launch-mode and main-entrypoint test paths -- **Python baseline update** โ€” Minimum supported Python version is now 3.9+ +- **Patch-focused release** โ€” No new feature surface; this version is dedicated to stability and compatibility fixes +- **Desktop reliability hardening** โ€” Improved behavior across tray, engine switching, settings dialog actions, and keyboard layout handling +- **Suspend/Resume stability** โ€” New D-Bus handler ensures app survives system sleep cycles ### ๐Ÿ› Bug Fixes -- **#342**: Generalize pynput modifier alias matching across layouts -- **#341**: Probe audio channels using device-supported sample rates -- **#339**: Handle evdev `SYN_DROPPED` to prevent stale modifier state -- **#333**: Force window decorations in settings dialog -- **#330**: Use icon names for AppIndicator tray updates -- **#304**: Use `register_component` for IBus engine activation +- **#349 / #354**: Bundle resources in package to fix missing system tray icons +- **#350 / #355**: Stop recognition before switching engines to prevent segfaults +- **#323 / #356**: Add Close button to settings dialog for WM compatibility +- **#292 / #343**: Preserve XKB layout when activating Vocalinux IBus engine +- **#359**: Prevent premature transcription during push-to-talk silence +- **#367 / #369**: Auto-recover speech recognition after system resume via new suspend handler +- **#371**: Restart keyboard shortcut backend after system resume +- **#372**: Delay keyboard restart to allow USB device re-enumeration after resume ### ๐Ÿ”ง Improvements -- Installer fallback now resolves latest tag through GitHub API and better handles piped shell execution -- CI now uses Node.js 24 for website deployment and path-based filtering to skip unnecessary workflows -- Removed stale `setup.py` and legacy `build-website.sh` +- Bumped npm/yarn dependency group across the web workspace (#346) +- Bumped `brace-expansion` in development dependencies (#357) +- Disabled copy-to-clipboard by default in Settings (#370) -See the [full changelog](https://github.com/jatinkrmalik/vocalinux/releases/tag/v0.10.0-beta). +See the [full changelog](https://github.com/jatinkrmalik/vocalinux/releases/tag/v0.10.1-beta). --- @@ -129,7 +133,7 @@ The installer will: ```bash cd vocalinux git fetch origin -git checkout v0.10.0-beta +git checkout v0.10.1-beta ./install.sh ``` diff --git a/install.sh b/install.sh index 6712803..4a632f6 100755 --- a/install.sh +++ b/install.sh @@ -235,7 +235,7 @@ resolve_install_tag() { return fi fi - INSTALL_TAG="v0.10.0-beta" + INSTALL_TAG="v0.10.1-beta" } resolve_install_tag diff --git a/src/vocalinux/version.py b/src/vocalinux/version.py index 81a2f0d..c597e73 100644 --- a/src/vocalinux/version.py +++ b/src/vocalinux/version.py @@ -2,8 +2,8 @@ Version information for Vocalinux. """ -__version__ = "0.10.0-beta" -__version_info__ = (0, 10, 0, "beta") +__version__ = "0.10.1-beta" +__version_info__ = (0, 10, 1, "beta") __author__ = "Jatin K Malik" __email__ = "jatinkrmalik@gmail.com" __license__ = "GPL-3.0" diff --git a/web/package-lock.json b/web/package-lock.json index ac00472..f2fc225 100644 --- a/web/package-lock.json +++ b/web/package-lock.json @@ -1,12 +1,12 @@ { "name": "vocalinux-website", - "version": "0.10.0", + "version": "0.10.1", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "vocalinux-website", - "version": "0.10.0", + "version": "0.10.1", "dependencies": { "@types/node": "^20.14.10", "@types/react": "^18.3.3", diff --git a/web/package.json b/web/package.json index 36c7cd6..47088b1 100644 --- a/web/package.json +++ b/web/package.json @@ -1,6 +1,6 @@ { "name": "vocalinux-website", - "version": "0.10.0", + "version": "0.10.1", "private": true, "type": "module", "scripts": { diff --git a/web/src/app/changelog/page.tsx b/web/src/app/changelog/page.tsx index 564c00b..c4219e8 100644 --- a/web/src/app/changelog/page.tsx +++ b/web/src/app/changelog/page.tsx @@ -5,6 +5,23 @@ import { SeoSubpageShell } from "@/components/seo-subpage-shell"; import { absoluteUrl, buildPageMetadata } from "@/lib/seo"; const releases = [ + { + version: "v0.10.1-beta", + date: "2026-03-30", + type: "beta", + highlights: [ + "Bundled package resources to prevent missing system tray icons (fixes #349, PR #354)", + "Stopped recognition before engine switches to prevent segfaults (fixes #350, PR #355)", + "Added a dedicated Close button in Settings for better WM compatibility (fixes #323, PR #356)", + "Preserved XKB layout state during Vocalinux IBus activation (fixes #292, PR #343)", + "Auto-recover speech recognition after system suspend/resume via new D-Bus handler (fixes #367, PR #369)", + "Restart keyboard shortcut backend after resume to keep shortcuts working (PR #371)", + "Delayed keyboard restart to allow USB re-enumeration after resume (PR #372)", + "Fixed premature transcription during push-to-talk silence (fixes #358, PR #359)", + "Disabled copy-to-clipboard by default in Settings (PR #370)", + "Maintenance updates: npm/yarn dependency refresh and brace-expansion dev dependency bump (PR #346, #357)", + ], + }, { version: "v0.10.0-beta", date: "2026-03-25", @@ -190,7 +207,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-25", + dateModified: "2026-03-30", author: { "@type": "Person", name: "Jatin K Malik", diff --git a/web/src/app/page.tsx b/web/src/app/page.tsx index 7eb8418..0b74ca5 100644 --- a/web/src/app/page.tsx +++ b/web/src/app/page.tsx @@ -64,7 +64,7 @@ const homeJsonLd = [ }, description: "Offline voice dictation and speech-to-text for Linux with whisper.cpp and VOSK.", - "softwareVersion": "0.10.0-beta", + "softwareVersion": "0.10.1-beta", author: { "@type": "Person", name: "Jatin K Malik", @@ -290,7 +290,7 @@ export default function HomePage() { /> Vocalinux - v0.10.0 Beta + v0.10.1 Beta