2025-10-21 - 2026-10-21
Overview
2 Releases published by 1 user
Published
v0.31
Published
v0.30
163 Pull requests merged by 1 user
Merged
#192 On-device tests for the app over an obfs4 bridge, and what they found
Merged
#191 Android 0.32: merge the release branch into main, and move CI to Gitea Actions
Merged
#190 Bridge sharing (friend to friend) and Spanish (draft, needs native review)
Merged
#189 FlameNet Messenger 0.32 (Android): padding, pairs 2-B, multi-device, sealed first contact, Unlisted and contact links
Merged
#188 Another account on the same install starts empty; two vault writes no longer crash
Merged
#187 Cross-platform fixes: reactions, edits, reply quotes, polls, blocking, lost sends
Merged
#185 Point links at the extant2000 GitLab group
Merged
#184 The echo peer outlives a failed call instead of exiting
Merged
#182 On-device suite green: sign-up tap, fresh peers, group id, and the chat scroll crash
Merged
#183 Version 0.31, build 31
Merged
#181 F2 and F5 on Android: say an unsealed send and a changed address at the time
Merged
#180 Android 0.30, code 30
Merged
#179 Stretch the parental PIN, and keep app data off new phones
Merged
#178 Take the e2e poll vectors and check them in CI
Merged
#177 F6: a relay that answers and will not prove consistency is a fork
Merged
#176 An unproven key replacement says so
Merged
#175 An inclusion proof that reconstructs nothing is refused
Merged
#174 Verify the Gradle distribution before running it
Merged
#173 Remove the dead composables and the unread stat
Merged
#172 No em dash in the PQSign header, and say what 0.29 closes
Merged
#171 Keep off-the-record drafts out of the vault
Merged
#170 Keep off-the-record messages out of the outbox on disk
Merged
#169 Keep off-the-record unread marks out of the vault
Merged
#168 Tell the account service when an account is deleted
Merged
#167 Take the e2e spec update
Merged
#166 A poll shows the moment the group opens
Merged
#165 Android 0.18
Merged
#164 Hand a call to another of your devices
Merged
#163 Polls where nobody can tell who voted for what
Merged
#162 A call that is over never rings again
Merged
#161 The ring stops when the caller hangs up
Merged
#160 Version 0.17
Merged
#159 Anonymous polls: the envelopes
Merged
#158 Anonymous polls: the arithmetic
Merged
#157 Off-the-record conversations: the control
Merged
#156 Off-the-record conversations: the mechanism
Merged
#155 Say which side of a private reaction you are on
Merged
#154 Reactions during a call
Merged
#153 Private reactions: react to one person inside a group
Merged
#152 Stop the ring on this account's other devices when one answers
Merged
#151 Clear the app before every on-device run, as !122 said it did
Merged
#150 A second device's ring no longer hangs up a call answered on the first
Merged
#148 Keep build output out of Spotlight
Merged
#149 The on-device sign-up suite runs again, and the bug it found is fixed
Merged
#147 Check the content envelope against envelopes the iPhone emitted
Merged
#146 Android 0.16, versionCode 18
Merged
#145 Check the backup payload against the published vector
Merged
#144 A file in a chat keeps its name and its label
Merged
#143 Android writes and reads the shared backup format
Merged
#142 Android 0.15, versionCode 17
Merged
#141 Accept answers the call, and a call that ended goes away
Merged
#140 A ring that ends, and only one thing reading the inbox
Merged
#139 Android 0.14, versionCode 16
Merged
#138 Keep the token when only the proof was spent, and review keys at the call
Merged
#137 Android 0.13, versionCode 15
Merged
#136 Ask the relay to hold a poll open
Merged
#134 Areas can be chosen, and named
Merged
#133 Android 0.12, versionCode 14
Merged
#132 Encrypted backups in Kotlin, against the published vectors
Merged
#131 The instrumented suites can get past sign-up again
Merged
#130 Link the site from the README
Merged
#129 The level picker explains itself, as it does on iOS
Merged
#128 docs: drop dated self-corrections
Merged
#127 An Android call must ring a locked iPhone
Merged
#126 A call blocked by a key change offers the review
Merged
#125 Put the parity table back
Merged
#124 Read like a codebase
Merged
#123 Photos must not turn on their side; the keyboard must not cover the chat
Merged
#122 Say why delivery failed, instead of only logging it (ios#21, #22, #23)
Merged
#121 Revert the purple/dark theme, back to the pre-purple palette
Merged
#120 Publish as 0.11, with the code still climbing
Merged
#119 Android 0.12
Merged
#118 Read the contact's address from the directory, and name the refusals
Merged
#117 Compose a reply (android#16)
Merged
#116 Files and Wallet are bar destinations, like iOS
Merged
#115 The launcher icon is the product's mark
Merged
#114 Report a story on Android, which had no way to
Merged
#113 Display settings, and one gap that is a missing feature rather than a toggle
Merged
#112 Notification settings, which Android never had
Merged
#111 Give sharing a bridge a way in
Merged
#110 Hand a contact the bridge you use (§6.19)
Merged
#109 Android 0.11
Merged
#108 Pair the e2e pin with a loud advisory at HEAD
Merged
#107 Pin the vector clone, rather than reddening on someone else's merge
Merged
#106 CI never ran the obfs4 suite, and replayed the others from a local cache
Merged
#105 A settings screen for the bridge line, and a path for it to reach
Merged
#104 obfs4 for Android, part 1: Elligator2
Merged
#103 The on-device suite catches up with the app
Merged
#102 "Checking what this server uses…" was also the failure state
Merged
#101 Report a message, not just a story
Merged
#100 Android 0.10 — published
Merged
#99 Sign-in that cannot finish now says so, and a missing log leaf heals
Merged
#98 Android 0.9 — published
Merged
#97 An APK no longer ships without a word about what changed in it
Merged
#96 Files asks for your Flamenet passphrase, not a second secret
Merged
#95 Say when a call was refused because the key changed (android#20)
Merged
#94 Expose the security lattice to the interop driver (relay#49)
Merged
#93 Kotlin content interop commands (e2e#4)
Merged
#92 "Unsend" did not unsend (android#18)
Merged
#91 Prove a group pin resolves (relay#46)
Merged
#90 PARITY: post-quantum is shipped on both clients
Merged
#89 Fix: ./gradlew test now passes on a clean tree (android#5)
Merged
#88 Prove an inbound edit is applied (relay#46)
Merged
#87 Expired messages no longer leave their plaintext on disk (android#11)
Merged
#86 PARITY: the file round trip is proven live
Merged
#84 PARITY: history at rest was already built — the third stale row
Merged
#85 A live test for the file round trip, and four published passwords
Merged
#81 Fix: the vault index failed to load on a real phone
Merged
#82 Fix: a contact with no address was pinned as the string "null"
Merged
#80 Share a file into a chat, and save one back — with the label it carries
Merged
#83 Fix: promoting a link to the vault appeared to do nothing
Merged
#79 Files on Android: set up, unlock, browse, add, folders, delete, promote
Merged
#78 The local Files vault in Kotlin
Merged
#77 The Files vault crypto in Kotlin, pinned to the browser's vectors
Merged
#75 The wallet screen (Android)
Merged
#76 The Files security lattice in Kotlin (labels, clearance)
Merged
#74 Read a balance and a transaction history from a chain node (Android)
Merged
#73 Create, import and store a wallet (Android engine)
Merged
#72 Derive wallet addresses and sign with them (Android)
Merged
#69 Edit, forward and pin from the conversation (§6.15/§6.16/§6.19)
Merged
#71 Wallet engine primitives in Kotlin: BIP-39, Base58, SLIP-0010
Merged
#70 Refuse a home record older than one already seen (§20.4, Android half)
Merged
#67 Pin the relay's identity, not just its TLS (ios#19, Android half)
Merged
#68 Apply inbound edits and pins instead of filing them as messages
Merged
#66 Zero key material after use (ios#39, Android half)
Merged
#65 Handle a wrong clock (ios#45, Android half)
Merged
#64 Back off on repeated app-lock attempts (ios#41, Android half)
Merged
#62 Understand a file somebody sent
Merged
#61 Make the instrumented tests capable of failing
Merged
#63 A test run must not publish a credential (ios#62, Android half)
Merged
#60 Put the app back to the last state that worked
Merged
#59 A 403 is not an expired session
Merged
#56 Count the sealed-to-unsealed fallback, and offer to refuse it
Merged
#55 Report or block from a story
Merged
#54 Post a story to a group
Merged
#51 React to a story with one tap
Merged
#53 Post several pictures as one story sequence
Merged
#52 Keep your own stories in a private archive
Merged
#48 Reply to a story, as a sealed direct message
Merged
#50 Save a story you posted yourself, before it expires
Merged
#49 Post a story that is only words, or a link
Merged
#46 Recognise a pinned message (§6.19)
Merged
#43 Search inside messages, across every conversation
Merged
#42 A timer on one message, not just the conversation (§6.17)
Merged
#45 Recognise mentions in a group message (§6.18)
Merged
#57 Tell somebody when their disappearing message is screenshotted
Merged
#44 The transcript records a message id and a reply reference
Merged
#41 Recognise a forwarded message (§6.16)
Merged
#40 Keep a half-written message across a relaunch
Merged
#58 A skipped live sign-up must report skipped, not passed
Merged
#47 Mute one contact's stories, without blocking them
Merged
#39 Recognise an edit envelope so it is not drawn as a duplicate (§6.15)
Merged
#38 Solve the sign-up puzzle when a relay asks for one
Merged
#37 Tell somebody their address needs confirming, and let them do it
Merged
#36 Read the relay's refusal code, not just the HTTP status
Merged
#35 Android 0.8 — sign-in identity, v3 responder, media scrubbing
Merged
#34 Release 0.7 — group member lists leave the server
Merged
#33 A live suite cannot be pointed at production any more
Merged
#32 Eighteen tests reported PASSED while running nothing
Merged
#31 A v2 peer was being sent a post-quantum ratchet step, and v3 was never advertised
Merged
#30 The app never actually created a sealed group
Merged
#29 Carry post-quantum through every ratchet step, not just the handshake
Merged
#28 Sealed group membership changes, and secrets that survive a reinstall
20 Issues closed from 1 user
Closed
#27 Off-the-record conversations, never written to disk
Closed
#25 Reactions during a call
Closed
#24 Private reactions: react to one person inside a group
Closed
#22 Creating a second account after signing out is refused with "Your session expired"
Closed
#16 Compose a reply — the transcript can resolve one now, the UI cannot start one
Closed
#17 A photo sent as a file keeps its GPS; sent as a photo it does not
Closed
#20 Report a message, not just a story
Closed
#12 Report a conversation, not only a story
Closed
#6 A failed key-log append is permanent: restore never re-registers
Closed
#19 Sign-in shows nothing at all when it cannot complete
Closed
#18 "Unsend" only deletes locally, and says otherwise
Closed
#5 ./gradlew test fails on a clean tree, and the failures mean nothing
Closed
#8 React to a specific message — engine is ready, Android has no UI
Closed
#10 The transcript records no message id, which blocks replies, reactions and edits
Closed
#11 Expired messages leave their decrypted attachments on disk forever
Closed
#9 Reproducible builds
Closed
#4 Eighteen live tests report PASSED while doing nothing
Closed
#3 The app never creates a sealed group
Closed
#2 Post-quantum stops at the handshake — iOS carries it through the ratchet
Closed
#1 125 lines of sealed-roster work uncommitted and never built
27 Issues created by 1 user
Opened
#1 125 lines of sealed-roster work uncommitted and never built
Opened
#2 Post-quantum stops at the handshake — iOS carries it through the ratchet
Opened
#3 The app never creates a sealed group
Opened
#4 Eighteen live tests report PASSED while doing nothing
Opened
#5 ./gradlew test fails on a clean tree, and the failures mean nothing
Opened
#6 A failed key-log append is permanent: restore never re-registers
Opened
#7 Android tablet support — layout only
Opened
#8 React to a specific message — engine is ready, Android has no UI
Opened
#9 Reproducible builds
Opened
#10 The transcript records no message id, which blocks replies, reactions and edits
Opened
#11 Expired messages leave their decrypted attachments on disk forever
Opened
#12 Report a conversation, not only a story
Opened
#13 Parental controls: gate disappearing messages, stories and anything timed to delete
Opened
#14 Parental controls: a short activity summary — counts only, never content
Opened
#15 Files: the ★-property (no write down) is not enforced on either client
Opened
#16 Compose a reply — the transcript can resolve one now, the UI cannot start one
Opened
#17 A photo sent as a file keeps its GPS; sent as a photo it does not
Opened
#18 "Unsend" only deletes locally, and says otherwise
Opened
#19 Sign-in shows nothing at all when it cannot complete
Opened
#20 Report a message, not just a story
Opened
#21 The instrumented suites look for tags the app no longer has
Opened
#22 Creating a second account after signing out is refused with "Your session expired"
Opened
#23 Hand a call to another of your devices
Opened
#24 Private reactions: react to one person inside a group
Opened
#25 Reactions during a call
Opened
#26 Polls where nobody can tell who voted for what
Opened
#27 Off-the-record conversations, never written to disk