Release history

Releases

Generated from CHANGELOG.md. Packaged binaries are signed, checksummed, and attested by the release workflow; see each release for platform downloads.

Unreleased

Planned

  • Notarized Developer ID distribution for macOS.
  • Broader Windows and Linux validation and restored screen-reader integration for the cross-platform settings UI.
  • Browser adapter and npm delivery for upyr-wasm.

v0.2.0

Sound-pack and keyboard-feedback preview.

Added

  • Upyr Original, Pocket Arcade, and Anime Reactions sound packs with native AppKit and cross-platform settings controls.
  • Dependency-free upyr-audio synthesis with deterministic pfxr-style cue variations and locally generated, non-sampled formant reactions for non-character keys in the Anime pack.
  • Anime Reactions' six application-event cues (auto-correct, manual conversion, layout switch, pause, resume, error), rendered offline with the ElevenLabs Sound Effects API by the new tools/generate_event_sound_pack.py and bundled the same way as the Original pack's event cues.
  • Opt-in physical-key feedback for characters, Space, Enter, Escape, Tab, modifiers, Caps Lock, Delete, Backspace, navigation, and function keys.
  • A dedicated Exceptions tab with an editable table for words that automatic correction must always leave alone, replacing the single comma-separated text field on the Automatic tab in both settings UIs.
  • An indicator style setting (letters, flag, or both) for the floating language indicator, in both settings UIs.

Changed

  • Configuration schema 6 adds sounds.pack and sounds.key_clicks; migrations preserve the original event theme and keep keyboard monitoring disabled.
  • Configuration schema 7 adds indicator_style; migrations keep today's combined letters-and-flag presentation.
  • Keyboard cues branch from raw physical events before autocorrect filtering, are cached by pack/cue/variant, and are rate-limited for comfortable typing.

Fixed

  • Word and prefix conversion no longer strands the caret when the focused app (notably terminal emulators) drops the Shift modifier from the selection chord instead of extending a selection with it: Upyr now detects the resulting empty copy and moves the caret back to its original position.

Security

  • Audio synthesis is local-only and receives physical key categories rather than rendered text. It uses no microphone, network service, telemetry, or new third-party runtime dependency. Anime Reactions' six event cues are the exception: like the Original pack's cues, they are pre-rendered offline by a manual, developer-run tool and bundled as static assets, never generated or fetched at runtime.
  • Upyr drops keyboard cues while its own synthetic replacement input is active, preventing copy, paste, and correction keystrokes from producing feedback.

v0.1.0

Initial public preview.

Added

  • English ↔ Ukrainian correction for selected text and the previous word.
  • Opt-in automatic correction with physical-key mapping, punctuation and case preservation, technical-token guards, and a compact local signed character n-gram model.
  • Native macOS input-source integration, rich pasteboard snapshot/restore, Accessibility permission lifecycle, searchable AppKit settings, About page, language indicator, event sounds, and launch-at-login controls.
  • Preview Windows, Linux/X11, and DOM-independent WebAssembly targets.
  • Reproducible model generation and frozen mixed-language evaluation fixtures.
  • Structured issue forms, private vulnerability reporting, CodeQL, RustSec, dependency review, privacy/version regression checks, and provenance-ready release workflows.

Security

  • Desktop and WASM runtime paths contain no network, telemetry, analytics, or remote-inference client.
  • macOS and Linux configuration writes are atomic and owner-readable only.
  • Tagged macOS and Windows releases fail closed when signing credentials are absent; macOS publication also requires successful notarization.

Known limitations

  • macOS is the primary supported target. Windows and Linux/X11 are previews.
  • Native Wayland global input is not supported.
  • The Windows/Linux settings screen-reader bridge is temporarily unavailable.
  • Public preview artifacts may be explicitly marked unnotarized; users should check each release's signing status before installing.