feat(agent): Done/Failed in Dashboard-Overview nur ohne geschlossenen PR #34

Merged
frank merged 1 commit from agent/issue-33-feat-agent-done-failed-in-dashboard-over into main 2026-07-12 16:52:04 +02:00
Owner

Summary

  • Done und Failed im Agent-Dashboard zeigen nur noch Issues ohne geschlossenen PR (merged/closed).
  • Issues ohne PR oder mit noch offenem PR bleiben sichtbar.
  • Der Watcher aktualisiert pro Poll einen Index offener PRs; TUI und Web-UI (/api/status) nutzen dieselbe WatchStatus.Snapshot-Logik.

Test plan

  • go test ./internal/agent/...
  • Unit-Tests für Snapshot-Filter (offener PR, geschlossener PR, kein PR, Commit-Mode)

Kurzfassung

Bei jedem Poll sammelt der Watcher offene PR-Nummern pro Repo (collectOpenPRIndex) und speichert sie in WatchStatus. In Snapshot werden Done-/Failed-Einträge im PR-Modus nur noch aufgenommen, wenn kein PRNumber gesetzt ist oder der zugehörige PR noch offen ist. TUI (formatDashboardOverview) und Web-UI lesen dieselben snap.Done/snap.Failed-Felder — keine separate UI-Logik nötig.

Closes #33

## Summary - **Done** und **Failed** im Agent-Dashboard zeigen nur noch Issues ohne geschlossenen PR (merged/closed). - Issues ohne PR oder mit noch offenem PR bleiben sichtbar. - Der Watcher aktualisiert pro Poll einen Index offener PRs; TUI und Web-UI (`/api/status`) nutzen dieselbe `WatchStatus.Snapshot`-Logik. ## Test plan - [x] `go test ./internal/agent/...` - [x] Unit-Tests für Snapshot-Filter (offener PR, geschlossener PR, kein PR, Commit-Mode) ## Kurzfassung Bei jedem Poll sammelt der Watcher offene PR-Nummern pro Repo (`collectOpenPRIndex`) und speichert sie in `WatchStatus`. In `Snapshot` werden Done-/Failed-Einträge im PR-Modus nur noch aufgenommen, wenn kein `PRNumber` gesetzt ist oder der zugehörige PR noch offen ist. TUI (`formatDashboardOverview`) und Web-UI lesen dieselben `snap.Done`/`snap.Failed`-Felder — keine separate UI-Logik nötig. Closes #33
feat(agent): hide Done/Failed overview entries with closed PRs
All checks were successful
CI / race (pull_request) Successful in 34s
CI / test (pull_request) Successful in 34s
008106d7db
Filter dashboard snapshot groups by open PR state so merged or closed
pull requests no longer linger in the TUI and web UI overview.

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

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

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

forge agent finished implementation

  • Commit: feat(agent): hide Done/Failed overview entries with closed PRs
  • Pull request: #34
  • Next: waiting for CI / babysitting fixes if needed
internal/agent/prfix.go       | 29 ++++++++++++++++
 internal/agent/status.go      | 55 +++++++++++++++++++++++++++++--
 internal/agent/status_test.go | 77 +++++++++++++++++++++++++++++++++++++++++++
 internal/agent/watcher.go     |  3 ++
 4 files changed, 162 insertions(+), 2 deletions(-)
