feat(FN-1634): promote mailbox to first-class navigation view

- Add MailboxView as a full-page navigation view replacing the modal-based approach
- Migrate MessageStore from filesystem to SQLite backend for message persistence
- Implement conversation grouping for inbox display with unread badge state
- Remove modal plumbing (useModalManager, AppModals exports) and simplify App.tsx
- Add evictStaleProcessing() to TriageProcessor for self-healing hung triage sessions
- Add comprehensive MailboxView tests and Header mailbox tests
- Update README documentation with MailboxView features
- Add CSS styles for MailboxView component
- Fix MobileNavBar tests for mailbox tab visibility
This commit is contained in:
Fusion
2026-04-15 08:03:12 -07:00
committed by gsxdsm
parent cb54000fe5
commit 647a10b161
21 changed files with 1693 additions and 103 deletions

View File

@@ -25923,6 +25923,49 @@ html .column.drag-over * {
margin-top: 6px;
}
/* Conversation grouping */
.mailbox-conversations {
display: flex;
flex-direction: column;
gap: 2px;
}
.mailbox-conversation-group {
display: flex;
align-items: flex-start;
gap: 12px;
padding: 12px;
border-radius: 8px;
cursor: pointer;
transition: background-color 0.1s;
position: relative;
}
.mailbox-conversation-group:hover {
background: var(--card-hover);
}
.mailbox-conversation-group.unread {
background: color-mix(in srgb, var(--todo) 10%, transparent);
font-weight: 500;
}
.mailbox-group-unread-badge {
display: flex;
align-items: center;
justify-content: center;
min-width: 20px;
height: 20px;
padding: 0 6px;
font-size: 11px;
font-weight: 600;
background: var(--todo);
color: #fff;
border-radius: 10px;
flex-shrink: 0;
margin-top: 6px;
}
/* Message detail view */
.mailbox-message-detail {
display: flex;
@@ -28088,6 +28131,22 @@ html .column.drag-over * {
white-space: nowrap;
}
.mobile-nav-tab-badge {
position: absolute;
top: 2px;
right: calc(50% - 12px);
min-width: 16px;
height: 16px;
padding: 0 4px;
font-size: 9px;
font-weight: 600;
line-height: 16px;
text-align: center;
background: var(--color-error);
color: #fff;
border-radius: 8px;
}
/* === Mobile More Sheet (Bottom Drawer) === */
.mobile-more-sheet-backdrop {