From ff27fc471986c4c81555ce5837b6cdcccd332d60 Mon Sep 17 00:00:00 2001 From: Kujtim Hoxha Date: Wed, 25 Jun 2025 18:49:45 +0200 Subject: [PATCH] fix: truncate the diff on the messages --- .../tui/components/chat/messages/renderer.go | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/internal/tui/components/chat/messages/renderer.go b/internal/tui/components/chat/messages/renderer.go index 89deb7b8ea2e0310ff3cba7343a6c1ebfe917682..66999de21a0bbfa5bfb8acb4b2117d26cfbc58da 100644 --- a/internal/tui/components/chat/messages/renderer.go +++ b/internal/tui/components/chat/messages/renderer.go @@ -257,6 +257,7 @@ type editRenderer struct { // Render displays the edited file with a formatted diff of changes func (er editRenderer) Render(v *toolCallCmp) string { + t := styles.CurrentTheme() var params tools.EditParams var args []string if err := er.unmarshalParams(v.call.Input, ¶ms); err == nil { @@ -277,7 +278,18 @@ func (er editRenderer) Render(v *toolCallCmp) string { if v.textWidth() > 120 { formatter = formatter.Split() } - return formatter.String() + // add a messagfe to the bottom if the content was truncated + formatted := formatter.String() + if lipgloss.Height(formatted) > responseContextHeight { + contentLines := strings.Split(formatted, "\n") + truncateMessage := t.S().Muted. + Background(t.BgBaseLighter). + PaddingLeft(2). + Width(v.textWidth() - 4). + Render(fmt.Sprintf("… (%d lines)", len(contentLines)-responseContextHeight)) + formatted = strings.Join(contentLines[:responseContextHeight], "\n") + "\n" + truncateMessage + } + return formatted }) } @@ -556,7 +568,7 @@ func renderParamList(nested bool, paramsWidth int, params ...string) string { } mainParam := params[0] if len(mainParam) > paramsWidth { - mainParam = mainParam[:paramsWidth-3] + "..." + mainParam = mainParam[:paramsWidth-3] + "…" } if len(params) == 1 { @@ -596,9 +608,9 @@ func renderParamList(nested bool, paramsWidth int, params ...string) string { } if nested { - return t.S().Muted.Render(ansi.Truncate(mainParam, paramsWidth, "...")) + return t.S().Muted.Render(ansi.Truncate(mainParam, paramsWidth, "…")) } - return t.S().Subtle.Render(ansi.Truncate(mainParam, paramsWidth, "...")) + return t.S().Subtle.Render(ansi.Truncate(mainParam, paramsWidth, "…")) } // earlyState returns immediately‑rendered error/cancelled/ongoing states. @@ -651,7 +663,7 @@ func renderPlainContent(v *toolCallCmp, content string) string { out = append(out, t.S().Muted. Background(t.BgBaseLighter). Width(width). - Render(fmt.Sprintf("... (%d lines)", len(lines)-responseContextHeight))) + Render(fmt.Sprintf("… (%d lines)", len(lines)-responseContextHeight))) } return strings.Join(out, "\n") }