v0.8.5 — Multi-variant rewrite (3 drafts in one round-trip)
Multi-variant rewrite — 3 drafts in one round-trip
Opt-in setting that asks the LLM for three different rewrites in a single network call, then lets you page through them in the preview HUD before sending.
What's new
- Generate 3 drafts per rewrite toggle under Settings → Contextual rewrite. Off by default — existing users stay on the cheaper single-draft path.
- Multi-variant preview HUD — pager chip ("2 / 3"), ← / → buttons to flip between drafts, ⌘1–3 for quick-select, edit any draft with Tab (edits persist per-variant as you page back and forth).
- One network call — the prompt asks for N drafts separated by a
---VARIANT---sentinel, so cost is ~1.5–2× tokens but only one round-trip latency. - Graceful fallback — if the model ignores the multi-variant prompt or all drafts get filtered as refusals, the existing single-draft retry chain kicks in so you still get a result.
How to use
- Settings → Contextual rewrite → tick "Generate 3 drafts per rewrite".
- Invoke a rewrite the same way you always have — binding hotkey (⌥R / ⌥E / …) or the tone picker (⌘⌥⏎).
- The preview HUD shows draft 1/3. Use ← / →, ⌘1–3, or the chevron buttons to switch.
- Tab to edit the current draft. Return to send the active one. Esc to cancel.
Compatibility
- Default OFF — no existing users see a behaviour change without opting in.
- Single-draft mode (toggle OFF) takes the same code path as v0.8.4 and earlier.
- Works with every LLM provider (Gemini, Ollama, OpenAI-compatible).
Install
- Sparkle OTA: v0.6.1+ users auto-update from inside the app.
- Fresh install: download the DMG below → drag to /Applications.
Verify
- App: 270 Swift / 56 suites GREEN (+13 net: multi-variant view-model, variant splitter, style helpers).
- Build: signed (Developer ID), notarized + stapled (DMG + Sparkle zip), EdDSA-signed appcast.
Roadmap (next)
- Polish on response parsing for the long tail of models that ignore the sentinel in creative ways.
- Optional per-binding multi-variant override (today the toggle is global).