Messages

com.anindra.messages
by Zapstore _@zapstore.dev

Simple, private SMS messaging. Offline-first, no ads, no tracking.

Republished from GitHub / F-Droid by the Zapstore main account.

Messages is a simple SMS app for Android built with Kotlin and Jetpack Compose (Material 3). It is fully offline: the manifest declares **no INTERNET permission**, so your messages never leave your device except through your carrier. **Features** * Clean Material 3 interface with light / dark / system themes * Conversations list with search, unread badges and avatars * Pin, archive, trash (+ undo) and delete conversations; swipe actions * Drafts auto-saved per conversation * Scheduled messages and optional delayed sending * Message forwarding and tappable links * MMS image send/receive (when set as default SMS app) * Dual-SIM support with per-message SIM selection * Sent / delivered / failed status per message with retry * Number blocking and report-spam style contact actions * Database backup & restore * No ads, no analytics, no trackers **Permissions** SMS and contacts permissions are used only to send/receive messages and show contact names. The app requests no network access at all.

First release: Sep 9, 2026, 7 total releases.

Most recent release: Oct 15, 2026.

Repo

Appears in 0 app stacks.

0 sats / 0 zaps received in the past year.

Sats Received

Underlying data available via MCP: app_zaps, app_releases.

Zap Count

Underlying data available via MCP: app_zaps, app_releases.

