← Back to projectsNATIVE APP / MACOS 26

Clipurr.

A useful copy should survive the next one. I’m building a local history for recovering text, images and files — with search and OCR on macOS.

View implementation ↗SwiftUI · AppKit · Apple Vision
In development. Debug/release builds and tests pass; native OCR search verified. No signed release is published.
INTERACTIVE ILLUSTRATION / SAMPLE DATA

A copy, with context.

Search for “React”, select an image or pin an item. This web illustration explains the source workflow; it is not a screenshot of the native app.

  • Review the API contract · Workshop notes · project-notes.md
SAMPLE CONTENT

Review the API contract

Pre-filled OCR, synthetic data and in-memory state only. This page does not read your clipboard.

THE NATIVE INTERFACE / SYNTHETIC CONTENT
Clipurr native history with a pinned note, image, file reference and SQL text
History in a temporary demo bundle.
Search for React returns an image recognized by Apple Vision
Searching text recognized in the image by Apple Vision.
01 / THE PROBLEM

Recover without interruption.

Copying something else usually replaces the previous reference. The project brings different content types into a searchable list, with a short path to selecting and copying an item again.

02 / ARCHITECTURE

From capture to the next copy.

01

Capture

ClipboardMonitor watches NSPasteboard changes. ContentTypeExtractor identifies text, images or file references.

02

Store

HistoryStore deduplicates content; PersistenceManager serializes the history to local JSON.

03

Find

OCRService uses Apple Vision in an actor. Recognized text is attached to the item and becomes searchable.

04

Re-copy

SwiftUI presents the list; AppKit controls the popover. Re-copy can preserve RTF/HTML representations or use plain text.

03 / DECISIONS IN THE CODE

An image can be found through text.

Recognition runs outside the UI. The item appears first; the Vision result arrives later and is attached by identifier. If OCR fails, the code returns empty text and keeps the item available.

Pinned items appear first and survive automatic count/age eviction. Explicit deletion can still remove them. Re-copy flags its own write so the monitor does not create another item.

04 / LIMITS

Local does not mean encrypted.

History is saved to ~/Library/Application Support/Clipurr/history.json. The code provides no encryption, secret detection or per-app exclusions. Optional auto-paste requires Accessibility permission; launch-at-login still needs verification in a packaged app.

05 / VERIFICATION

Verified in the native app.

On October 3, 2026, the debug/release builds, 36 Swift Testing tests and the XCTest serialization property test passed with full Xcode. Tests cover pin retention, persistence, rich/plain re-copy on a private pasteboard and real Apple Vision OCR. Launching the app exposed a Settings initialization crash, which was fixed before verifying image search in the native interface.

Global shortcuts, automatic clipboard capture, auto-paste and launch-at-login still need end-to-end verification.

Building your next product?

Send an email ↗