Messages Inbox
Messages Inbox puts an email-style inbox and archive on top of Apple's Messages. Replies archive themselves, a new text brings a conversation back, and the app never writes to Messages' database. I forked Ronak Malde's version in July and made commits on top of it.
Below are the details I spent the most time on.
Archived until they write back
Archiving stamps the conversation with the current time. It stays archived while their newest message is older than the stamp, so my own replies never pull it back, and their next message does. The stamp lives in the app's own store, keyed by the chat's ID. Messages' chat.db is only ever read.
Replies archive themselves
When I reply from the Inbox, the conversation archives itself seconds later, or anywhere from to in Settings. Messages moves a conversation to the top the moment I reply, so the list would jump under my cursor. Until it archives, the row keeps its old slot, and then the selection moves to whichever conversation slides into that slot.
Tapbacks through Messages' own actions
Messages has no public way to send a Tapback or a threaded reply. I didn't want to drive its window or ask for Accessibility, so a small helper app finds the message by its ID, and three saved Shortcuts call Messages' own Reply, Tapback and Read State actions. Messages stays hidden, and the reaction posts as a real Tapback.
Search that keeps going back
Search keeps its own index beside chat.db, filled to messages at a time, and ignores case and accents, so cafe finds café. Results come newest first, at a time. Load Older Results picks up from the last result's date and ID rather than counting from the top, and the filters narrow it to one conversation and a range of days. Through includes the whole day.
Thousands of rows, a few drawn
The sidebar draws only the rows near what's on screen. Every row is px and every section label px, so the app places all of them up front, finds the first visible one by binary search, and draws px past each edge. Conversations open on their latest messages and load earlier ones as I scroll up.
It reads ~/Library/Messages/chat.db with Full Disk Access, sends ordinary messages through Messages, and checks for new messages every seconds while it's in front. Native actions need an Apple silicon Mac on macOS 15 or newer. tests cover it.