webapp's mint now answers a store id (x-webapp-store-id) beside the instance id: authority to rotate or revoke the diigo cookie. The wire page shows it apart from the instance id, with its own copy button, petname, and password-manager save; the cache never gets it. A webapp that sends none gets a note on the page and a warning in the log. Generated-by: Claude Opus 5.5
diigo-cache
Your diigo bookmarks, cached in a workerd worker, with a public page you can filter by week: /public/<you>?in=2026-W41. Your diigo session cookie is stored in one Durable Object and nowhere else.
Getting started
pnpm install
pnpm dev # → http://localhost:8787/
Then, in the browser:
- mint the diigo session at webapp: paste the
Cookieheader from diigo.com (devtools, any logged-in request). - wire it, mode public. Save the cache id it shows (the password-manager button does this).
- open this cache → fill, and watch it walk your bookmarks.
- Visit
/public/<your diigo username>?days=7.
Bookmarks you hold, a page anyone can read
- Filter by date and search:
?days=7,?in=2026-W41(ISO week, UTC),?after=2026-01-01&before=2026-02-01,?by=created, and?q=with words,"phrases",#tags,-negation, and gmail-stylenewer_than:7d. AddAccept: application/jsonfor JSON. - Private stays private: the public cache drops private bookmarks before storing anything, so it never holds them.
- Ids are capabilities: the cache id is a bearer key you keep in your password manager. It rides URL fragments and POST bodies, never a path or query string, so it stays out of logs and history.
- Cheap to read: pages come from Durable Object SQLite storage, and a fill job in the background fetches each diigo page once.
Design, tests, and deploying: CONTRIBUTING.