Skip to content

Fono

v0.5.0 Feature

This release adds 3 notable features for engineering teams evaluating rollout.

✓ 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

Summary

AI summary

Updates variants, unchanged, and chore across a mixed release.

Full changelog

Added

  • GPU-accelerated release variant. Releases now ship two
    binaries side-by-side: the default fono-vX.Y.Z-x86_64 (compact
    ~18 MB CPU-only build, NEEDED set of 4 universal glibc libs) and
    fono-gpu-vX.Y.Z-x86_64 (Vulkan-enabled ~60 MB build, additionally
    links libvulkan.so.1). Both built from the same source; only
    the accel-vulkan cargo feature differs. Distro packages
    (.deb / .pkg.tar.zst / .txz / .lzm) are CPU-only at this
    release; raw GPU binary + .sha256 ship as release assets.
    Per plans/2026-05-02-fono-cpu-gpu-variants-v1.md slice 1.
    CUDA / ROCm remain build-from-source-only; Vulkan covers ~80 % of
    NVIDIA / ~90 % of AMD perf at zero vendor lock-in.

  • Build variant identification. fono doctor and the daemon
    startup log now report which variant is running (cpu /
    gpu). New fono::variant::Variant enum + VARIANT constant
    in crates/fono/src/variant.rs for runtime introspection (and
    for the upcoming GPU upgrade UX).

  • Runtime Vulkan probe. fono doctor gains a "Compute backends"
    section that reports the host's Vulkan loader + physical device
    state (e.g. "Vulkan: detected (Intel(R) Iris(R) Xe Graphics,
    llvmpipe (LLVM 22.1.3, 256 bits))"
    ). On a CPU-variant binary
    with a Vulkan-capable GPU detected, an upgrade hint points at
    the fono-gpu release asset. Implemented via ash runtime-loaded
    bindings (Entry::load()dlopen("libvulkan.so.1")) so the
    CPU variant still has the strict 4-NEEDED-entry allowlist —
    libvulkan never appears in NEEDED. Module lives at
    crates/fono-core/src/vulkan_probe.rs behind the vulkan-probe
    feature; both fono and fono-update opt in. Slice 2 of
    plans/2026-05-02-fono-cpu-gpu-variants-v1.md.

  • Auto-variant fono update. Every fono update invocation now
    probes Vulkan on the host and fetches the matching release asset:
    fono-vX.Y.Z-x86_64 when no usable GPU is present, or
    fono-gpu-vX.Y.Z-x86_64 when libvulkan + a physical device are
    available. CPU users on GPU-equipped hardware are switched to
    the GPU build on their next update; if they later move to a
    GPU-less machine, the next update switches them back. No CLI
    flag, no wizard prompt, no config knob — one decision in one
    place. fono_update::check now takes the running binary's
    current asset prefix and treats a prefix mismatch as "update
    available" even at the same version. Slice 3 of
    plans/2026-05-02-fono-cpu-gpu-variants-v1.md.

  • Tray "Update for GPU acceleration" entry. On a CPU-variant
    build with a usable Vulkan host, the tray menu surfaces an
    explicit "Update for GPU acceleration" item that triggers the
    same auto-variant apply_update path. Hidden on GPU builds and
    on hosts without Vulkan. New fono_tray::TrayAction::UpdateForGpuAcceleration

    • GpuUpgradeProvider callback type.
  • CI gate split. The Binary size & deps audit job now runs as
    a matrix (cpu, gpu), asserting both variants stay within their
    respective budgets and NEEDED allowlists. CPU: ≤ 20 MiB + 4-entry
    allowlist (unchanged). GPU: ≤ 64 MiB + 4-entry allowlist

    • libvulkan.so.1.
  • fono install / fono uninstall self-installer. Run
    sudo fono install (or sudo ./fono-vX.Y.Z-x86_64 install from a
    fresh release-asset download) to install fono system-wide on a
    desktop: places the binary at /usr/local/bin/fono, drops a menu
    desktop entry, an /etc/xdg/autostart/fono.desktop entry so the
    daemon launches automatically on next graphical login, the icon,
    and shell completions. Add --server for a headless install
    instead: writes a hardened systemd unit at
    /lib/systemd/system/fono.service running as a dedicated fono
    system user, and enables-and-starts it immediately. --dry-run
    prints the planned actions without touching the filesystem on
    either mode. sudo fono uninstall reads the install marker
    written at install time and removes exactly the files it recorded;
    per-user config and history are never touched. fono doctor now
    reports the install state (self-installed desktop / server,
    package-managed, or ad-hoc on PATH).

What's Changed

  • feat(release): two-variant ship (CPU default + GPU optional), slice 1 by @bogdanr in https://github.com/bogdanr/fono/pull/3
  • feat(variants): runtime Vulkan probe + doctor surfacing (slice 2) by @bogdanr in https://github.com/bogdanr/fono/pull/4
  • feat(variants): auto-variant fono update + tray "Update for GPU acceleration" (slice 3) by @bogdanr in https://github.com/bogdanr/fono/pull/5
  • chore: release v0.5.0 by @bogdanr in https://github.com/bogdanr/fono/pull/6

Full Changelog: https://github.com/bogdanr/fono/compare/v0.4.0...v0.5.0

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

Beta — feedback welcome: [email protected]