Repository navigation
Changelog
1.0.10
- Minimum supported Android version is now 7.0 (API 24).
- Translation updates: Polish, Estonian.
1.0.9
Highlights
- MMS reliability overhaul. Downloads and sends retry on their own, work per SIM, and respect carrier limits.
- SMS reliability overhaul. Messages survive reboots, temporary failures and carrier quirks without being silently dropped.
- Emoji reactions can now be sent.
- Search and scrolling: search shows message previews, and the home screen has a custom fast scroller.
New features
MMS
- Tap an undownloaded MMS to download it. Pending downloads are retried when the app opens (#151).
- Failed downloads and sends retry automatically with backoff when the cause is temporary, including an unreachable MMSC caused by no service.
- Auto-download is decided per SIM. New settings toggle auto-download and roaming download.
- Carrier config is loaded per SIM, with OEM overrides imported and the carrier user agent sent.
- New carrier options are honoured:
- Long texts and emails switch to MMS when the carrier asks.
- Group chats start as group MMS when the carrier prefers it.
- Groups are sent individually on carriers without group MMS.
- Conversations stay within the carrier's recipient limit.
- MMS size defaults to the SIM's carrier limit, and the limit is shared between images by size.
- Outgoing MMS lay out each part separately, with the text after the media.
SMS
- Class 0 SMS pop up so you can save or dismiss them. A "replace" SMS takes the place of the last one.
- Characters are simplified and counted according to the carrier default. Delivery reports are requested when the carrier gives them by default, unless you turn them off.
- Waiting SMS are sent again when service returns, when the app starts, or when an SMS arrives.
- Delayed SMS are rescheduled after a reboot, and interrupted ones fail visibly.
- Copying an OTP marks the conversation read.
General
- Send outgoing emoji reactions (#77).
- Delete a message from its notification.
- Search results show message previews.
- Custom fast scroller on the home screen.
- New conversations and quick reply default to the system SMS SIM (#156).
- The About screen shows the copyrights and licences listed in the README.
Fixes
MMS
- Fixed crashes on malformed network data, on unreadable audio attachments, and on large MMS (#114).
- Expired MMS are kept instead of deleted on download errors, and deleted messages are dropped from Realm (#151).
- Repeated pushes for an MMS you already have are ignored. Blocked senders with a type suffix are recognised, and anonymous senders are stored.
- MMS are acknowledged from the SIM they arrived on and sent from the SIM that sends them.
- A failed send or a download that couldn't start now notifies you instead of staying stuck on "sending" or "pending".
- Empty or unreadable downloads are left to the user, and automatic downloads stop after 20 minutes.
- An MMS larger than the carrier accepts fails instead of retrying forever.
- The carrier response is checked before an MMS is marked sent, and the carrier config is honoured when appending the transaction ID.
- Simultaneous sends no longer cancel each other's results.
- The manufacturer config lookup now matches by exact name (including Honor).
SMS
- Incoming SMS are never dropped when parts, text or sender are missing. They are stored in the provider before anything else and stay unseen until notified.
- Long SMS now work correctly:
- Each part gets its own sent callback and delivery report.
- A long SMS is only marked sent when every part succeeded.
- Results are combined by the worst part, including across restarts.
- Each part is sent on its own when the carrier can't join them.
- Failed sends now report properly:
- You're told about failures that happen before the system can send.
- The system's failure reason is shown.
- Failures are split into temporary (retried) and permanent.
- Resending from a notification only works while the message is still failed.
- Delayed SMS:
- They are sent even without exact-alarm access.
- They are sent even if the phone was off at the scheduled time.
- They are never both an alarm and a job, and are not cancelled once started.
- "Send now" sends the original message once.
- Unsent SMS resume at boot without delaying other boot work.
- Text to an email address goes through the carrier's email gateway, and numbers are sent without their formatting.
- Delivery reports are read by exact status, and empty ones are ignored.
- Incoming SMS are dated by the network when the phone clock is clearly wrong, and everything the network sent is stored.
General / UI
- Compose attachments survive the app going to the background. They are deleted only after every send using them finishes, and only if they live in the app cache.
- No voice note is attached when moving the recording fails.
- New threads are created in Realm (#123), text highlight during selection is fixed (#105), and
scheduled_optionshas a base value. - Fixed R8 crash in
GalleryPagerAdapter(#130) and Ezvcard release-build crash. - Fixed
registerReceivercalls (#83). - Settings show the delivery-report and simple-characters options as they actually apply.
Internal
- Modularised the code into
carrier,gif-encoder,otp-detector,mms-pduandtelephonymodules, and dropped theandroid-smsmmsdependency. - Removed the legacy MMS stack: TransactionService, OkHttp 2/Apache HTTP, the MMSC ack code and unused framework shims.
- Added a fake MMSC with debug-only hooks and end-to-end MMS and SMS tests on the emulator.
- The project is now REUSE compatible with SPDX headers, and a pre-commit config was added.
Full Changelog: v1.0.8...v1.0.10