From e1e22274d9cbc0d636513655f3e15fdd91586cb3 Mon Sep 17 00:00:00 2001 From: 7w1 Date: Fri, 17 Jul 2026 22:34:55 -0500 Subject: [PATCH 1/2] add rainbowme command --- .changeset/rainbowme-command.md | 5 +++++ src/app/features/room/RoomInput.tsx | 4 ++-- src/app/hooks/useCommands.ts | 16 ++++++++++++++++ 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 .changeset/rainbowme-command.md diff --git a/.changeset/rainbowme-command.md b/.changeset/rainbowme-command.md new file mode 100644 index 0000000000..0c49bb213c --- /dev/null +++ b/.changeset/rainbowme-command.md @@ -0,0 +1,5 @@ +--- +sable: minor +--- + +Add a `/rainbowme` command for sending rainbow-formatted action messages. diff --git a/src/app/features/room/RoomInput.tsx b/src/app/features/room/RoomInput.tsx index 6fe77af887..6a170c996d 100644 --- a/src/app/features/room/RoomInput.tsx +++ b/src/app/features/room/RoomInput.tsx @@ -890,7 +890,7 @@ export const RoomInput = forwardRef( toMatrixCustomHTML(serializedChildren, { stripNickname: true, nickNameReplacement: nicknameReplacement, - forEmote: commandName === Command.Me, + forEmote: commandName === Command.Me || commandName === Command.RainbowMe, room, }) ); @@ -971,7 +971,7 @@ export const RoomInput = forwardRef( toMatrixCustomHTML(serializedChildren, { stripNickname: true, nickNameReplacement: nicknameReplacement, - forEmote: commandName === Command.Me, + forEmote: commandName === Command.Me || commandName === Command.RainbowMe, room, }) ); diff --git a/src/app/hooks/useCommands.ts b/src/app/hooks/useCommands.ts index 9c9451be8a..6bdfdf7a4c 100644 --- a/src/app/hooks/useCommands.ts +++ b/src/app/hooks/useCommands.ts @@ -265,6 +265,7 @@ export enum Command { Pronoun = 'pronoun', SPronoun = 'spronoun', Rainbow = 'rainbow', + RainbowMe = 'rainbowme', RawMsg = 'rawmsg', Raw = 'raw', RawAcc = 'rawacc', @@ -1162,6 +1163,21 @@ export const useCommands = (mx: MatrixClient, room: Room): CommandRecord => { }); }, }, + [Command.RainbowMe]: { + name: Command.RainbowMe, + description: 'Send a rainbow action message.', + exe: async (payload, html) => { + if (!payload || payload.trim().length === 0) return; + const inputHtml = html || payload; + const rainbowHtml = rainbowify(inputHtml); + await mx.sendMessage(room.roomId, { + msgtype: MsgType.Emote, + body: payload, + format: 'org.matrix.custom.html', + formatted_body: rainbowHtml, + }); + }, + }, [Command.RawMsg]: { name: Command.RawMsg, description: From e5e6276ff7a0a56888dea05416b923eae2ff305c Mon Sep 17 00:00:00 2001 From: 7w1 Date: Sat, 18 Jul 2026 00:13:21 -0500 Subject: [PATCH 2/2] change minor to patch --- .changeset/rainbowme-command.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.changeset/rainbowme-command.md b/.changeset/rainbowme-command.md index 0c49bb213c..263d03aa71 100644 --- a/.changeset/rainbowme-command.md +++ b/.changeset/rainbowme-command.md @@ -1,5 +1,5 @@ --- -sable: minor +sable: patch --- Add a `/rainbowme` command for sending rainbow-formatted action messages.