Releases

  • Oct 15, 2026 1.0.30
    ### Toolchain used for this build - Java: `openjdk version "21.0.12.1" 2026-08-18 LTS` - Gradle: `9.8.0` - Runner: `Linux (X64)` - Locale: `LC_ALL=C TZ=UTC` - APK SHA-256: `7be1b6224c9d85372cd8ad16ab2bb92770243680ba3d53a0176b754a67d73a15` ## What's Changed
    More…
    * Clear the CodeQL security findings and quality notes (#489, #490, …) in https://github.com/an1ndra/Messages/pull/324 * Fix/issues 325 326 327 in https://github.com/an1ndra/Messages/pull/329 * Fix/332 remove internet permission in https://github.com/an1ndra/Messages/pull/333 **Full Changelog**: https://github.com/an1ndra/Messages/compare/v1.0.29...v1.0.30 ## VirusTotal Scan Report Results for **`Messages-v1.0.30.apk`** - SHA-256: `7be1b6224c9d85372cd8ad16ab2bb92770243680ba3d53a0176b754a67d73a15` | Result | Count | |---|---| | Malicious | **0** | | Suspicious | 0 | | Harmless | 0 | | Undetected | 68 | | Total engines | 75 | [View the full report on VirusTotal](https://www.virustotal.com/gui/file/7be1b6224c9d85372cd8ad16ab2bb92770243680ba3d53a0176b754a67d73a15)
  • Oct 11, 2026 1.0.29
    ### Toolchain used for this build - Java: `openjdk version "21.0.12.1" 2026-08-18 LTS` - Gradle: `9.8.0` - Runner: `Linux (X64)` - Locale: `LC_ALL=C TZ=UTC` - APK SHA-256: `6a1b93a63b35c8e48f3b0a3e7a887b95ff16d98090e162b5b8c80216dec1463d` ## What's Changed
    More…
    ## Receiving MMS (#236, #283) - **An incoming picture was announced but never stored**, and the download failed every attempt. Messages now arrive. - **A carrier refusal was read as a corrupt message**, so the app re-requested the same dead download on every launch. Refusals are now recognised and dropped. - **Messages using the common `multipart.mixed` container were rejected as unreadable.** That is the form carriers actually send. - **Pictures were capped at 640×480** — the size Android reports when a carrier declares nothing, wrongly treated as the carrier's maximum. - **A picture arriving into an open chat stayed invisible** until you left and came back. It now shows immediately, and the list line updates to "Photo". - **A failed send reported only "code 4".** It now carries the HTTP status. --- ## Pictures in the chat - **A picture you sent became an empty black box after a restart.** It is now read from the messaging provider's own copy instead of a temporary picker permission. - **A picture arriving a few seconds after you opened a chat stayed cut off** at the bottom. - **The chat no longer settles a few rows short of the bottom.** - Scrolling still stops the instant you drag. ## Sharing into Messages (#304) - **Text shared from a bank or other app arrived garbled and was sent garbled.** Clean text is now preferred over the damaged copy, and `EXTRA_TEXT` is read on the address-bar "send SMS" path too, not only the system share sheet. - Repair is conservative: `Café` is left alone, and a genuinely broken sequence is refused rather than replaced with `�`. ## Conversation list - **A message arriving in a chat you were reading no longer counts as unread.** - **Searching by a contact's name no longer makes the chat jump** to the first message containing their own name. ## Settings - **The legacy Advanced screen now has the MMS support row.** The per-SIM carrier check existed only in the redesigned interface; it is now on both and searchable. ## Translations Crowdin sync across all 12 translated languages. No new user-facing strings. ## Housekeeping Four test-script submodule updates, and four GitHub Actions bumps (`upload-artifact` 7.0.2, `download-artifact` 8.0.2, CodeQL `analyze` and `upload-sarif`). Crowdin: https://crowdin.com/project/git-messages Added a new minimal UI. To enable it, go to General settings → Advanced settings → `Redesigned interface`. ### Thanks - **[Zokii0](https://github.com/Zokii0)** — for working through the MMS send issue with me, and for testing the fix on-device before it shipped. - **Everyone who reported an issue** — bug reports are what turn "it seems fine" into a fixed app. - **Everyone who tested the fixes** — especially the MMS reports, which took several tries to pin down. ## New Contributors * @github-actions[bot] made their first contribution in https://github.com/an1ndra/Messages/pull/288 **Full Changelog**: https://github.com/an1ndra/Messages/compare/v1.0.27...v1.0.29 ## VirusTotal Scan Report Results for **`Messages-v1.0.29.apk`** - SHA-256: `6a1b93a63b35c8e48f3b0a3e7a887b95ff16d98090e162b5b8c80216dec1463d` | Result | Count | |---|---| | Malicious | **0** | | Suspicious | 0 | | Harmless | 0 | | Undetected | 68 | | Total engines | 75 | [View the full report on VirusTotal](https://www.virustotal.com/gui/file/6a1b93a63b35c8e48f3b0a3e7a887b95ff16d98090e162b5b8c80216dec1463d)
  • Sep 26, 2026 1.0.27
    ### Toolchain used for this build - Java: `openjdk version "21.0.12.1" 2026-08-18 LTS` - Gradle: `9.6.0` - Runner: `Linux (X64)` - Locale: `LC_ALL=C TZ=UTC` - APK SHA-256: `7608d21c4ac1ac0d526bb4521eeafc9c69f573d0798f4553201ebc183092e0a9` **Full Changelog**: https://github.com/an1ndra/Messages/compare/v1.0.26...v1.0.27
    More…
    ## What's new in v1.0.27 ### Messaging - **MMS works both ways now.** Incoming MMS are downloaded, imported and notified; outgoing MMS are composed as a real PDU/SMIL and handed to your carrier. (#236) - Senders with no dialable number (e.g. `A1 SRB`) keep their full sender ID instead of collapsing to `1`, and can't be replied to. Rows already corrupted by the old build are repaired on next launch. (#207) - Notifications are grouped per conversation — expanding shows the messages you missed (unread only, never your own replies) with the sender's name. (#219) - The launcher icon shows an unread badge, and it counts unread **conversations** like other messaging apps. Opening one chat no longer clears everyone else's notifications. (#227) - A message that arrives while you have that chat open no longer counts as unread, so the list stops showing a phantom badge. (#219) - Notifications no longer stop permanently for a sender after you open their chat. (#219) - All in-app times follow the device's 12/24-hour setting. - Trailing blank lines are stripped from message bodies. ### Selecting and sharing messages - Long-press to multi-select, then Copy / Forward / Trash. - **Select all** in the ⋮ menu selects the whole conversation, and deliberately skips locked messages so a bulk delete can't wipe one. (#232) - **Select text** opens the message in a dialog where you can select and copy just the part you need. (#231) - **Save image** saves an MMS picture to `Pictures/Messages`, named after the sender. No storage permission needed. (#235) ### Blocking, spam and trash - New **Spam & Blocked** folder under Settings. Blocked senders leave the main conversation list and live there, with per-row Unblock / Delete, an Empty action per tab, and Undo. (#230) - SMS caught by blocked keywords are kept there too, tagged `Keyword`, instead of being dropped. - Folder lists show the contact's saved name rather than the raw number. - Trash deletes individual messages, not just whole conversations. - Auto-delete now covers Spam & Blocked as well, with per-folder windows of 7 / 30 / 90 / 365 days in Settings → Advanced. - A blocked message can no longer resurrect a trashed conversation. ### Conversations - The contact's phone number is shown under their name on the details screen, so you can see exactly which number a thread uses — including for contacts with several numbers. (#237) - Bubble corners now follow the position of a message in a run of consecutive messages. ### Compose - **SIM switcher in the message field** — tap it to move between SIMs, the slot number sits on the icon, and the SIM used is shown on your sent messages. It stays visible while typing. (#227, #219) - A removed or stale SIM no longer renders as `SIM 0` or breaks sending. (#219) - New Advanced → Appearance toggle for the emoji button. ### Accessibility and motion - New **Accessibility mode** (Settings → Advanced): font scale 85–130%, bold text, high contrast, reduce motion, and large touch targets. - TalkBack: conversation rows expose a merged description (sender · preview · time · unread · pinned), and undersized tap targets were raised to 48dp. - Shared Material 3 motion tokens, animated placement in the conversation list, and reduce-motion now honoured across the whole app. ### Languages - Every string is now translated in all 12 languages: Arabic, German, Spanish, French, Hindi, Japanese, Korean, Polish, Portuguese (BR), Russian, Simplified Chinese and Traditional Chinese — no English left in the UI. (#175) - The app now appears in the system **Per-app language** settings, so you can switch language without changing the phone's language. ## VirusTotal Scan Report Results for **`Messages-v1.0.27.apk`** - SHA-256: `7608d21c4ac1ac0d526bb4521eeafc9c69f573d0798f4553201ebc183092e0a9` | Result | Count | |---|---| | Malicious | **0** | | Suspicious | 0 | | Harmless | 0 | | Undetected | 68 | | Total engines | 75 | [View the full report on VirusTotal](https://www.virustotal.com/gui/file/7608d21c4ac1ac0d526bb4521eeafc9c69f573d0798f4553201ebc183092e0a9) Fun fact: We support the North Korean language. Give it a try!
  • Sep 16, 2026 1.0.24
  • Sep 15, 2026 1.0.23
  • Sep 14, 2026 1.0.22
  • Sep 9, 2026 1.0.21