Culver brings SMS, MMS and Matrix into one inbox on SouveraineOS. Close the window. The receiver keeps running.
SouveraineOS integration comes first. Full compatibility with other platforms follows.
Keep local contacts with photos and vCard import/export. Follow Matrix rooms and threads, edit messages, add reactions and mark favorites. Call controls include recent calls and voicemail actions.
Search stays live as messages arrive and change. SMS status distinguishes carrier retries from confirmed delivery. Delivery reports stay out of your inbox. SMS history, unread counts and notification records are saved together.
Message Sync connects paired devices over VPN. You choose which devices share. Read state and deletions follow the conversation between devices. Player adds song details to an unsent draft. You choose the conversation and send it.
Built with Rust and Qt/QML. Contacts and SMS/MMS history live in an encrypted local database. SMS uses ModemManager; MMS uses mmsdtng. The README covers building and running Culver.
Changelog
2026-10-25
- Attachment downloads preserve newer edits, reactions and redactions, and stop with their account.
- Matrix resumes saved outgoing messages after restart without reopening their rooms.
- Read acknowledgements run separately from inbox and phone commands and retain the selected message boundary across retries.
- Message Sync applies message and conversation deletions and retires obsolete queued read requests.
- SMS delivery reports no longer create empty messages, unread counts or notifications.
- SMS delivery reports distinguish confirmed receipt, carrier retries and failure. Replayed modem state preserves confirmed delivery.
- Receiving an SMS commits the message, unread count and notification together; failed writes leave no partial inbox update.
- Search stays current as messages arrive, change or disappear. Clearing search restores the current timeline.
- Matrix encrypts attachment bytes before upload to encrypted rooms. If it cannot determine the room's encryption state, it refuses the upload.
- The inner navigation buttons curve around the system Pill while keeping their touch targets outside its protected region. Narrow windows use the compact fallback.
- Unknown SMS timestamps stay blank. Matching modem replay preserves an already recorded time instead of replacing it with the Unix epoch.
- Phone and paired-laptop sends retain a clear failure or uncertain outcome. An uncertain submission does not restore the text into the composer or automatically send another copy.
2026-10-20
-
Startup now repairs a matching legacy SMS timestamp in place, preserving the message identity and unread count instead of adding a second copy.
-
SMS timestamps supplied by ModemManager with an hour-only timezone offset now retain their actual time instead of appearing at the Unix epoch.
-
The resident receiver now rebuilds its modem connection when ModemManager adds or removes the modem's SMS Messaging interface, allowing SMS monitoring to recover from that interface change.
-
Matrix room and notable room-info updates again refresh Culver's inbox conversation snapshots.