Skip to content

v0.9.0 — Input Surface Expansion (Shortcuts.app + OCR-from-screen)

Choose a tag to compare

@hoangperry hoangperry released this 24 May 18:43

Input Surface Expansion

Two new ways to invoke the translator: from any app via Shortcuts.app / Spotlight / Siri, and from any pixel on screen via an OCR capture hotkey. Both are opt-in. The single-key inbound/outbound flow + the v0.8 tone picker + the v0.8.5 multi-variant rewrite all stay byte-identical.

What's new

Shortcuts.app, Spotlight & Siri (App Intents)

Three new actions discoverable in Shortcuts.app under "Contextual Mac Translator":

  • Translate Text — translate any text. Target language optional (falls back to your primary language). Returns a string usable in subsequent Shortcut steps.
  • Rewrite with Tone — picks from the 7 preset tones (Polite, Professional, Friendly, Firm-but-polite, De-escalate, Concise, Custom). Use it to chain the translator into Quick Actions, Raycast, Alfred, calendar workflows, anything that speaks AppIntents.
  • Rewrite with Instruction — free-text instruction ("warmer reply", "shorter under 2 sentences"). Mirrors the in-app picker's freetext row from v0.8.3.

Spotlight + Siri trigger phrases prefixed with "Contextual" so they don't collide with Apple Translate.

OCR-from-screen translate

  • Bind a hotkey in Settings → Capture, drag the system crosshair (same UX as Cmd+Shift+4), and the app reads the text on-device via Vision, auto-detects source language via NaturalLanguage, and translates it into your primary language.
  • Recognises Vietnamese / English / Simplified Chinese / Japanese / Korean — picked for the VN-power-user audience (1688 / Aliwangwang / Messenger / Discord flows where browser translation breaks down).
  • Result opens in a copy-mode PreviewHUD: the Send button becomes "Copy". No auto-paste, no keystroke simulation. You read the translation; you click Copy if you want it on your clipboard.
  • Privacy: OCR runs entirely on-device. Only the recognised text travels to your active translation provider — same as every other translate flow. Screen pixels never leave the device.

What's-New window

Pops once on first launch of a new minor/major release with a short summary of what's worth knowing. Self-dismissible. Doesn't steal focus (you can keep typing while it shows).

How to set up

  1. Shortcuts: open Shortcuts.app → New Shortcut → search for "Translate Text" / "Rewrite with Tone" / "Rewrite with Instruction" under Contextual Mac Translator.
  2. OCR: Settings → Capture → tick "OCR capture hotkey" → record a hotkey (default suggestion ⌘⌥G). The first invocation triggers macOS's Screen Recording permission prompt; the Settings panel has a one-click link to System Settings if you missed it.

Compatibility

  • All v0.8.5 persisted state round-trips clean (RewriteBindings / hotkeys / glossary / expressive-tones / multi-variant — every Codable contract unchanged).
  • Sparkle OTA from v0.6.1+ auto-updates to v0.9.0 with no user action.
  • macOS 14 minimum preserved. App Intents (macOS 13+), Vision text recognition (10.15+), ScreenCaptureKit (12.3+), NaturalLanguage (10.14+) all backward-compatible to the floor.

Install

  • Sparkle OTA: v0.6.1+ users auto-update from inside the app.
  • Fresh install: download the DMG below → drag to /Applications.

Verify

  • App: 306 Swift / 67 suites GREEN (+36 from 270 in v0.8.5).
  • Build: signed (Developer ID), notarized + stapled (DMG + Sparkle zip), EdDSA-signed appcast.
  • Code-review pass: 0 CRITICAL / 3 HIGH (all fixed before tag) / 4 MEDIUM (2 fixed, 2 carried forward as test-coverage backlog).

Roadmap (next)

  • v0.9.1 patch backlog: per-binding multi-variant override, captureAndTranslate orchestrator test, screencapture timeout-path test, MED-4 OCREngine isolation alignment.
  • v0.10.0 candidates from discovery: Glossary v2 typed entries, VN Register Card UI, Local-LLM "Privacy mode" pivot.

Acknowledgements

Discovery + Define + Develop + Deliver phases run via the OCTO Double-Diamond workflow. Planning artefacts at docs/v0.9.0/{discovery,define}.md.