mirror of
https://github.com/Twigpine/zero.git
synced 2026-11-12 08:41:32 -10:00
63 lines
1.6 KiB
Go
63 lines
1.6 KiB
Go
package tui
|
|
|
|
import "strings"
|
|
|
|
func (m model) toggleDetailedTranscript() model {
|
|
m.transcriptDetailed = !m.transcriptDetailed
|
|
m.clearSuggestions()
|
|
m.picker = nil
|
|
return m
|
|
}
|
|
|
|
func (m model) detailedTranscriptView() string {
|
|
width := chatWidth(m.width)
|
|
rc := buildRowContext(m.transcript)
|
|
renderer := m
|
|
renderer.pending = false
|
|
renderer.activeRunID = 0
|
|
|
|
var builder strings.Builder
|
|
builder.WriteString(detailedTranscriptHeader(width))
|
|
builder.WriteString("\n")
|
|
builder.WriteString(zeroTheme.line.Render(strings.Repeat("-", width)))
|
|
builder.WriteString("\n")
|
|
|
|
shownAny := false
|
|
for _, row := range m.transcript {
|
|
if rc.skip(row) {
|
|
continue
|
|
}
|
|
rendered := ""
|
|
if row.kind == rowWelcome {
|
|
rendered = fitStyledLine(zeroTheme.faint.Render(row.text), width)
|
|
} else {
|
|
rendered = renderer.renderRowDetailed(row, width, rc)
|
|
}
|
|
if rendered == "" {
|
|
continue
|
|
}
|
|
if shownAny && startsTurn(row.kind) {
|
|
builder.WriteString("\n")
|
|
}
|
|
builder.WriteString(rendered)
|
|
builder.WriteString("\n")
|
|
shownAny = true
|
|
}
|
|
|
|
if !shownAny {
|
|
builder.WriteString(zeroTheme.faint.Render("No transcript rows."))
|
|
builder.WriteString("\n")
|
|
}
|
|
|
|
builder.WriteString(zeroTheme.line.Render(strings.Repeat("-", width)))
|
|
builder.WriteString("\n")
|
|
builder.WriteString(fitStyledLine(zeroTheme.faint.Render("Esc close | Ctrl+O toggle"), width))
|
|
return builder.String()
|
|
}
|
|
|
|
func detailedTranscriptHeader(width int) string {
|
|
title := zeroTheme.ink.Bold(true).Render("Transcript")
|
|
hint := zeroTheme.faint.Render("detailed")
|
|
return fitStyledLine(joinHeaderLine(title, hint, width), width)
|
|
}
|