feat(threads): implement thread side panel with full functionality#123
Open
Just-Insane wants to merge 11 commits intoSableClient:devfrom
Open
feat(threads): implement thread side panel with full functionality#123Just-Insane wants to merge 11 commits intoSableClient:devfrom
Just-Insane wants to merge 11 commits intoSableClient:devfrom
Conversation
bc59926 to
fe82ee7
Compare
Contributor
Author
|
Also Fixes #124 - Use the SDK's notification options, will properly respect user's notification settings. |
fe82ee7 to
fa71c0a
Compare
added 7 commits
March 10, 2026 11:08
- Add device capability detection using same logic as sliding sync - Implement background pagination on room open with adaptive limits: - High-end (4g+/desktop/high-memory): 500 messages, 1s delay - Medium (3g or <=4GB RAM): 250 messages, 2s delay - Low-end (save-data/2g or mobile): 100 messages, 3s delay - Detection based on: connection type, device memory, save-data preference - Improves message history availability without blocking initial room load - Consistent with sliding sync's adaptive behavior
- Export AdaptiveSignals type and readAdaptiveSignals() from device-capabilities.ts - Update slidingSync.ts to import shared logic instead of duplicating it - Single source of truth for device capability detection across the app - Reduces code duplication and ensures consistent behavior
- Add ThreadDrawer component with message rendering and input - Add ThreadBrowser panel for viewing all threads in a room - Add thread chips on messages showing reply count and participants - Enable message actions in threads (edit, react, reply, delete) - Add emoji and sticker rendering support in threads - Filter thread replies from main timeline to avoid duplicates - Auto-create Thread objects when starting threads or syncing from other devices - Add unread thread badge to header icon (Discord-style) - Auto-open thread drawer when navigating to thread events from notifications - Reorder room header icons: search, pinned, threads, widgets, members, more - Add automatic read receipts when viewing threads Fixes thread browser showing empty list and inbox notifications not opening threads.
- Move readAdaptiveSignals import to top with other imports - Fixes unconventional import placement from previous refactor
…nation Add actual scroll position check (150px threshold) to ResizeObserver forceScroll to prevent it from forcing scroll to bottom when back paginating. During back pagination, messages load at the top causing content resize, but if atBottomRef hasn't updated yet from the scroll, it would incorrectly scroll to bottom. Now checks both: atBottomRef.current AND distance from bottom < 150px before forcing scroll, ensuring back pagination doesn't get interrupted.
Remove ThreadMockupPage and related route - no longer needed as threads are fully implemented.
fa71c0a to
1d65bfa
Compare
added 4 commits
March 10, 2026 14:27
The thread mockup feature was removed in previous commits but the button and navigation code remained in WelcomePage.tsx, causing build failures. This removes: - Thread mockup button from welcome page - Unused useNavigate import and hook call
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Implements Matrix thread support with side panels, browser, and notification integration.
Features
Implementation Details
room.createThread(),room.getThreads())thread.getEventReadUpTo()andthread.hasCurrentUserParticipatedRelated
Future enhancement tracked in #124 to leverage SDK's thread-specific notification APIs (getThreadUnreadNotificationCount(),hasThreadUnreadNotification()).