You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Deployment steps now show a cyan rotating block, readable labels, dim elapsed time, and measured replica progress. Nested health and drain waits retain the parent count on one live line; completed steps remain in scrollback. Narrow terminals preserve counts and timing while shortening labels.
Pipes, CI, and TERM=dumb receive static updates. ONEBOX_NO_ANIMATION=1 disables animation independently of NO_COLOR. This uses the existing Lip Gloss and Charm ANSI dependencies; no new package is introduced.
Adds a local demo (go run ./scripts/ui-demo, or -fail) and updates the first-deploy guide, README illustrations, and landing-page replay to match the CLI.
Why this is correct
Replica progress advances from observed replacements and old-replica retirement. The final segment is reserved until slot assignment succeeds, so a failed healthcheck or incomplete finalization cannot report completion.
Tests cover successful and failed rolls, nested cursor ownership, parent restoration, stopped updates, plain-output deduplication, unknown totals, and narrow Unicode terminals. Manual PTY checks covered success/failure output, interrupt cleanup, 40-column output, CI, TERM=dumb, static output, and NO_COLOR. The website and SVG illustrations were visually checked.
Validation: just ci, just e2e (Docker, 293 seconds on the final engine changes), go test -race ./internal/ui ./internal/engine -count=1 (706 passing tests), and git diff --check pass locally. The full CI gate includes unit tests, vet, lint, vulnerability and workflow checks, environment namespace checks, generated documentation verification, and the website build. PTY smoke checks cover animation controls, narrow terminals, interruption, and success/failure output.
Regression coverage verifies very narrow lines prioritize counts/timing and cursor restoration honors the renderer's animation controls. Explicit tests and real PTY output verify CI=FALSE and CI=0 select static output; documentation covers presence semantics and the exact CI=false opt-out.
Direct rollback, interrupted-release recovery, and secret-generation replacement own timed workload steps so their results remain in scrollback. Tests verify single completion lines and failed-healthcheck output. Normal deployment retains its existing single step. Secret-generation completion includes the replacement postconditions. The landing replay includes the completed migration job, matching the CLI and README example.
An independent local review found no actionable issues. Copilot's latest review on commit 5b845e8 recommends approval and reports no findings; all review threads are resolved. All five GitHub CI checks pass on this commit, including Docker end-to-end tests and Linux, macOS, and Windows CLI smoke tests.
Effect on the safety envelope
None. These changes add presentation and progress reporting without changing deployment mutations or the supported capabilities. JSON and NDJSON contracts remain unchanged.
Checklist
just check passes locally.
Tests cover the new behaviour, including the failure paths.
Generated documentation is current (just check verifies this).
CLA acceptance to be verified by the repository bot; no agreement is accepted on the user's behalf.
Keep replica counts visible during nested health and drain waits, and reserve completion until retirement and slot assignment succeed. Add readable active steps, static output controls, and a local demo; align documentation and website examples with the CLI.
Prioritize replica counts and elapsed time when an extremely narrow terminal cannot fit the normal live line. Share animation controls with cursor restoration so static modes do not emit cursor control sequences.
Cover CI=FALSE, CI=0, and arbitrary non-empty values explicitly. Document that only the exact CI=false value opts out of CI mode, matching the renderer and cursor restoration checks.
Direct role rolls erase successful completion from TTY scrollback
internal/engine/roll.go:139
rollRoleForRelease is also called directly by rollback/recovery and secret-generation paths (for example releaseRoles and restoreReleaseRoles), where there is no enclosing Step to emit a completion line. On an animated TTY this Progress is erased by stop() on success, so those successful rolls leave no completed workload step in scrollback, contrary to the new output contract. Add an enclosing timed step at each direct caller, or otherwise provide a success finalization without duplicating the deploy-path step.
Direct rollback, interrupted-release recovery, and secret-generation replacement now own timed UI steps. Successful or failed rolls remain in scrollback after live progress clears, while normal deploy keeps its existing single completion step.
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
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.
What this changes
Deployment steps now show a cyan rotating block, readable labels, dim elapsed time, and measured replica progress. Nested health and drain waits retain the parent count on one live line; completed steps remain in scrollback. Narrow terminals preserve counts and timing while shortening labels.
Pipes, CI, and
TERM=dumbreceive static updates.ONEBOX_NO_ANIMATION=1disables animation independently ofNO_COLOR. This uses the existing Lip Gloss and Charm ANSI dependencies; no new package is introduced.Adds a local demo (
go run ./scripts/ui-demo, or-fail) and updates the first-deploy guide, README illustrations, and landing-page replay to match the CLI.Why this is correct
Replica progress advances from observed replacements and old-replica retirement. The final segment is reserved until slot assignment succeeds, so a failed healthcheck or incomplete finalization cannot report completion.
Tests cover successful and failed rolls, nested cursor ownership, parent restoration, stopped updates, plain-output deduplication, unknown totals, and narrow Unicode terminals. Manual PTY checks covered success/failure output, interrupt cleanup, 40-column output, CI,
TERM=dumb, static output, andNO_COLOR. The website and SVG illustrations were visually checked.Validation:
just ci,just e2e(Docker, 293 seconds on the final engine changes),go test -race ./internal/ui ./internal/engine -count=1(706 passing tests), andgit diff --checkpass locally. The full CI gate includes unit tests, vet, lint, vulnerability and workflow checks, environment namespace checks, generated documentation verification, and the website build. PTY smoke checks cover animation controls, narrow terminals, interruption, and success/failure output.Regression coverage verifies very narrow lines prioritize counts/timing and cursor restoration honors the renderer's animation controls. Explicit tests and real PTY output verify
CI=FALSEandCI=0select static output; documentation covers presence semantics and the exactCI=falseopt-out.Direct rollback, interrupted-release recovery, and secret-generation replacement own timed workload steps so their results remain in scrollback. Tests verify single completion lines and failed-healthcheck output. Normal deployment retains its existing single step. Secret-generation completion includes the replacement postconditions. The landing replay includes the completed migration job, matching the CLI and README example.
An independent local review found no actionable issues. Copilot's latest review on commit
5b845e8recommends approval and reports no findings; all review threads are resolved. All five GitHub CI checks pass on this commit, including Docker end-to-end tests and Linux, macOS, and Windows CLI smoke tests.Effect on the safety envelope
None. These changes add presentation and progress reporting without changing deployment mutations or the supported capabilities. JSON and NDJSON contracts remain unchanged.
Checklist
just checkpasses locally.just checkverifies this).