v0.8.0 — Tone picker hotkey: one popup, every tone
New feature: Tone picker hotkey. Bind ONE global hotkey and a popup picker lists every rewrite tone. Pick with arrows + Return, type-to-filter, or ⌘ 1-7. The app rewrites your current input line in that tone, shows the preview HUD, and pastes when you confirm.
Coexists with v0.7's per-binding model — power users keep their muscle-memory hotkeys for top tones, the picker scales to the long tail.
How to use
- Settings → Contextual rewrite → "Tone picker hotkey" → Set hotkey (e.g. ⌘⌥⏎)
- Type a message in any app
- Press the picker hotkey — popup appears at your cursor
- Pick a tone (arrows + Return /
⌘ 1-7/ type to filter) - Review the rewrite in the preview HUD, edit if needed, hit Send
| Picker key | Action |
|---|---|
| ↑ / ↓ | Move selection |
Return |
Confirm tone |
Esc |
Cancel |
⌘ 1-7 |
Quick-select that row |
| Click outside / 5 s focus loss / 20 s dwell | Auto-dismiss |
| Re-press picker hotkey | Toggle picker closed |
Safety + privacy
- Refuses password fields. AX role check blocks
AXSecureTextFieldbefore any keyboard simulation runs — your password drafts never reach an LLM. - Eager clipboard restore. The captured line is restored to the clipboard before the picker dwells, so a clipboard manager doesn't snapshot your draft.
- Right-Arrow collapse. Immediately after Cmd+C the selection is collapsed — a cancelled picker leaves zero side effects in your input field.
- Always preview. Tone-changed messages always go through the preview HUD before paste — never auto-send.
Provider requirements
Needs an LLM provider: Gemini, Ollama, or an OpenAI-compatible API. DeepL and Google Translate cannot rewrite — Settings warns when the active provider can't, and the picker hotkey simply doesn't register.
Auto-update
On v0.6.1+ this arrives automatically via Sparkle — the app prompts with "Install and Relaunch."
Compatibility
- macOS 14 Sonoma minimum
- Liquid Glass effects on macOS 26 Tahoe
Tests
- 243 Swift tests / 52 suites GREEN
- Apple notarization: DMG + zip both Accepted and stapled