Hello everyone,
My name is Gabriel, and I’m excited to join the GrapheneOS community. I come from a background in open-source development and leadership (previously at Red Hat, and now focused on AI and sustainable tech practices), and over the past year I’ve been re-aligning my digital life—moving to self-owned services, Linux, and GrapheneOS.
Recently, while using the GrapheneOS Messaging app, I ran into some friction with handling spam messages. The app has an Archive feature, but it didn’t have a “soft delete” or swipe-to-delete option, which are common in modern messaging UX. To explore and learn, I forked the app and implemented these features, following the code style and patterns already present.
What I’ve Built
This feature adds a Trash / Recently Deleted functionality, similar to what you’d find in many email clients
- Two-stage deletion – conversations first go into Trash, then are permanently removed later.
- Configurable retention – choose how long messages stay in Trash (0–999 days, default 14).
- Swipe-to-delete – delete conversations quickly with a swipe.
- Restore option – recover accidentally deleted conversations from Trash.
- Auto-cleanup – Trash empties itself automatically once the retention period expires.
How It Works
- Delete a conversation → it moves to the Deleted Screen just like the Archive one.
- Restore from Trash → select and restore.
- Permanently delete → delete again while in Trash.
- Configure retention → Settings → Advanced → Recently deleted retention.
- If retention is set to 0 days, messages are deleted immediately (skip Trash).
- If set to -1, autodelete is disabled.
Technical Details
- Added deleted_status and deleted_timestamp columns to DB.
- Upgrade safe...
- Auto-delete job runs daily at 00:05 AM and on app open
- Single source of truth for retention default (14 days in constants.xml).
- Behavior is safe-fail: background jobs fail gracefully, user actions have safe defaults.
I’ve been testing this on my Pixel 8 Pro and Pixel 9 Pro XL, but I’ll continue stress testing to make sure I haven’t missed anything.
Next Steps & Questions for the Community
Would this functionality be useful to others here?
Are there improvements or additional message-handling features (like spam filtering) you’d like to see I know I would?
I noticed the automated tests in the repo seem out of date—would it be valuable if I worked on updating those as well?
I’d be happy to open a PR with these changes if the maintainers think it’s aligned with the project’s direction.
I know the core developers already have a lot on their plates, and I deeply appreciate the work that’s gone into making GrapheneOS what it is. My intent is to contribute thoughtfully, listen to feedback, and see where I can be most helpful.
Looking forward to hearing your thoughts, suggestions, and guidance.
Thanks for welcoming me into the community,
Gabriel