Release notes for 0.30.0 #228

Merged
paulhitt merged 1 commits from release/notes-0-30-0 into main 2026-09-25 19:12:08 +00:00
paulhitt commented 2026-09-25 18:41:59 +00:00 (Migrated from gitlab.com)

The public changelog for 0.30.0, paired with flamenet-messenger-ios!231 which bumps the version. Nothing is built or uploaded by either.

Seven changes, covering everything on iOS main since releases.json recorded 0.29.0 on 2026-09-22. The relay is on the platform list too, because F7, F8 and F10 reached production on the day this entry is dated.

The three the headline leads with are the ones a person would want to know:

  • a conversation held off the record was written to the phone's history file and read back on the next launch
  • the obfs4 bridge you use, and the name of whoever offered it to you, were riding iTunes and iCloud backups
  • the parental PIN was one round of SHA-256 with the salt beside it, in a place backups carry off the phone, so holding a backup meant holding the PIN

Then: mute settings no longer write a conversation's name outside the sealed store; the conversation says at the time when a message could not be sent sealed; an unsigned identity-key replacement names itself instead of reading like a routine change; and nine Keychain items come inside the mechanism that keeps them out of backups.

Two calls that were not mine to make

What 0.29.0 contained cannot be answered from the repo. The only tag is baseline-2026-08-27, 708 commits back, so two commits dated 2026-09-22 could not be attributed to a build. Confirmed with the owner that they were not in it; they are included here.

The identity notice. The 0.29.0 notes already say the app announces a change to the server's identity, which reads close to this release's notice about another person's key being replaced. Confirmed those are two different things, so the text names the distinction instead of repeating the earlier claim.

Two commits deliberately left out

One added tests for the at-rest claims and changed no behaviour. The other half of the keychain commit only turned the UI tests on in CI. Neither is something a person using the app would notice, and this file is read by users.

Checks

ReleaseNotesTests passes, including the test that decodes the file this repository actually ships. The diff is 43 insertions and no deletions — verified a JSON round-trip was byte-identical before inserting, so the other 30 entries are untouched.

/releases is rendered by no test. The staging gate renders every public page before prod, which is where a template break would surface.

The copy went through the de-slop pass: it had used one construction four times, the same tic the pages picked up earlier today, and now uses it once where it does work.

🤖 Generated with Claude Code

The public changelog for 0.30.0, paired with flamenet-messenger-ios!231 which bumps the version. **Nothing is built or uploaded by either.** Seven changes, covering everything on iOS main since `releases.json` recorded 0.29.0 on 2026-09-22. The relay is on the platform list too, because F7, F8 and F10 reached production on the day this entry is dated. The three the headline leads with are the ones a person would want to know: - a conversation held **off the record** was written to the phone's history file and read back on the next launch - the **obfs4 bridge** you use, and the name of whoever offered it to you, were riding iTunes and iCloud backups - the **parental PIN** was one round of SHA-256 with the salt beside it, in a place backups carry off the phone, so holding a backup meant holding the PIN Then: mute settings no longer write a conversation's name outside the sealed store; the conversation says at the time when a message could not be sent sealed; an unsigned identity-key replacement names itself instead of reading like a routine change; and nine Keychain items come inside the mechanism that keeps them out of backups. ### Two calls that were not mine to make **What 0.29.0 contained cannot be answered from the repo.** The only tag is `baseline-2026-08-27`, 708 commits back, so two commits dated 2026-09-22 could not be attributed to a build. Confirmed with the owner that they were not in it; they are included here. **The identity notice.** The 0.29.0 notes already say the app announces a change to the server's identity, which reads close to this release's notice about another person's key being replaced. Confirmed those are two different things, so the text names the distinction instead of repeating the earlier claim. ### Two commits deliberately left out One added tests for the at-rest claims and changed no behaviour. The other half of the keychain commit only turned the UI tests on in CI. Neither is something a person using the app would notice, and this file is read by users. ### Checks `ReleaseNotesTests` passes, including the test that decodes the file this repository actually ships. The diff is **43 insertions and no deletions** — verified a JSON round-trip was byte-identical before inserting, so the other 30 entries are untouched. `/releases` is rendered by no test. The staging gate renders every public page before prod, which is where a template break would surface. The copy went through the de-slop pass: it had used one construction four times, the same tic the pages picked up earlier today, and now uses it once where it does work. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
paulhitt commented 2026-09-25 19:12:08 +00:00 (Migrated from gitlab.com)

mentioned in commit 009ae253c6

mentioned in commit 009ae253c68e81177d7474eeeeb13e238174bb94
paulhitt (Migrated from gitlab.com) merged commit 009ae253c6 into main 2026-09-25 19:12:08 +00:00
Sign in to join this conversation.