Switcher3way 1.3.0
This release started as a port of four things the Windows build had and macOS didn't. One of them turned out to be a security fix.
Password fields are now properly protected
Until now the app relied on a single macOS signal — secure input — to know it was in a password field. That signal is advisory and is not set by:
- a login form with a "show password" toggle, while the password is revealed;
- a site that masks its own input in JavaScript rather than using a real password field;
- some Electron apps.
In all three, auto-fix would happily rewrite what you typed into a credential box.
Switcher3way now also inspects the focused field directly: whether macOS reports it as a secure text field, and whether it is labelled as a password — in a dozen languages, matched against whatever the page calls it. Any one of those is enough to leave it alone. Auto-fix, the trigger, and the on-screen badge are all suppressed there.
It deliberately errs toward doing nothing: a box labelled "password" is left alone even if it isn't one.
Also: the opt-in debug log never records which keys you pressed — only that a keystroke was buffered. If you have had logging switched on and want that history gone, delete ~/Library/Logs/Switcher3w/.
You can now see what was corrected
A conversion used to be invisible — the text simply changed under you. A small badge now appears by the cursor showing what you typed, struck through, and what replaced it, plus your trigger key as a reminder of how to undo it.
On by default; turn it off in Settings → General → Show what was corrected.
Notifications instead of a dialog in your way
The "always leave this word alone?" prompt used to be a modal dialog, popping up mid-typing right after the app had already interrupted you by rewriting a word. It is now a notification with an Add to exceptions button, and ignoring it costs you nothing.
A rewrite the app genuinely could not apply now says so, instead of looking like the app is broken.
Two changes to how the trigger behaves
Both are things the app claimed to do and didn't:
It now reaches every layout. After auto-fix corrected a word, tapping the trigger only toggled between the correction and what you typed — a third layout was unreachable. Type dblyj, let it become видно in Ukrainian, and tapping now walks Russian → your original text → Ukrainian again.
It now picks the right layout for words Ukrainian and Russian spell the same. Any word without і/ї/є or ы/э/ъ looks identical in both, and the trigger used to pick whichever layout came first in your input-source order — so a Russian-only word like хорошо could leave you typing Ukrainian. It now follows the dictionary, and for words that exist in both languages it follows Language for ambiguous words in Settings → Auto-fix, the same preference auto-fix uses.
Worth knowing: because the trigger now cycles through every layout, cancelling an auto-fix is no longer always a single tap — with three layouts you pass through the third on the way back to your original text.
Under the hood
The detection logic — the part that decides whether to touch your text at all — now has an automated test suite covering the soft gates, the three-way decision, phrase corrections, and dictionary quality. Two of the defects fixed above were found by testing this release, not by users.
Install: open the DMG and drag the app to Applications. This build is not notarized, so on a Mac that has never run it, right-click the app → Open the first time.
Updating from 1.2.0: use Check for Updates… in the menu. The update is verified against the checksum below and installed only if it carries the same signing certificate, which is what keeps your Accessibility and Input Monitoring permissions intact.
Switcher3way-1.3.0.dmg
SHA-256: 95d327adef89606c2f2226e2f43065d4fcd9d3e3ae65b40dafa521e7e1758049