Changelog

What changed on releaseszn, newest first. Coming next: the roadmap.

Fixed #

  • The terms and the privacy policy no longer show the template placeholders left in them. Both stay drafts until they name who runs releaseszn, with a contact address and the province whose law applies.

Improved #

  • When your GitHub sign-in needs renewing, the API says how: if GitHub no longer accepts releaseszn’s access to your account, adding a project answers github_reauth_required with the full link to sign in with GitHub again, /auth/github, which works even when you are still signed in. It also says plainly that the API token isn’t the problem: a new token won’t help.

  • The agent prompt explains that error, says publishing needs only the submit scope, and tells the agent what to do if you paste a token into the chat: save it without repeating it, and ask you to revoke it afterwards.

  • GET /me says whether your GitHub sign-in still works: its new github field is ok, renew_required (with the link that renews it, /auth/github) or unknown, so an agent can tell before it starts that adding a project would be refused. The agent prompt checks it first. GitHub is asked at most once a minute, so it doesn’t spend your GitHub quota.

  • A privacy policy that says exactly what we keep: the privacy policy now covers every kind of data the site stores and for how long, who else handles it (Cloudflare, Hetzner, GitHub), what stays after you delete your account, and, for the EU and the UK, the legal basis for each use and your rights. It is still a draft until its review.

  • Certificate checks on the site’s outgoing connections were updated (RUSTSEC-2026-0382, RUSTSEC-2026-0383).

Added #

  • Publish from the website: no coding agent or API token needed. Your projects has “Add a project”, then four steps for a release: import it from GitHub, check its changelog, upload a screenshot (each check says how to fix what it found), and publish. The rules are the same as the API’s.

  • Device sign-in for agents: an agent asks for a code, you open the link it shows and approve on /device, and the token goes straight to the agent. Nobody copies a token into a chat. A token made this way can’t delete your account. The API docs have the details; the agent prompt uses it.

Changed #

  • New GitHub accounts are ranked: a release competes for the feed and the boards from your first one, however old your GitHub account is. The 90-day wait is gone. Votes from accounts under 30 days old still don’t count toward a score.

Improved #

  • Publishing no longer slows other requests down while a release’s files are copied.

  • Agents keep the token as a header file: the agent prompt saves it as the whole Authorization: Bearer … line in ~/.config/releaseszn/auth-header and sends it with curl -H @$HOME/.config/releaseszn/auth-header, so no command ever reads the token into the shell. Coding agents’ safety checks blocked the old $(cat …/token). An existing token file is converted the first time; the quickstart saves the new file.

  • Every doc page is also markdown, for agents: add .md to its address (such as /docs/api.md) or ask for text/markdown.

  • The agent prompt shows how to add a screenshot to a release, reviews the project’s description before publishing, and explains why a draft reads not_decided.

Added #

  • A new palette, Neon sunset: a dusk sky behind the page, from indigo to pink and peach, with a sunset stripe under the header. It is the default for now, in dark and light; Freshmeat blue and the other palettes are still in the [theme] menu, and the one you pick is remembered.

Improved #

  • API lists come in pages: GET /projects/{slug}/releases and GET /projects?mine=true return 20 items and a next_cursor; ask for up to 100 with limit. A project with a hundred releases no longer answers with two megabytes. Pagination has the details.

  • API requests without a valid token are limited to 60 a minute per address, like requests with one.

  • A 401 from the API says how to authenticate (WWW-Authenticate), and answers to a token are never kept by caches.

  • Drafts stay private, files included: the screenshots and recordings of a release that isn’t published yet are no longer stored where the published ones are. You see them through links that work for an hour (urls in the API, the thumbnails in your settings); publishing makes them public.

  • Tokens always expire: after 30 days or 90, as you choose. “1 year” and “No expiry” are gone, so a token that leaked stops working by itself. GET /me says when yours does.

  • A retry never repeats a refusal: with an Idempotency-Key, only what succeeded is replayed. If the API said upload_missing or hero_required, fix it and send the same request with the same key: it runs again. Two requests with one key at the same moment no longer both run; the second gets 409 request_in_progress and can retry a second later. Idempotency has the details.

  • The webhook secret is shown once, when you create it, like an API token. Your project page only says that one is set; replace it if you no longer have it.

  • You’ll be asked to sign in once more: the session cookie has a new name that only this site, over https, can set.

