bug(agent): Git-/Pipeline-Output läuft unter der TUI am Bildschirmrand aus #9

Closed
opened 2026-07-12 10:16:59 +02:00 by frank · 1 comment
Owner

Symptom

Während forge agent watch --tui erscheinen Log-/Git-Ausgaben außerhalb der TUI am unteren Bildschirmrand (unter bzw. hinter dem Alt-Screen), statt ausschließlich im TUI-Output-Panel.

Beispiel (beobachtet beim Worktree-/Push-/CI-Schritt):

Preparing worktree (new branch 'agent/issue-6-agent-runner-usage-limit-überwachung-fü')
HEAD is now at 6cb8ea0 Merge pull request 'feat(agent): terminal TUI for forge agent watch (#5)' (#7) from …
Enumerating objects: 23, done.
Counting objects: 100% (23/23), done.
…
Writing objects: 100% (13/13), 7.13 KiB | 7.13 MiB/s, done.
…
To https://repository.hildebrandt.io/frank/forgecli.git
 * [new branch]      agent/issue-6-… -> agent/issue-6-…
branch 'agent/issue-6-…' set up to track 'origin/agent/issue-6-…'.
waiting for CI on frank/forgecli (agent/issue-6-…)…

Die TUI bleibt sichtbar, aber der Terminal-Hintergrund darunter wird mit rohem stderr/stdout „verschmiert“ (inkl. Progress-Zeilen mit Carriage Returns).

Erwartetes Verhalten

Alles Watcher-/Pipeline-/Git-/Agent-Logging muss zwingend innerhalb des TUI-Fensters (Live-Output-Panel) landen.

  • Kein Bypass auf das echte Terminal (os.Stdout / os.Stderr) solange die TUI aktiv ist
  • Kein Overflow / Bleed unter dem Alt-Screen
  • Progress-Ausgaben (z. B. git push Counting/Compressing) gehören ebenfalls ins TUI-Panel, nicht auf den Host-Terminal

Wahrscheinliche Ursache

Mehrere Pfade schreiben noch direkt auf stderr statt über WatchStatus.RunLogWriter():

  • internal/agent/gitflow.go: cmd.Stdout / cmd.Stderr = os.Stderr (Worktree, Commit, Push, …)
  • Watcher.logf / Pipeline.logf / Forge.logf: Fallback auf os.Stderr
  • CI-Meldungen wie waiting for CI … laufen über dieselben Logger

Die TUI (tea.WithAltScreen()) rendert nur den eigenen Viewport; parallel geschriebenes stderr erscheint darunter.

Akzeptanzkriterien

  • Mit --tui geht kein Pipeline-/Git-/CI-/Watcher-Output mehr am echten Terminal vorbei
  • Worktree-Prepare, Push-Progress und waiting for CI … erscheinen nur im TUI-Output-Panel
  • Nach Quit/Crash hinterlässt die Session keinen „verschmierten“ Alt-Screen-Bleed (Terminal sauber restored)
  • Ohne --tui bleibt bisheriges stderr-Logging unverändert
  • Kurzer manueller Repro-/Fix-Hinweis in PR (Watch mit Git-Push + CI-Wait)

Repro

  1. forge agent watch --tui gegen ein Repo mit Git-Mode PR/Commit
  2. Issue verarbeiten lassen, bis Worktree + Push + CI-Wait laufen
  3. Beobachten: Output erscheint am unteren Terminalrand außerhalb der TUI-Panels

Bezug

  • Feature: #5 (agent: terminalfüllende TUI für forge agent watch)
  • Code: internal/agent/tui.go, internal/agent/gitflow.go, internal/agent/status.go (RunLogWriter)
## Symptom Während `forge agent watch --tui` erscheinen Log-/Git-Ausgaben **außerhalb** der TUI am unteren Bildschirmrand (unter bzw. hinter dem Alt-Screen), statt ausschließlich im TUI-Output-Panel. Beispiel (beobachtet beim Worktree-/Push-/CI-Schritt): ``` Preparing worktree (new branch 'agent/issue-6-agent-runner-usage-limit-überwachung-fü') HEAD is now at 6cb8ea0 Merge pull request 'feat(agent): terminal TUI for forge agent watch (#5)' (#7) from … Enumerating objects: 23, done. Counting objects: 100% (23/23), done. … Writing objects: 100% (13/13), 7.13 KiB | 7.13 MiB/s, done. … To https://repository.hildebrandt.io/frank/forgecli.git * [new branch] agent/issue-6-… -> agent/issue-6-… branch 'agent/issue-6-…' set up to track 'origin/agent/issue-6-…'. waiting for CI on frank/forgecli (agent/issue-6-…)… ``` Die TUI bleibt sichtbar, aber der Terminal-Hintergrund darunter wird mit rohem stderr/stdout „verschmiert“ (inkl. Progress-Zeilen mit Carriage Returns). ## Erwartetes Verhalten **Alles** Watcher-/Pipeline-/Git-/Agent-Logging muss zwingend **innerhalb** des TUI-Fensters (Live-Output-Panel) landen. - Kein Bypass auf das echte Terminal (`os.Stdout` / `os.Stderr`) solange die TUI aktiv ist - Kein Overflow / Bleed unter dem Alt-Screen - Progress-Ausgaben (z. B. `git push` Counting/Compressing) gehören ebenfalls ins TUI-Panel, nicht auf den Host-Terminal ## Wahrscheinliche Ursache Mehrere Pfade schreiben noch direkt auf stderr statt über `WatchStatus.RunLogWriter()`: - `internal/agent/gitflow.go`: `cmd.Stdout` / `cmd.Stderr = os.Stderr` (Worktree, Commit, Push, …) - `Watcher.logf` / `Pipeline.logf` / `Forge.logf`: Fallback auf `os.Stderr` - CI-Meldungen wie `waiting for CI …` laufen über dieselben Logger Die TUI (`tea.WithAltScreen()`) rendert nur den eigenen Viewport; parallel geschriebenes stderr erscheint darunter. ## Akzeptanzkriterien - [x] Mit `--tui` geht **kein** Pipeline-/Git-/CI-/Watcher-Output mehr am echten Terminal vorbei - [x] Worktree-Prepare, Push-Progress und `waiting for CI …` erscheinen nur im TUI-Output-Panel - [x] Nach Quit/Crash hinterlässt die Session keinen „verschmierten“ Alt-Screen-Bleed (Terminal sauber restored) - [x] Ohne `--tui` bleibt bisheriges stderr-Logging unverändert - [x] Kurzer manueller Repro-/Fix-Hinweis in PR (Watch mit Git-Push + CI-Wait) ## Repro 1. `forge agent watch --tui` gegen ein Repo mit Git-Mode PR/Commit 2. Issue verarbeiten lassen, bis Worktree + Push + CI-Wait laufen 3. Beobachten: Output erscheint am unteren Terminalrand außerhalb der TUI-Panels ## Bezug - Feature: #5 (`agent: terminalfüllende TUI für forge agent watch`) - Code: `internal/agent/tui.go`, `internal/agent/gitflow.go`, `internal/agent/status.go` (`RunLogWriter`)
Author
Owner

🤖 forge agent started

  • Agent: cursor-agent
  • Model: (default)
  • Mode: pr
  • Trigger: assignee=agent
  • Open ToDos: 5

bug(agent): Git-/Pipeline-Output läuft unter der TUI am Bildschirmrand aus — Während forge agent watch --tui erscheinen Log-/Git-Ausgaben außerhalb der TUI am unteren Bildschirmrand (unter bzw. hinter dem Alt-Screen), statt ausschließlich im TUI-Output-Panel.

🤖 **forge agent started** - Agent: `cursor-agent` - Model: `(default)` - Mode: `pr` - Trigger: `assignee=agent` - Open ToDos: 5 bug(agent): Git-/Pipeline-Output läuft unter der TUI am Bildschirmrand aus — Während `forge agent watch --tui` erscheinen Log-/Git-Ausgaben **außerhalb** der TUI am unteren Bildschirmrand (unter bzw. hinter dem Alt-Screen), statt ausschließlich im TUI-Output-Panel.
frank closed this issue 2026-07-12 11:14:12 +02:00
Sign in to join this conversation.
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#9
No description provided.