From 8a2b5a0d5d4e73587e926bf6327aad1aff958636 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A7=E6=A3=AE?= Date: Sun, 10 May 2026 15:40:07 +0800 Subject: [PATCH] fix: preserve newlines in SSE streaming for Markdown rendering --- internal/web/server.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/internal/web/server.go b/internal/web/server.go index a75343b..fb2d32a 100644 --- a/internal/web/server.go +++ b/internal/web/server.go @@ -41,12 +41,16 @@ func (w *sseWriter) Write(p []byte) (n int, err error) { default: } - data := strings.ReplaceAll(string(p), "\n", "") - if data == "" { + data := string(p) + if strings.TrimSpace(data) == "" { return len(p), nil } - fmt.Fprintf(w.client.Writer, "data: %s\n\n", data) + lines := strings.Split(data, "\n") + for _, line := range lines { + fmt.Fprintf(w.client.Writer, "data: %s\n", line) + } + fmt.Fprint(w.client.Writer, "\n") w.client.Flusher.Flush() return len(p), nil }