fix(installer): bundle uv for win-x64; packaged Windows rescue installer#968
fix(installer): bundle uv for win-x64; packaged Windows rescue installer#968
Conversation
… rescue installer and 'Install uv' UI
|
@itomek @kovtcharov-amd since it seems like you guys are working on your patch for mac should I edit the PR title for windows only or something and change the yml file? |
yes please; also I just tested this in the scenario where this is break and it definitely fixed the problem, so great work, and thank you! One thing to note is is the Acceptance Criteria on the issue, we have to test this: #966 |
…anges for follow-up
ok you can review the changes I did just now |
itomek
left a comment
There was a problem hiding this comment.
Great work @theonlychant ! Thanks again!
|
@claude review this PR. |
|
Thanks @theonlychant — confirming this fixes the broken 🟡 Important1. No SHA256 verification for the bundled Suggested fix:
2. CI step soft-fails on download error. 3. Indentation inconsistency in the rescue block. 🟢 Minor4. 5. "Install uv (auto)" button actually runs the full backend install. 6. PR description out of date. 7. Test plan unchecked items. ✅ Things that look good
Net: solid fix for a real first-run-broken bug. The main blocker IMO is the supply-chain weakening (item 1) — once SHAs are pinned and the soft-fail in CI is removed, this is ready. cc @kovtcharov-amd for sign-off on the supply-chain bits given the security implications. |
|
@itomek @kovtcharov-amd recheck this when you're free |
|
@itomek I resolved the conflicts on this branch just now |
bdcdd41 to
4804fb0
Compare
|
@kovtcharov-amd you can merge this whenever you're available |
There was a problem hiding this comment.
@theonlychant — one blocker before this lands. The latest commit (d932c7d) adds a macOS uv fetch step + mac-arm64 SHA wiring, but I already shipped that work to main about an hour earlier via #967 (commit 7b13352, merged 21:13:30Z; your commit landed 22:10:57Z). PR #967 also adds a dmg-structural-smoke CI job + tests/electron/dmg-smoke.test.mjs (202 lines) + an installer-smoke.mjs helper (129 lines) — none of which this PR has — so the macOS coverage on main is materially more complete than what d932c7d adds.
Net effect today: this branch will conflict with main on build-installers.yml and backend-installer.cjs's BUNDLED_UV_SHA256 map, and even after a clean resolution we'd be choosing between two different macOS fixes for no benefit.
Ask
- Rebase onto current main.
git fetch origin && git rebase origin/main. - Drop the macOS changes from this PR — specifically the contents of d932c7d (the
mac-arm64entry inBUNDLED_UV_SHA256and the macOS fetch step in the workflow). Those are now redundant with #967. - Keep this PR strictly Windows-only. The title already says
bundle uv for win-x64; packaged Windows rescue installer, so dropping the mac additions also realigns title/description with the diff. - Update the description. The body still lists
mac-arm64under Changes — drop that bullet so reviewers aren't expecting mac work here.
The Windows portion of this PR (Windows fetch step, packaged Windows rescue installer, dialog UX improvements) is genuinely useful and not duplicative of anything on main — happy to re-review and approve that scope as soon as the rebase is in. Thanks for the work.
…md#975) ## Why this matters PR amd#968 landed with a stale comment in [build-installers.yml](.github/workflows/build-installers.yml) that claims the macOS uv fetch step was \"removed in this PR to keep changes Windows-only\" — but the step is sitting right above the comment. The comment is a leftover from PR amd#968's merge resolution: when main was merged into the PR branch, the macOS step came back (PR amd#967 had added it), but the orphan comment from an earlier Windows-only sub-commit survived. After the squash-merge it now lies on main. Before: workflow file contains a self-contradicting comment that misleads anyone touching this section in the future (\"why does the comment say it's removed when it's right there?\"). After: comment is gone, file matches reality. No functional change — comment-only edit. ## Test plan - [x] \`grep \"macOS uv fetch removed\" .github/workflows/build-installers.yml\` returns nothing - [x] Diff is comment-only (3 deletions, 0 functional changes)
## Why this matters Ships the v0.17.6 patch: a new Email Triage Agent with Gmail (every email body stays on local Lemonade), the OAuth PKCE foundation that backs it, settings UI card layout, and a sweep of installer fixes that close the remaining first-launch failures uncovered after v0.17.5. Custom Python agents that follow the template's `super().__init__(**kwargs)` pattern no longer crash on the first message in the Agent UI. Full notes: `docs/releases/v0.17.6.mdx`. ## What's New - **Email Triage Agent with Gmail** ([amd#965](amd#965)) — `EmailTriageAgent` with 25 tools across read / organize / reply / delete / calendar mixins. Every email body processed locally on Lemonade; seven destructive tools confirmation-gated; three layers of prompt-injection defense; SQLite undo log via `DatabaseMixin`. - **OAuth PKCE foundation for Google connections** ([amd#926](amd#926)) — Self-contained `gaia.connections` module: refresh tokens in the OS keychain (Keychain / DPAPI / SecretService), per-agent grants in `~/.gaia/connections/grants.json`, async token cache with refresh rotation. Baseline for the v0.17.7 connectors framework. - **Settings UI card layout** ([amd#969](amd#969)) — Outlined cards with accent left-stripe replace margin-separated blocks across all settings sections; light + dark themes both updated. ## Bug Fixes - **Custom Python agents crashed on first message** ([amd#974](amd#974), closes [amd#973](amd#973)) — `python_factory` now introspects the target class's `__init__` chain and only forwards kwargs the chain accepts, so the bare `super().__init__(**kwargs)` template pattern no longer crashes with `unexpected keyword argument 'rag_documents'`. - **Windows installer failed at `ensure-uv`** ([amd#968](amd#968), closes [amd#966](amd#966)) — `uv` binary now bundled for `win-x64`; packaged Windows rescue installer included. - **macOS installer failed at `ensure-uv` on clean Apple Silicon** ([amd#967](amd#967), closes [amd#941](amd#941)) — Pinned `uv` v0.5.14 (`aarch64-apple-darwin`) shipped in the DMG; new `dmg-structural-smoke` CI job blocks future drift. - **AppImage users hit `gaia: command not found`** ([amd#942](amd#942), closes [amd#782](amd#782)) — Startup writes a `~/.local/bin/gaia` shim so `gaia` is on PATH after first launch (skips creation if already present). - **Windows fell back to Qwen instead of Gemma 4 default** ([amd#949](amd#949), closes [amd#948](amd#948)) — Model-resolution logic fixed so Gemma loads correctly on Windows. ## Tooling & Docs - **`gaia-release` skill** ([amd#939](amd#939)) — Phased release flow with hard gates before every irreversible step; encodes the manual pre-tag verification that caught two release-blocking bugs in v0.17.4. - **Internal-task issue template** ([amd#906](amd#906)) — Third issue template for agent-assignable internal work. - **Outlook via Power Automate plan** ([amd#954](amd#954)) — Enterprise-bypass spec for v0.17.7 Outlook integration. - **PR description guidance sharpened** ([amd#947](amd#947)) — `CLAUDE.md` "tight and value-focused" rule with anti-patterns. - **Stale `macOS uv fetch removed` orphan comment removed** ([amd#975](amd#975)). ## Thanks External contributors in this release: - [@theonlychant](https://github.com/theonlychant) — installer fixes ([amd#968](amd#968), [amd#942](amd#942), [amd#949](amd#949)) - [@BlueriteSoul](https://github.com/BlueriteSoul) — reported AppImage `gaia: command not found` ([amd#782](amd#782)) - [@nuts23](https://github.com/nuts23) — reported Windows Gemma/Qwen fallback ([amd#948](amd#948)) ## Release checklist - [x] `util/validate_release_notes.py docs/releases/v0.17.6.mdx --tag v0.17.6` passes - [x] `src/gaia/version.py` → `0.17.6` - [x] `src/gaia/apps/webui/package.json` → `0.17.6` - [x] Navbar label in `docs/docs.json` → `v0.17.6 · Lemonade 10.2.0` - [x] All 14 commits in the range (v0.17.5..HEAD) are represented in the notes - [ ] Review from @kovtcharov-amd addressed
Summary
Bundle
uvfor Windows (x64) installers and update the installer flow to use the packaged binary, resolving failures duringensure-uvfor users withoutuvon PATH.Why
The Windows desktop installer currently fails at the
ensure-uvstep ifuvis not already installed and available on the system PATH. This creates a broken first-run experience for new users. The root cause is that nouvbinary is bundled forwin-x64, so the installer cannot proceed in a clean environment. This change ensures the installer is self-contained and reliable across supported platforms.Linked issue
Closes #966
Changes
uvbinary forwin-x64andmac-arm64in the installer artifactsuvinstead of relying on system PATHbackend-installer.cjsto correctly resolve and invoke the packaged binarybackend-installer-progressdialogue.cjsto reflect improved installer flow and error handlingbuild-installers.ymlto includeuvin build outputs for supported targetsTest plan
win-x64) and macOS (arm64)uvinstalledensure-uvfailureuvis invoked correctly during setupuvis already presentpython util/lint.py --allpytest tests/unit/Checklist
Closes #N/Fixes #N/Refs #N).python util/lint.py --all,pytest tests/unit/).