Skip to content

feat(ci-ui): GitHub-style job cards with each step's log nested under it - #682

Merged
zackees merged 2 commits into
mainfrom
feat/widget-step-logs
Oct 22, 2026
Merged

zackees merged 2 commits into
mainfrom
feat/widget-step-logs

Conversation

@zackees

@zackees zackees commented Oct 17, 2026

Copy link
Copy Markdown
Owner

Each job on the CI page is now a card, and each step's log opens directly beneath that step, as on GitHub Actions.

  • Job cards: each card is headed by the job's name, outcome and duration, instead of the raw @job-… key.
  • Steps: each step is a collapsible row with a chevron, status icon, name and duration. Opening it shows that step's own log with numbered lines, fetched through the existing job/section filter. stderr lines are red.
  • Failures and live updates: failed jobs and steps open on first view, and rows you open or close stay that way while the page updates live.
  • Full log: the whole-run log moves to a collapsed "Full log" section.
  • Lockfile: carries the same yanked inout fix as fix(widget): the activity panel always opens; redesign it #681, so whichever PR merges second rebases cleanly over it.

Checked against a real failed run in the live dashboard, and the local gate passes.

Jobs are cards headed by name, outcome and duration; each step is a
collapsible row (chevron, status icon, name, duration) whose own
line-numbered log opens beneath it, fetched by the existing job/section
filter. Failed jobs and steps open on first view, expansion survives the
live re-render, and the whole-run log moves to a collapsed 'Full log'.
(cherry picked from commit 81d43e9)
Local-Gate: v1 tree=e4106777d01e42a97ba09dc44f4a7b5883518758 secs=310 lanes=rust:run,tests:reused@fc87e982ed56
Ci-Attestation: {"at":1792200215,"gate":"rust/all/fmt","host":"linux-x86_64","key":"4c4c6b2017622ae8c8bd97e1a032ba8e5bdc593cfcd42f8139d5a6eb310ae126","lane":"rust","parents":["b974937ed86af363c2c0506b47690c5a5704d585"],"secs":310,"stamp":"ef54f4d100859ff7a8da84467a1388a5","tree":"e4106777d01e42a97ba09dc44f4a7b5883518758","v":1,"via":"run"}
Ci-Attestation: {"at":1792200215,"gate":"rust/all/boundary","host":"linux-x86_64","key":"4c4c6b2017622ae8c8bd97e1a032ba8e5bdc593cfcd42f8139d5a6eb310ae126","lane":"rust","parents":["b974937ed86af363c2c0506b47690c5a5704d585"],"secs":310,"stamp":"d98c998ff40df24dcd6bbbdac47346e6","tree":"e4106777d01e42a97ba09dc44f4a7b5883518758","v":1,"via":"run"}
Ci-Attestation: {"at":1792200215,"gate":"rust/x86_64-unknown-linux-gnu/clippy","host":"linux-x86_64","key":"4c4c6b2017622ae8c8bd97e1a032ba8e5bdc593cfcd42f8139d5a6eb310ae126","lane":"rust","parents":["b974937ed86af363c2c0506b47690c5a5704d585"],"secs":310,"stamp":"252129c3a1c2dd8e9f0d5e300124a302","tree":"e4106777d01e42a97ba09dc44f4a7b5883518758","v":1,"via":"run"}
Ci-Attestation: {"at":1792200215,"gate":"rust/x86_64-unknown-linux-gnu/test","host":"linux-x86_64","key":"4c4c6b2017622ae8c8bd97e1a032ba8e5bdc593cfcd42f8139d5a6eb310ae126","lane":"rust","parents":["b974937ed86af363c2c0506b47690c5a5704d585"],"secs":310,"stamp":"106fac07dcd91da286c94ee56485fbb0","tree":"e4106777d01e42a97ba09dc44f4a7b5883518758","v":1,"via":"run"}
Ci-Attestation: {"at":1792199889,"gate":"python/all/static","host":"linux-x86_64","key":"fc87e982ed56ef51fa88c31aedaa0c365cffe848167f5bd2b4a0f1c5c4750e9a","lane":"tests","parents":["b974937ed86af363c2c0506b47690c5a5704d585"],"secs":null,"stamp":"453ff68b1bb74c80d24385efb4f4940e","tree":"e4106777d01e42a97ba09dc44f4a7b5883518758","v":1,"via":"reused"}
Ci-Attestation: {"at":1792199889,"gate":"general/all/ci-policy","host":"linux-x86_64","key":"fc87e982ed56ef51fa88c31aedaa0c365cffe848167f5bd2b4a0f1c5c4750e9a","lane":"tests","parents":["b974937ed86af363c2c0506b47690c5a5704d585"],"secs":null,"stamp":"37f80f8fab930b00d6bcd4ee2f9c91be","tree":"e4106777d01e42a97ba09dc44f4a7b5883518758","v":1,"via":"reused"}
Ci-Attestation: {"at":1792199889,"gate":"python/x86_64-unknown-linux-gnu/test","host":"linux-x86_64","key":"fc87e982ed56ef51fa88c31aedaa0c365cffe848167f5bd2b4a0f1c5c4750e9a","lane":"tests","parents":["b974937ed86af363c2c0506b47690c5a5704d585"],"secs":null,"stamp":"ca3bde6886ec8fa7b354bbeae3c035b4","tree":"e4106777d01e42a97ba09dc44f4a7b5883518758","v":1,"via":"reused"}
@zackees
zackees merged commit f6b39b6 into main Oct 22, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant