feat(threads): implement thread side panel with full functionality#123
Merged
Conversation
Contributor
Author
|
Also Fixes #124 - Use the SDK's notification options, will properly respect user's notification settings. |
Just-Insane
marked this pull request as ready for review
March 10, 2026 05:58
Just-Insane
marked this pull request as draft
March 10, 2026 12:11
Just-Insane
marked this pull request as ready for review
March 10, 2026 19:16
Member
|
A few issues I found, not sure which ones overlap with #124 :
Also, maybe we should align the editor at the bottom with the main editor? Looks a bit weird having it lower down. |
Just-Insane
marked this pull request as draft
March 12, 2026 03:12
Contributor
Author
These should all be fixed now, if you want to test? |
Just-Insane
marked this pull request as ready for review
March 12, 2026 04:57
Just-Insane
marked this pull request as draft
March 13, 2026 16:05
Just-Insane
marked this pull request as ready for review
March 13, 2026 16:09
Just-Insane
marked this pull request as draft
March 14, 2026 01:05
Just-Insane
marked this pull request as ready for review
March 14, 2026 01:41
Just-Insane
enabled auto-merge
March 14, 2026 02:09
Just-Insane
disabled auto-merge
March 14, 2026 02:32
github-merge-queue Bot
pushed a commit
that referenced
this pull request
Mar 14, 2026
feat(threads): implement thread side panel with full functionality
added 8 commits
March 13, 2026 23:26
- Add roomToOpenThread atom family for tracking active thread per room - Add roomToThreadBrowser atom family for thread browser visibility - Add Thread, ThreadEvent, and NotificationCountType exports to matrix-sdk types - Update toggleReaction to support thread timeline sets - Foundation for thread feature state management
ThreadDrawer: - Side panel for viewing and replying within threads - Full message rendering with reactions, edits, deletions, replies - Auto-scrolls to bottom on new replies - Marks thread as read when viewing - Isolated draft state per thread - Emoji picker and sticker support ThreadBrowser: - List view of all threads in room sorted by latest activity - Search functionality to filter threads by content - Thread preview with root message, reply count, and latest reply - Click to open thread in drawer - Jump button to navigate to root message in main timeline Both: - Desktop: side panel mode - Mobile: full-screen overlay mode - Re-render on ThreadEvent updates
RoomTimeline: - Add ThreadReplyChip component showing reply count, avatars, latest reply preview - Filter thread replies from main timeline (keep only root messages) - Add thread button to start threads from messages - Exclude thread events from triggering timeline pagination - Re-render on ThreadEvent updates for live reply counts - Thread reply counts exclude root message, reactions, and edits RoomViewHeader: - Add thread button with unread badge using SDK notification APIs - Initialize Thread objects from room history on mount - Scan timeline for thread roots and thread replies - Auto-create Thread objects for new thread events - Toggle between thread drawer and thread browser - Close drawer and open browser when clicking button with drawer open Room: - Render ThreadDrawer when thread is open (desktop: side panel, mobile: overlay) - Render ThreadBrowser when browser open and no thread active - Auto-open thread drawer when navigating to thread event IDs - Coordinate openThreadId and threadBrowserOpen state RoomViewFollowing: - Support filtering read receipts by thread participant IDs - Show thread-specific following indicator
RoomInput: - Seed thread reply draft when opening drawer from notification - Handle thread relation in message composition - Support isolated draft state per thread - Auto-populate replyTo when replying in thread - Send messages with thread relation metadata - Clear thread draft after sending reply
Editor: - Fix Slate initialValue per-instance to support multiple editors - Each editor (main timeline, thread drawer) maintains independent state - Prevents value conflicts between simultaneous editors Thread Mockup: - Add ThreadMockupPage for development and design testing - Full mockup UI with realistic thread interactions - Navigation from WelcomePage for easy access - Routes added for /mockup/threads path Quality Tooling: - Add check-quality.sh script for pre-push validation - Runs type checks, lint, and builds before pushing - Helps catch issues before CI/CD CI/CD: - Update GitHub Actions workflows for quality checks - Update dependabot and cloudflare preview workflows - Update docker-publish workflow - Update require-changeset workflow Call Preferences: - Clean up unused imports in CallControls.tsx - Remove orphaned callPreferences hook code Changesets: - Add feat-threads.md for minor version bump - Remove fix_call_preferences.md (superseded)
- Remove src/app/features/thread-mockup/ directory and all mockup references - Remove scripts/check-quality.sh - Restore CallControls.tsx to origin/dev (removed unrelated changes) - Verified RoomInput.tsx and RoomTimeline.tsx contain only thread-related changes
smokku
added a commit
to smokku/cinny
that referenced
this pull request
Mar 15, 2026
smokku
added a commit
to smokku/cinny
that referenced
this pull request
Mar 15, 2026
smokku
added a commit
to smokku/cinny
that referenced
this pull request
Mar 15, 2026
smokku
added a commit
to smokku/cinny
that referenced
this pull request
Mar 15, 2026
smokku
added a commit
to smokku/cinny
that referenced
this pull request
Mar 16, 2026
1 task
smokku
added a commit
to smokku/cinny
that referenced
this pull request
Mar 23, 2026
smokku
added a commit
to smokku/cinny
that referenced
this pull request
Mar 25, 2026
smokku
added a commit
to smokku/cinny
that referenced
this pull request
Mar 26, 2026
smokku
added a commit
to smokku/cinny
that referenced
this pull request
Mar 26, 2026
smokku
added a commit
to smokku/cinny
that referenced
this pull request
Apr 1, 2026
smokku
added a commit
to smokku/cinny
that referenced
this pull request
May 8, 2026
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()).