2 min read
A Shelf That Holds References, Not Copies
Designing Snaply's file shelf, a place to park files between apps, and why it never copies what you drop on it.
A lot of everyday file handling is just moving a file from one app to another: a screenshot into a Slack thread, an invoice into an email, a PDF into a chat. Snaply started as a way to keep recent screenshots one drag away. The shelf extends that to any file.
How it works
Drag any file onto Snaply, the cat sitting on the taskbar, and it lands on the shelf. Later, drag it back out into an email, a chat, a folder, or anything else that takes a file. The drop delivers the real file, exactly as if you had dragged it out of File Explorer.
Snaply opens up while a drag is hovering over it. That turns the target into a proper drop zone instead of a 30px sliver, and it shrinks back once you let go.
References, not copies
The biggest decision was what "putting a file on the shelf" should actually mean.
The obvious approach is to copy the file somewhere safe. But dropping a 2 GB video on Snaply shouldn't quietly duplicate it on your disk. So the shelf doesn't move or write anything. It remembers where the file is, and dragging it out hands over the original.
That choice has a cost. If the original is moved or deleted, the shelf entry goes stale. Instead of letting it silently disappear, Snaply keeps it listed, greyed out and labelled "file has moved", so you know what happened.
Delete means "take it off the shelf"
Removing things got the same care. On the shelf, pressing Delete removes the entry, not the file. A shelf is somewhere you put things, not a folder, so clearing it should never destroy anything. Clear shelf empties it in one go, and right-clicking any tile anywhere in Snaply adds it to the shelf or takes it off.
Deleting elsewhere in the app is still careful: it always asks first and moves files to the Recycle Bin, so it can always be undone.
Keeping file access narrow
Snaply's interface reads files through a custom sdimg:// protocol backed by an allowlist. When you browse a folder, the allowlist gains the individual files that scan surfaced, not the folder itself, and the previous set stops being readable as soon as a new scan replaces it.
The shelf keeps its own separate allowlist, so a shelved file stays reachable no matter what the drawer is showing.
The trade-off
For the cat to accept drops, its window has to be hit-testable. Windows skips click-through windows when it hunts for a drop target, so a click-through cat would let files land on whatever is behind it. The cost is a small dead patch just above the taskbar where clicks go to Snaply. I wrote more about that window in Hiding a Cat Behind the Windows Taskbar.
Looking back, most of the shelf's design came down to what it should not do: don't copy, don't delete, and don't open up more of the disk than it needs.