Skip to content

Releases: fenleon/chats

Chats 0.10.0 — edit & unsend your messages

Choose a tag to compare

@fenleon fenleon released this 03 Sep 20:49

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

Choose a tag to compare

@fenleon fenleon released this 02 Sep 10:40

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

Choose a tag to compare

@fenleon fenleon released this 01 Sep 17:16

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

Choose a tag to compare

@fenleon fenleon released this 01 Sep 12:27

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

Choose a tag to compare

@fenleon fenleon released this 01 Sep 11:44

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

Choose a tag to compare

@fenleon fenleon released this 01 Sep 10:49

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

Choose a tag to compare

@fenleon fenleon released this 01 Sep 08:05

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

Choose a tag to compare

@fenleon fenleon released this 31 Aug 05:34

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

Choose a tag to compare

@fenleon fenleon released this 30 Aug 12:04

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

Choose a tag to compare

@fenleon fenleon released this 29 Aug 20:30

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