Repository navigation
feat(ui): show each deployment's steps live as a timeline - #423
Open
PiquelChips wants to merge 5 commits into
Open
PiquelChips wants to merge 5 commits into
PiquelChips wants to merge 5 commits into
Conversation
Contributor
|
Warning Review limit reachedYou've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Next included review available in 59 minutes. View limit details
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. |
PiquelChips
force-pushed
the
feat/timeline-4-ui
branch
from
November 10, 2026 15:25
b5706a8 to
77eeba8
Compare
PiquelChips
changed the base branch from
feat/timeline-2-api
to
feat/timeline-3-cli
November 10, 2026 15:25
PiquelChips
force-pushed
the
feat/timeline-4-ui
branch
from
November 10, 2026 19:40
0afc913 to
6928ee7
Compare
PiquelChips
force-pushed
the
feat/timeline-4-ui
branch
2 times, most recently
from
November 10, 2026 20:32
4d2d9b8 to
77b9162
Compare
PiquelChips
marked this pull request as ready for review
November 10, 2026 20:33
PiquelChips
force-pushed
the
feat/timeline-4-ui
branch
2 times, most recently
from
November 10, 2026 22:13
9cfd476 to
512df3a
Compare
PiquelChips
force-pushed
the
feat/timeline-4-ui
branch
2 times, most recently
from
November 13, 2026 15:00
76b9c04 to
5244d47
Compare
While a deployment runs, its environment's page follows it above the tabs: its state, a segment per step, the steps done and running, the time it has run, about how long is left and how long it usually takes. Below, its steps lie on one time axis by stage, each bar beside a dashed outline of its usual duration, with the line of now; the steps left are placed where they should run, forecast ones marked until the deployment plans them. The running step is detailed, with the end of its output for builds and jobs, and the operation's events arrive in a live feed. The tab title shows the progress, then ✓. A deployment's Timeline tab shows the same steps, and Preview lists the planned steps the same way. Each open timeline holds one timeline stream, closed once the operation ended, and one clock ticking every second while it runs. Rows are keyed by step and read their own memo, so a snapshot only redraws the rows it changed; bars and the line of now move through CSS transitions. `Phase::label`, `Stage::label` and `StepKey::label` name steps in core, and `Timeline::usual_ms` adds up the usual durations as `remaining_ms` does.
A running deployment no longer shows above its environment's tabs. Each deployment has its own page instead, at `…/environments/<environment>/deployments/<operation>` (or under `/previews/`), so it can be linked, bookmarked and left with Back. Its header has the deployment's state, origin, commit, revision and release, then a segment per step, the steps done and running, the time elapsed, about how long is left and how long it usually takes; the tab title follows it. Its Timeline tab holds the waterfall, the shown step's detail and the live events, which link to all of them; Details, Snapshot and Attempts, the tabs of the old expandable card, follow, and Restore sits in the header, opening the restoring deployment's page. The Deployments tab lists a row per deployment, opening its page: its state, title, commit, revision and flags, and how long it ran, or while it runs, its steps done, time left and a segment per step. The Overview tab shows the same progress while a deployment runs, linking to its page. The overview's recent deployments, a release's environments and the environment list's latest deployment link to deployment pages too. The environment page follows its running deployment with one timeline stream, opened only while one runs and shared by its Overview and its Deployments row; the deployment page holds its own. `Progress::steps` and `Progress::outlook` word progress for both.
Starting, stopping or reconciling an environment runs its latest operation again under its ID. The Overview's progress card and the deployment page stopped following it once its timeline ended, so they never showed the new run. They now reconnect when the polled operation runs again, or ran again between two polls, which a newer attempt shows, and the deployment page's live events resume after the last one they showed.
…mezone The screenshot helper stamped live events from the documented date parsed in the test runner's local time, so a runner outside UTC drew other times than CI and recorded screenshots CI found outdated. It now starts from a fixed instant.
Rust 1.100's clippy flags `map(..).unwrap_or_default()`, which the deployment timeline used once.
PiquelChips
force-pushed
the
feat/timeline-4-ui
branch
from
November 13, 2026 20:05
5244d47 to
c7f36a6
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
While a deployment ran, the dashboard only showed a phase name that changed now and then. You couldn't see which steps were done or left, which step was slow, or roughly when it would finish.
Now each deployment has its own page, at
…/environments/<environment>/deployments/<operation>(or…/previews/<preview>/deployments/<operation>), so its address can be shared, bookmarked, and left with Back. Its header shows the deployment's state, where it came from, its commit, revision and release, a segmented progress bar, the steps done and running, the time elapsed, about how long is left, and how long it usually takes. The tab title shows progress, then ✓.Its Timeline tab is a waterfall of its steps, grouped by stage on one time axis. Each bar sits beside a dashed outline of its usual duration, slow steps are highlighted, and a line marks now. Steps left are placed where they should run; forecast steps are marked as such until the deployment plans them, and steps a new plan adds flash briefly. The running step's detail follows live, or a picked step stays shown until you click Follow live. Builds and jobs show the end of their output. The operation's events stream into a live feed beside it, which links to all of them. Details, Snapshot and Attempts, which used to be tabs of an expandable card, are the page's other tabs, and Restore sits in its header; restoring opens the new deployment's page.
The Deployments tab is now a list of rows, one per deployment: its state, title, commit, revision, flags and how long it ran, or while it runs, its steps done, time left and a mini progress bar. Selecting a row opens the deployment's page. While a deployment runs, the environment's Overview tab shows the same compact progress at the top, linking to its page. The latest deployment in the application's environment list, the overview's recent deployments, and a release's "Deployed to" list link to deployment pages too. Nothing is shown above the environment's tabs anymore. The plan preview lists its planned steps the same way as the waterfall.
Performance: the deployment page holds one
EventSourcefor its timeline, closed once the operation has ended, and the feed one more. The environment page follows its running deployment with a single timeline stream, opened only while one runs, which both its Overview and its Deployments row read, so no compact element opens its own. A single one-second clock drives every running bar; the motion between ticks comes from CSS transitions. Rows are keyed per step and each has its own memo, so a snapshot only redraws the rows that changed. The feed keeps 50 events and draws bursts in one frame.Swarm task lanes and downtime aren't shown yet: the step detail has a marked place for them once the timeline records that data.
Proved in the browser on a dev instance: deployment rows and pages, the Overview card, and Stop/Start reruns (caught within one poll even when shorter than it), plus Playwright 74/74.
Reviewed with review-loop: 3 rounds with 3× Claude Opus 5.5 (GPT 6.1 Sol was out of credits; a Sol pass is still owed). Verdict: approved
Note
Written by Claude Opus 5.5 in Claude Code and reviewed by Claude Opus 5.5 (via T3 Code)