This release adds 3 notable features for engineering teams evaluating rollout.
✓ No known CVEs patched in this version
Topics
+5 more
Affected surfaces
Summary
AI summaryUpdates push-to-talk, unchanged, and update across a mixed release.
Full changelog
Added
-
Audio-visualisation overlay + live-dictation VU bar. A new
waveformcargo feature (default-on, GUI-only) renders a 640-wide
bottom-centre overlay panel during batch (push-to-talk) recording
with a selectable style:bars— scrolling RMS amplitude bars; bars glow brighter at
higher amplitude.oscilloscope— connected-line waveform from raw PCM samples,
pre-scaled by1.0 / WAVEFORM_AMPLITUDE_CEILINGso a typical
speaking voice fills a comfortable chunk of the panel; the
overlay's 5000-sample (~300 ms) ring buffer scrolls slowly
enough for individual cycles to be visible.fft— real-input spectrum bars from a 4096-pt Hann-windowed
FFT, aggregated into 300 display bins covering 0–3 kHz with a
−20 … +30 dB normalisation. Bars are pixel-tiled (no AA gap)
so the spectrum reads as a continuous gradient.heatmap— rolling spectrogram (frequency on Y, time on X,
magnitude as colour intensity), backed by a pre-blended pixel
cache that scrolls leftward by one frame-width per FFT push so
redrawis a straight blit.
Configured via
[overlay].waveform = trueand
[overlay].style = "bars" | "oscilloscope" | "fft" | "heatmap".
The standalone overlay is visible duringRecording, transitions
to amberPOLISHINGwhile STT runs, and hides on completion or
cancel. -
Live-dictation VU bar. When
[interactive].enabled = true
the live-dictation panel now grows a thin right-side vertical
meter that tracks microphone level in real time
([overlay].volume_bar = trueby default). Drives off the same
OverlayCmd::AudioLevelpipeline as thebarswaveform style,
so users can see whether their voice is too quiet without
interrupting the transcript. -
Smoother audio capture for visualisation + streaming. The
Linux PulseAudio backend now invokesparec --latency-msec=20
so PCM lands in small frequent chunks (~20 ms). Without this PA
picked a default fragment of several hundred ms, which made the
waveform overlay's RMS tail look frozen between chunks and added
end-of-utterance latency to the streaming pipeline.
Changed
- The pre-existing
[overlay]config block (which had unused
enabled/position/opacityfields) is replaced in place with
the newwaveform/style/volume_barshape. No other
consumers existed in the workspace.
Added
-
GPU-accelerated release variant. Releases now ship two
binaries side-by-side: the defaultfono-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
linkslibvulkan.so.1). Both built from the same source; only
theaccel-vulkancargo feature differs. Distro packages
(.deb/.pkg.tar.zst/.txz/.lzm) are CPU-only at this
release; raw GPU binary +.sha256ship as release assets.
Perplans/2026-05-02-fono-cpu-gpu-variants-v1.mdslice 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 doctorand the daemon
startup log now report which variant is running (cpu/
gpu). Newfono::variant::Variantenum +VARIANTconstant
incrates/fono/src/variant.rsfor runtime introspection (and
for the upcoming GPU upgrade UX). -
Runtime Vulkan probe.
fono doctorgains 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
thefono-gpurelease asset. Implemented viaashruntime-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.rsbehind thevulkan-probe
feature; bothfonoandfono-updateopt in. Slice 2 of
plans/2026-05-02-fono-cpu-gpu-variants-v1.md. -
Auto-variant
fono update. Everyfono updateinvocation now
probes Vulkan on the host and fetches the matching release asset:
fono-vX.Y.Z-x86_64when no usable GPU is present, or
fono-gpu-vX.Y.Z-x86_64when 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::checknow 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-variantapply_updatepath. Hidden on GPU builds and
on hosts without Vulkan. Newfono_tray::TrayAction::UpdateForGpuAccelerationGpuUpgradeProvidercallback type.
-
CI gate split. The
Binary size & deps auditjob 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 allowlistlibvulkan.so.1.
-
fono install/fono uninstallself-installer. Run
sudo fono install(orsudo ./fono-vX.Y.Z-x86_64 installfrom 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.desktopentry so the
daemon launches automatically on next graphical login, the icon,
and shell completions. Add--serverfor a headless install
instead: writes a hardened systemd unit at
/lib/systemd/system/fono.servicerunning as a dedicatedfono
system user, and enables-and-starts it immediately.--dry-run
prints the planned actions without touching the filesystem on
either mode.sudo fono uninstallreads the install marker
written at install time and removes exactly the files it recorded;
per-user config and history are never touched.fono doctornow
reports the install state (self-installed desktop / server,
package-managed, or ad-hoc on PATH).
What's Changed
- fix(update): distinguish cross-variant switch from version bump in messaging by @bogdanr in https://github.com/bogdanr/fono/pull/7
Full Changelog: https://github.com/bogdanr/fono/compare/v0.5.0...v0.6.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
About Fono
All releases →Related context
Related tools
Beta — feedback welcome: [email protected]