feat(ui): live progress + speed for library/component downloads (0.0.53)#128
Merged
Conversation
Library / component dependency downloads now show the same live progress
bar, byte counts and transfer speed that toolchain downloads already show.
Three paths fed download events; only toolchain and builtin-index installs
rendered progress. Project / custom-index dependency installs went through
the silenced direct xlings CLI and ran dark — "Downloading <pkg>" then a
long, feedback-free hang.
- Route project/custom-index installs through the xlings NDJSON
`interface install_packages` capability (the capability and the `install`
CLI share `cmd_install`; install destination is chosen by package scope,
so packages still land in the project-local data root). This restores the
live bar on that path.
- Add an indeterminate ("connecting…") render for the pre-sizing window
where the downloader reports totalBytes==0 (DNS/TLS/redirect, or a body
streamed with no Content-Length), so the line never freezes.
- Centralize the download-progress state machine + render policy in
`mcpp.ui` (DownloadProgress); toolchain, builtin-index and custom-index
installs now share one UI.
- Pin bundled xlings to 0.4.51.
Bumps version to 0.0.53. Updates e2e 52/58/60 to expect the interface
transport while keeping their project-local-install and hook-ordering
invariants. Design: .agents/docs/2026-06-09-library-download-progress-design.md
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
Library / component dependency downloads now show the same live progress bar, byte progress and transfer speed that toolchain downloads already show — closing the gap where
Downloading <pkg>printed and then the process appeared to hang with no feedback.Root cause
Three code paths feed download events; only two were instrumented:
toolchain install)interface install_packagesxlings install(silenced)Plus: even on the NDJSON paths, the connect / pre-sizing window emits
download_progresswithtotalBytes == 0, and the bar only rendered oncetotal > 0— so the line froze during the (sometimes long) connection phase.Changes
interface install_packagescapability. Verified against xlings source: the capability and theinstallCLI sharecmd_install, and the install destination is chosen by package scope (project vs global), not by transport — so packages still install into the project-local data root and install-hook ordering is preserved. This restores the liveDownloading … [bar] X / Y Z/sUI on that path.totalBytes == 0window: showsconnecting…+ elapsed (and a running byte count for length-less streams), so the line stays alive until the size is known.mcpp.ui(DownloadProgress); the three install paths now share one UI.Testing
mcpp test— 18/18 unit tests pass.52/58/60updated to assert the interface transport while keeping their project-local-install andmcpp.deps-before-hook ordering invariants — all pass.connecting…animation).Design doc:
.agents/docs/2026-06-09-library-download-progress-design.md