Skip to content

Ship all-OS desktop release (incl. Windows MSI) to bao.builders + fix canonical domain - #36

Merged
cursor[bot] merged 4 commits into
mainfrom
cursor/build-linux-x64-release-42cc
Jul 28, 2026
Merged

Ship all-OS desktop release (incl. Windows MSI) to bao.builders + fix canonical domain#36
cursor[bot] merged 4 commits into
mainfrom
cursor/build-linux-x64-release-42cc

Conversation

@d4551

@d4551 d4551 commented Jul 28, 2026

Copy link
Copy Markdown
Owner

Summary

Refreshed the canonical packages/desktop/releases tree with the coherent all-OS build from the desktop-release workflow (run 30318719231, native runners per target) — all four targets, 9 binaries including the new Windows MSI — and shipped it to the live download site (https://bao.builders/). Also fixed a refresh-desktop-releases bug that silently deleted the committed sizes.json SSOT, and fixed the docs-site canonical domain (was pointing at an NXDOMAIN).

What shipped (all-OS, one CI run)

Target Artifact Size sha256 (prefix)
macos BaoBuildBuddy_0.1.0_aarch64.dmg 70,772,993 B 8d5eccad2575…
linux-x64 BaoBuildBuddy_0.1.0_amd64.deb 83,412,246 B 83ecc0e1c664…
linux-x64 BaoBuildBuddy-0.1.0-1.x86_64.rpm 83,413,388 B 2d5fb1f7c64a…
linux-x64 BaoBuildBuddy_0.1.0_amd64.AppImage 157,420,024 B c86a80c0625a…
linux-arm64 BaoBuildBuddy_0.1.0_arm64.deb 83,750,188 B fe873023d43e…
linux-arm64 BaoBuildBuddy-0.1.0-1.aarch64.rpm 83,747,921 B 8a9824256136…
windows BaoBuildBuddy_0.1.0_x64-setup.exe 61,007,907 B da45a1b4913b…
windows BaoBuildBuddy_0.1.0_x64_en-US.msi (new) 89,351,268 B 941941d85efd…
windows BaoBuildBuddy_0.1.0_x64-portable.zip 87,851,109 B 6519e52399da…

All 9 pass bun run verify:desktop-releases --include-linux-appimage --include-windows-msi (signatures, payloads, runtime manifests, checksums). Binaries are Git LFS (pointers committed; real bytes pushed to LFS).

Windows MSI now LFS-tracked

*.msi was not in .gitattributes, so the new MSI would have committed as a regular blob. Added *.msi LFS tracking for both .desktop-release-artifacts/windows/ and packages/desktop/releases/windows/ so it ships through Git LFS like the other payloads.

SSOT metadata re-synced

sha256.txt, sizes.json, and provenance.json (top-level + per-target) regenerated from the CI build. sizes.json was re-synced to real byte sizes — the CI artifact carried a stale sizes.json (it shipped the committed file, not sizes derived from the new binaries), so the docs manifest would have published wrong sizes in CI checkouts that have no git lfs pull. Provenance now records workflow=desktop-release runId=30318719231.

Bug fix: refresh-desktop-releases deleted sizes.json

refresh-desktop-releases.ts prunes every file in the canonical release root not in DESKTOP_RELEASE_ROOT_ALLOWED_FILES. sizes.json is a committed SSOT (the byte-size fallback the docs-site manifest builder reads when an artifact is a Git LFS pointer) but was missing from the allow-list, so every local refresh+commit silently deleted it. Added sizes.json to the allowed set. Existing refresh tests still pass.

Canonical domain fix (NXDOMAIN → live site)

docs/index.html (<link rel="canonical"> + og:url), scripts/deploy-docs-site-ftp.ts, and docs/DOCS_SITE_DEPLOY.md referenced https://baobuildbuddy.com — an NXDOMAIN — while the live site is https://bao.builders/. Repointed all three at bao.builders so SEO and social sharing resolve. A repo-wide sweep confirms zero baobuildbuddy.com references remain (the d4551/baobuildbuddy GitHub org/repo name is unrelated).

Scratch dir ignored

Added .desktop-release-input/ to .gitignore — it's the scratch dir used to stage downloaded CI release artifacts before refreshing the canonical tree; it must never be committed.

Website updated (live)

Docs site rebuilt from the canonical tree and published over FTPS to pixie-ss1-ftp.porkbun.com/ (bao.builders): 16 files, 764 MiB. Live verification:

curl https://bao.builders/ | grep -E 'canonical|og:url'
  <link rel="canonical" href="https://bao.builders/" />
  <meta property="og:url" content="https://bao.builders/" />
curl https://bao.builders/releases/manifest.json   # 3 platforms, 9 files
  windows: setup.exe (61,007,907), msi (89,351,268), portable.zip (87,851,109)
  macos: aarch64.dmg (70,772,993)
  linux-x64: AppImage (157,420,024), deb (83,412,246), rpm (83,413,388)
  linux-arm64: deb (83,750,188), rpm (83,747,921)

Notes

  • FTP credentials were used from the environment only and are not committed. Per docs/DOCS_SITE_DEPLOY.md the password should be rotated at the host before being stored as a repository secret.
  • Earlier commits on this branch (the sizes.json preservation fix and the native linux-x64 rebuild) remain part of this PR; the final commit supersedes the linux-x64 binaries with the coherent all-OS CI set so the whole release tree comes from one desktop-release run.
Open in Web Open in Cursor 

cursoragent and others added 3 commits July 28, 2026 00:53
refresh-desktop-releases.ts prunes every file in the canonical release root
that isn't in DESKTOP_RELEASE_ROOT_ALLOWED_FILES. sizes.json is a committed
SSOT (the byte-size fallback the docs-site manifest builder reads when an
artifact is a Git LFS pointer) but was missing from the allow-list, so every
local refresh+commit silently deleted it. Add it to the allowed set so the
refresh preserves it.

Co-authored-by: Brandon Donnelly <d4551@users.noreply.github.com>
Rebuilt the linux-x64 desktop installers from source on a linux/x64 host
with the pinned toolchain (Rust 1.97.1, Tauri 2.10.3, @tauri-apps/cli 2.11.4,
bun 1.3.14) and refreshed them into the canonical release tree:

  BaoBuildBuddy_0.1.0_amd64.deb        83,411,088 B  (sha 6a178e0d7739...)
  BaoBuildBuddy-0.1.0-1.x86_64.rpm      83,413,469 B  (sha db35c2919c6a...)
  BaoBuildBuddy_0.1.0_amd64.AppImage    157,428,216 B (sha 62cf26e545fa...)

All three pass verify:desktop-releases (deb/rpm/AppImage payload + signature
checks). sha256.txt, sizes.json, and the assembled + per-target provenance
are re-synced; macos/windows/linux-arm64 entries are unchanged (those targets
require their native OS hosts and were not rebuilt here). Binaries are tracked
via Git LFS (pointers committed; real bytes pushed to LFS).

Co-authored-by: Brandon Donnelly <d4551@users.noreply.github.com>
…s MSI)

