01
Impossible
A local speech-to-text app as the always-on ear
The whole category — MacParakeet, superwhisper, Wispr Flow — is push-to-talk or toggle. There is no open-mic mode to switch on. Excellent transcription, genuinely private, structurally unable to meet “don't make me touch a key.”
Check for a continuous mode before evaluating accuracy. Accuracy is worthless if the trigger is a key you already said you wouldn't press.
02
Silently ignored
Sending a synthetic plain Return
Claude, Cursor and Slack are web pages in desktop wrappers, with composers made of HTML rather than real controls. A plain Return posted programmatically is delivered and then quietly dropped. No error, no bounce, nothing in any log. This is the 8 / 0 above.
But Cmd+Return from the identical mechanism works in all three. The boundary is not native-versus-web and not real-versus-synthetic — it is which key. Skipping that one test made the next two entries look necessary.
03
Brittle
Walking the UI tree to find the Send button
The obvious workaround to #2: enumerate the interface, locate the send control, press it. It works often enough to ship and then fails constantly, because those trees shift with layout. My log was mostly no Send button and focus FAILED.
The supported version ships with the OS — say click plus whatever the button is called. It is genuinely good and it is not universal: it sent in Claude, and in Cursor it fired thirteen times and pressed nothing, because that send arrow is an icon with no accessible name. It removes per-app code, not the need for a per-app name.
04
Actively hostile
Auto-sending after a few seconds of silence
A daemon that submits when you stop talking will submit every time you pause to think. There is no threshold that separates finished from choosing a word. Mine was three seconds and it truncated sentences all evening.
An explicit trigger word is not friction to be engineered away. It is the only thing in the system that carries intent.
05
Redundant
Per-app daemons and helper scripts
Four background agents and eleven small apps, every one shaped around a single editor, all solving problems the dictation layer does not have — it already types into whatever holds focus. Two of the four had never been loaded at all, and nothing had noticed.
A component nobody noticed was missing was never doing work. Confirm what is actually running before you extend it.
06
Unreliable by design
Trigger phrases that sound like conversation
send it. that's it. go ahead. Two independent failures, both fatal. While transcribing, the recognizer has to decide whether your words are a command or the next part of your sentence — a coin flip, and it landed wrong about half the time. Worse, the phrases you say constantly fire mid-thought and submit half-written messages.
A trigger must be something you would never say in a sentence. Distinctive beats memorable. This is not a style preference; it is the whole difference between working and not.
07
The expensive one
Concluding one observation wider than the evidence
Three claims went into my notes and an early draft of this page, each corrected within the hour. The config is right, so it works — twice; the stored settings and the running engine are different layers. It works everywhere — written from someone saying it “seems to work,” a hedge upgraded into a verified claim. Keystrokes don't work here — true of Return, false of Cmd+Return.
Each was cheap to check and expensive to retract. The third is the costly kind: a bad generalisation early sends the whole investigation down a road, and the dead end you eventually hit reads like confirmation rather than the consequence of a wrong turn three steps back.