fix: #22 TUI: Output-Pane rendert bei langer Ausgabe nur als schmaler Textstreifen #23

Merged
frank merged 1 commit from agent/issue-22-tui-output-pane-rendert-bei-langer-ausga into main 2026-07-12 12:39:40 +02:00
Owner

Closes #22

Automated by forge agent (cursor-agent).

Closes #22 Automated by forge agent (`cursor-agent`).
fix(agent): prevent TUI output pane from collapsing to narrow wrap
All checks were successful
CI / test (pull_request) Successful in 25s
CI / race (pull_request) Successful in 25s
8d717209d2
Correct output viewport geometry against panel borders and stop re-wrapping
viewport output through lipgloss Width(), which broke ANSI agent logs.

Co-authored-by: Cursor <cursoragent@cursor.com>
Author
Owner

🔗 Linked to issue #22. Babysitting CI until green…

🔗 Linked to issue #22. Babysitting CI until green…
Author
Owner

forge agent finished implementation

  • Commit: fix(agent): prevent TUI output pane from collapsing to narrow wrap
  • Pull request: #23
  • Next: waiting for CI / babysitting fixes if needed
internal/agent/tui.go            | 72 +++++++++++++++++++++++++++++---------
 internal/agent/tui_repro_test.go | 75 ++++++++++++++++++++++++++++++++++++++++
 internal/agent/tui_test.go       | 16 +++++++--
 3 files changed, 144 insertions(+), 19 deletions(-)
Agent output (tail)
Ich untersuche zuerst die TUI-Implementierung und die Output-Pane, um die Ursache für den schmalen Textstreifen zu finden.
Die Output-Pane wird vermutlich doppelt per Lipgloss gewrappt und die Viewport-Breite passt nicht zum Panel — ich prüfe das und setze die Korrektur um.
Ich setze die Korrektur um: Viewport-Geometrie präzisieren, Output vor dem Setzen umbrechen und doppeltes Lipgloss-Wrapping vermeiden.
**PR_TITLE:** fix(agent): TUI-Output-Pane nutzt volle Breite bei langen Agent-Logs
**PR_BODY:**
## Summary
- Korrigiert die Viewport-Geometrie der Output-Pane anhand der tatsächlichen Panel-Rahmen (Border/Padding), sodass der Scrollbereich nicht breiter als der verfügbare Innenbereich ist.
- Verhindert doppeltes Lipgloss-Wrapping: `viewport.View()` wird nicht mehr in ein zweites `Width()`-Panel gelegt, was bei ANSI-formatierten ACP-Logs zu buchstabenweisem Umbrechen führte.
- Bricht lange Log-Zeilen vor dem Setzen in den Viewport um; Titel und Metriken werden separat oberhalb des Viewports gerendert.
## Hinweis zu `peer connection closed`
Die Meldung stammt vom ACP-SDK beim normalen Session-Ende und ist kein Layout-Bug. Sie erscheint oft zeitgleich mit dem Job-Ende, war aber nicht die Ursache für den schmalen Textstreifen.
## Test plan
- [x] `go test ./internal/agent/`
- [x] `go test ./...`
- [ ] Manuell: `forge agent watch --pr --agent cursor-agent --user agent --tui` mit laufendem Job öffnen, Run-Detail anzeigen, bis zum Ende scrollen und prüfen, dass die Output-Pane die volle Breite nutzt
---
### Kurzfassung
Die Output-Pane der Agent-TUI brach bei langen ACP-Logs auf einen kaum lesbaren, schmalen Textstreifen zusammen. Ursache war eine falsche Viewport-Breite (2 Zeichen zu breit) und ein zweites Lipgloss-`Width()`-Wrapping über bereits gerenderten Viewport-Output mit ANSI-Codes.
Der Fix berechnet die Geometrie korrekt, wrappt Log-Zeilen einmalig vor `SetContent`, und rendert Titel/Metriken getrennt vom Viewport ohne erneutes Umbrechen. Regressionstests für das Issue-#22-Szenario sind dabei.
✅ **forge agent finished implementation** - Commit: `fix(agent): prevent TUI output pane from collapsing to narrow wrap` - Pull request: https://repository.hildebrandt.io/frank/forgecli/pulls/23 - Next: waiting for CI / babysitting fixes if needed ``` internal/agent/tui.go | 72 +++++++++++++++++++++++++++++--------- internal/agent/tui_repro_test.go | 75 ++++++++++++++++++++++++++++++++++++++++ internal/agent/tui_test.go | 16 +++++++-- 3 files changed, 144 insertions(+), 19 deletions(-) ``` <details><summary>Agent output (tail)</summary> ``` Ich untersuche zuerst die TUI-Implementierung und die Output-Pane, um die Ursache für den schmalen Textstreifen zu finden. Die Output-Pane wird vermutlich doppelt per Lipgloss gewrappt und die Viewport-Breite passt nicht zum Panel — ich prüfe das und setze die Korrektur um. Ich setze die Korrektur um: Viewport-Geometrie präzisieren, Output vor dem Setzen umbrechen und doppeltes Lipgloss-Wrapping vermeiden. **PR_TITLE:** fix(agent): TUI-Output-Pane nutzt volle Breite bei langen Agent-Logs **PR_BODY:** ## Summary - Korrigiert die Viewport-Geometrie der Output-Pane anhand der tatsächlichen Panel-Rahmen (Border/Padding), sodass der Scrollbereich nicht breiter als der verfügbare Innenbereich ist. - Verhindert doppeltes Lipgloss-Wrapping: `viewport.View()` wird nicht mehr in ein zweites `Width()`-Panel gelegt, was bei ANSI-formatierten ACP-Logs zu buchstabenweisem Umbrechen führte. - Bricht lange Log-Zeilen vor dem Setzen in den Viewport um; Titel und Metriken werden separat oberhalb des Viewports gerendert. ## Hinweis zu `peer connection closed` Die Meldung stammt vom ACP-SDK beim normalen Session-Ende und ist kein Layout-Bug. Sie erscheint oft zeitgleich mit dem Job-Ende, war aber nicht die Ursache für den schmalen Textstreifen. ## Test plan - [x] `go test ./internal/agent/` - [x] `go test ./...` - [ ] Manuell: `forge agent watch --pr --agent cursor-agent --user agent --tui` mit laufendem Job öffnen, Run-Detail anzeigen, bis zum Ende scrollen und prüfen, dass die Output-Pane die volle Breite nutzt --- ### Kurzfassung Die Output-Pane der Agent-TUI brach bei langen ACP-Logs auf einen kaum lesbaren, schmalen Textstreifen zusammen. Ursache war eine falsche Viewport-Breite (2 Zeichen zu breit) und ein zweites Lipgloss-`Width()`-Wrapping über bereits gerenderten Viewport-Output mit ANSI-Codes. Der Fix berechnet die Geometrie korrekt, wrappt Log-Zeilen einmalig vor `SetContent`, und rendert Titel/Metriken getrennt vom Viewport ohne erneutes Umbrechen. Regressionstests für das Issue-#22-Szenario sind dabei. ``` </details>
frank merged commit 9a37573e16 into main 2026-07-12 12:39:40 +02:00
frank deleted branch agent/issue-22-tui-output-pane-rendert-bei-langer-ausga 2026-07-12 12:39:40 +02:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
frank/forgecli!23
No description provided.