feat(ui): show a run's jobs, progress and logs in Actions #131

Merged
deadstyle merged 2 commits from feature/130-actions-jobs-logs into develop 2026-10-10 16:45:03 -05:00
Owner

Summary

In the Actions box, a run's Overview now lists its jobs (status icon, name, attempt) with the cursor on the first failed job. j/k pick a job and l opens its log on a new Logs tab (last 256 KiB, opens at the end, follows while the run is going). A running run refreshes its jobs and log every 3 seconds. Hosts that can't serve logs show jobs but no Logs tab.

Refs #130

Verification

make check passes (format, lint, go test -race, build, windows vet/build). New tests cover jobs and log fetch, the log tail past the cap, job-first selection, the Logs tab, a host without logs, polling (one chain only), and the failed-log pane. Layout was reasoned from the code and screen-text tests, not observed in a live terminal.

Review

Three fresh reviewers ran. Fixed: log read kept the head not the tail, CRLF logs rendered blank, a run switch could double the poll chain, a failed refresh replaced good data, log cleaning ran in Update, restating comments. Dismissed: per-job duration (spec AC corrected on the ticket: the API gives none), job-list scroll-into-view and retrying a failed log of a finished run (follow-ups, not regressions), logsTab constant (now commented).

Docs

docs/design.md records the Logs tab and job list; Logs tab removed from "After v1". architecture.md and ADRs: no change needed.

🤖 Generated with Claude Code

https://claude.ai/code/session_01QroTgMufdgxA2Q91gDAoAJ

## Summary In the Actions box, a run's Overview now lists its jobs (status icon, name, attempt) with the cursor on the first failed job. `j`/`k` pick a job and `l` opens its log on a new Logs tab (last 256 KiB, opens at the end, follows while the run is going). A running run refreshes its jobs and log every 3 seconds. Hosts that can't serve logs show jobs but no Logs tab. Refs #130 ## Verification `make check` passes (format, lint, `go test -race`, build, windows vet/build). New tests cover jobs and log fetch, the log tail past the cap, job-first selection, the Logs tab, a host without logs, polling (one chain only), and the failed-log pane. Layout was reasoned from the code and screen-text tests, not observed in a live terminal. ## Review Three fresh reviewers ran. Fixed: log read kept the head not the tail, CRLF logs rendered blank, a run switch could double the poll chain, a failed refresh replaced good data, log cleaning ran in Update, restating comments. Dismissed: per-job duration (spec AC corrected on the ticket: the API gives none), job-list scroll-into-view and retrying a failed log of a finished run (follow-ups, not regressions), `logsTab` constant (now commented). ## Docs `docs/design.md` records the Logs tab and job list; Logs tab removed from "After v1". architecture.md and ADRs: no change needed. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01QroTgMufdgxA2Q91gDAoAJ
Refs #130

A run's Overview lists its jobs with status icons, and a Logs tab shows
the picked job's output. A running run refreshes itself every few seconds.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QroTgMufdgxA2Q91gDAoAJ
fix(ui): keep the end of long logs, one poll chain, calm refresh failures
All checks were successful
ci / check (pull_request) Successful in 1m40s
a3243ba3cb
Refs #130

Review fixes: read a log's real tail instead of its head, handle CRLF
logs, clean logs in the load command, keep the last good jobs and log
when a refresh fails, and never run two poll chains.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01QroTgMufdgxA2Q91gDAoAJ
deadstyle merged commit 78c76f726e into develop 2026-10-10 16:45:03 -05:00
deadstyle deleted branch feature/130-actions-jobs-logs 2026-10-10 16:45:03 -05:00
Sign in to join this conversation.
No description provided.