github nilava/TabType v2.1.0
TabType v2.1.0

pre-release5 hours ago

TabType v2.1.0 closes most of the gap with Cotypist: ghost text that sits where the app's own text would, suggestions that read the conversation you're replying to, longer phrases, and keys that never get in your way.

Every change was measured: on the public 192-case eval set, and on a private set of 867 cases from the author's own messages. What we found and why each change was made is in the README: What changed in v2.1 — and why.

📈 Highlights

Before v2.1
Suggestions with more than one word (author's writing) 22% 57%
Characters saved per suggestion (author's writing) 1.37 1.46
Placements using the app's real font 0 of 984 read from the app
Chat predictions with conversation context (Slack, live log) 72 of 406 captured above the field
First suggestion after launch ~2.2 s ~0.24 s
Suggestions after the Mac sat idle stopped reload automatically

We also tried Cotypist's own model (Gemma 4 E2B) inside TabType: about 50 ms faster, but 20% fewer characters saved on real writing, so Qwen3-4B stays the default.

✍️ Placement

  • Ghost text uses the app's own font and colour (read from accessibility, with pixel fitting as a fallback), and wraps onto the next line like real text.
  • Works in more editors: hidden-input web editors, visual line starts, apps that report the caret late (retry plan + line-height cache).
  • Text mirror: a per-app opt-in preview for apps where inline ghost text can't be placed.
  • The ghost appears as soon as the app has caught up with your typing, with no fixed delays.

🧠 Better suggestions

  • Longer phrases: a beam search over whole phrases (like Cotypist's) and a lower extension bar. Suggestions average ~2 words instead of mostly one, with the first word unchanged.
  • Conversation context: reads the chat or document above the field with on-device OCR (accessibility tree as a fallback), and keeps that context steady while you type a message.
  • Typing ahead of a running suggestion reuses it instead of starting over; recent results are cached; instant Tab chains.
  • Learn from your writing imports your existing history once when you turn it on, with a strength setting and an "only record messages where I used a suggestion" option.
  • Typo gate on the word you're typing; small fields (search boxes) are skipped.

⌨️ Keys

  • TabType only listens to the keyboard. Tab, ⇧Tab and Esc are taken only while a suggestion is showing; ⌥Tab sends a real Tab.
  • A notice when another app already owns a shortcut.

✨ New

  • Terminals: suggestions inside AI agents' prompts (Claude Code, Codex, Gemini CLI), never at the shell.
  • In-app updates from GitHub Releases, verified by checksum and signature before installing.
  • Sync between Macs via iCloud Drive, end-to-end encrypted with your passphrase.
  • On battery power: on demand only, shorter suggestions, or a smaller model.
  • Per-app insertion workarounds for apps that mangle inserted text; grey suggestion colour option.
  • Labs: word alternatives and synonyms after a pause. Emoji: preferred gender and gender-neutral variants.

🐛 Fixes

  • Suggestions no longer stop after the model is unloaded while idle or under memory pressure.
  • The first suggestion after launch no longer waits ~2s for the spelling dictionary; the first keystroke in a new field predicts at once.
  • The diagnostic log is capped at 5 MB, and can be deleted from Settings → Advanced.
  • Interrupted model downloads resume at launch.

🧹 Removed

  • Settings that got in the way of suggestions: suggestion delay, context window size, screenshot mode, the voice adapter. (On-battery options came back in a simpler form.)

Install / Update

Download TabType-2.1.0.dmg below and drag it to Applications, replacing the old copy. Your permissions are preserved. From this version on, TabType can update itself (Settings → About).

New install? macOS will warn about the unnotarized app: System Settings → Privacy & Security → "Open Anyway", then grant Accessibility and Screen Recording (recommended: it's how TabType reads the conversation you're replying to). Full steps are in the README.

Apple Silicon Mac, macOS 14+.

SHA-256 bf0a13cbb8d9e880f9af49447a9da30341a1645771fcbbe94b2406e8656ef90f

⚠️ Still an alpha. If ghost text sits wrong or suggestions miss in a particular app, bug reports are gold.

Don't miss a new TabType release

NewReleases is sending notifications on new releases.