on main help sign in
fix(ui): add locking around markdown rendering
5d7797dEvan Wies
internal/ui/chat/user.go+9
@@ -74,8 +74,12 @@ func (m *UserMessageItem) RawRender(width int) string {
74 }
74 }
75
75
76 renderer := common.MarkdownRenderer(m.sty, cappedWidth)
76 renderer := common.MarkdownRenderer(m.sty, cappedWidth)
77+ mu := common.LockMarkdownRenderer(renderer)
77
78
79+ mu.Lock()
78 result, err := renderer.Render(msgContent)
80 result, err := renderer.Render(msgContent)
81+ mu.Unlock()
82+
79 if err != nil {
83 if err != nil {
80 content = msgContent
84 content = msgContent
81 } else {
85 } else {
@@ -102,7 +106,12 @@ func (m *UserMessageItem) renderSkillInvocation(content string, width int) strin
102 if err := xml.Unmarshal([]byte(content), &skill); err != nil {
106 if err := xml.Unmarshal([]byte(content), &skill); err != nil {
103 // If parsing fails, just render as markdown
107 // If parsing fails, just render as markdown
104 renderer := common.MarkdownRenderer(m.sty, width)
108 renderer := common.MarkdownRenderer(m.sty, width)
109+ mu := common.LockMarkdownRenderer(renderer)
110+
111+ mu.Lock()
105 result, err := renderer.Render(content)
112 result, err := renderer.Render(content)
113+ mu.Unlock()
114+
106 if err != nil {
115 if err != nil {
107 return content
116 return content
108 }
117 }