Skip to content

Add Ubuntu desktop release artifacts - #693

Merged
tlongwell-block merged 1 commit into
block:mainfrom
benthecarman:add-ubuntu-desktop-release
May 21, 2026
Merged

Add Ubuntu desktop release artifacts#693
tlongwell-block merged 1 commit into
block:mainfrom
benthecarman:add-ubuntu-desktop-release

Conversation

@benthecarman

@benthecarman benthecarman commented May 20, 2026

Copy link
Copy Markdown
Contributor

Sprout's desktop release workflow currently publishes only the signed macOS DMG. This adds Ubuntu release artifacts so Linux users can install the desktop app from the same versioned GitHub release.

The new release-linux job runs after the existing macOS release job. It reuses the Ubuntu Tauri dependency set from CI, patches the requested release version, builds the real sidecar binaries, bundles them into desktop/src-tauri/binaries, and runs Tauri with --bundles deb,appimage. The generated .deb and .AppImage are then uploaded to the existing v${VERSION} release.

This deliberately leaves the current macOS updater flow unchanged. The rolling sprout-desktop-latest release and latest.json generation still publish only the macOS updater archive; Linux auto-update support can be added separately if we want to define that update channel.

I validated the workflow YAML locally with the repo's desktop yaml package and confirmed the installed Tauri CLI supports --bundles deb,appimage. I did not run the full release workflow locally because it depends on GitHub release permissions and hosted runner packaging behavior.

@benthecarman
benthecarman requested a review from a team May 20, 2026 23:19
Signed-off-by: benthecarman <benthecarman@live.com>
@benthecarman
benthecarman force-pushed the add-ubuntu-desktop-release branch from ac377ea to 8db5001 Compare May 20, 2026 23:22
@tlongwell-block
tlongwell-block merged commit 300b51b into block:main May 21, 2026
15 checks passed
@tlongwell-block

Copy link
Copy Markdown
Collaborator

Thanks, @benthecarman! Please let me know if this release works on your linux machine

@benthecarman
benthecarman deleted the add-ubuntu-desktop-release branch May 21, 2026 16:31
@benthecarman

Copy link
Copy Markdown
Contributor Author

both the app image and deb work 🚀

tlongwell-block added a commit that referenced this pull request May 21, 2026
Bring pulse-front-back up to date with main prior to opening a PR.

Signed-off-by: tlongwell-block <109685178+tlongwell-block@users.noreply.github.com>
Co-authored-by: Dawn (sprout agent) <c6237ef84fa537c78dcee78efd2d4e59f728859c7f194da42ac51ededfa0be05@sprout-oss.stage.blox.sqprod.co>

* origin/main: (35 commits)
  feat(sprout-agent): auto-fallback to Databricks OAuth (#699)
  fix(relay): avoid websocket writes in stall watchdog (#697)
  feat(sprout-agent): Databricks provider with OAuth 2.0 PKCE auth (#698)
  Add Ubuntu desktop release artifacts (#693)
  chore(deps): update rust crate tokio to v1.52.3 (#658)
  chore(deps): update all non-major dependencies (#650)
  chore(deps): update rust crate sherpa-onnx to v1.13.2 (#657)
  chore(deps): update dependency nostr-tools to v2.23.5 (#681)
  chore(deps): update tanstack-router monorepo (#659)
  chore(deps): update rust crate dashmap to v6.2.1 (#652)
  chore(deps): update rust crate tower-http to v0.6.11 (#647)
  chore(deps): update rust crate reqwest to v0.13.3 (#639)
  chore(deps): update rust crate sherpa-onnx to v1.12.40 (#640)
  chore(deps): update dependency @tanstack/react-query to v5.100.11 (#635)
  fix(deps): update rust crate sha2 to 0.11 (#665)
  fix(deps): update rust crate bzip2 to 0.6 (#661)
  chore(deps): update rust crate uuid to v1.23.1 (#648)
  chore(deps): update rust crate tauri-plugin-dialog to v2.7.1 (#644)
  chore(deps): update tanstack-router monorepo (#649)
  chore(deps): update rust crate tokio to v1.51.3 (#646)
  ...
tlongwell-block added a commit that referenced this pull request Aug 3, 2026
…#4524)

## Summary

Official Linux desktop packages (`.deb` / AppImage) are built without
`--features mesh-llm`, so they ship the `mesh_llm_stubs` backend and
Settings → Compute always fails with `mesh-llm feature not enabled`.
This PR adds the feature flag to the two Linux build commands:

- `release.yml` → `release-linux` job
- `linux-canary.yml` → canary build

That's the whole diff — 2 lines. Fixes #3788 (Linux); see also #3841
(dup with UI-gating PR #3914) and the Windows twin #2836/#3223.

## Why no native prebuild step (unlike the macOS job)

The macOS job carries Metal llama prebuild/cache steps from #798. Linux
doesn't need an equivalent:

- `mesh-llm-host-runtime` is compiled with `dynamic-native-runtime` and
installs the recommended runtime on first use (verified by sha256
checksum over HTTPS; upstream's signature verification path is not yet
implemented — default policy is `RequireChecksum`, per
`mesh-llm-runtime-install/src/lib.rs`)
(`desktop/src-tauri/src/mesh_llm/mod.rs` —
`initialize_mesh_native_runtime`), so release builds work on clean
machines without bundling llama.cpp.
- Upstream publishes Linux x86_64/aarch64 runtime bundles for the pinned
`v0.74.0` line, and `scripts/ensure-mesh-native-runtime.sh` already maps
`meshllm-native-runtime-linux-x86_64-cpu` / `linux-aarch64-cpu` for
local/e2e use.
- The unmerged branch `micn/mesh-node-download` (`96f29417a`) treats
even the macOS prebuild steps as removable dead weight for the same
reason.

## Background

The omission is historical drift, not a decision: Linux packaging
predates the mesh feature flag (#693), mesh became opt-in for
build-cost/reliability reasons (#823, #1183), and #1221 re-enabled it
for releases by editing only the macOS build line. `release-linux` and
the later `linux-canary` copy were never revisited.

The mesh shutdown hard-exit/relaunch path is gated `all(mesh-llm,
target_os = "macos")` because ggml/Metal destructors abort on macOS;
ordinary mesh shutdown (`shutdown_mesh_runtime`) is cross-platform, so
Linux falls through to the generic path.

## Validation

- [x] `./bin/cargo check --manifest-path desktop/src-tauri/Cargo.toml
--features mesh-llm` green at base `2c0ac2467` (feature graph compiles
at the pinned v0.74.0 line)
- [ ] Linux canary run with this change: AppImage/.deb build succeeds
and binary contains real `mesh_llm` symbols (not `mesh_llm_stubs`)
- [ ] Installed package: cold-start → Settings → Compute → runtime
download → serve → clean shutdown

The last two need a Linux run/host. **Note (from review):**
`linux-canary.yml` is `workflow_dispatch`-only and its `Require main`
step rejects non-main refs, so the canary cannot run on this branch
pre-merge — and `.github/workflows/**` matches no ci.yml paths-filter,
so this PR's own CI does not exercise the changed lines. Validation
sequencing is therefore merge → dispatch linux-canary on main →
live-package pass, with a trivial 2-line revert as the escape hatch.

Signed-off-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz>
Co-authored-by: npub1qyvc0c5kl4gqv2fd97fsk46tu378sqgy35vc83rvgfwne90sel7s0ed67d <011987e296fd5006292d2f930b574be47c7801048d1983c46c425d3c95f0cffd@buzz.block.builderlab.xyz>
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