chore(release): prepare v0.15.0 (#609)
* chore(release): prepare v0.15.0 Bump version across app, web, AUR, and Flatpak metainfo. Document GitHub release-notes rules, refresh README/UPDATE/INSTALL/USER_GUIDE for the 0.15 series (sidebar settings, AppImage, auto-pause/keepalive, Vulkan device selection), and align website product surfaces with shipped features. Co-authored-by: Jatin K Malik <jatinkrmalik@users.noreply.github.com> * docs(release): fold latest main into v0.15.0 notes Include dictation capitalization/trailing-space, ibus-wayland injection, IBus teardown, and settings notice polish landed on main after the initial release prep rebase. Co-authored-by: Jatin K Malik <jatinkrmalik@users.noreply.github.com> * docs(release): include Bluetooth mic crash fix in v0.15.0 notes Fold #599 (PortAudio Bluetooth SCO probe heap corruption) into README, UPDATE, changelog, AppStream, and release history after rebasing onto main. Co-authored-by: Jatin K Malik <jatinkrmalik@users.noreply.github.com> * docs(release): include language catalog expansion in v0.15.0 notes Fold #616 (Hungarian and expanded speech languages, Fixes #565) into README, UPDATE, changelog, AppStream, PRODUCT.md, and release history after rebasing onto latest main. Co-authored-by: Jatin K Malik <jatinkrmalik@users.noreply.github.com> * docs(release): fold settings footer and language follow-ups into v0.15.0 Include #618 sidebar dictation footer, #619 Custom Shortcut Record/Set restore, and #617 English (India) Whisper language mapping after rebasing onto latest main. Co-authored-by: Jatin K Malik <jatinkrmalik@users.noreply.github.com> --------- Co-authored-by: Cursor Agent <cursoragent@cursor.com> Co-authored-by: Jatin K Malik <jatinkrmalik@users.noreply.github.com>
This commit is contained in:
co-authored by
Jatin K Malik
Cursor Agent
parent
27ecf880a8
commit
fbb81238f5
+1
-1
@@ -98,7 +98,7 @@ The remote engine is a power-user option in the **Speech Engine** settings.
|
||||
- **Model**: model identifier sent to OpenAI-compatible servers. Use `whisper-1` for classic Whisper servers, or `sensevoice` for FunASR/SenseVoice.
|
||||
4. Click **Test Connection** — a successful test means the URL is reachable and credentials (if any) are accepted. A failure here is just a warning; Vocalinux will still try again on the first transcription.
|
||||
|
||||
Settings auto-save and re-initialise the engine immediately, so you can start dictating as soon as the test passes. Toggling the switch off restores the local engine selected on the Speech Engine tab.
|
||||
Settings auto-save and re-initialise the engine immediately, so you can start dictating as soon as the test passes. Toggling the switch off restores the local engine selected on the Speech Engine page in Settings.
|
||||
|
||||
### Via the config file
|
||||
|
||||
|
||||
@@ -27,6 +27,20 @@ That's it! The installer handles everything automatically:
|
||||
git clone https://github.com/jatinkrmalik/vocalinux.git && cd vocalinux && ./install.sh
|
||||
```
|
||||
|
||||
### AppImage (no install, no root)
|
||||
|
||||
Download the `.AppImage` for your CPU (`x86_64` or `aarch64`) from
|
||||
[GitHub Releases](https://github.com/jatinkrmalik/vocalinux/releases), then:
|
||||
|
||||
```bash
|
||||
chmod +x Vocalinux-*-x86_64.AppImage # or aarch64
|
||||
./Vocalinux-*-x86_64.AppImage
|
||||
```
|
||||
|
||||
AppImage still needs host text-injection tools (`xdotool` on X11; `wtype` /
|
||||
`ydotool` / clipboard tools on Wayland), same as the PyPI path. Prefer the
|
||||
one-liner installer above when you want system deps and models set up for you.
|
||||
|
||||
### From PyPI
|
||||
|
||||
The PyPI package installs the Python application and Python dependencies, but it
|
||||
|
||||
+53
-2
@@ -28,11 +28,13 @@ Use this checklist for every release:
|
||||
- [ ] `SECURITY.md` - Update supported versions table
|
||||
|
||||
### Website
|
||||
- [ ] `web/src/app/page.tsx` - Update `softwareVersion` in schema (around line 68)
|
||||
- [ ] `web/src/app/page.tsx` - Update version badge in header (around line 293)
|
||||
- [ ] `web/src/app/page.tsx` - Update `softwareVersion` in schema
|
||||
- [ ] `web/src/app/page.tsx` - Update version badge / live version surfaces if present
|
||||
- [ ] `web/src/app/changelog/page.tsx` - Add new release entry to changelog
|
||||
- [ ] `web/package.json` - Update version field
|
||||
- [ ] `web/package-lock.json` - Keep top-level/version metadata aligned with `web/package.json`
|
||||
- [ ] `web/PRODUCT.md` - Keep capabilities aligned with shipped features
|
||||
- [ ] Confirm install docs/website mention **AppImage** when this release ships AppImages
|
||||
|
||||
### Testing & Verification
|
||||
- [ ] Run `make test` - All tests pass
|
||||
@@ -108,6 +110,54 @@ When shipping bug fixes only (PATCH bump, same MINOR):
|
||||
- **AUR PKGBUILD**: bump `pkgver` / `_tag`; leave `sha256sums=('SKIP')` until the tag tarball exists. The release workflow runs `updpkgsums` when publishing to the AUR.
|
||||
- **Dates**: patch release dates must not predate the previous release in changelog / AppStream / version history.
|
||||
|
||||
### GitHub Release Notes Writing Rules
|
||||
|
||||
Use these rules for every GitHub Release body (and for the draft pasted into the release-prep PR). Website changelog entries stay shorter; see below.
|
||||
|
||||
#### Sources of truth
|
||||
|
||||
- Delta commits: `git log vPREV..HEAD` plus merged PR titles/bodies.
|
||||
- Closed issues via PR `Fixes` / `Closes` references only — do not invent issue numbers.
|
||||
- Do not invent benchmarks, user counts, testimonials, or features not in the tree.
|
||||
|
||||
#### Required structure
|
||||
|
||||
1. `# Vocalinux vX.Y.Z` title
|
||||
2. One to three plain sentences: what this release is for (no hype)
|
||||
3. `## Highlights` — markdown table, about 4–8 rows
|
||||
4. `## New Features` — bullets with PR + author; include issue closes when real
|
||||
5. `## Bug Fixes` — group by area (IBus, Installer, AUR, Text injection, …)
|
||||
6. Optional: `## Improvements`, `## Docs`, `## Packaging`
|
||||
7. `## Thanks` — external PR authors and issue reporters by `@handle`
|
||||
8. `## Install / Upgrade` — `install.sh`, AUR, PyPI, **AppImage**, Flatpak status (honest)
|
||||
9. Footer compare link: `https://github.com/jatinkrmalik/vocalinux/compare/vPREV...vX.Y.Z`
|
||||
|
||||
#### Include / exclude
|
||||
|
||||
- **Include:** user-visible features, install/packaging changes, desktop reliability fixes, docs that change user instructions.
|
||||
- **Exclude or demote:** Dependabot-only bumps, CI matrix tweaks, agent-env docs, pure refactors — short “CI / maintenance” subsection at most.
|
||||
|
||||
#### Attribution and voice
|
||||
|
||||
- Feature/fix bullets: `(#N by @author; fixes #M reported by @reporter)` when known.
|
||||
- Practical, specific, Linux-native. Name the symptom users hit.
|
||||
- Avoid promotional filler (“seamless”, “pivotal”, “game-changer”, fake significance).
|
||||
|
||||
#### Website changelog vs GitHub Release
|
||||
|
||||
- **Website** (`web/src/app/changelog/page.tsx`): 3–10 concise user-facing bullets for the new entry.
|
||||
- **GitHub Release**: fuller narrative + install block + thanks. Draft in the release-prep **PR body**; paste/edit onto the release after the tag workflow runs (workflow install stub + generated notes are a starting point only).
|
||||
|
||||
#### Minor vs patch (reminder)
|
||||
|
||||
- **Minor** (e.g. `0.15.0`): rewrite README / UPDATE “What’s New” for the new series; full website changelog entry; AppStream release note summarizes the series.
|
||||
- **Patch** (e.g. `0.15.1`): keep series feature table; add “Bug fixes in this patch” only; website changelog lists delta only.
|
||||
|
||||
#### Draft delivery
|
||||
|
||||
- Release-prep PRs should include a `## Draft GitHub Release Notes` section in the PR description for review before tag.
|
||||
- Do not tag from the prep branch alone; tag after merge to `main`.
|
||||
|
||||
### Step 3: Update Documentation
|
||||
|
||||
#### 3.1 Update `README.md`
|
||||
@@ -358,6 +408,7 @@ git push origin v0.5.1-beta
|
||||
| 0.14.0-beta | 2026-07-13 | Beta | Configurable modifier+key hotkeys, FunASR/SenseVoice remote-API support, GNOME/KDE Wayland IBus reliability fixes, audio crash fix, hybrid-CPU efficiency fix |
|
||||
| 0.14.1 | 2026-07-17 | Stable | Flatpak packaging, AUR package, layout-aware hotkeys, installer/text-injection fixes |
|
||||
| 0.14.2 | 2026-07-17 | Stable | IBus engine launch + FocusIn gate; settings tabs scroll to fit monitor |
|
||||
| 0.15.0 | 2026-07-28 | Stable | Searchable settings + sidebar dictation footer, AppImage, expanded languages, dictation polish, auto-pause/keepalive, Vulkan device selection, ibus-wayland, Bluetooth mic + shortcut UI fixes |
|
||||
|
||||
## Questions?
|
||||
|
||||
|
||||
+59
-1
@@ -2,6 +2,64 @@
|
||||
|
||||
This guide explains how to update Vocalinux to the latest version.
|
||||
|
||||
## What's New in v0.15.0
|
||||
|
||||
0.15.0 is a **minor** release on the stable line. It redesigns settings navigation, adds AppImage packages, expands the speech-language catalog (Hungarian and many more), cleans up continuous dictation spacing/capitalization, adds power/GPU controls, and improves Wayland IBus on compositors that ship `ibus-wayland`, on top of the 0.14 packaging work (Flatpak, AUR, configurable hotkeys).
|
||||
|
||||
### Highlights
|
||||
|
||||
| Feature | Description |
|
||||
|---------|-------------|
|
||||
| **Searchable settings** | Sidebar navigation with search replaces the seven-tab notebook (#601) |
|
||||
| **AppImage** | Self-contained x86_64 and aarch64 builds attached to GitHub Releases (#573, #602) |
|
||||
| **Language catalog** | ~33 selectable speech languages plus Auto-detect (incl. Hungarian); CLI choices derived from the same catalog; VOSK hides Whisper-only langs (#616, fixes #565) |
|
||||
| **Dictation polish** | Auto-capitalize after `.` / `!` / `?`; append a trailing space after each completed utterance (#554, #608) |
|
||||
| **Auto-pause + keep-alive** | Unload the model while configured apps run, or after an idle timeout (#592) |
|
||||
| **Vulkan GPU selection** | Prefer a discrete GPU automatically; pick a device under Advanced settings (#590) |
|
||||
| **ibus-wayland** | Prefer IBus on previously “unbridged” compositors when `ibus-wayland` is running (#614) |
|
||||
| **CLI `--version`** | Print the installed version and exit (#563) |
|
||||
|
||||
### New Features
|
||||
|
||||
- **Searchable sidebar settings** — Topic pages in a sidebar with live search instead of seven notebook tabs (#601)
|
||||
- **AppImage packaging** — Relocatable x86_64 and aarch64 AppImages built in the release workflow (#573, #602)
|
||||
- **Expanded speech languages** — Hungarian plus many high-demand Whisper languages in Settings/CLI; official Alphacephei VOSK models where available; Whisper-only languages stay hidden in the VOSK dropdown (#616 by @jatinkrmalik, fixes #565)
|
||||
- **Sidebar dictation controls** — Recognition status, mic level, Test Dictation, and Close stay visible in the settings sidebar footer while switching pages (#618)
|
||||
- **Sentence capitalization** — Capitalize at the start of dictation and after sentence-ending punctuation (#554, closes #553)
|
||||
- **Trailing space between utterances** — Completed transcriptions leave a trailing space so the next session does not glue onto the previous sentence (#608, fixes #605)
|
||||
- **Auto-pause apps + model keep-alive** — Optional unload while selected processes run; idle timeout unload for battery/Optimus laptops (#592, closes #445, #591)
|
||||
- **Vulkan discrete GPU auto-select + manual device** — Prefer discrete devices; override in Advanced settings (#590, closes #589)
|
||||
- **IBus via ibus-wayland** — On compositors previously treated as unbridged, use IBus when `ibus-wayland` is available (#614 by @eiseleb47, closes #607)
|
||||
- **`vocalinux --version`** — Print package version (#563, closes #555)
|
||||
|
||||
### Bug Fixes
|
||||
|
||||
- **Settings**: Restore Custom Shortcut entry / Record / Set controls after the sidebar settings refactor (#619)
|
||||
- **Languages**: Map English (India) (`en-in`) to Whisper code `en` for whisper.cpp / Whisper / remote API (#617)
|
||||
- **Audio**: Stop Bluetooth mic probing from corrupting the heap — one PortAudio open per capture session, stop-before-close, no stereo probe on mono-only devices (#599, fixes #567)
|
||||
- **IBus**: Keep engine teardown correct when parent `do_destroy` fails (#613 by @eiseleb47, fixes #606)
|
||||
- **Settings UI**: Flatten info notices so helper text matches the rest of the dialog (#615)
|
||||
- **KDE Plasma Wayland**: Skip unbridged IBus when `ibus-wayland` is not present so injection does not silently fail (#577, fixes #574)
|
||||
- **xdotool**: Preserve input focus after injection (#564, fixes #549)
|
||||
- **Uninstall**: Remove IBus data dir; stop the app by PID file; remove `~/.local/bin` launcher wrappers reliably (#597, #569)
|
||||
- **Installer**: Prefer both libgirepository 1.0 and 2.0 when present (#583, fixes #571)
|
||||
- **AUR**: Virtual `python-pywhispercpp` dependency; clipboard/wtype tools as optdepends (#579, #586)
|
||||
- **UI**: First-run dialog response without `Gtk.Dialog.do_response` (#580, fixes #566)
|
||||
- **Vosk**: Italian and English-India entries in medium/large model tables (#551, fixes #550)
|
||||
- **Docs**: Correct ydotool service setup guidance (#560, fixes #557)
|
||||
|
||||
### Docs / website
|
||||
|
||||
- Marketing site redesign with workstation craft (#582)
|
||||
- Languages marketing page with honest per-engine badges (#616)
|
||||
- Multi-distro tray icon FAQ (#584)
|
||||
- robots.txt no longer blocks indexable pages (#610)
|
||||
- Website CI lint / action warning cleanup (#611)
|
||||
|
||||
See the [full changelog](https://github.com/jatinkrmalik/vocalinux/releases/tag/v0.15.0).
|
||||
|
||||
---
|
||||
|
||||
## What's New in v0.14.2
|
||||
|
||||
0.14.2 is a stability patch on the **0.14 series**. The feature set is the same as 0.14.x; this release fixes IBus reliability and settings dialog sizing.
|
||||
@@ -331,7 +389,7 @@ The installer will:
|
||||
```bash
|
||||
cd vocalinux
|
||||
git fetch origin
|
||||
git checkout v0.14.2
|
||||
git checkout v0.15.0
|
||||
./install.sh
|
||||
```
|
||||
|
||||
|
||||
+14
-1
@@ -36,6 +36,10 @@ Vocalinux supports login autostart using the standard Linux desktop-session mech
|
||||
4. **Speak clearly**: As you speak, your words will be transcribed into the currently focused application
|
||||
5. **Stop voice typing**: Click the tray icon and select "Stop Voice Typing" when you're done, double-tap again in toggle mode, or release the key in push-to-talk mode
|
||||
|
||||
### Dictation formatting
|
||||
|
||||
Vocalinux capitalizes the start of dictation and letters after `.`, `!`, or `?`. Each completed utterance also leaves a trailing space so the next push-to-talk or toggle session does not glue onto the previous sentence (`Hello.This` → `Hello. This`).
|
||||
|
||||
### Understanding the Status Icons
|
||||
|
||||
- **Microphone off** (gray): Voice typing is inactive
|
||||
@@ -112,7 +116,7 @@ Vocalinux now offers **three speech recognition engines**:
|
||||
### Changing Engine and Model
|
||||
|
||||
1. Open settings from the tray icon menu (right-click)
|
||||
2. Go to the "Speech Engine" tab
|
||||
2. Open the **Speech Engine** page in the settings sidebar (search works if you prefer)
|
||||
3. Select your **Speech Engine**:
|
||||
- whisper_cpp (recommended)
|
||||
- whisper
|
||||
@@ -152,12 +156,21 @@ English-only whisper.cpp specializations limit the language selector to English.
|
||||
- **CUDA** (NVIDIA only) - Fallback if Vulkan not available
|
||||
- **CPU** - Always works as fallback
|
||||
|
||||
On multi-GPU machines, Vocalinux prefers a **discrete** Vulkan device when one is present. You can override the device under **Advanced** settings (`whispercpp_gpu_device`).
|
||||
|
||||
To check which backend is being used, look for these log messages when starting Vocalinux:
|
||||
```
|
||||
[INFO] whisper.cpp using Vulkan GPU backend: AMD Radeon RX 6800
|
||||
[INFO] whisper.cpp configured with n_threads=16
|
||||
```
|
||||
|
||||
### Auto-pause and model keep-alive
|
||||
|
||||
Optional power-saving controls live under settings:
|
||||
|
||||
- **Auto-pause apps** — unload the speech model while configured apps/games are running, then reload when they exit
|
||||
- **Model keep-alive** — unload the model after a configurable idle timeout so idle dictation does not keep GPU/CPU resources warm
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
If you encounter issues, check the [Installation Guide](INSTALL.md) troubleshooting section or run the application with debug logging:
|
||||
|
||||
Reference in New Issue
Block a user