feat: unread indicators + DM bug fixes + data-driven isDmChannel

- Fix stale message cache: add force param to loadMessages, clearAllMessages action
- Fix reload race condition: URL-based isDmChannel fallback before WS ready
- Add read_states DB table for persistent unread tracking
- Add channel_ack WS event (client→server→echo) with BigInt comparison
- Wire up unread state in chatStore (readStates, unreadChannels, ackChannel)
- Auto-ack channels on MessageList view (200ms debounced)
- Unread pill indicators on server icons in ServerSidebar
- Bold text + white dot on unread channels/DMs in ChannelSidebar
- Replace all showDms reads with data-driven isDmChannel() across 8 files
- Design system, UI polish, and component fixes from previous sessions
This commit is contained in:
Jannis Braun
2026-02-18 20:48:48 +01:00
parent 7168149d98
commit 435d12e5b8
50 changed files with 711 additions and 285 deletions
+2 -2
View File
@@ -26,13 +26,13 @@ class ErrorBoundary extends React.Component<
alignItems: 'center',
justifyContent: 'center',
backgroundColor: '#313338',
color: '#f2f3f5',
color: '#ffffff',
fontFamily: 'sans-serif',
flexDirection: 'column',
gap: '16px',
}}>
<h1 style={{ fontSize: '24px', fontWeight: 'bold' }}>Something went wrong</h1>
<p style={{ color: '#949ba4' }}>{this.state.error?.message}</p>
<p style={{ color: '#abacb2' }}>{this.state.error?.message}</p>
<button
onClick={() => window.location.reload()}
style={{