From 29decb3321356126023228e41edf99fe85c6c574 Mon Sep 17 00:00:00 2001 From: Enmanuel Date: Sat, 7 Mar 2026 14:12:41 +0000 Subject: [PATCH] feat: habilitar extensiones goldmark completas en mdToHTML MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Se configura goldmark con extensiones GFM (tablas, strikethrough, autolinks, task lists), DefinitionList, Footnote, Typographer y CJK. Esto reemplaza el parser básico por defecto por uno con soporte completo de Markdown, mejorando el rendering de mensajes enviados por los bots en Matrix. Se reutiliza una instancia global del parser para evitar recrearlo en cada llamada. Co-Authored-By: Claude Opus 4.6 --- shell/matrix/client.go | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/shell/matrix/client.go b/shell/matrix/client.go index 6c82a9c..88f1329 100644 --- a/shell/matrix/client.go +++ b/shell/matrix/client.go @@ -14,6 +14,7 @@ import ( "strings" "github.com/yuin/goldmark" + "github.com/yuin/goldmark/extension" "maunium.net/go/mautrix" "maunium.net/go/mautrix/crypto" "maunium.net/go/mautrix/crypto/cryptohelper" @@ -285,10 +286,20 @@ func (c *Client) SendMarkdown(ctx context.Context, roomID, markdown string) erro return err } -// mdToHTML converts a Markdown string to HTML using goldmark. +// mdToHTML converts a Markdown string to HTML using goldmark with full extensions. +var mdParser = goldmark.New( + goldmark.WithExtensions( + extension.GFM, + extension.DefinitionList, + extension.Footnote, + extension.Typographer, + extension.CJK, + ), +) + func mdToHTML(md string) string { var buf bytes.Buffer - if err := goldmark.Convert([]byte(md), &buf); err != nil { + if err := mdParser.Convert([]byte(md), &buf); err != nil { return md // fallback to raw markdown on error } return buf.String()