Agent output (tail)
Ich schaue mir zuerst die Dashboard-Overview-Logik und die Snapshot-Felder `Done`/`Failed` an.
Ich implementiere die Filterlogik im gemeinsamen Snapshot und tracke offene PRs beim Poll.
Leere `openPRs`-Maps müssen „gepollt, keine offenen PRs“ bedeuten — nicht „noch unbekannt“.
Die Dashboard-Overview filtert **Done** und **Failed** jetzt nach offenen PRs — TUI und Web-UI nutzen denselben Snapshot.
TODO_DONE: Done listet nur Issues ohne geschlossenen PR
TODO_DONE: Failed listet nur Issues ohne geschlossenen PR
TODO_DONE: Issues mit geschlossenem PR erscheinen nicht mehr in Done/Failed
TODO_DONE: Verhalten in TUI-Overview (und konsistent in Status-Snapshot, falls geteilt)
PR_TITLE: feat(agent): Done/Failed in Dashboard-Overview nur ohne geschlossenen PR
PR_BODY:
## Summary
- **Done** und **Failed** im Agent-Dashboard zeigen nur noch Issues ohne geschlossenen PR (merged/closed).
- Issues ohne PR oder mit noch offenem PR bleiben sichtbar.
- Der Watcher aktualisiert pro Poll einen Index offener PRs; TUI und Web-UI (`/api/status`) nutzen dieselbe `WatchStatus.Snapshot`-Logik.
## Test plan
- [x] `go test ./internal/agent/...`
- [x] Unit-Tests für Snapshot-Filter (offener PR, geschlossener PR, kein PR, Commit-Mode)
## Kurzfassung
Bei jedem Poll sammelt der Watcher offene PR-Nummern pro Repo (`collectOpenPRIndex`) und speichert sie in `WatchStatus`. In `Snapshot` werden Done-/Failed-Einträge im PR-Modus nur noch aufgenommen, wenn kein `PRNumber` gesetzt ist oder der zugehörige PR noch offen ist. TUI (`formatDashboardOverview`) und Web-UI lesen dieselben `snap.Done`/`snap.Failed`-Felder — keine separate UI-Logik nötig.
✅ **forge agent finished implementation** - Commit: `feat(agent): hide Done/Failed overview entries with closed PRs` - Pull request: https://repository.hildebrandt.io/frank/forgecli/pulls/34 - Next: waiting for CI / babysitting fixes if needed ``` internal/agent/prfix.go | 29 ++++++++++++++++ internal/agent/status.go | 55 +++++++++++++++++++++++++++++-- internal/agent/status_test.go | 77 +++++++++++++++++++++++++++++++++++++++++++ internal/agent/watcher.go | 3 ++ 4 files changed, 162 insertions(+), 2 deletions(-) ``` <details><summary>Agent output (tail)</summary> ``` Ich schaue mir zuerst die Dashboard-Overview-Logik und die Snapshot-Felder `Done`/`Failed` an. Ich implementiere die Filterlogik im gemeinsamen Snapshot und tracke offene PRs beim Poll. Leere `openPRs`-Maps müssen „gepollt, keine offenen PRs“ bedeuten — nicht „noch unbekannt“. Die Dashboard-Overview filtert **Done** und **Failed** jetzt nach offenen PRs — TUI und Web-UI nutzen denselben Snapshot. TODO_DONE: Done listet nur Issues ohne geschlossenen PR TODO_DONE: Failed listet nur Issues ohne geschlossenen PR TODO_DONE: Issues mit geschlossenem PR erscheinen nicht mehr in Done/Failed TODO_DONE: Verhalten in TUI-Overview (und konsistent in Status-Snapshot, falls geteilt) PR_TITLE: feat(agent): Done/Failed in Dashboard-Overview nur ohne geschlossenen PR PR_BODY: ## Summary - **Done** und **Failed** im Agent-Dashboard zeigen nur noch Issues ohne geschlossenen PR (merged/closed). - Issues ohne PR oder mit noch offenem PR bleiben sichtbar. - Der Watcher aktualisiert pro Poll einen Index offener PRs; TUI und Web-UI (`/api/status`) nutzen dieselbe `WatchStatus.Snapshot`-Logik. ## Test plan - [x] `go test ./internal/agent/...` - [x] Unit-Tests für Snapshot-Filter (offener PR, geschlossener PR, kein PR, Commit-Mode) ## Kurzfassung Bei jedem Poll sammelt der Watcher offene PR-Nummern pro Repo (`collectOpenPRIndex`) und speichert sie in `WatchStatus`. In `Snapshot` werden Done-/Failed-Einträge im PR-Modus nur noch aufgenommen, wenn kein `PRNumber` gesetzt ist oder der zugehörige PR noch offen ist. TUI (`formatDashboardOverview`) und Web-UI lesen dieselben `snap.Done`/`snap.Failed`-Felder — keine separate UI-Logik nötig. ``` </details>
Author
Owner

☑️ ToDos checked off

  • Done listet nur Issues ohne geschlossenen PR
  • Failed listet nur Issues ohne geschlossenen PR
  • Issues mit geschlossenem PR erscheinen nicht mehr in Done/Failed
  • Verhalten in TUI-Overview (und konsistent in Status-Snapshot, falls geteilt)
☑️ **ToDos checked off** - [x] Done listet nur Issues ohne geschlossenen PR - [x] Failed listet nur Issues ohne geschlossenen PR - [x] Issues mit geschlossenem PR erscheinen nicht mehr in Done/Failed - [x] Verhalten in TUI-Overview (und konsistent in Status-Snapshot, falls geteilt)
Author
Owner
🟢 **CI green** (attempt 1/3) https://repository.hildebrandt.io/frank/forgecli/actions/runs/88
frank merged commit 9d332b6a16 into main 2026-07-12 16:52:04 +02:00
frank deleted branch agent/issue-33-feat-agent-done-failed-in-dashboard-over 2026-07-12 16:52:04 +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!34
No description provided.