Skip to content

Fono

v0.8.2 Breaking

This release includes 2 breaking changes for platform teams planning a safe upgrade.

✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

assistant dictation linux llm local-first rust
+5 more
speach-to-text stt vulkan whisper wyoming

ReleasePort's take

Light signal
editorial:auto 8d

Version v0.8.2 introduces window‑aware dictation context and an aarch64 binary while fixing PipeWire capture issues and deprecating the `fono assistant stop` CLI verb.

Why it matters: Deprecates `fono assistant stop`; migrate to `fono cancel`. Fixes PipeWire noise for Linux hosts using PipeWire only. Adds native aarch64 builds expanding platform support.

Summary

AI summary

Window‑aware dictation context adjusts vocabulary per focused window, adds aarch64 binary, fixes PipeWire capture, and removes deprecated stop commands.

Changes in this release

Feature Medium

Adds window-aware context injection based on focused window class and title.

Adds window-aware context injection based on focused window class and title.

Source: llm_adapter@2026-05-26

Confidence: high

Feature Medium

Adds terminal project and agent detection for vocabulary biasing.

Adds terminal project and agent detection for vocabulary biasing.

Source: llm_adapter@2026-05-26

Confidence: high

Feature Medium

Adds Escape cancels recordings on Wayland via transient shortcut session.

Adds Escape cancels recordings on Wayland via transient shortcut session.

Source: llm_adapter@2026-05-26

Confidence: high

Feature Medium

Adds `fono cancel` CLI verb to abort active recording or assistant turn.

Adds `fono cancel` CLI verb to abort active recording or assistant turn.

Source: llm_adapter@2026-05-26

Confidence: high

Feature Medium

Adds native aarch64 release binary alongside x86_64 builds.

Adds native aarch64 release binary alongside x86_64 builds.

Source: llm_adapter@2026-05-26

Confidence: high

Feature Low

Preserves assistant chat history when dictation hotkey is pressed, avoiding loss of context.

Preserves assistant chat history when dictation hotkey is pressed, avoiding loss of context.

Source: granite4.1:30b@2026-05-26-audit

Confidence: low

Deprecation Low

Deprecates `fono assistant stop` CLI verb; use `fono cancel` instead.

Deprecates `fono assistant stop` CLI verb; use `fono cancel` instead.

Source: llm_adapter@2026-05-26

Confidence: high

Bugfix Medium

Fixes dictation noise on PipeWire‑only Linux hosts by passing `--raw` to `pw-cat`.

Fixes dictation noise on PipeWire‑only Linux hosts by passing `--raw` to `pw-cat`.

Source: llm_adapter@2026-05-26

Confidence: high

Bugfix Medium

Fixes wizard recommendation accuracy for older iGPUs and updates model multipliers.

Fixes wizard recommendation accuracy for older iGPUs and updates model multipliers.

Source: llm_adapter@2026-05-26

Confidence: high

Bugfix Medium

Changes assistant history to survive dictation pivots, preserving chat context.

Changes assistant history to survive dictation pivots, preserving chat context.

Source: llm_adapter@2026-05-26

Confidence: low

Bugfix Medium

Changes wizard model selection to be data‑driven with a three‑class GPU classifier and unified quantization defaults.

Changes wizard model selection to be data‑driven with a three‑class GPU classifier and unified quantization defaults.

Source: llm_adapter@2026-05-26

Confidence: low

Full changelog

Context-aware dictation, Esc-to-cancel on Wayland, and smarter
first-run model picks. Fono now reads which window is focused when you
press the hotkey and silently adjusts how it transcribes and cleans up
your speech — terminal windows get a shell-vocabulary bias so ls,
git commit, and chmod 755 come out right; code editors get a
language-specific vocabulary hint. No configuration required.

Added

  • Window-aware context injection. At hotkey-press time Fono reads
    the focused window class and title and silently passes a tailored
    initial_prompt to Whisper (local and cloud) and a matching cleanup
    suffix to the LLM. Built-in profiles cover terminal emulators (shell
    vocabulary: ls -la, grep -r, chmod 755, git commit, etc.),
    per-language code editors (Cursor, Zed, Kate; hints derived from
    the file extension in the window title), and private windows
    (KeePassXC, Bitwarden — history writes suppressed). Existing
    [[context_rules]] entries take precedence as usual. Detection
    covers X11, sway, Hyprland, and GNOME Wayland (with XWayland
    fallback for GNOME 46+ where the Shell introspect API is restricted).
    Visible at any time with FONO_LOG=fono::context=debug.
  • Terminal project and agent detection. When a terminal emulator is
    focused, Fono walks /proc to find the CWD and detects the active
    project type (Rust, Python, Node, Go, Docker, K8s) and whether a
    coding agent (Forge, Claude Code, Codex, Aider, Goose, and others)
    is running. Project type refines the Whisper vocabulary hint; agent
    detection is stored for future prompt biasing and is currently no-op.
  • Escape cancels recordings on Wayland. The portal hotkey
    backend (KDE / sway / Hyprland) opens a transient second
    GlobalShortcuts session while a recording is active; the
    GNOME-Wayland gsettings shim writes a temporary fono-cancel
    custom-keybinding for the same duration. Either way Esc is only
    grabbed while Fono needs it.
  • fono cancel CLI verb. Aborts an active recording or
    assistant turn. Idempotent. Backs Request::Cancel and the
    Esc grab above.
  • Native aarch64 release binary. fono-vX.Y.Z-aarch64 is now
    built on a hosted ubuntu-22.04-arm runner alongside the x86_64
    builds and is gated by the same size-budget check (same glibc 2.35
    floor; verified end-to-end on a Debian 13 aarch64 host).

