Skip to content

v0.8.5 — Multi-variant rewrite (3 drafts in one round-trip)

Choose a tag to compare

@hoangperry hoangperry released this 23 May 21:41

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

  1. Settings → Contextual rewrite → tick "Generate 3 drafts per rewrite".
  2. Invoke a rewrite the same way you always have — binding hotkey (⌥R / ⌥E / …) or the tone picker (⌘⌥⏎).
  3. The preview HUD shows draft 1/3. Use ← / →, ⌘1–3, or the chevron buttons to switch.
  4. 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).