Arc Forge Labs Docs v2026.10.2

v2026.6.23

Made Dictate private by default: an unset provider resolves to the on-device `faster-whisper` backend.

AI agents and tools can read these release notes as plain Markdown.

This release covers 1 pull request.

Highlights

  • Made Dictate private by default: an unset provider resolves to the on-device faster-whisper backend.
  • Changed the default push-to-talk shortcut from Ctrl+Right to Ctrl+D across the engine, daemon, preflight, doctor, Windows control, the push-to-talk dialog presets, the default config, and the UI.
  • Made recording resilient instead of hard-blocked: recording is never disabled by provider state.
  • Added a dictate config subcommand group for headless/agent setup: set-key <backend> <key> (format-validated, saved to the OS secret store), set-provider private|online, set-model <id>, and show (provider mode, model, per-backend key presence, secret-store status).
  • Restored on-screen navigation that the native-decorations switch had hidden: the capture (mic) home now carries a settings gear and a Notes button, since the custom titlebar holding the old gear/search is hidden under native window decorations.
  • Note "Export" no longer claims success while writing nothing.

Changes

  • Restored on-screen navigation that the native-decorations switch had hidden: the capture (mic) home now carries a settings gear and a Notes button, since the custom titlebar holding the old gear/search is hidden under native window decorations. The capture screen stays the home; Notes is a searchable list of recent dictations one tap away, and back returns to the mic.
  • Made the Wayland default push-to-talk shortcut Ctrl+D too, matching every other platform (it previously fell back to Ctrl+Space on Wayland).
  • Added a dictate config subcommand group for headless/agent setup: set-key <backend> <key> (format-validated, saved to the OS secret store), set-provider private|online, set-model <id>, and show (provider mode, model, per-backend key presence, secret-store status). Output is plain and scriptable.
  • Added provider resilience via a new ProviderSupervisor: it tracks the preferred vs. active backend with on-device always available as the floor, classifies failures (auth / rate-limit / budget / unreachable), and applies class-aware exponential backoff with a single cancellable timer (never busy-polls). It probes for recovery opportunistically and on network-up, and emits provider-degraded / provider-recovered events to the UI over SSE.
  • Added live provider-health tracking end to end: an engine health_sink reports every online-backend transcription outcome, the UI server publishes provider-health SSE events on each state change, and the UI hydrates and updates from them.
  • Added a quiet "or hold Ctrl + D" shortcut hint (derived from the stored shortcut) to the ready state.
  • Made Dictate private by default: an unset provider resolves to the on-device faster-whisper backend. Online (xAI) transcription now requires an explicitly configured key.
  • Changed the default push-to-talk shortcut from Ctrl+Right to Ctrl+D across the engine, daemon, preflight, doctor, Windows control, the push-to-talk dialog presets, the default config, and the UI.
  • Made recording resilient instead of hard-blocked: recording is never disabled by provider state. A degraded provider now shows a one-shot flash-ring pulse and toast, an "On-device · unreachable" strip during recording, and a quiet config hint when online with no key — replacing the previous fully blocked home screen.
  • Long (note-mode) recordings now retry the remote provider up to twice with backoff before degrading to on-device; quick push-to-talk dictation keeps its existing fail-fast CPU fallback. The supervisor learns from every outcome.
  • Dropped the timestamp from the copy-last-note row and shortened the ready-state status copy.

Fixes

  • Re-centred the cradle-mic desktop/app icon. It was shifted off-centre; the Linux package icons and the Windows .ico are regenerated from the canonical assets/dictate.svg, with the cradle rendering as a clean curve.
  • Note "Export" no longer claims success while writing nothing. The packaged webview has no file-download path, so it now copies the note as Markdown to the clipboard and says so ("Copied as Markdown").
  • Fixed the engine-version test to assert against RELEASE_VERSION dynamically instead of a hardcoded version that went stale after CalVer bumps.

Contribution record

CHANGELOG/records/2026.6.23.md lists every pull request in this release once, with its related issues and thanks.