Slot canyon in Arizona, USA. Photo by Aiden Guinnip.

Bulleted

The @bulleted.app outline.

  1. Release Notes

    1. 2026-08-11

      1. Fixed: a bullet written while zoomed into a section is saved inside that section. It looked right until a reload, at which point it — and everything else written that way — was sitting at the root of the outline
      2. The save mark says "Saved" only once the writing has landed, rather than whenever the queue happens to be empty — which it also is while you are typing, and after a write that failed and is waiting to retry
      3. Fixed: the first bullet of a new outline no longer sits in a gap of its own, with its marker a column to the left of every other row. Thanks to @isaaccorbrey.com for the report.
        Reported by @isaaccorbrey.com at https://userinput.app/d/did:plc:zviscnpwyvj6y32agi5davn5/3msrjeddvuc2o — from Firefox on Android on the evening of the 10th, with a screenshot that made it obvious. The report also asked for a compactness setting for a denser display, which is not done and is worth doing.
      4. Typing no longer scans the whole page three times per keystroke, which is what a large outline felt as lag
      5. Background work that crashes is restarted and counted, instead of quietly stopping for the life of the process while the health check stayed green
      6. A page full of mirrors no longer spends a query on each repository it had already decided not to read
      7. The handle cache is swept hourly — it was the one table that grew with the whole network rather than with this service
    2. 2026-08-10

      1. Bulleted is publicly released — the soft launch on 8/9 becomes an open door #release
      2. The announcement post is published at https://blog.bulleted.app/
      3. Announced on Bluesky from @bulleted.app
      4. Fixed: the clipboard on every bullet row is gone. It read as a bookmark rather than a copy control, and the address it copied is still one keystroke away — press c on the focused row. Thanks to @pinkhatbeard.com for the report.
        Reported by @pinkhatbeard.com at https://userinput.app/d/did:plc:nnvh6ae2s4qletjw5j25lj6r/3msqekbwzbv2v — the glyph was taken for a bookmark control, and a report that bookmarking did not work was half written before it stopped making sense.
      5. Nothing you can type into is under 16px any more, so a phone stops zooming and reflowing the page the moment you tap a field. The whole type scale moved rather than the fields, so the outline and the settings page still read at one size. Thanks to @brookie.blog for the report.
        Reported by @brookie.blog at https://userinput.app/d/did:plc:v46ojbiop5ebs5h7gaomixcc/3msqkfc7c5j2d — iOS Safari zooms the viewport when focus lands on text under 16px, and every editable surface here was 15px or 13px.
      6. Fixed: space header images load. The blob fetch answered the PDS nonce challenge with nothing and gave up, so a space image was broken for as long as it existed — and it looked like an upload that had never landed.
      7. The footer carries a Blog link to https://blog.bulleted.app/, and its links wrap instead of pushing a phone-width page sideways.
      8. Sharing https://bulleted.app/ produces a real link card — headline, description, and a drawn image — instead of a headline on its own.
      9. Session cookies are host-only. The cookie holding your access token, refresh token, and signing key is no longer sent to every subdomain, and its name now makes the browser enforce that rather than leaving it to this code to keep getting right.
      10. A space is read from the host its own authority names, rather than one a reader can nominate in their DID document.
      11. A mirror subscribes the live stream to the bullets it actually points at, rather than to every write in the repository it borrowed one bullet from.
      12. An export stops overstating itself: a file built from a half-indexed repository says so instead of claiming to be whole, and hyperlinks, line breaks, and Markdown punctuation survive the way out.
      13. Bulleted's own JSON export can be imported back. It was the one format the importer refused, and it is the format anybody would pick to keep a copy.
      14. A refused write names the method, the account, and the shape that went out, instead of logging a stranger's error text beside two placeholders.
  2. TODO

    1. Delete the old lexicon schema records from @ngerakines.me
      Nothing resolves to them now that both _lexicon TXT records point at @lexicons.bulleted.app — but leaving them means repointing a record could resurrect a stale schema
    2. Write a blog post announcing https://bulleted.app/
      1. Setup the https://blog.bulleted.app/ domain
    3. Review the policy documents
      /privacy and /about
    4. Implement and execute playwright scripts to produce demo videos for specific features
      1. Creating, editing, and indenting bullets
      2. TODO and notes
      3. Collapsing, expanding, and zooming
      4. Deleting bullets
      5. Transclusion
      6. Expanding pasted content and exporting nodes
      7. Copying content
      8. Outlines
    5. Blog about agentic resources
    6. Blog about the lexicon schema and sort keys
    7. Blog about scaling and limits
    8. Soft launch on 8/9/2026
  3. Known Issues