• v0.4.1 ba2fbb61db

    x released this 2026-10-22 05:48:34 +00:00 | 5 commits to main since this release

    eaSnippet 0.4.1

    Dictation drops the words you say again while you find the next one, and keeps everything you mean.

    Dictation

    • Stumbles come out (Qwen3-ASR, English): "just just just just" or "just, just, just" is typed as
      "just", "I I I think" or "I, I think" as "I think", "the the" as "the", "on the on the table" as "on
      the table", "I think I think" as "I think", "Can you, can you check it out?" as "Can you check it
      out?", and "to see, to see what's going on" as "to see what's going on". It happens on this Mac as
      the text is made, with no AI and no wait, and the live text in the pill shows it too.
    • What you mean stays: only short words like these are ever taken out. Emphasis ("really really",
      "no no no", "I love love love it"), repeats that are correct English ("I know that that works", "she
      had had enough", "the can can hold two litres"), "Maybe, maybe not", "you and I, I think", names,
      numbers, hyphenated words, words each in their own quotes, a repeated sentence ("I'm testing. I'm
      testing.") and Chinese (看看, 谢谢) are typed as you said them.
    • Not yet: a restart such as "some in some cases", or a stumble Qwen splits with a full stop ("like
      I. I think"), stays as heard. A rare sentence that is correct English but looks exactly like a
      stumble ("the ones we don't don't matter") can lose a word.

    For AI agents

    • MCP screenshot stays one call at a time inside a batch, even when a screenshot that was running
      finishes while the batch is being read: every call to it in that batch is answered busy.

    Install

    brew upgrade --cask x/tap/easnippet      # or: brew install --cask x/tap/easnippet
    

    Or download the zip below and move eaSnippet to Applications. After updating, macOS may ask you to
    allow Accessibility, the microphone and Screen Recording again.

    Downloads
  • v0.4.0 516d1cf7b9

    x released this 2026-10-22 00:54:22 +00:00 | 23 commits to main since this release

    eaSnippet 0.4.0

    Screenshots from the launcher and your own shortcuts, a welcome that fits on one screen, and AI agents
    that can drive the running app.

    Screenshots (Direct edition)

    • Capture Screen, Capture Window and Capture Area in the launcher (⌥Space), through macOS's own
      screenshot tool, saved where your Screenshot settings say.
    • Copy Text from Area: drag over text and it's read on this Mac, English and Chinese alike, then
      copied, so clipboard history keeps it too. When no text is found the clipboard stays as it was, and
      the picture is deleted at once.
    • Shortcuts for macOS's screenshot toolbar and for Copy Text from Area, off until you set them
      (Settings › Shortcuts › Screenshots). screenshot.startMode screen|window|area makes ⌘⇧5 open in
      that mode while eaSnippet runs.
    • From the command line: easnippet screenshot [screen|window|area] [--output file.png] [--clipboard] [--text].

    Getting started

    • One welcome screen instead of four steps: the six tools with your keys, the one permission
      eaSnippet needs, and opening at login. Getting Started… in the menu brings it back.
    • The menu reaches everything: Launcher…, Dictate (with its key) and Getting Started… are new.
    • Empty lists say why, with the fix: clipboard history off (Turn On) or blocked by macOS (Open
      Settings…), a filter with nothing in it (Show All), no snippets yet (New Snippet…).
    • Failures show: a microphone that isn't allowed says where to allow it, with a button; a pin,
      delete or plugin setting that doesn't save says so.
    • VoiceOver reads notices aloud, and the dictation buttons have names.

    Faster and smaller

    • Clipboard history searches without holding up your typing, and ↩ or ⌘1–9 pressed right after
      typing acts on what you typed.
    • The app is about half the size (20 MB instead of 38 MB): release builds leave out their debug
      symbols.

    Dictation

    • The first dictation after launch keeps its screen hints: the text models now load when
      eaSnippet starts.
    • Screen hints read Chinese as well as English.

    For AI agents

    • Agents and scripts can drive the running app (Direct edition): easnippet app status,
      app show (launcher, clipboard history, snippets, Library, Settings, welcome),
      app dictate start|stop|cancel|toggle, app insert (a snippet typed into the app in front, fields
      from --var, never the fill-in form) and app action (lock, sleep, captures). Each reply says what
      happened and where. Over MCP, app_status for every agent, and the rest with --allow-app. The app
      listens on a socket only you can open; restart, shut down and log out stay with you. New error code
      not_running.
    • With --allow-config, agents can change every setting, including the ones 0.3.1 refused: what
      clipboard history records and keeps, AI providers and when eaSnippet asks before sending text,
      excluded apps, what dictation reads off the screen, and launcher aliases and folders. Without the
      flag, agents still only read settings.
    • MCP screenshot (the main display, optionally with its text) with --allow-screen.
    • Errors agents can act on: a failed MCP tool call carries {"error": {"code", "message"}} with
      the same codes as the CLI, and busy when a tool that runs one call at a time is already running.
    • config set accepts what config get --json prints, for every setting, and
      easnippet config reset --all asks for --yes.

    Smaller fixes

    • A settings reset runs once even if eaSnippet quits partway through, and if it fails, eaSnippet says
      so after the next launch.

    Install

    brew upgrade --cask x/tap/easnippet      # or: brew install --cask x/tap/easnippet
    

    Or download the zip below and move eaSnippet to Applications. After updating, macOS may ask you to
    allow Accessibility, the microphone and Screen Recording again.

    Downloads
  • v0.3.1 ef65ab3ddd

    x released this 2026-10-21 09:11:30 +00:00 | 34 commits to main since this release

    eaSnippet 0.3.1

    Faster and more careful: clipboard history keeps up with very large copies, one dictation can no longer
    reach the next, password managers stay out of clipboard history, and AI agents get more tools and fewer
    ways to do harm.

    Faster

    • Clipboard history stays quick with big copies. Each row used to tidy up the whole text of a copy
      before showing its first line, so a few very large copies made every redraw take about 0.4 s. Now a
      row reads only as far as it shows: 4 ms for the whole list (measured with 1,000 items and copies up to
      1.5 MB). The rows read exactly as before. For a very long copy, the detail pane shows the first 20,000
      characters and says so; pasting still uses all of it.
    • Copying an image no longer holds up the app. PNG images are kept as they are and other formats are
      converted in the background (a large screenshot took 36–48 ms on the main thread). Each image keeps
      the time it was copied.

    Dictation

    • One dictation can't reach the next. A language switch that finished after you cancelled could
      stop the next dictation, and cancelling while the text was being made could still type it. Each
      dictation is now followed from start to finish, so nothing from an earlier one can stop, change or
      type into a newer one, and cancelling while the text is being made types nothing.

    Privacy

    • Snippet analysis asks before using a cloud AI. If an analysis plugin uses a cloud provider,
      eaSnippet asks once for each provider before sending any text.
    • Only this Mac counts as local: a numeric 127.x.y.z address, ::1 or localhost. A server name
      that merely starts with "127." could be anywhere, so it's treated as the cloud.
    • Password managers always stay out of clipboard history, whatever its list of ignored apps says:
      1Password, Bitwarden, Apple Passwords and Keychain Access, LastPass, Enpass, KeePassXC, Proton Pass,
      NordPass, Keeper and MacPass. A copy made in one of them just before you switch apps is skipped too,
      instead of being recorded under the next app's name.

    Launcher

    • "microphone" opens the Microphone page, not Sound (which also answers to "microphone"). Among
      equally good matches, what you chose for that very word comes first, then an item's own name, then
      what you open most.

    For AI agents

    • New MCP tools: snippet_list (a page at a time), snippet_export, snippet_import (snippets,
      not settings), keywords_prefix, launcher_search (ranks a query as ⌥Space does), voice_models,
      clipboard_pin and clipboard_delete.
    • Agents can't change launcher aliases or folders, even with --allow-config, alongside the
      settings that were already protected.
    • easnippet voice remove asks for --yes, and voice models and voice remove now look in the
      data folder given by --data-dir or EASNIPPET_DATA_DIR (they used to act on your real downloads).
    • Clearer CLI errors: a wrong argument reports invalid_input, and renaming a category to another
      one's name reports conflict. Blank category names are refused, and add --body no longer waits for
      input.

    Smaller fixes

    • Notices no longer get stuck: a cancelled speech model setup and "Analyzing…" for a deleted snippet
      both clear. A failed settings save, key removal or plugin change says so, and "Clipboard history
      cleared" appears only when it was.
    • Pausing clipboard history Until Tomorrow now lasts until midnight.
    • The documentation, llms.txt and Settings text were corrected in 24 places to match what the app does.

    Install

    brew upgrade --cask x/tap/easnippet      # or: brew install --cask x/tap/easnippet
    

    Or download the zip below and move eaSnippet to Applications. After updating, macOS may ask you to
    allow Accessibility, the microphone and Screen Recording again.

    Downloads
  • v0.3.0 80da2427fe

    x released this 2026-10-21 02:54:37 +00:00 | 41 commits to main since this release

    eaSnippet 0.3.0

    An app launcher with quick actions, a keep-awake switch in the menu bar, a new icon, and more accurate
    dictation: a new speech engine that runs on your Mac, and hints from what's on your screen, so names
    and terms come out the way they're written there.

    Keep your Mac awake (new)

    • Right-click the menu bar icon and your Mac stays awake, screen on, until you right-click it again.
      The icon turns green and the slot in its middle fills in. It's also in the menu (Keep Mac Awake) and
      in the settings file (easnippet config set general.keepAwake true), so it stays on after eaSnippet
      restarts. Closing the lid or choosing Sleep still puts the Mac to sleep.

    A new icon

    • Pocket: a tray holding a snippet, with a strip lifting out of it. The app icon (a layered Liquid
      Glass icon) and the menu bar icon are the same drawing.

    App launcher (new)

    • ⌥Space opens apps. Type a few letters: by name, by initials (vsc for Visual Studio Code) or by
      a word you choose (launcher.aliases). It remembers what you open, so the app you meant is already
      selected. Return opens it, ⌘Return shows it in Finder.
    • Quick actions in the same box: Lock Screen, Sleep, Restart…, Shut Down… and Log Out…. Restart,
      shut down and log out show macOS's own confirmation, and apps can still save their work. The first
      one asks for Automation permission.
    • System Settings too: type “sound”, “wifi”, “privacy” or “microphone” and Return opens exactly that
      page, with the icon you know from System Settings. Privacy & Security's pages are there too
      (Camera, Screen & System Audio Recording, Full Disk Access…). Turn it off in Settings › Launcher
      (launcher.systemSettings).
    • Empty until you type, so nothing distracts you. To list your most used apps and actions first,
      turn on “Suggest apps before you type” in Settings › Launcher (launcher.suggestions).
    • Settings › Launcher sets the shortcut, chooses which quick actions show and leaves apps out; easnippet launcher list,
      search and forget show what it finds and how it ranks a query. Alfred, Raycast and ChatGPT also
      use ⌥Space by default; if one of them is installed, Settings › Launcher says so.
    • ⌃N and ⌃P move the selection in the launcher, the snippet picker and the clipboard history, as
      in other Mac apps.

    Dictation

    • Qwen3-ASR, a new engine on your Mac. In everyday use it got more words right than Apple's speech
      recognition, and Chinese mixed with English clearly better than SenseVoice. It writes English,
      Chinese and the two mixed, and the pill shows its words as you speak, so what you see is what gets
      typed. Choose it in Settings › Voice or with easnippet config set voice.engine qwen3asr. It needs llama.cpp
      (brew install llama.cpp), starts when you dictate and stops after three idle minutes.
    • Two sizes. 0.6B is about a 1 GB download and uses 1.4 GB of memory while you dictate. 1.7B is
      about 2.5 GB and uses 2.9 GB; it makes fewer mistakes and is about twice as slow (a short sentence
      takes 0.4 s instead of 0.2 s). Switch in Settings › Voice or with
      easnippet config set voice.qwenModel 1.7b. The other size stays on your Mac, so switching back is
      instant; easnippet voice remove deletes one.
    • Hints from the screen. Instead of a word list you keep adding to, Qwen3-ASR looks at the text
      where you're dictating: the window title, the field's text, and, if you allow Screen Recording,
      the window's text read from the screen (terminals, the conversation above a chat box). In a test,
      "a snippet voice models … Quent3 ASR" became "easnippet voice models … Qwen3-ASR". It nudges rather
      than forces: in the same tests "queen", "code" and "taxes" stayed as said with Qwen, Codex and tasks
      on screen. The text is read once per dictation, stays on your Mac and is never saved. Password
      fields and password managers are skipped. Turn it off in Settings › Voice.
    • No "um" and "uh." Qwen3-ASR's filler words are taken out, along with the commas around them.
    • Known quirk: when a dictation starts in English and switches to Chinese, Qwen3-ASR sometimes
      writes the Chinese part in English. Starting in Chinese, or starting a new dictation for the
      Chinese part, avoids it.
    • When Qwen3-ASR starts repeating itself, eaSnippet notices within seconds and uses Apple's text
      instead of waiting.
    • Dictation keeps listening when secure input comes on. If an app switched on secure input in the
      middle of a sentence (a terminal at a password prompt, for example), dictation stopped. Now it keeps
      listening. If a password field has focus when you let go, the text is copied instead of typed, and
      you're told.
    • Dictations stay on the clipboard. After it's typed, each dictation is left on the clipboard, ready
      to paste again, and clipboard history can record it like any copy. Turn off “Keep each dictation on
      the clipboard” in Settings › Voice (voice.copyToClipboard false) to treat it like any other paste:
      your clipboard is put back when “Restore my clipboard after eaSnippet pastes” is on in Settings ›
      General.
    • No more false "Inserted". If no window is in front when you let go (only the desktop), eaSnippet
      still pastes, in case a panel like Spotlight has the keyboard, but keeps the text on the clipboard and
      tells you it may not have landed. The pill says "Inserted" only after eaSnippet has pasted into a
      window.
    • Push to talk gives way to ChatGPT, which uses the right ⌘ key for its own push to talk, while
      ChatGPT is in front, or whenever it's running with voice.pushToTalkYieldWhileRunning true. Other
      apps can be added with voice.pushToTalkYieldTo.
    • Reading the window stops cleanly if macOS refuses it. When Screen Recording no longer matches
      the app (after an update, for example), eaSnippet stops asking and tells you once, instead of a
      macOS prompt taking the focus in the middle of a dictation.
    • Removing a model in Settings now switches dictation to the other Qwen3-ASR size, or back to
      Apple, instead of quietly falling back.

    Everyday use

    • Open links from the popup: select a link, or a sentence with one link in it, and the 🔗 button
      opens it in your default browser. www.apple.com and github.com/you/repo work too, without the
      https://.
    • The panels look at home on macOS 26: the dark ring around the clipboard panel, the popup and
      the dictation pill is gone.
    • Settings › Permissions lists Screen Recording (optional, only for the screen hints) alongside
      Accessibility, the clipboard and the microphone.

    Smaller and more accurate

    • Removed: importing from Alfred and Raycast, the {argument} placeholder (Raycast's name for
      {input}), and the hidden easnippet clipboard command (use easnippet history). Settings from
      builds older than 0.1.0 and per-snippet hotkeys from 0.1.0 are no longer moved over; coming from
      0.1.0, set those hotkeys again.
    • Erase All in Settings › Privacy & Data now also deletes the SenseVoice and Qwen3-ASR downloads.
    • A "local" AI server on another machine counts as the cloud: eaSnippet asks before a plugin sends
      it text, and never uses it to tidy up dictation.
    • Fixes: a rare crash when a sentence started with "um" before certain letters; a second running
      copy of eaSnippet no longer stops the first one's Qwen3-ASR server.

    Install

    brew upgrade --cask x/tap/easnippet      # or: brew install --cask x/tap/easnippet
    

    Or download the zip below and move eaSnippet to Applications. After updating, macOS may ask you to
    allow Accessibility, the microphone and Screen Recording again.

    Downloads
  • v0.2.0 4b65444a33

    x released this 2026-10-14 01:44:18 +00:00 | 107 commits to main since this release

    Faster, more accurate dictation, and a few things that were missing. eaSnippet now needs a Mac with
    Apple silicon (macOS 26), which also makes it much smaller: about a 13 MB download.

    Dictation

    • Push to talk. Hold the right ⌘ key on its own, talk, and let go: the text goes where you were
      typing. Shortcuts that use right ⌘ still work. You can pick right ⌥ or fn instead, or turn it off,
      in Settings › Voice.
    • No lost first words. The microphone starts before the speech model is ready, so what you say
      straight away is kept.
    • The pill sits at the bottom centre of the screen, so you always know where to look.
    • Chinese mixed with English. An optional model, SenseVoice, runs on your Mac's Neural Engine
      and writes Chinese and mixed Chinese/English sentences, showing them as you speak. Choose it in
      Settings › Voice or with easnippet config set voice.engine sensevoice; it downloads once (about
      240 MB). It's good but not perfect: an English word inside a Chinese sentence is sometimes clipped.
    • Names and jargon. voice.vocabulary lists words dictation should expect.
    • Tidy up (optional). Apple's on-device model reads what you said and fixes words that sound
      right but don't fit ("the bill is running" → "the build is running"), plus grammar and
      punctuation. An answer that drops a word, translates, or swaps in a word that isn't a sound-alike
      is thrown away, and your words go in as spoken. Off by default; it adds about a second.

    Everyday use

    • Rearrange the popup's buttons by dragging them right in the popup. Dictate now sits next to
      Paste by default.
    • Sort your snippets by name, keyword, category or last change.
    • Snippet hotkeys are saved with the snippet, so they come along in exports and can be set from
      the command line.

    Under the hood

    • Saving clipboard history and usage no longer waits on the database, so nothing stalls while
      another app writes to it.
    • The app notices every change, whether you, the easnippet command or an AI agent made it, without
      extra work.
    • The MCP server speaks the newest protocol (2026-07-28) as well as the older ones.
    • Third-party licences are listed in THIRD_PARTY_NOTICES.md.

    Install

    brew upgrade --cask x/tap/easnippet      # or: brew install --cask x/tap/easnippet
    

    Or download the zip below and move eaSnippet to Applications. After updating, macOS may ask you to
    allow Accessibility and the microphone again.

    Downloads
  • v0.1.0 b460eb923c

    x released this 2026-10-13 22:14:37 +00:00 | 135 commits to main since this release

    The first public release: free, for macOS 26 or later on Apple silicon and Intel, signed and
    notarized.

    What's in it

    • Selection popup. Select text in any app and a small bar offers Copy, Paste, Save as Snippet,
      Clipboard History, Open Link, Search and your plugins. It works in terminals that copy on select
      (Claude Code, tmux) and in apps that hide their selection. Show it every time, only with ⌥ held, or
      from ⌃⌥A. Double-click an empty field for Paste, Snippets and Dictate.
    • Clipboard history (⇧⌘V). Search, filters, pins, paste as plain text. Password managers and
      concealed items are never recorded; history is kept by count and age.
    • Snippets (⌃⌥V). Keywords that expand as you type (;sig), templates ({clipboard},
      {date offset=+1d}, {input name="Name"}, {cursor}, {snippet keyword=";sig"}), a fill-in form
      only when a field is empty, and revisions. AI suggests a title, category, keyword and fields
      (Apple's on-device model by default, or your own key) without rewriting your words. Import from
      Alfred or Raycast, and move every keyword to a new prefix in one step.
    • Plugins. One Markdown file each. Twelve official plugins come bundled and switched off:
      Translate, Rewrite, Summarize, Fix Grammar, Explain, Search the Web, UPPERCASE, lowercase,
      Title Case, Format JSON, Word Count and URL-encode.
    • Dictation. On-device Apple speech in any text field or terminal (⌃⌥D). Switch language with
      Tab, or listen for two languages at once.
    • For agents. Every setting in one JSON file with a JSON Schema; the easnippet CLI with --json
      on every command and stable error codes; an MCP server for Codex and Claude Code that sees
      clipboard history or changes settings only when you allow it.
    • Privacy & Data. See what's stored and remove any part of it; deleted text is wiped from the
      database file too.

    Install

    brew tap x/tap https://x.vibewait.ing/x/homebrew-tap.git
    brew install --cask x/tap/easnippet
    

    Or download the zip below and move eaSnippet to Applications. Open it once and allow Accessibility.

    Known limits

    • Two languages mixed inside one sentence aren't reliable yet; whole sentences in either are.
    • Local AI servers (llama.cpp, Ollama, LM Studio) are supported but haven't been tried against a live
      server.
    • The app is universal but hasn't been tried on an Intel Mac; Apple's on-device AI needs Apple silicon.
    • English only for now.
    Downloads