Releases: fenleon/chats
Release list
Chats 0.10.0 — edit & unsend your messages
The headline: a message context window. Long-press any of your messages to edit or unsend them — both sync back to the original network where the bridge supports it. Your own messages carry short EDIT / UNSEND labels so the actions are discoverable.
Also in this release:
- Save photos — the photo viewer now has a SAVE PHOTO action that writes the original to
Pictures/Chats, with a LightOS-style confirm panel - Honest read receipts — the "seen" tag now sits at the position you actually read, not the newest message
- More reliable sending — a send-path sweep (cached summary-gap probing, single post-echo resolver pass) makes sends and message edits land cleanly, including WhatsApp photo edits
- Reactions everywhere — reactions now resolve on every thread page path, with replace-semantics and quieter rendering
- Feel — haptic ticks on long-press and panel actions, centered contact-panel toggles, a half-panel SAVE confirm
11 commits since 0.9.1. APK is R8-minified; install via the community-ADB route with All tools enabled (see the README).
Chats 0.9.1
Chats 0.9.1 — instant send confirmation, verified push wake-ups — R8 APK (16.3 MB)
Features
- Instant send confirmation — sent text and voice notes flip from "SENDING" to sent right after the server acknowledges them (~1 s after you tap Send), instead of waiting on the next background refresh.
- Push wake-ups that verify delivery — each background push now checks that the message actually arrived (with bounded retries before giving up), and Chats re-arms itself at phone boot, so a rebooted phone no longer stays silent.
- Forwarded messages render as a compact ↷ forwarded marker instead of a raw "Forwarded" text block.
- Reaction lists past two people collapse into a "name and others reacted with …" summary instead of a long tag stack.
Bug fixes
- First-message ping drop — a first message in a new or idle chat (or one that arrived while Chats was closed) no longer stays silent until you reply; it notifies once on launch.
- Ghost notification burst — the "three dings, nothing new" burst on every app launch is gone; a room already alerted for a message never re-dings for it.
- RCS photo attachments now render as images (previously only the {photo} placeholder form worked).
- Voice notes that stopped downloading (an in-process network wedge) now self-heal without an app restart.
- The room list no longer pins a chat to yesterday's timestamp when its newest message is still decrypting — it catches up once decrypted.
- Sync reliability — the sync loop resets cleanly on network loss or a WiFi↔mobile handoff, background sync now catches up bursts larger than 20 messages, and the 30-second sync-restart churn that could abort in-flight syncs is removed.
SHA-256: 4978063ad3091e4459d6b446602e7771c0dc058f6bc7e3410691d6a81e62b328
Chats 0.9.0
Chats 0.9.0 — real contact ids — R8 APK (16.3 MB)
Features
-
Real contact identifiers — WhatsApp, Telegram and Instagram chats now show the contact's actual number or username (e.g. "+49 151 68159832", "@karin3na") instead of the technical bridge ID, resolved from each bridge's contact list (with a per-contact lookup when a chat isn't in the list, e.g. Instagram usernames).
-
WhatsApp community names — community groups show their community ("1 euro film") on the chat and in the contacts list.
-
Identifiers in the contacts list — every row shows its network and id ("WhatsApp · +49 151 …"); usernames get a leading '@'; search matches names, usernames and numbers.
-
Incoming call notices get a phone icon.
Bug fixes
- Remaining grey text made white across the thread, room list, contacts, search and account screens
- Contacts panel polish — "All Contacts" / "{Network} Contacts" titles, smaller network subtag, and the panel opens populated instantly (no "No contacts yet" flash).
- Stale duplicates hidden — when a WhatsApp number changed and Beeper re-created a community under a new room, the old undecryptable copy no longer appears; the live room wins.
Known/outstanding
- DM duplicates from a changed number are not merged (distinct contacts can share a name, so it needs a different rule than the group dedup).
SHA-256: 922c0bc3f98b887120defa4b14e1a493786f03f8d9753aeb575314c64cd74b37
Chats 0.8.7
Chats 0.8.7 — feedback pass — R8 APK (16.3 MB)
Features
- Video/GIF captions captured — videos (incl. WhatsApp animated GIFs) previously showed the caption alone or lost it; they now render as [Video] with the caption underneath, so the media context and the content both survive.
- Photo captions under the placeholder — an image that can't be fetched/decoded yet shows [Photo] with its caption below, matching the loaded-photo layout.
- Search title shows the term — the search screen's top bar now shows the quoted search term ('term') instead of the generic "Search Results" (which remains for a blank query).
- Account panel reorder — the device-verification row (Verify Device / Device Verified / Verifying / Checking…) now leads the logged-in panel, above the sync status; the account name is no longer shown.
SHA-256: 4a6545bfe0ad4255617a43d466607671ac00e8ba70bbb91e7855b37a6a2190af
Chats 0.8.6
Chats 0.8.6 — revision-gated polling — R8 APK (16.3 MB)
Features
- Revision-gated polling — the room list and open threads now poll a cheap revision counter first and re-fetch the full data only when something actually changed. Same freshness as before, but idle polls no longer re-serialize unchanged room lists and message pages over the binder — far less CPU and battery busy-work on large accounts.
- A playing voice note keeps its thread's poll alive — its position advances without a page change.
Bug fixes
- SDK method registration fix — GetMollySocketUri was never registered in the SDK's method list (fixed as part of the additive SDK patch).
Known/outstanding — UnifiedPush end-state (Light's push channel) is deferred; the ntfy push channel stays.
SHA-256: 30c480cf094bb3a077e1755148514a3418313ae91f020d1d97e16a08c75b2515
Chats 0.8.5
0.8.5 — auto room-key requests
Fixes undecryptable messages appearing in your chats when a session's encryption keys were never shared to the phone. Previously the app only requested missing keys when you manually triggered it; now the sync loop notices events it can't decrypt and automatically requests the keys from your other devices.
That's the whole release: missing history now resolves itself instead of staying stuck as unable to decrypt.
Chats 0.8.4
Chats 0.8.4 — decryption reliability + sync efficiency.
- History decrypts from your own devices. When a message can't be decrypted, Chats now asks your other devices for the encryption keys — and answers their requests too — without needing cross-signing, so a freshly logged-in or re-keyed device can recover old messages it previously couldn't read. Threads that still can't be read say why instead of looking empty.
- Quieter background sync. While the instant push channel is connected, background sync rounds stretch from 5 to 15 minutes (the push is the real wake; the rounds are just the safety net). If the push channel drops, the faster cadence returns automatically.
- Chat list fix. Rooms with no messages no longer jump to the top with a fake timestamp when a bridge re-delivers state events (e.g. member joins) — message-less rooms stay at the bottom until real content arrives.
- "All messages restored" survives restarts instead of only showing in the session that ran the restore.
Verified on the LightOS emulator: the R8 release build launches, renders the room list, and syncs live without crashes.
SHA-256: 81bd209043d499006340b2fa0e25864ce22d2c509de0c06db101f62ceced1aa3
Chats 0.8.3
Chats 0.8.3 — sync-efficiency release.
- Less sync noise: typing events dropped from sync windows; read receipts dropped from background syncs (delivered fresh when the tool is open).
- Incoming message bursts collapse into a single background sync (~1s debounce) instead of one per message.
- Fixes the cached-filter migration so the new filter configuration actually reaches devices.
Verified on the LightOS emulator: the R8 release build launches, renders, and syncs live without crashes.
SHA-256: 964bd89cf718281287b61b8f7483f91e9f030c83e3782086670fad35a52de947
Release 0.8.1
Chats 0.8.1 — the contacts release — R8 APK (17.0 MB)
New: Contacts panel
- The chat list's bottom-middle icon now opens a Contacts list (it used to open search): every chat alphabetically, under Direct/Group tabs that filter instantly — switching tabs re-renders immediately, no stale list.
- The panel carries the active network filter: opened from "All" it lists every contact with the network name as a small subtext under each name; opened from a filtered network it shows only that network's rooms.
- SEARCH (top-right) filters the active tab in place — the old separate search screen is gone.
- Contact rows use the smaller Detail text for subtext; the reserved black bottom bar is removed (the list runs to the screen bottom).
Sync & recovery indicator (Account)
- A combined indicator: "Synced · N threads", plus "Recovering… x of y rooms" while the key-backup restore crawl runs, then "All messages restored".
Verification flow rework
- End-to-end retexting: "Your other device wants to verify. Accept?", "Verification complete! Messages are now decrypted."; the email-code request button becomes "REQUEST AGAIN" after a code is sent, and the email instructions read as two lines.
Threads
- Outgoing-message markers simplified to a single "seen" state.
Under the hood — optimistic image-send echoes, room-list disk preload + sync-loop hardening, and the contacts/search filter fix (state passed into the filter instead of flow reads, which never recomposed).
SHA-256: 1bbc95c199966d5e1fc931c19d794d93470aa14aa9566daf4024a94ae5c25367
Release 0.8.0
Chats 0.8.0 — the v5 build — R8 APK (16.6 MB)
Features
- Trixnity 5.8.0 engine upgrade — Matrix spec 1.14–1.18, libOlm crypto driver, maintained notification API. Existing sessions migrate in place — no re-login needed.
- Sync cost cuts — a custom sync filter drops presence and bounds each room's timeline server-side (much cheaper syncs on very large accounts); idle sync is capped at a single 5-minute cadence, so worst-case delivery is bounded; new messages in an open thread append incrementally instead of triggering a full rebuild.
- Decryption after fresh login & verification — after verifying a new device, history decrypts automatically from the server-side key backup; a thread that can't be read yet says why ("keys pending") instead of looking empty.
- Pinned chats float to top; unread badges now reflect notification count.
Bug fixes
- Restore crawl no longer churns hundreds of rooms daily on accounts without a server-side key backup.
- Pin stability — per-room flags budget stops pins silently dropping on very large accounts.
Known/outstanding — UnifiedPush end-state (Light's push channel) is deferred; the ntfy push channel stays.
SHA-256: 133ccf11fd77e426e8dd311ff18fc26e9f3c8cb741d90f4c10209e30e8e91ab0