Skip to content

feat(agent): portable Linux installs and signed updates for 0.0.4 - #1212

Merged
AnthonyRonning merged 1 commit into
masterfrom
codex-upd-appimage-maple
Oct 23, 2026
Merged

AnthonyRonning merged 1 commit into
masterfrom
codex-upd-appimage-maple

Conversation

@AnthonyRonning

@AnthonyRonning AnthonyRonning commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Linux Agent installs now use a persistent user-local tar bundle with command/menu integration and signed in-app updates. The bundle carries its loader and client libraries, so the official installation does not require FUSE or a Nix runtime. Host graphics drivers, CA certificates and desktop services remain host requirements. Agent advances to 0.0.4 for both macOS and Linux, including platforms without functional changes.

Linux installs stage and compare the signed archive, stop the host under the existing SQL/startup/ownership fences, atomically exchange directories, and relaunch the committed AppRun. The previous bundle remains until a signed receipt and successful new-store startup checkpoint permit cleanup. Shared self-launch resolution keeps the integrity checker as a direct, bounded child. Initial install only publishes to an absent destination; it never overwrites an existing installation.

The Linux v2 feed uses the existing Agent Worker, R2 bucket and signing key. Both platform envelopes bind the same version/build/source; the existing macOS v1 feed remains compatible with installed 0.0.3 clients. Reservation and conditional promotion support safe retries after partial two-pointer promotion. Research update code, routes, credentials and publications are unchanged.

The final correction accepts either exact signed-out ACP guard while still requiring exit 1, the same host/socket across two clients, and ownership release on stop. Timeout fixtures now allow cold interpreter startup. The launcher also uses readable host Compose data when XLOCALEDIR is unset, preserving custom and explicitly empty overrides.

Validation:

  • Publisher: 113 tests passed, including real minisign signatures and dual-feed retry/CAS recovery. Worker: 22 tests passed, including workerd runtime, formatting, type checks and deployment dry run.
  • Ubuntu x86_64: 60 updater tests and warnings-denied Clippy passed with pinned Rust/Clippy 1.98, including actual atomic exchange, retained receipts and stale-preparation rejection.
  • Full pinned Agent just ci passed: core 691, desktop 825, updater 59 and headless 227 tests, plus remaining workspace suites and all feature-set Clippy checks. Rust source and dependency files are unchanged by the final launcher/smoke correction.
  • Packaging covers strict archive bounds, real Linux setuid rejection, atomic NOREPLACE, extraction under umask 077, credential isolation, exact host reuse and failed-stop/cancellation behavior. On final head 0a6fb8b3, Ubuntu completed all 131 packaging cases with 128 passes and three macOS-only skips. All 10 native Linux installer cases passed without skips. Root flake checks passed on both platforms, including the combined CI-performance and portable-install contracts.
  • Final unsigned Prod CI artifact 12484061051, from run 39911302701 (0.0.4/build 502, candidate source 838a5e1 with the exact reviewed tree), passed the actual Rust archive scanner, first install under a HOME containing spaces, installed wrapper/desktop/icon checks, and a two-client host/ACP/Stop probe with Nix hidden and networking disabled. Tar SHA-256: d2d832ea07dea2ec2f529244234476c92b58dce18dd5f49e85a4d190d0784d6d. Its installed GUI rendered and accepted dummy email input without submitting. Ctrl+Q exited zero and released the already-active host, socket and owner lock before any explicit harness cleanup ran.
  • A native C API probe against the bundled libxkbcommon reproduced missing Compose tables with Nix hidden and verified Multi_key + apostrophe + e produces UTF-8 é using host locale data. The final packaged AppRun matches the corrected launcher hash; its actual GUI startup had no Compose warning. Physical Compose-key/IME interaction remains separate from this C API and ASCII-input proof.

Reviewed head: 0a6fb8b3d77fbea96634acb9876142a93fd4993d, based on master c93352ee. All applicable CI passed: 54 successful checks and seven expected skips, including both hosted Linux downloaded-artifact verifiers and the full macOS/Windows workspace tests. The later master MCP change in #1226 has no overlapping files; the clean combined tree preserves all reviewed blobs. Unsigned PR package/runtime evidence does not establish a trusted master release or signed installed-update result.

Before Linux invitations: obtain the trusted master packages, complete signing/publication and a real Linux signed installed N-to-N+1 rehearsal with persistence and failed-replacement recovery. PR artifacts are unsigned. Native runtime coverage is Ubuntu only; an owner Omarchy trial is planned, and Fedora/other distro runtime coverage is not claimed. No production deployment or publication is performed by this PR update.

@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Maple Auth development preview: https://b08d2725.maple-auth-dev.pages.dev

Commit: 0a6fb8b3d77fbea96634acb9876142a93fd4993d

Uses development services. Cloudflare Access applies. Provider OAuth is not configured for PR URLs; use the stable Auth Dev host for OAuth rehearsal.

@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Maple development preview: https://d2e3ae9f.maple-ca8.pages.dev

Commit: 0a6fb8b3d77fbea96634acb9876142a93fd4993d

Uses development API, billing, flags and PCR configuration. Cloudflare Access applies.

This branch was successfully deployed

2 active deployments
pages-pr-1212 — 0a6fb8b3 Deployed Oct 23, 2026 by github-actions[bot]
auth-pages-pr-1212 — 0a6fb8b3 Deployed Oct 23, 2026 by github-actions[bot]
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.

1 participant