Repository navigation
Conversation
The fill jumped between stage boundaries (doneCount/3) so nothing moved while a stage ran. Each stage now owns a third of the track and the fill eases asymptotically toward 95% of its slice on the existing 250ms tick, landing on the real boundary only when the stage's response arrives. Failed stages freeze where they eased; skipped slices (refine re-entry) start consumed. Co-Authored-By: Stuart Gardoll <sgardoll@gmail.com>
Contributor
Author
|
I'll fix CI failures and address comments from users with write access that start with 'Devin'.
|
Contributor
|
This PR does not match any of the 1 configured review trigger rule. |
…their boundary - Failed runs pin the fill's rendered width with the transition disabled, so the bar stops where it visibly was instead of drifting 700ms more. - A completed active stage sits on its own boundary (activeStage/3), so stage-2 re-entry runs finish on 100% instead of retreating to 66.7%. - e2e: held stages 2/3 assert upper ceilings; a new spec pins the frozen width across the transition window; the refine spec asserts a 100% finish. - Timer comment now covers both elements it drives. Co-Authored-By: Stuart Gardoll <sgardoll@gmail.com>
…rack % - Reading getComputedStyle after transition:none resolves the pending target, not the mid-flight position — capture first, then pin. - The pin is now renderedPx/trackPx as a percentage, so a later viewport resize keeps the same proportion instead of a stale pixel count. - e2e: frozen pin asserts a %-valued inline width and a fixed computed width across a 900ms window. Co-Authored-By: Stuart Gardoll <sgardoll@gmail.com>
Contributor
Author
|
Verified the smooth progress bar end-to-end against the real backend (not mocks). A full 3-stage generation run on the Vite dev server showed the fill easing continuously inside each stage's slice instead of jumping at boundaries. Instrumented
The branch's own spec |
Co-Authored-By: Stuart Gardoll <sgardoll@gmail.com>
sgardoll
merged commit Sep 28, 2026
46b1349
into
milestone/stu-implement-updated-ui-ux
1 of 2 checks passed
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.
Summary
The generation progress bar snapped between stage boundaries —
renderPipelineTrack()wrotecompletedStages / 3 * 100%, so the fill had exactly four positions and nothing moved while a stage was in flight.Each stage now owns a third of the track and the fill eases inside its slice, the same shape
CommitPhasesuses for the deploy overlay:pipelineTrackPercent()returns(activeStage - 1) * 33.3% + 33.3% * 0.95 * (1 - exp(-elapsed / 12))while the active stage runs — approaching 95% of the slice asymptotically so a slow stage still looks alive without ever claiming it finished.pipelineStageStartedAtre-arms on everyupdatePipelineProgressStep(); the existing 250mspipelineElapsedTimertick now also re-renders the track, so the fill moves continuously.done/3fallback; afailedstage freezes where it eased to; refine/fix re-entry at stage 2 starts its slice consumed (skipped stage 1 reads as passed).Evidence
CI=1 CCC_TEST_PORT=3105 npx playwright test stu377-pipeline-progress→ 30/30 passed (new spec:the track eases through each stage's slice instead of jumping)npm test→ 396/396 passedLink to Devin session: https://app.devin.ai/sessions/2c1947d6c8094275a078fc26277154d5
Open in Devin Desktop: https://app.devin.ai/desktop/session/2c1947d6c8094275a078fc26277154d5?variant=devin
Requested by: @sgardoll