fix(body): decode HTML entities after sanitization

Amolith created

Wraps bluemonday output with html.UnescapeString so that characters like
quotes remain as literal "quotes" instead of "quotes".

Assisted-by: Claude Opus 4.5 via Crush

Change summary

wrapBody.go | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)

Detailed changes

wrapBody.go 🔗

@@ -5,14 +5,20 @@
 package main
 
 import (
+	"html"
 	"regexp"
 	"strings"
+
+	"github.com/microcosm-cc/bluemonday"
 )
 
 var numberedListRegex = regexp.MustCompile(`^\d+\.\s`)
 
 func formatBody(body string) (string, error) {
-	lines := strings.Split(body, "\n")
+	p := bluemonday.UGCPolicy()
+	sanitized := html.UnescapeString(p.Sanitize(body))
+
+	lines := strings.Split(sanitized, "\n")
 	var result []string
 	var plainTextBuffer []string