Culver brings phone messages and Matrix rooms into a shared inbox while retaining the transport behind each conversation. Its Rust services own the message and contact stores. The Qt/QML window presents them without depending on a GNOME or KDE contact service.
Receipt has to outlive the window
A resident receiver holds modem subscriptions, protocol clients, persistence and notifications. Opening the interface attaches a view to that service; closing the interface should leave receipt alive. Reconnection replays stored state rather than treating the window as the keeper of message history.
SMS uses ModemManager. MMS needs a separately installed and configured transport. Matrix sync, encryption and account lifecycle have their own paths and acceptance. A combined interface does not make those transports interchangeable.
Keep the person’s unfinished words
The music-sharing handoff takes a selected link or attachment into an existing conversation draft. It appends rather than replacing, and it does not send. That small boundary is part of the product: accepting another application’s content should leave the person in control of the message.
Contacts and calling
Culver keeps its own contact store with import and export. Native calling remains development work; installed system calling fallbacks retain their role until that replacement earns its acceptance.
What remains open
- Fresh incoming SMS, MMS and Matrix paths require transport-specific device checks.
- Locked Matrix sync and Personal-key policy remain unfinished; ordinary unlocked background sync is a separate path.
- Native calling, recents and voicemail are not a completed replacement for the existing system fallback.