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.
What changed on releaseszn, newest first. Coming next: the roadmap.
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).
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.
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.
[theme] menu, and the one you pick is
remembered.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.
409 edit_window_closed, and a published
release’s hero can’t be moved away from it (409 hero_required).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.source_url) to
everyone; only its owner sees it now..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.[theme] menu.1/3 counter and dots now follow as you swipe, and
screenshots past the second load. They stood still before.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.