github yarasaa/Clippy v1.0.17
Clippy 1.0.17 — Locked items, actually locked

3 hours ago

Clippy 1.0.17

Locked items are now actually encrypted, a screenshot editor that helps you cover things you didn't mean to share, and fixes for two bugs that could lose your work. Still entirely on your Mac — no accounts, no cloud, no telemetry.

✨ New
🔐 Locked items are encrypted for real

This one needs plain speech. Until now, "Encrypt" set a flag: the card showed a lock and hid its contents, but the text stayed in Clippy's database exactly as you copied it — readable by anything that could open the file, and carried into every Time Machine backup. The README promised authentication that didn't exist. If you locked something in an earlier version, treat it as never having been encrypted.

Now it is. Locking a text item encrypts its content with AES-GCM under a key held in your Mac's Keychain, and locking an image encrypts the picture file itself, not just the database row. Revealing, copying, pasting or sharing a locked item asks for Touch ID first — or your login password on Macs without a sensor.

Every route to a locked item's content goes through that check: the context menu, the detail window, Quick Preview's number keys, ⏎ in the list, drag and drop, bulk copy, the share sheet, and the AI actions. Locked items are also excluded from snippet export and can't be reshaped by the transform menu, which would have corrupted them beyond recovery.

Items you locked in an earlier version are encrypted the next time Clippy starts.

The prompt is optional and lives in Settings → Privacy: turn it off, or let one unlock stand for up to five minutes. The encryption itself has no switch — it costs nothing and turning it off could only make things worse.

🖍 Redaction that finds what you missed

Clippy already reads every screenshot and already validates card numbers, IBANs and API keys against their real checksums. The editor knew none of it, so covering a leaked token meant noticing it yourself. Not noticing is the actual failure mode.

Open a screenshot in the editor and Clippy now points at what it found, with the option to cover all of it at once. Nothing is changed until you say so.

The redaction tool draws flat opaque black and ignores colour, opacity and fill mode — every property that could otherwise let something show through. Blur and pixelate are still there when you want a soft effect, but they are not redaction: pixelated text has published attacks that recover it.

📌 Pin to Screen

Right-click any image → Pin to Screen. It floats above every window until you dismiss it. Useful for a reference design, a chart you're copying figures from, or an error message you keep re-reading.

Hover it for a small control bar: close, copy, and a Fade slider that makes the pin translucent so you can read what's behind it. Hold ⌥ and it stops catching clicks entirely, so you can work straight through it. Moving the pointer away restores full opacity, so a faded pin is never lost.

🧹 Clear Everything

The clear action follows whichever tab you're on, which meant clearing your history involved visiting every tab in turn — and anything in a tab you'd hidden couldn't be reached at all.

Clear Everything… in the ⋯ menu ignores tabs entirely. Text, code and images go in one action, including whatever is in hidden tabs. Snippets, pinned, starred and locked items are kept. It confirms first and tells you how many items it will remove, and it deletes image files from disk rather than just the database rows.

💾 See where the space went

Settings → Features now shows what Clippy is actually keeping: your history, the items you saved on purpose, and image files nothing refers to any more, with a button to clear those.

The second row is the one worth looking at. Pinned, starred, snippet and locked items are never pruned automatically, by design — which makes them the only part of Clippy that grows without a ceiling. Now you can see it.

Turning off the Images tab used to leave your existing screenshots stored but invisible: no tab listed them, so they couldn't be deleted, and automatic pruning never reached them either. A line under the toggle now says how many are still there and lets you remove them.

⏱ Delayed capture, finished

Three seconds, no way to change it, and nothing on screen while you waited — you couldn't tell whether the click had registered. It's now 3, 5 or 10 seconds with a visible countdown, and esc calls it off.

🚀 Improved
Text in any language

Screen Text Grab (⇧⌘2) mangled non-English text: Turkish came back with ç as s, ı as l, and commas replaced by the full-width CJK ,. Clippy was ranking a fixed list of scripts ahead of the languages you actually read. It now uses your Mac's own language settings and lets Vision detect the script. Measured on the same images: 75% of characters correct before, 100% after, and mixed-language screenshots improved too.

The screenshot editor

Gradients on shapes. The settings were there and nothing painted them — a flat colour came out whatever you chose. Rectangles, ellipses and callouts now fill with a real two-colour gradient, and it works alongside the stroke rather than replacing it.

Text boxes behave like every other tool: drag the corners to resize, and the box keeps the width you gave it instead of quietly shrinking and pushing your text onto another line.

The eyedropper samples where your cursor actually is. On Retina displays it was reading a point at half the distance, drifting further off the closer you got to the bottom-right corner. It also stayed on screen after you switched to another app, with nothing driving it.

🐛 Fixed

A snippet could freeze Clippy completely. A {{SHELL:…}} command that printed more than about 64 KB filled the pipe Clippy was reading from, and both sides waited for the other forever. Because this ran on the main thread it took the whole app down — Force Quit was the only way out. Commands now run in the background, are read while they run, are cut off after five seconds, and can't paste more than 1 MB.

Copies silently dropped on long text. Above 100,000 characters, Clippy compared only the length and the first and last 1,000 characters. Edit something in the middle of a large file without changing its length — a number, a hex colour, a name — copy it again, and the new version was thrown away as a duplicate while the old one stayed in your history. It now compares the whole thing, which measured faster than the shortcut it replaces.

Imported snippets could run commands without asking. A snippet file from anywhere can contain {{SHELL:…}}, and typing that shortcut ran it. Clippy now shows you every command a file would install before importing it, and Cancel is the default answer.

Sharing left your text on disk. Every share wrote a plain-text copy into the temporary folder and never removed it. Staged files are now cleared before each share and when Clippy quits.

Screenshots that failed, failed silently. If a capture went wrong there was no image, no message, and nothing in the log. Missing Screen Recording permission now says so and offers to fix it; cancelling stays quiet, because cancelling isn't an error.

Don't miss a new Clippy release

NewReleases is sending notifications on new releases.