feat(desktop): grouped system events, message compacting, and per-type icons#418
Draft
tellaho wants to merge 1 commit into
Draft
feat(desktop): grouped system events, message compacting, and per-type icons#418tellaho wants to merge 1 commit into
tellaho wants to merge 1 commit into
Conversation
2f76ea0 to
5209011
Compare
7c2c366 to
84fb9a6
Compare
52118b6 to
7637e55
Compare
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.
🤖 Updated by AI agent.
Summary
This PR tightens the desktop message timeline by reducing repeated visual chrome while keeping full message detail available.
Grouped System Events
Consecutive system messages collapse into a single expandable row when there are 2 or more in a run. Summaries are actor-attributed and count repeated actions:
Alice added 5 membersAlice added 3 members, removed 2 membersAlice added 5 members; Bob changed the topic (x2)Alice joined the channelinstead ofaddedSystem-event groups stay within a single calendar day so day dividers remain accurate. Expanding the group renders the underlying system rows with their normal details and reactions.
Compact Consecutive Messages
Consecutive messages from the same author within 2 minutes render in compact form: no repeated avatar/name row, body remains visible, and the timestamp appears in the gutter on hover.
Compacting breaks on author changes, time gaps, system messages, thread summaries, and depth-indented thread/broadcast replies so thread guides and timeline structure remain intact.
Per-Type System Icons
System rows and grouped summaries use distinct lucide icons per event type:
member_joined-UserPlusmember_left-LogOutmember_removed-UserMinustopic_changed-Hashpurpose_changed-AlignLeftchannel_created-Pluschannel_archived-Archivechannel_unarchived-ArchiveRestoreGrouped rows use the dominant event type's icon.
Notable Changes
groupTimelineEntries()for pure timeline annotation/grouping.TimelineMessageListto render grouped entries, compact rows, and normal rows from one annotated timeline pass..test.mjs+node:testpattern with an alias loader for@/imports.Testing
Local verification run on this branch:
cd desktop node --experimental-strip-types --import ./scripts/test-loader.mjs --test src/features/messages/lib/groupTimelineEntries.test.mjs src/features/messages/lib/describeSystemEvent.test.mjs pnpm check pnpm typecheck pnpm buildThe targeted message tests cover grouping boundaries, compacting boundaries, day-boundary handling, depth reply exclusions, system event descriptions, and repeated grouped summary actions.
Accessibility
buttonwitharia-expandedandaria-controls.section.Rollback
Revert this branch's desktop timeline changes. The feature is UI-only and does not alter stored event data or relay behavior.