fix: correct LuCLI release asset URLs in distribution drafts#2547
fix: correct LuCLI release asset URLs in distribution drafts#2547
Conversation
The build-linux-packages.sh script in tools/distribution-drafts/ failed in
the develop snapshot CI run (run 25636562099) with `curl: (22) ... 404`
when fetching the LuCLI Linux binary. Root cause: assumed asset names had
arch suffixes (`lucli-0.3.7-linux-x64`, `lucli-0.3.7-macos-arm64`, etc.)
but the upstream cybersonic/LuCLI v0.3.7 release actually publishes single
binaries per OS with no arch split.
Verified upstream:
$ gh release view v0.3.7 --repo cybersonic/LuCLI --json assets
lucli-0.3.7-linux (Linux x86_64)
lucli-0.3.7-macos (macOS universal)
lucli-0.3.7.bat (Windows wrapper, calls Java with the .jar)
lucli-0.3.7.jar (versioned jar)
lucli.jar (unversioned)
Fixed in four places:
- build-linux-packages.sh: -linux-x64 -> -linux. This is the only change
that affects an active CI workflow; Linux package build will now succeed.
- wheels-be.rb (homebrew draft): collapse the on_arm/on_intel split into a
single on_macos block since the macOS asset is universal. No active
consumer yet (formula not pushed to tap).
- wheels.json + wheels-be.json (scoop drafts): -windows-x64.exe -> .bat
to match the actual artifact name. No active consumer yet (scoop bucket
not created).
Tuesday GA unaffected on stable: stable releases run the same nfpm step
which now uses the correct URL.
There was a problem hiding this comment.
Wheels Bot — Reviewer A
TL;DR — This PR fixes a CI-blocking 404 in the Linux package build step by correcting the LuCLI download URL from the non-existent arch-suffixed form to the actual asset name, and applies the same correction to the Homebrew and Scoop distribution drafts. The primary fix is correct and targeted. One forward-looking concern with the Scoop manifests is flagged below, but since those are explicitly not-yet-deployed drafts the overall verdict is comment — no changes required to unblock the CI fix.
Correctness
build-linux-packages.sh line 25 — fix is accurate.
-LUCLI_LINUX_URL="${LUCLI_LINUX_URL:-https://github.com/cybersonic/LuCLI/releases/download/v${LUCLI_VERSION}/lucli-${LUCLI_VERSION}-linux-x64}"
+LUCLI_LINUX_URL="${LUCLI_LINUX_URL:-https://github.com/cybersonic/LuCLI/releases/download/v${LUCLI_VERSION}/lucli-${LUCLI_VERSION}-linux}"Matches the actual v0.3.7 release asset name. Other CI workflows (snapshot.yml line 40, pr.yml line 49, release.yml line 582) already used the no-suffix form; this brings the build script into alignment.
wheels-be.rb — collapsing on_arm/on_intel into a single on_macos block is correct given LuCLI ships a universal binary. The added comment citing gh release view v0.3.7 as source-of-truth is good practice for future maintainers.
Scoop manifests — potential missing JAR dependency (not a blocker today, but flag before go-live)
Both wheels.json and wheels-be.json now download lucli-0.3.7.bat as the Windows launcher:
"https://github.com/cybersonic/LuCLI/releases/download/v0.3.7/lucli-0.3.7.bat"and invoke it directly in post_install:
"$dir\\lucli-0.3.7.bat" %*The .bat file is a Windows wrapper script. LuCLI's v0.3.7 release also ships lucli-0.3.7.jar and lucli.jar, which the bat launcher calls internally (standard pattern for Java CLI wrappers). The Scoop manifests download only the .bat — the JAR is absent. When the Scoop bucket is eventually created and a user runs scoop install wheels, the invocation of lucli-0.3.7.bat will fail with a missing JAR error.
The PR correctly marks these files as ❌ scoop bucket not created, so there is no user-facing breakage today. Before activating the Scoop bucket, the manifest should be updated to also download lucli-0.3.7.jar (or lucli.jar) into $dir. Suggest tracking this as a follow-up issue so it doesn't get lost before GA.
Commits
Single commit: fix: correct LuCLI release asset URLs in distribution drafts
- Type
fix— valid percommitlint.config.js - No scope — appropriate since the change spans three distribution subsystems
- Subject is non-empty, not ALL-CAPS, and well within 100 chars
Conforms to convention.
Tests
No automated test coverage for distribution artifact scripts — consistent with the rest of the tools/distribution-drafts/ directory. The CI pipeline itself (release.yml calling build-linux-packages.sh) is the effective integration test for the Linux path, which is the intended verification as stated in the PR test plan.
Security
SHA256 values remain 0000... placeholders in all draft files. This is a pre-existing condition explicitly acknowledged in comments and acceptable for draft assets. Worth noting that build-linux-packages.sh fetches the LuCLI binary with curl -fsSL without SHA verification — also pre-existing and not introduced by this PR, but worth a follow-up hardening ticket before GA.
Wheels Bot -- Reviewer B (round 1)A's review is solid. No sycophancy, no false positives I can identify, and the one forward-looking concern about the Scoop JAR dependency is substantive and correctly scoped as non-blocking. Verdict alignment is correct. Converging on approve. SycophancyNone detected. A used False positivesNone detected.
Missed issuesNone detected. The diff is narrow -- four URL string substitutions across three distribution-draft files. A covered the only substantive forward-looking risk (Scoop JAR), noted the pre-existing SHA256 placeholder situation, and noted the pre-existing absence of SHA verification in the Verdict alignmentA's ConvergenceAligned. A and I agree: the Linux package build fix is correct, the Homebrew and Scoop draft corrections follow the same logic, and no changes are needed before merging. The Scoop JAR dependency should be tracked as a follow-up issue before the Scoop bucket is activated. Joint recommendation: approve and merge. |
Documents the new bleeding-edge channel (wheels-be) alongside stable (wheels). Covers: - Comparison table: package name, source repo, cadence, version shape, channel-aware --version output - Install steps for each channel on macOS / Windows / Linux - Switching channels (uninstall one, install the other — they're mutually exclusive via brew's conflicts_with) - "Already-scaffolded apps are unaffected" reassurance - Decision guide: when to pick stable vs bleeding-edge - "How channels work under the hood" optional section explaining the snapshot version format, where snapshots live (wheels-snapshots repo), and the auto-update propagation chain Also adds a "Choose a channel" section to installing.mdx pointing at the new page so first-time installers see the option before they brew install. Doesn't disrupt the happy path: stable remains the default and the install steps below the new section are unchanged. Sidebar order: release-channels.mdx is order 5, after the tutorial happy path (installing → first-15-minutes → tutorial), so users new to Wheels don't get distracted by channel discussion before they've seen the framework run. Doubles as a soft-launch validation: this PR's merge to develop will fire the snapshot pipeline that just went live (PR #2545, #2547, #2548 + homebrew-wheels#174). If the dispatch chain works end-to-end, this commit's snapshot will land at wheels-dev/wheels-snapshots and the brew tap's bleeding-edge-update.yml will auto-bump wheels-be.rb to the new version within ~5 minutes.
Summary
Develop snapshot CI run 25636562099 failed at the
Build Linux packages (.deb / .rpm)step withcurl: (22) ... 404. Root cause: my draft URLs assumed arch-split asset names (lucli-0.3.7-linux-x64,lucli-0.3.7-macos-arm64, etc.) but cybersonic/LuCLI v0.3.7 ships single binaries per OS.Verified against actual release:
Fixed
build-linux-packages.sh-linux-x64→-linuxwheels-be.rb(homebrew draft)on_arm/on_intelinto singleon_macos; drop-x64/-arm64suffixeswheels.json,wheels-be.json(scoop drafts)-windows-x64.exe→.batTest plan
fix:orfix(scope):— no scope here since the change spans drafts in multiple subsystems)Create Snapshot Pre-Releasestep (was previously skipped due to this failure)https://github.com/wheels-dev/wheels-snapshots/releasesNote for Tuesday GA
Stable (main) runs the same nfpm step, so this fix is also required for
v4.0.0GA tag publishing. Without it, GA day's release would hit the same 404. Merging here, before Tuesday, addresses both.Refs
#2545 (introduced the wrong URLs in draft state).
#2546 (last fix; this is the next failure surfaced post-merge).