v0.3.1 — Hotkey recorder + custom style + server DeepL/LibreTranslate mirror
Pre-release
Pre-release
What's new in v0.3.1
Closes the v0.3 follow-up backlog.
Customizable hotkey recorder
- Click "Change…" next to any hotkey in Settings → press your new combo → save.
- Built on
NSEvent.keyDownwith proper Cocoa-flag-to-Carbon-modifier-mask mapping. - Esc cancels mid-recording.
- Validates: at least one modifier (⌘/⌥/⌃/⇧) + a regular key.
Hotkey conflict detection
- Recorder warns inline when the pressed combo is already bound to another translation target (or to the inbound hotkey).
- Save button disables until the conflict is resolved.
Custom LLM style instruction per binding
- Expandable "Custom style instruction" field on each outbound binding.
- Overrides the auto-derived (language, register) style — useful when you want very specific tone control for a single target.
- Empty = uses the default register-aware instruction (back-compat).
Server-side mirror (translator-server)
DeepLProvider— backend mode now supports DeepL Free/Pro with the sameformality=more/lessmapping as the app.LibreTranslateProvider— backend can self-host or proxy to a LibreTranslate instance.- Aliases
libre/libre-translate/libre_translateall dispatch tolibretranslate. - 16 new pytest cases. Total server tests: 68 → 84 GREEN.
Tests
- 150 Swift / 35 suites + 84 pytest / 17 classes = 234 GREEN.
Docs
CHANGELOG.mdadded with version history v0.1.0 → v0.3.1.docs/ENV.md+docs/api-contract.mddocument the new providers + aliases.
Upgrade
- Existing v0.3.0 installs migrate transparently; the new
customStyleInstructionfield onOutboundBindingdefaults to empty (= use derived style). - Apple Silicon only (arm64). Ad-hoc signed.
Install
- Download
Contextual-Mac-Translator-v0.3.1-macos-arm64.dmg. - Open DMG → drag app to /Applications.
- Launch from /Applications, grant Accessibility.
- Open Settings → Languages, change hotkeys via "Change…", customize style per target.
Full changelog
See CHANGELOG.md.