32. Pins are an ordinary page of links#
Date: 2026-10-26
Status#
Accepted
Context#
Search phase 2 (#314) lets you keep your own searches and pages one tap away under the empty search box. Pins could be a table, a setting or localStorage; each would be a thing to sync, back up, edit and export of its own, and a pin kept on one phone would be missing on another.
Decision#
The pins are one page, titled Pinned with the slug
pinned: a Markdown list of links (- [People](/search?q=tag:person%20group:letter),- [Contacts](/p/contacts)). The launcher shows them in order. Renaming, reordering and removing a pin is editing the page, which syncs, is revised, backed up, searchable and linkable like any other.POST /api/pinnedreturns the page, making it once. The slug is the reservation: the page is looked up by it inside one write transaction, a trashed one is brought back, and a page the owner already calledpinnedis the Pinned page. No migration.A normal page the owner titles “Pinned” gets the slug
pinnedand so becomes the pin list.Pins link by slug, and a slug never changes when a page is retitled, so a pin survives a rename. The client edits with
base_revand retries a409up to three times.Claude does not read the page (
should_enrich, the backfill and the related pass skip the slug); Ask Claude still works on it.group:areais a search group: topic pages by area in the orderGET /api/topicsgives, so the Topics screen andis:topicin Search share one grouping and one order. Topic hits carryarea.
Consequences#
A page the owner makes called “Pinned” becomes the pin list. The Pinned page appears in search results like any page. A browser with no Share menu has no Pin to Search row; the page can be edited by hand.