Uh oh!
There was an error while loading. Please reload this page.
fix(push): stop progress bar colliding with staging log lines (D3) - #391
Merged
Conversation
The staging progress bar was built with RenderBlankState(true), so
schollz painted a 0% bar at construction time — before Stage prints its
setup lines ("Opened a secure channel…", "Preparing the copy…") and
before the up-to-5-minute pod-ready wait. Two problems:
1. The 0% bar sat frozen through the pod-ready wait, reading as
"stuck".
2. Those setup lines (plain \n writes) collided with the bar's \r
redraw on the same terminal line, producing garbled output like
"Copying x 0% |…| (0 B/53 kB) [0s:0s]Opened a secure channel…".
Flip to RenderBlankState(false): the bar first paints on the first
Add() inside StreamLayout, after every setup line has printed on its own
clean line. Better UX too — no misleading frozen bar during the
pod-ready wait. No copy strings change; catalog golden unaffected.
Backlog item: D3.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>LukasWodka
commented
Jul 22, 2026
ContributorAuthor
bugbot run |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit a3add66. Configure here.
This was referenced Jul 22, 2026
shujaatTracebloc
approved these changes
Jul 23, 2026
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 freeto 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
Fixes the progress-bar collision in
dataset push(backlog item D3). During a guided ingest the staging progress bar mashed into the setup log line:Root cause
The bar is built in
data.gowithprogressbar.OptionSetRenderBlankState(true), so schollz paints a0%bar at construction time — beforepush.Stageprints its setup lines ("Opened a secure channel…", "Preparing the copy…") and before the up-to-StagePodReadyTimeout(5 min) pod-ready wait. Two problems fall out of that:0%bar sits frozen through the multi-minute pod-ready wait, reading as "stuck".\nwrites to the same terminal; the bar redraws with\r. They land on the same physical line → garbled output.StreamLayoutprints nothing itself during the transfer — the bar's only output is its own\rrenders — so every collision comes from that premature construction-time render.Fix
Flip to
OptionSetRenderBlankState(false). The bar's first paint now happens on the firstAdd()insideStreamLayout, i.e. after every setup line has already printed on its own clean line. Result:This is also better UX independent of the collision: no misleading frozen
0%bar during the pod-ready wait.A thorough comment on the option (and a cross-reference in
stage.go) documents the ordering contract so nobody flips it back or adds a mid-transfer status print.Scope / risk
go test ./...green, including the catalog drift test).internal/push/{progress.go,stage.go}; TTY-only behavior (non-TTY already uses the no-op sink).progress_test.gocovers the non-TTY branch, and the change is a single documented option flip with well-defined schollz semantics.Test plan
go build ./...go vet ./internal/push/go test ./...(all packages green, incl. catalog drift)dataset pushon a TTY and confirm the setup lines and bar no longer collide🤖 Generated with Claude Code
Note
Low Risk
TTY-only render timing change in push progress UI; no copy strings or transfer logic changes.
Overview
Fixes garbled
dataset pushTTY output where the staging progress bar was drawn at 0% before setup log lines, so\rbar redraws collided with\nstatus text on the same line.NewProgressnow setsprogressbar.OptionSetRenderBlankState(false)so the bar’s first paint happens on the firstAdd()insideStreamLayout, after messages like “Opened a secure channel…” and the pod-ready wait. That removes the frozen 0% bar during the wait and keeps setup lines on clean rows. Comments inprogress.goandstage.godocument the ordering contract (no new status prints after the bar starts).Reviewed by Cursor Bugbot for commit a3add66. Bugbot is set up for automated code reviews on this repo. Configure here.