Archived
Model rows stored the live Notification object in a ref role. When the server destroyed the notification (sender close, DND untrack, dismiss) the role became a dangling C++ pointer, and the next read segfaulted in QQmlListModel::data — typically when replaying history over IPC. Track live notifications in a JS map keyed by originalId instead, cleaned up on close and untrack, where a stale reference degrades to a catchable error instead of a crash. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>