From 8400ef54eec92c32e992f4f8c128797a8d2bdadf Mon Sep 17 00:00:00 2001 From: heaven Date: Thu, 14 May 2026 01:39:51 +0300 Subject: [PATCH] feat(syslines): render membership and room-state events as sender-anchored chat bubbles via StreamLayout instead of thin rail syslines --- src/app/features/room/RoomTimeline.tsx | 162 ++++++------------ .../features/room/message/SyslineMessage.tsx | 124 ++++++++++++++ src/app/features/room/message/index.ts | 1 + 3 files changed, 175 insertions(+), 112 deletions(-) create mode 100644 src/app/features/room/message/SyslineMessage.tsx diff --git a/src/app/features/room/RoomTimeline.tsx b/src/app/features/room/RoomTimeline.tsx index 090fc4c7..aaa79cc5 100644 --- a/src/app/features/room/RoomTimeline.tsx +++ b/src/app/features/room/RoomTimeline.tsx @@ -90,6 +90,7 @@ import { Event, CallMessage, CallAggregate, + SyslineMessage, EncryptedContent, useMessageInteractionHandlers, } from './message'; @@ -1849,44 +1850,23 @@ export function RoomTimeline({ const highlighted = focusItem?.index === item && focusItem.highlight; const parsed = parseMemberEvent(mEvent); - const iconSrc = - parsed.icon === Icons.ArrowGoRightPlus ? Icons.ArrowGoRight : parsed.icon; - - const timeJSX = ( -