From 7b2ac780324a12325ca168c6211aaaecee2107ce Mon Sep 17 00:00:00 2001 From: Till-JS <101404291+Till-JS@users.noreply.github.com> Date: Thu, 29 Jan 2026 22:54:00 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(matrix-web):=20add=20@mention?= =?UTF-8?q?=20autocomplete,=20message=20forwarding,=20and=20improved=20typ?= =?UTF-8?q?ing=20indicator?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit @mention autocomplete: - Detect @ symbol while typing and show user picker - Search room members by name or user ID - Arrow key navigation and Enter/Tab to select - Insert display name into message Message forwarding: - Add forward button to message actions - ForwardMessageDialog with room selection - Multi-select support for forwarding to multiple rooms - Search and filter rooms Typing indicator improvements: - Show user avatars (stacked, up to 3) - Improved visual design with rounded pill for dots - Better spacing and alignment Also adds: - sendMessageToRoom() store method for forwarding --- .../chat/ForwardMessageDialog.svelte | 173 ++++++++++++++++++ .../src/lib/components/chat/Message.svelte | 10 + .../lib/components/chat/MessageInput.svelte | 143 ++++++++++++++- .../src/lib/components/chat/Timeline.svelte | 4 +- .../components/chat/TypingIndicator.svelte | 55 +++++- .../apps/web/src/lib/matrix/store.svelte.ts | 15 ++ .../web/src/routes/(app)/chat/+page.svelte | 22 ++- 7 files changed, 408 insertions(+), 14 deletions(-) create mode 100644 apps/matrix/apps/web/src/lib/components/chat/ForwardMessageDialog.svelte diff --git a/apps/matrix/apps/web/src/lib/components/chat/ForwardMessageDialog.svelte b/apps/matrix/apps/web/src/lib/components/chat/ForwardMessageDialog.svelte new file mode 100644 index 000000000..d473f4df7 --- /dev/null +++ b/apps/matrix/apps/web/src/lib/components/chat/ForwardMessageDialog.svelte @@ -0,0 +1,173 @@ + + +{#if open && message} + +
Von {message.senderName}
+{message.body}
+Keine Chats gefunden
+ {:else} + {#each filteredRooms as room (room.id)} + + {/each} + {/if} ++ {selectedRooms.size} ausgewählt +
+ +