Replace the canonical packages/desktop/releases tree with the coherent
all-OS build from the desktop-release workflow (run 30318719231, native
runners per target):

  macos     BaoBuildBuddy_0.1.0_aarch64.dmg
  linux-x64 BaoBuildBuddy_0.1.0_amd64.{deb,AppImage} + x86_64.rpm
  linux-arm64 BaoBuildBuddy_0.1.0_arm64.deb + aarch64.rpm
  windows   BaoBuildBuddy_0.1.0_x64-setup.exe, _x64-portable.zip,
            _x64_en-US.msi  (new)

The Windows MSI was not previously tracked. Add *.msi to .gitattributes
for both .desktop-release-artifacts and packages/desktop/releases so it
ships through Git LFS like the other payloads.

Regenerate the SSOT metadata from the CI build:
  sha256.txt, sizes.json (re-synced to real byte sizes — the CI artifact
  carried a stale sizes.json), provenance.json (top-level + per-target,
  now recording workflow=desktop-release runId=30318719231).

Verified with:
  bun run verify:desktop-releases --include-linux-appimage --include-windows-msi
(all 9 artifacts: signatures, payloads, runtime manifests, checksums).

Fix the docs-site canonical domain. docs/index.html, deploy-docs-site-ftp.ts
and DOCS_SITE_DEPLOY.md referenced https://baobuildbuddy.com (NXDOMAIN)
while the live site is https://bao.builders. Point canonical + og:url at
bao.builders so SEO/social sharing resolve.

Ignore .desktop-release-input/, the scratch dir used to stage downloaded
CI release artifacts before refreshing the canonical tree.

Redeployed the docs-site bundle to bao.builders (16 files, 764 MiB);
live manifest now lists 9 files across 3 platforms with correct sizes.

Co-authored-by: Brandon Donnelly <d4551@users.noreply.github.com>
@cursor cursor Bot changed the title Rebuild linux-x64 release binaries natively + ship to bao.builders (preserve sizes.json on refresh) Ship all-OS desktop release (incl. Windows MSI) to bao.builders + fix canonical domain Jul 28, 2026
`verify:desktop-releases` extracts every Linux package payload to confirm
the bundled runtime contract; RPM extraction shells out to `rpm2cpio | cpio`,
and `rpm2cpio` is not preinstalled on ubuntu-24.04. Without this step the
deploy workflow fails at verification and never publishes. `rpm2cpio` is the
minimal package; `cpio` is its stream consumer.

Mirrors the same fix on PR #35 so the all-OS release merge is self-contained
and main's push-triggered docs-site deploy succeeds.

Co-authored-by: Brandon Donnelly <d4551@users.noreply.github.com>
@cursor
cursor Bot merged commit 57814cd into main Jul 28, 2026
2 checks passed
@cursor
cursor Bot deleted the cursor/build-linux-x64-release-42cc branch July 28, 2026 05:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants