From bdd4c2b1491b6256656f83bd97c528b32bfe3432 Mon Sep 17 00:00:00 2001 From: dan Date: Thu, 22 Jan 2026 12:55:45 -0800 Subject: [PATCH] Force beeper linkpreviews field in replies --- internal/matrixbot/bot.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/internal/matrixbot/bot.go b/internal/matrixbot/bot.go index 455df9b..4c36ec1 100644 --- a/internal/matrixbot/bot.go +++ b/internal/matrixbot/bot.go @@ -3,6 +3,7 @@ package matrixbot import ( "context" + "encoding/json" "errors" "fmt" "html" @@ -214,7 +215,17 @@ func (b *Bot) sendReply(ctx context.Context, evt *event.Event, response string) content.SetReply(evt) } - _, err := b.client.SendMessageEvent(ctx, evt.RoomID, event.EventMessage, content) + payload, err := json.Marshal(content) + if err != nil { + return err + } + var contentMap map[string]any + if err := json.Unmarshal(payload, &contentMap); err != nil { + return err + } + contentMap["com.beeper.linkpreviews"] = []any{} + + _, err = b.client.SendMessageEvent(ctx, evt.RoomID, event.EventMessage, contentMap) return err } @@ -416,8 +427,7 @@ func splitLinkLine(line string) (string, string, bool) { } func obfuscateURL(url string) string { - // Break client-side link preview parsers while preserving readability. - return strings.Replace(url, "://", ":\u2060//", 1) + return url } func isEncryptedInvite(evt *event.Event) bool {