← All projects

Clipflow

Clipboard manager with full fidelity

Tang Yijia (Tom)

Category
Mac Apps
Platform
macOS 14+
Version
0.2.0
Size
3.6 MB
License
MIT

A macOS clipboard manager that gives you back exactly what you copied: every format the pasteboard offered, multi-file copies kept as multiple files, and Chinese search that actually finds things.

Web demoThe menu bar panel
Web demoChinese search with bigram tokenisation

Try it in your browser

The demo below runs entirely in your browser on made-up sample data — it does not connect to any real service. Get the real thing on GitHub.

↑↓Select↵Paste⌘PPin⌘⌫Delete

Keys: ↑ ↓ to move, ↵ to copy, ⌘1–9 to pick (your browser may claim ⌘1–9 — ⌥1–9 also works here), ⌘P pin, ⌘⌫ delete, esc clears the search. Double-click a row to copy it.

Why bigrams: the same query against two tokenisers

Both columns search the index built from the sample items above (prefix queries on both sides, sensitive items excluded). The panel itself also runs the title-prefix and substring-fallback layers, as the app does.

Try

Fidelity, not just text

One copy is one NSPasteboardItem carrying several types: public.rtf, public.html, public.utf8-plain-text, plus whatever private types the source app adds. Clipflow stores all of them and writes all of them back, so formatting survives the round trip. Copy three files and you get three files back; the pasteboard's multi-item structure is kept instead of being flattened into one.

Copying a file only ever puts a public.file-url on the pasteboard (a 200 MB video is 76 bytes there), so that reference is what gets stored and pasted, as with any clipboard manager. The preview pane lists which formats an entry holds and how big each one is, because fidelity is the point and should be visible.

Chinese search that works

SQLite FTS5's default tokeniser treats a run of Han characters as a single token, so a word in the middle of a sentence is never found. Clipflow tokenises in the app layer: Han runs become overlapping bigrams and are queried as a phrase, so the bigrams must appear consecutively and precision holds. Latin text is indexed by word plus camelCase parts and queried by prefix. A capped substring fallback covers fragments in the middle of a word and single characters.

Results are ordered by recency, never by relevance score: ranking 20,000 hits took 46 ms versus 0.30 ms by recency, and the most recent match is usually the one you want.

Private by construction

Measured performance

Figures from the project README: 48,000 items on an M4 Pro, reproducible with the scripts in bench/.

OperationMedianP95Budget
List recent 200.09 ms0.11 ms—
Chinese phrase search0.16 ms0.19 ms16 ms
Identifier search0.45 ms0.55 ms16 ms

At 1,000,000 items the store measured 518 MB with a P95 search of 0.27 ms, so latency stays flat as history grows.