Fixed

  • Dictation on PipeWire-only Linux hosts. On stock Ubuntu 24.04
    (and similar systems without pulseaudio-utils installed) the
    pw-cat capture helper was missing --raw and emitted a
    containerized stream that Fono interpreted as PCM — recordings
    came out as noise. The capture path now passes --raw and
    produces clean audio on every PipeWire setup.
  • Wizard recommendation accuracy on older iGPUs. The picker no
    longer credits CPU-only builds with a GPU multiplier they can't
    deliver, and Vulkan-capable integrated GPUs are split into two
    classes (Integrated at 1.3× for fp16-only parts like UHD 620,
    IntegratedTensor at 2.0× for fp16 + VK_KHR_cooperative_matrix
    parts like Lunar Lake Xe2 and Apple Silicon). The small.en
    registry anchor was also off by 2× — fixed against the matrix.
    Net effect: older laptops are recommended small or small.en
    instead of a turbo model that can't keep up; modern tensor-iGPU
    laptops correctly get large-v3-turbo. fono doctor now uses
    the same affordability walk as the wizard so the two never
    disagree.

Changed

  • Wizard model selection is now data-driven. A new three-class
    HostGpu classifier (None / Integrated / Discrete), derived
    from the Vulkan probe's deviceType + shaderFloat16 bit, replaces
    the previous static accelerated() 4× heuristic with multipliers
    1× / 2× / 4× (no PCI tables, no runtime calibration, no maintained
    device lists; see ADR 0028). The live-mode Borderline affordability
    middle state and the two LIVE_REALTIME_MIN_* constants are gone —
    the wizard now applies a single BATCH_REALTIME_MIN = 2.0 gate and
    every shortlist entry is comfortable by construction. Quantization
    defaults are unified on q8_0 across the registry (per the ADR 0027
    2026-05-25 amendment): tiny, tiny.en, small, small.en, and
    large-v3-turbo all default to q8_0; the previous q5_1 defaults
    remain reachable via [stt.local].quantization. wer_by_lang
    English numbers are refreshed to Open-ASR-Leaderboard means (rounded
    up: tiny 12→16, tiny.en 9→13, small 6→10, small.en 5→9,
    large-v3-turbo 4→8) so the accuracy buckets the wizard surfaces
    match the public prior users will find elsewhere.

  • Assistant history now survives dictation pivots. Previously a
    press of the dictation hotkey (F7) while an assistant conversation
    was in flight would wipe the rolling chat history; the next F8
    turn would start fresh and the assistant would tell you it had no
    memory of what you'd just said. Dictation and the assistant have
    always had fully separate histories — the dictation transcript log
    lives in SQLite, the assistant's chat turns live in memory — so
    the cross-wired auto-clear was surprising rather than protective.
    The pivot still stops any in-flight assistant playback so it
    doesn't talk over your dictation, but the chat history is
    preserved and you can resume the conversation on the next F8.

Removed

  • fono assistant stop CLI verb — use fono cancel instead.
  • "Stop assistant" tray entry — redundant with fono cancel.
  • [assistant].auto_clear_on_dictation config key. No longer
    read; remove it from your config.toml if present (unknown keys
    are silently ignored, so existing configs keep working). The
    remaining knobs (history_window_minutes, history_max_turns)
    and the tray "Forget conversation" entry / fono assistant forget CLI still cover every legitimate need to drop history.

Full Changelog: https://github.com/bogdanr/fono/compare/v0.8.1...v0.8.2

Breaking Changes

  • Removed `fono assistant stop` CLI verb — use `fono cancel` instead.
  • Removed "Stop assistant" tray entry — redundant with `fono cancel`.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track Fono

Get notified when new releases ship.

Sign up free

Related context

Beta — feedback welcome: [email protected]