---
title: "v2026.7.2-1"
summary: "Local (on-device) dictation now streams through overlapping, silence-aligned, prompt-threaded chunks that are merged into the transcript, instead of joining independent 2-second windows."
description: "Dictate v2026.7.2-1 release notes: what changed, and who contributed."
keywords:
  - Dictate
  - v2026.7.2-1
  - release notes
---

# v2026.7.2-1

<!-- Written by scripts/release/changelog.mjs from CHANGELOG/2026.7.2-1.md. Do not edit it: the release cut writes it again. -->

AI agents and tools can read these release notes as [plain Markdown](https://raw.githubusercontent.com/arcforgelabs/dictate/master/CHANGELOG/2026.7.2-1.md).

This release covers **0 pull requests.**

## Highlights

- Local (on-device) dictation now streams through overlapping, silence-aligned, prompt-threaded chunks that are merged into the transcript, instead of joining independent 2-second windows.
- The default on-device model is now chosen by hardware, from one resolver used everywhere (startup, tray, `dictate doctor`, the UI, and the installers).
- Case- and punctuation-only differences at a streamed chunk seam are now de-duplicated, so overlapping words are not typed twice.
- The installed Linux app (`.deb`/AppImage) now registers its launcher and start-on-sign-in autostart entry on first run, pointing at `dictate-ui-shell`.
- Clean shutdown on Linux update: `install.sh`/`update.sh` stop the running engine before reinstalling, and the `.deb` ships a `preinst` that stops the engine and desktop shell before unpacking an upgrade.
- Autostart/launcher `.desktop` entries written by the frozen app now target `dictate-ui-shell` instead of a `~/.local/bin/dictate` console script that does not exist in packaged installs — the cause of "Dictate doesn't start / the hotkey does nothing" after switching from a source install to the `.deb`.

## Changes

- Local (on-device) dictation now streams through overlapping, silence-aligned, prompt-threaded chunks that are merged into the transcript, instead of joining independent 2-second windows. This removes the word-splitting and duplication ("confetti") that made local dictation unreliable: on-device quality now tracks a full-utterance decode while keeping push-to-talk latency low (the perceived wait is the final chunk, not a re-decode of the whole recording).
- The default on-device model is now chosen by hardware, from one resolver used everywhere (startup, tray, `dictate doctor`, the UI, and the installers). A CUDA GPU or a capable CPU (~8 GB+ RAM and 8+ cores) defaults to the higher-quality `turbo` model; weaker CPUs default to `small`. No machine is told it runs `turbo` while actually running `small`, and installers no longer force a ~1.5 GB `turbo` download onto a box that will run `small`.
- On-device decode quality was restored for dictation (beam search + generous VAD padding so word onsets are not clipped at chunk boundaries), while long note recordings keep their lighter, CPU-tuned decode settings unchanged.
- Dictate Pro control-plane baseline (account auth, entitlements, Stripe handling, relay/server). Pre-release scaffolding; the purchase path is not yet wired end-to-end (see `docs/GOALS.md`).
- The installed Linux app (`.deb`/AppImage) now registers its launcher and start-on-sign-in autostart entry on first run, pointing at `dictate-ui-shell`. Previously only the source `install.sh` set these up, so packaged installs never started on login despite the docs saying they did. One-time and gated to the frozen app, so it never overrides a user who later disables startup.
- `dictate stop` command — stops a running engine via its single-instance lock (SIGTERM, then SIGKILL fallback). Updaters use it so a fresh engine can claim the lock cleanly instead of colliding with a stale daemon.
- Clean shutdown on Linux update: `install.sh`/`update.sh` stop the running engine before reinstalling, and the `.deb` ships a `preinst` that stops the engine and desktop shell before unpacking an upgrade. Previously the old engine kept running and held the lock, so the newly installed engine could not start (Windows `update.ps1` already stopped the old process; Linux did not).

## Fixes

- The GUI privacy toggle no longer pins `turbo` into config on a weak machine (which previously bypassed the hardware-aware default permanently).
- Case- and punctuation-only differences at a streamed chunk seam are now de-duplicated, so overlapping words are not typed twice.
- Autostart/launcher `.desktop` entries written by the frozen app now target `dictate-ui-shell` instead of a `~/.local/bin/dictate` console script that does not exist in packaged installs — the cause of "Dictate doesn't start / the hotkey does nothing" after switching from a source install to the `.deb`.
- `dictate doctor` now flags launcher/startup entries whose `Exec` target is missing (e.g. a stale pip-era `~/.local/bin/dictate` left behind after moving to the package) and `dictate doctor --fix` repairs them.
- Quietened startup log noise: passively enumerating provider key status (done for every backend on startup) no longer logs a validation failure for an unused, optionally-configured backend (e.g. a stale `openai` key while running local faster-whisper). The status is still reported; only the noisy log is suppressed. Explicit user validation and the provider health probe still log.

## Contribution record

[CHANGELOG/records/2026.7.2-1.md](https://github.com/arcforgelabs/dictate/blob/master/CHANGELOG/records/2026.7.2-1.md) lists every pull request in this release once, with its related issues and thanks.
