Skip to main content
← Back to list
01Issue
FeatureShippedSwamp CLIPublic
Assigneeszack

Relationships

#3504 swamp update: a slicker, colorful download progress bar that ends with a newline

Opened by zack · 10/15/2026· Shipped 10/15/2026

Problem

The download progress swamp update shows on a terminal is a spinner whose message is plain text: Downloading update 12.3 MB / 98.1 MB (12%) · 4.2 MB/s (DownloadProgressFormatter in src/presentation/renderers/update_check.ts, drawn by Spinner in src/presentation/spinner.ts). It works, but there is no bar to show how far along the download is, and only the spinner frame has color.

When the update finishes, the next output does not start on a new line: it continues on the row the progress was drawn on.

Proposal

  1. A real progress bar. When the total size is known, draw a bar that fills (for example ━━━━━━━━━╸──────) next to the percentage, bytes, speed and an ETA. When the total is unknown, keep the spinner.
  2. Color. Color the bar and its parts in the style of the terminal-output design system: the filled part in the accent color, the empty part dim, speed and ETA dim, and a green check plus the new version on success. Respect NO_COLOR and non-TTY output. Non-terminal and -q behavior stays as it is today (periodic plain lines, or none).
  3. End with a newline. When the progress finishes, leave the cursor at the start of a fresh line, so the next text (skill sync messages, warnings, "Updated to …") starts on its own line and never on the progress row.

Notes

The spinner starts at src/cli/commands/update.ts:624 and stops at :689. Skill sync and the autoupdate re-registration run, and can log, while it is still drawing. That may be why later text lands on the progress row (not verified). Spinner.stop() clears the row with \r\x1b[K but writes no newline.

The bar should keep the existing fit-to-terminal-width truncation, so a narrow terminal does not wrap the line and leave copies behind.

02Bog Flow
✓OPEN✓TRIAGED✓IN PROGRESS✓SHIPPED+ 1 MOREASSIGNED+ 5 MOREREVIEW+ 10 MOREPR_MERGED+ 2 MORESESSION_SUMMARIZED

Shipped

10/15/2026, 6:44:18 PM

Click a lifecycle step above to view its details.

03Sludge Pulse
zack assigned zack10/15/2026, 5:00:09 PM

Sign in to post a ripple.