A Windows-wide AI spell checker. Select text anywhere, press Ctrl+Alt+U, and the corrected version replaces your selection in place. Lives in the system tray; the OpenAI Responses API does the work.
Download the latest Setup.exe from the Releases page and run it. No admin prompt, no code signing — Windows SmartScreen may warn on first install. The app checks GitHub Releases on launch and every ~4 hours. It installs a newer version automatically during startup. Background checks prepare updates for the next restart.
Technical users can restart and update from PowerShell:
& "$env:LOCALAPPDATA/UniversalSpellCheck/current/UniversalSpellCheck.exe" --restartThe command sends one brief notice and restarts the app. Startup checks and installs any available update automatically; a failed update notifies you and keeps the current version usable. --update remains an alias. The launcher acknowledges the request; restart and installation complete asynchronously.
You'll need an OpenAI API key. Open the dashboard from the tray icon, add a named key, and select it. You can store multiple keys and switch the active key without restarting.
- Select text in any app.
- Press Ctrl+Alt+U.
- Wait for the loading bar; corrected text replaces your selection.
The tray icon menu has version info, "Check for Updates", "Open Dashboard", and "Open Logs Folder".
rust/ # The product — native Rust tray app and dashboard
src/ # Frozen C# reference; BuildChannel.cs remains canonical
.github/workflows/ # Tag-triggered Velopack release pipeline
replacements.json # Brand/casing post-processing rules
docs/ # Architecture, conventions, debugging notes
.archive/ahk-legacy/ # The original AutoHotkey implementation (history)
tests/ # Native tests plus Python fine-tune and benchmark tooling
# Run a Dev build alongside the installed Prod app (Ctrl+Alt+D, separate settings)
cargo run --manifest-path rust/Cargo.toml --release
# Build a release-style local artifact
./rust/package.ps1 -Output rust/dist/prodProd and Dev settings are isolated (%LocalAppData%\UniversalSpellCheck.Data\ vs %LocalAppData%\UniversalSpellCheck.Dev\). Logs are intentionally unified at %LocalAppData%\UniversalSpellCheck.Data\logs\spellcheck-{date}.jsonl with per-line channel, app_version, and pid stamps. %LocalAppData%\UniversalSpellCheck\ is reserved for Velopack installation files.
Use the repository's deploy skill. A version tag on clean, verified main triggers the Rust release workflow: locked production build, regressions, startup smoke, Velopack packaging, fresh-installer execution on a disposable CI runner, then publication. The tag must match rust/Cargo.toml. Push the intended main commit and only its release tag together.
Rust releases retain the existing package ID, UniversalSpellCheck.exe name, installation path and update feed. Existing C# installations upgrade through their built-in restart/update flow; settings and encrypted keys remain under %LocalAppData%\UniversalSpellCheck.Data. New installs do not require .NET. Installer-owned program files are replaced during updates; user data remains outside that directory. Keep any shared .NET runtime installed for other applications.
Personal project. No license declared.