/releases — one page, newest first, written for somebody using the app,
with the operator's part at the bottom of each release rather than on a page
of its own. Paginated five to a page.
The source is Resources/releases.json, not prose in a template, because
a publish script cannot safely edit HTML but can append to a JSON array. Read
from disk per request, so a release published on a running relay is visible
without a restart — which is exactly when somebody is looking.
It fails OPEN. A missing or half-written file is an empty page, never a
500. A changelog that can take the landing page down has turned a cosmetic
problem into an outage, and a self-hoster has no releases of their own to
announce. Both cases are tested.
The copy. Owner, on the Files page: "theres verbage like, So there are
two, and the app is straight with you about what each one actually
protects", and "people dont care about technical stuff".
Both fair. The tic is sentences that praise the product for being truthful
instead of just being truthful:
"the app is straight with you about what each one actually protects"
"and the app says so rather than implying more"
"We'd rather say that here than let you find out after installing"
"so you can check the answer instead of taking our word for it"
Rewritten on /files and /metadata to say the thing and stop there. The
operator pages keep theirs — that register is right for somebody reading a
status page and wrong for somebody deciding whether to install a messenger.
Also owner-reported: "many places that say look at the code, but theres
no link". Three prose mentions on /get and /roadmap now link to /source.
And /source described Android as "the Kotlin engine. Not an app yet" — it has
been a shipped app since 0.6. Fixed.
Two things, both about the public site.
**/releases** — one page, newest first, written for somebody using the app,
with the operator's part at the bottom of each release rather than on a page
of its own. Paginated five to a page.
The source is `Resources/releases.json`, not prose in a template, because
a publish script cannot safely edit HTML but can append to a JSON array. Read
from disk per request, so a release published on a running relay is visible
without a restart — which is exactly when somebody is looking.
It fails OPEN. A missing or half-written file is an empty page, never a
500. A changelog that can take the landing page down has turned a cosmetic
problem into an outage, and a self-hoster has no releases of their own to
announce. Both cases are tested.
**The copy.** Owner, on the Files page: *"theres verbage like, So there are
two, and the app is straight with you about what each one actually
protects"*, and *"people dont care about technical stuff"*.
Both fair. The tic is sentences that praise the product for being truthful
instead of just being truthful:
"the app is straight with you about what each one actually protects"
"and the app says so rather than implying more"
"We'd rather say that here than let you find out after installing"
"so you can check the answer instead of taking our word for it"
Rewritten on /files and /metadata to say the thing and stop there. The
operator pages keep theirs — that register is right for somebody reading a
status page and wrong for somebody deciding whether to install a messenger.
Also owner-reported: *"many places that say look at the code, but theres
no link"*. Three prose mentions on /get and /roadmap now link to /source.
And /source described Android as "the Kotlin engine. Not an app yet" — it has
been a shipped app since 0.6. Fixed.
649 tests in 58 suites pass.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
aborted the automatic merge because the source branch was updated. Learn more.
aborted the automatic merge because the source branch was updated. [Learn more](https://gitlab.com/help/ci/pipelines/merge_trains.md#merge-request-dropped-from-the-merge-train).
added 1 commit
<ul><li>7167c9ed - Release notes: a version a reader can check, and a label that survives encoding</li></ul>
[Compare with previous version](/paulhitt/flamenet-relay/-/merge_requests/62/diffs?diff_id=2006869945&start_sha=21331de5c362b13edd0e6aa290685e4087262744)
aborted the automatic merge because the source branch was updated. Learn more.
aborted the automatic merge because the source branch was updated. [Learn more](https://gitlab.com/help/ci/pipelines/merge_trains.md#merge-request-dropped-from-the-merge-train).
added 1 commit
<ul><li>fe0ffd23 - Say what the app already does: five things the page never mentioned</li></ul>
[Compare with previous version](/paulhitt/flamenet-relay/-/merge_requests/62/diffs?diff_id=2006874453&start_sha=7167c9ed274816e351e8c5f613cad361565e7ed2)
paulhitt
(Migrated from gitlab.com)
scheduled this pull request to auto merge when all checks succeed 2026-09-05 15:47:54 +00:00
aborted the automatic merge because the source branch was updated. Learn more.
aborted the automatic merge because the source branch was updated. [Learn more](https://gitlab.com/help/ci/pipelines/merge_trains.md#merge-request-dropped-from-the-merge-train).
added 1 commit
<ul><li>ee969a21 - Android 0.9: the release notes, the download page, and two more cards</li></ul>
[Compare with previous version](/paulhitt/flamenet-relay/-/merge_requests/62/diffs?diff_id=2006880803&start_sha=fe0ffd23cef54a1728743b9022c24d877f584f3e)
paulhitt
(Migrated from gitlab.com)
scheduled this pull request to auto merge when all checks succeed 2026-09-05 16:05:35 +00:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Two things, both about the public site.
/releases — one page, newest first, written for somebody using the app,
with the operator's part at the bottom of each release rather than on a page
of its own. Paginated five to a page.
The source is
Resources/releases.json, not prose in a template, becausea publish script cannot safely edit HTML but can append to a JSON array. Read
from disk per request, so a release published on a running relay is visible
without a restart — which is exactly when somebody is looking.
It fails OPEN. A missing or half-written file is an empty page, never a
500. A changelog that can take the landing page down has turned a cosmetic
problem into an outage, and a self-hoster has no releases of their own to
announce. Both cases are tested.
The copy. Owner, on the Files page: "theres verbage like, So there are
two, and the app is straight with you about what each one actually
protects", and "people dont care about technical stuff".
Both fair. The tic is sentences that praise the product for being truthful
instead of just being truthful:
"the app is straight with you about what each one actually protects"
"and the app says so rather than implying more"
"We'd rather say that here than let you find out after installing"
"so you can check the answer instead of taking our word for it"
Rewritten on /files and /metadata to say the thing and stop there. The
operator pages keep theirs — that register is right for somebody reading a
status page and wrong for somebody deciding whether to install a messenger.
Also owner-reported: "many places that say look at the code, but theres
no link". Three prose mentions on /get and /roadmap now link to /source.
And /source described Android as "the Kotlin engine. Not an app yet" — it has
been a shipped app since 0.6. Fixed.
649 tests in 58 suites pass.
Co-Authored-By: Claude Opus 5 noreply@anthropic.com
assigned to @paulhitt
aborted the automatic merge because the source branch was updated. Learn more.
added 1 commit
7167c9ed- Release notes: a version a reader can check, and a label that survives encodingCompare with previous version
mentioned in merge request flamenet-messenger-android!70
aborted the automatic merge because the source branch was updated. Learn more.
added 1 commit
fe0ffd23- Say what the app already does: five things the page never mentionedCompare with previous version
aborted the automatic merge because the source branch was updated. Learn more.
added 1 commit
ee969a21- Android 0.9: the release notes, the download page, and two more cardsCompare with previous version
mentioned in commit
c27d2fb415changed the description