v0.2.0 — Multi-provider + Streaming SSE
Pre-release
Pre-release
What's new in v0.2.0
App-side multi-provider support (Phase 3)
- New Translation Source picker: Direct API / Custom backend / 1st-party backend
- 7 direct providers — call APIs without a backend hop:
- Gemini (Google AI Studio)
- Ollama (local, privacy-first)
- Google Translate Basic
- OpenAI-compatible (LM Studio / OpenRouter / vLLM / OpenAI)
- Gemini CLI (experimental)
- Codex CLI (experimental)
- Mock (echo, for smoke tests)
- Per-provider credential slots in macOS Keychain
- TranslationProviderFactory dispatches based on Settings; switch sources without re-entering keys
Streaming SSE (Phase 5)
- New
/translate/streamendpoint emits SSE chunks - Inbound flow shows progressive HUD as tokens arrive
- Mid-stream errors surface as RFC 7807 frames
v2 client adoption (Phase 2.5)
- Idempotency-Key on every request → server cache prevents double-paste
- RFC 7807 problem-details parsing → richer error messages
- 429 + Retry-After UX → "slow down, retry in 3s" instead of generic error
Production polish (Phase 7)
- X-Forwarded-For aware rate limiting (opt-in via env)
- DEPLOY guide with monitoring, troubleshooting, SSE nginx config
Tests
- 122 Swift / 29 suites + 68 pytest / 14 classes = 190 GREEN
Install (alpha)
- Download `Contextual-Mac-Translator-v0.2.0-macos-arm64.dmg`
- Open DMG → drag app to /Applications
- Launch from /Applications
- Grant Accessibility (System Settings → Privacy & Security)
- Open Settings, pick a Source, paste credentials, test hotkey
Notes
- Apple Silicon only (arm64)
- Ad-hoc signed; first launch may need right-click → Open
- Bundle ID still placeholder (`app.lookerlab.translator`); Developer ID signing is on the M2 roadmap