Pinmark
For years I saved links to Pinboard with a Safari extension called bookmarker for pinboard. I just upgraded my work MacBook and during the migration I discovered that the extension is gone vanished from the App Store so I can’t re-install it. The developer had stopped using Pinboard and stopped paying Apple’s developer fee. Fair enough—but it left me without the tool I used most days. The source is still up (Apache 2.0), but it’s Swift built on Safari’s old App Extension architecture, last touched about five years ago. Reviving someone else’s abandoned Swift on a dead framework held no significant appeal.
So I rebuilt it as a Safari Web Extension, in HTML, CSS and JavaScript, which is my stack. Now I own it.
The one feature I wasn’t willing to lose is live tag autocomplete against my full Pinboard history. A Shortcut can save a link; it can’t suggest “javascript” before “java” because I’ve used the first far more often. Pinmark fetches my entire tag list, caches it, and as I type it filters and ranks the matches by how often I’ve used each one. Arrow keys to move, Tab to accept, Enter to save. That is the whole reason it exists.
The rest is what you’d expect. Click the toolbar button and a popover opens, pre-filled with the current tab’s URL and title, and any text I’ve selected on the page becomes the description. Read-later and private toggles. If I’ve already saved the page it says so, and loads the existing tags so I edit rather than duplicate.
Some details worth noting:
- The Pinboard API client sits behind a small interface in its own module, so I can later point it at my pinboard-mcp server (that I’ve also built, currently a private repo) instead of the public API without touching the popover
- Tag suggestions are sorted most-used first, matching the behaviour of the extension it replaces
- The token lives in extension storage, entered once, never read from disk at runtime
- A daily background refresh keeps the cached tag list current
It’s on GitHub, in case anyone else was left in the same spot when the original disappeared.
It’s signed with a free Apple ID, so the certificate expires every seven days and I have to rebuild it. The original died because its developer wouldn’t pay Apple’s fee. Mine survives because I won’t either; it just asks for a rebuild each week as the price, which I’m fine with.