on main help sign in
fix(ui): add locking around markdown rendering

Needed to prevent race conditions, which may segfault. Signed-off-by: Evan Wies <evan@neomantra.net>

commit5d7797d0f1b37a1ccf19f5ab1e1c48c3598daa5d authorEvan Wies <evan@neomantra.net> dateThu 21 May 2026, 08:21 (5 months ago) parent4fc17dd
1 file changed+9
internal/ui/chat/user.go+9
internal/ui/chat/user.go+9
@@ -74,8 +74,12 @@ func (m *UserMessageItem) RawRender(width int) string {
7474 }
7575
7676 renderer := common.MarkdownRenderer(m.sty, cappedWidth)
77+ mu := common.LockMarkdownRenderer(renderer)
7778
79+ mu.Lock()
7880 result, err := renderer.Render(msgContent)
81+ mu.Unlock()
82+
7983 if err != nil {
8084 content = msgContent
8185 } else {
@@ -102,7 +106,12 @@ func (m *UserMessageItem) renderSkillInvocation(content string, width int) strin
102106 if err := xml.Unmarshal([]byte(content), &skill); err != nil {
103107 // If parsing fails, just render as markdown
104108 renderer := common.MarkdownRenderer(m.sty, width)
109+ mu := common.LockMarkdownRenderer(renderer)
110+
111+ mu.Lock()
105112 result, err := renderer.Render(content)
113+ mu.Unlock()
114+
106115 if err != nil {
107116 return content
108117 }