Fixed #

  • A release’s edit window covers its media too. For 24 hours after publishing you can fix a release’s title, changelog and media; after that the API refused changes to the release but still took changes to its media. Now both answer 409 edit_window_closed, and a published release’s hero can’t be moved away from it (409 hero_required).
  • A failed upload could be sent and completed again without end. It gets one more try now; after that, add the fixed file as new media (409 upload_spent). At most 20 of your files wait for processing at a time (429 media_backlog), so one busy account can’t hold up everyone else’s screenshots.
  • The feedback limit of 5 messages an hour is per address now, whatever the client calls itself.
  • Reporting a release again after a moderator has looked at your report no longer reopens it.
  • The API showed where a screenshot was imported from (source_url) to everyone; only its owner sees it now.
  • Two releases published on GitHub within the same second: the second could be filed under your project’s history instead of being offered as a draft to publish.
  • A sync asked for while your project was already being imported could be lost, leaving a release published in the meantime missing until the next sync. The import now runs once more.

Added #

  • Appeals: if moderators hide one of your projects or releases, your settings say so, and /appeal shows why and takes one appeal per decision. A suspended account can still sign in to appeal.
  • Terminal recordings: add an asciinema .cast file to a release’s carousel or your project’s gallery and it plays as a looping video, like a GIF. Made for command-line tools; the requirements have the limits.
  • Your projects, a new tab in your settings: all your projects and releases in one place, drafts included, with what each draft still needs before it can be published. Sync with GitHub, publish a draft that’s ready, or delete a screenshot or a whole project from there.
  • Link previews: pages shared in chats and on social sites show a releaseszn card (releases keep showing their own screenshot).
  • The footer shows which version of releaseszn you’re looking at; it links here.
  • Fresh, a third feed next to hot and new: /fresh lists the new releases that haven’t had their first views yet, newest first.
  • Hide, on feed cards when you’re signed in: not interested in a project? It leaves your feeds, every release of it, until you show it again on hidden projects. Only you see what you hid.
  • Your own picture: upload one in your settings, or switch back to your GitHub one.
  • A terminal recording can be a release’s hero: its busiest moment becomes the picture on the card, and the recording plays right after it. Command-line tools no longer need a separate screenshot.
  • Author pages show how many people follow the author (never who).
  • A project’s own screenshots and recordings (its gallery) now show on its page, above its releases.
  • Agents and scripts can send feedback through the API, with or without a token.
  • On wide screens the feed has company: who’s leading Release of the Day, Week and Month on the left, the most used tags on the right. Prefer the feed alone, or a wider feed with larger screenshots and text? Pick a layout in the [theme] menu.

Improved #

  • Opening a release from the feed is faster: the page loads while the feed waits to see whether your tap is a double-tap.
  • Terminal recordings draw emoji in colour and Chinese, Japanese and Korean text, and the still picture shown before one plays is its busiest moment rather than a fixed point in the recording.
  • Moderators can hide a release or project, or suspend its owner, straight from its page, and undo any of it; every decision is in an audit log.

Fixed #

  • Galleries: the 1/3 counter and dots now follow as you swipe, and screenshots past the second load. They stood still before.
  • GIFs that pause on a frame play to the end; some restarted early.
  • A release tagged stats or feed.xml would have had the same address as its project’s stats page or feed. Such tags are now skipped on import, with a note on the project saying so.

Added #

  • Release of the Day, Week and Month boards at /top, decided by votes from people who saw the release. Release pages show the places they won.
  • Galleries: releases with several screenshots swipe like Instagram, on the feed and release pages.
  • Follow and save: follow projects, tags and authors and see their releases under following; save projects to your private saved list.
  • Tag pages, like #rust; tags on cards link to them.
  • Atom feeds for the feed, projects, tags, authors, boards and the blog.
  • README badges showing a project’s best placement (the owner finds the snippet on their project page).
  • Double-tap a screenshot to upvote.
  • Your settings page: display name, and deleting your account.
  • A “most loved” sort on search and author pages.
  • Stats for your projects, for owners only: how often your releases are seen, opened and upvoted, compared with other recent releases; where you stand on the boards and in the hot feed, and why; how your upvotes were weighted; where viewers came from; daily charts and CSV downloads. Your agent gets the same numbers from the API. What each number means.

Improved #

  • The home feed is hot: ranked every few minutes from votes, what people stop to look at and open, and freshness, with room for new releases. Everything, newest first, is under new.
  • Coming back to the feed lands where you left it.
  • Project pages show all-time totals: upvotes, followers, saves and the best placement.
  • The blog has a proper reading layout.

Fixed #

  • The header no longer shifts when the theme menu appears.