diff --git a/packages/tui/internal/components/chat/message.go b/packages/tui/internal/components/chat/message.go index ee3535ad..b5579883 100644 --- a/packages/tui/internal/components/chat/message.go +++ b/packages/tui/internal/components/chat/message.go @@ -225,6 +225,9 @@ func renderText( bg = t.BackgroundPanel() } ts = time.UnixMilli(int64(casted.Time.Created)) + if casted.Time.Completed > 0 { + ts = time.UnixMilli(int64(casted.Time.Completed)) + } content = util.ToMarkdown(text, width, bg) if isThinking { content = styles.NewStyle().Background(bg).Foreground(t.TextMuted()).Render("Thinking") + "\n\n" + content @@ -333,7 +336,7 @@ func renderText( timestamp = timestamp[12:] } - // Check if this is an assistant message with mode (agent) information + // Check if this is an assistant message with agent information var modelAndAgentSuffix string if assistantMsg, ok := message.(opencode.AssistantMessage); ok && assistantMsg.Mode != "" { // Find the agent index by name to get the correct color @@ -349,17 +352,15 @@ func renderText( agentColor := util.GetAgentColor(agentIndex) // Style the agent name with the same color as status bar - agentName := strings.Title(assistantMsg.Mode) - styledAgentName := styles.NewStyle().Foreground(agentColor).Bold(true).Render(agentName) - modelAndAgentSuffix = fmt.Sprintf(" | %s | %s", assistantMsg.ModelID, styledAgentName) + agentName := cases.Title(language.Und).String(assistantMsg.Mode) + styledAgentName := styles.NewStyle().Foreground(agentColor).Render(agentName) + modelAndAgentSuffix = fmt.Sprintf("%s %s", styledAgentName, assistantMsg.ModelID) } var info string if modelAndAgentSuffix != "" { - // For assistant messages: "timestamp | modelID | agentName" - info = fmt.Sprintf("%s%s", timestamp, modelAndAgentSuffix) + info = fmt.Sprintf("%s (%s)", modelAndAgentSuffix, timestamp) } else { - // For user messages: "author (timestamp)" info = fmt.Sprintf("%s (%s)", author, timestamp) } info = styles.NewStyle().Foreground(t.TextMuted()).Render(info)