A desert canyon.

2026-08-09

  1. Sign-in has its own page at /login — one sentence, one field, one button — and the landing page ends with its pitch instead of carrying a second form
  2. Reordering works on a phone: a dedicated drag grip in the left gutter, the four moves reach a pointer that cannot drag, and fast reorders no longer flicker between placements
  3. Every sync mark now names its state on hover and to a screen reader
  4. Editing the same bullet on two devices conflicts instead of quietly overwriting, and deleting a bullet with children is refused unless the children are explicitly orphaned
  5. Exports include detached bullets — which is exactly what a delete produces — and an import now says what it discarded
  6. Settings is down to what you can actually set: appearance, and a placeholder for notifications
  7. Sessions expire on the server and cannot renew their own lifetime
  8. Fixed: the close-the-page warning no longer outlives the writing it guarded, a resync reload stops asking permission first, and a pasted paragraph keeps its newlines
  9. A folded subtree is no longer fetched or rendered, finding a bullet no longer scans the outline, and the database stops paying for two dead indexes, two triggers that fire for nothing, and an fsync on every commit
  10. Operational: an access log, a request id on every response, HTTP metrics that were always zero, a rebuild an operator can ask for, and a process that stops when it is told to
  11. The crawl policy is served from the address crawlers ask for, and the removal path reaches a mailbox