Dear —

Changelog

Everything that has changed, newest first. Written for the person using it, not the person who built it.

  1. v1.0.0Current

    Diaries for everyone

    The first release anyone else can use. Diaries live at their own address, visibility is yours to choose, and every word remains exportable.

    Added

    • A single source of truth for limits and identity in lib/systemConstants.ts, so the UI and the database can no longer disagree about what is valid.
    • Every entry now chooses its own readers: public, unlisted (absent from the diary but readable by anyone holding the link), private, or a draft set aside unnumbered on its own shelf.
    • A permalink for every entry.
    • Export everything you have written as Markdown or JSON — drafts and private entries included, each labelled with who could read it. A diary that cannot give your words back is asking for a lot of trust.
    • A printable edition of any diary, laid out for paper: a title page, a fresh sheet per entry, and none of the interface.
    • Light formatting while you write: bold, italic, quotations, lists, links and rules. Quotations matter most — lyrics and scripture read as quotations now rather than as flattened prose.
    • A preview, for checking how something will read before posting it.
    • A feed for every public diary, so readers can follow along without an account, an algorithm, or an email address.
    • On this day: what you wrote on this date in earlier years, shown only to you. Re-reading is most of what a diary is for, and the entries that matter are rarely the recent ones.
    • Search within a diary. You find what you are allowed to read and nothing else — searching your own diary reaches private entries, searching someone else’s does not.
    • Seal an entry until a future date. Write it now, and nobody — not a reader, not a feed, not a search — sees it until the day arrives. You keep reading it in the meantime.
    • Publish a reply beneath the entry it answers, turning it into a visible exchange. A letters page rather than a comment section — nothing appears unless you choose it.
    • Replies can now be deleted, and are rate limited, so an author being pestered has something between putting up with it and closing replies entirely.
    • Spoken entries. Record straight into the diary — some things are easier said than typed — and the recording follows the same visibility rules as everything else.
    • This changelog.
  2. v0.3.0

    One diary each

    Turned a single-author diary into something other people could sign up for, without letting anyone read what was not meant for them.

    Added

    • Profiles: a handle, a title, a timezone and a visibility switch.
    • Diaries at their own address, /your-handle.
    • Sign-up, password reset and email confirmation.
    • A reply switch, so an author being pestered can close the door.

    Changed

    • Entry dates now follow the author’s timezone rather than the server’s, which also removed a hydration mismatch on every entry written near midnight.

    Fixed

    • Every realtime update used to wake every other reader’s browser; updates are now scoped to the diary being read.
    • Entries were numbered against everyone’s entries at once. They are numbered within their own diary now.
    • Pages that did not exist were answering with a success status while showing a not-found page, which invited search engines to index them.

    Security

    • Entries are readable only by their author or, when the diary is public, by anyone. Previously any signed-in account could edit or delete any entry.
    • Image storage is private and served through short-lived signed links. A private diary used to hide its words but leave its photographs readable to anyone holding the URL.
    • A private diary now answers exactly as a diary that never existed does — the same page, the same status — so a handle cannot be probed.
  3. v0.2.0

    Rebuilt on Next.js 16

    The diary was a single-page app that fetched everything in the browser. It now renders on the server, so the words are in the page before any script runs.

    Added

    • Server-rendered entries, present in the HTML for readers and crawlers alike.
    • Writing, replying and signing in all happen server-side.
    • Sessions live in cookies the browser cannot read.
    • Infinite scroll, replacing a feed that loaded every entry at once.

    Changed

    • Tailwind v4, React 19, and a self-hosted typewriter face with no layout shift.
    • The build now type-checks, so thirty long-standing type errors can no longer ship.

    Fixed

    • A leak that created a fresh listener for every entry on every update, without ever removing one.
    • Replies vanishing whenever the feed reloaded.
    • The oldest entry always claiming to be from October 1995.
    • One unreachable image taking down the whole page it appeared on.
  4. v0.1.0

    Moved to Supabase

    Left Firebase for Postgres, and took the opportunity to remove credentials that should never have been in the repository.

    Added

    • Postgres with row-level security, and the schema kept in version control.
    • All fifteen existing entries carried across with their dates intact.

    Security

    • Removed two private keys, a database password and an account password that had been committed — the last of which was being served to every visitor in the browser bundle.

    Removed

    • An unused server that could not run and held two of those secrets.
  5. v0.0.1

    Hello World

    The first entry. "For now lets just call this the beginning."

    Added

    • A diary, a login, and somewhere to put the words.

Back home·Source