From b87969dfcc9d7ea9d1fdfe5996fc5865731b98c6 Mon Sep 17 00:00:00 2001 From: turinglambdaai Date: Sat, 24 Oct 2026 22:32:32 +0800 Subject: [PATCH] chore: move the Rivet pin to a92877c (linux-formats release fix) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The pinned revision carried the release-pipeline crash fixed upstream in rivet#321 (a for-loop variable shadowed the format builtin, so any project with a non-empty linux-formats list died at production verification). Native Linux installers return in the next release; restore linux-formats now that the pin includes the fix. Pin replaced in all six workflows including the setup-embed-racket action refs. Generated clients regenerated with the pin — zero drift. Local gates: 134 tests, schema compatible, macOS acceptance 5/5. --- .github/workflows/acceptance.yml | 4 +-- .github/workflows/ci.yml | 4 +-- .../linux-appimage-upgrade-smoke.yml | 4 +-- .github/workflows/macos-native-update-e2e.yml | 2 +- .github/workflows/release.yml | 4 +-- .../workflows/windows-msi-upgrade-smoke.yml | 2 +- CHANGELOG.md | 7 ++++ .../Sources/RivetHost/GeneratedBackend.swift | 34 +++++++++++++++++-- rivet.rktd | 9 +++-- 9 files changed, 53 insertions(+), 17 deletions(-) diff --git a/.github/workflows/acceptance.yml b/.github/workflows/acceptance.yml index f67543d5..3bf6e601 100644 --- a/.github/workflows/acceptance.yml +++ b/.github/workflows/acceptance.yml @@ -12,7 +12,7 @@ permissions: env: # Unified immutable upstream revision containing AppImage handoff, # branded-DMG signature preservation, and macOS update rollback safety. - RIVET_PIN: 4cd374f3f783a58306026381a64fc83c0e23ff48 + RIVET_PIN: a92877c02b6453b1826bfd061d7bbe70647ce5fa jobs: windows: @@ -99,7 +99,7 @@ jobs: - name: Remember full Racket command path run: echo "FULL_RACKET_BIN=$(dirname "$(command -v raco)")" >> "$GITHUB_ENV" - name: Set up embeddable Racket CS - uses: turinglambdaai/rivet/.github/actions/setup-embed-racket@4cd374f3f783a58306026381a64fc83c0e23ff48 + uses: turinglambdaai/rivet/.github/actions/setup-embed-racket@a92877c02b6453b1826bfd061d7bbe70647ce5fa - name: Run executable product acceptance run: PATH="$FULL_RACKET_BIN:$PATH" dbus-run-session -- raco rivet acceptance --json - name: Require generated Linux client to be current diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index e64279b6..433029b0 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -16,7 +16,7 @@ concurrency: env: # Unified immutable upstream revision containing AppImage handoff, # branded-DMG signature preservation, and macOS update rollback safety. - RIVET_PIN: 4cd374f3f783a58306026381a64fc83c0e23ff48 + RIVET_PIN: a92877c02b6453b1826bfd061d7bbe70647ce5fa jobs: backend: name: Backend tests (${{ matrix.os }}) @@ -107,7 +107,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Set up embeddable Racket CS - uses: turinglambdaai/rivet/.github/actions/setup-embed-racket@4cd374f3f783a58306026381a64fc83c0e23ff48 + uses: turinglambdaai/rivet/.github/actions/setup-embed-racket@a92877c02b6453b1826bfd061d7bbe70647ce5fa # Installed after the embeddable runtime so the catalog dependency # closure (cext-lib, crypto-lib, keel) resolves against the minimal # build — it ships no packages of its own. diff --git a/.github/workflows/linux-appimage-upgrade-smoke.yml b/.github/workflows/linux-appimage-upgrade-smoke.yml index 9e579108..d1c72c8a 100644 --- a/.github/workflows/linux-appimage-upgrade-smoke.yml +++ b/.github/workflows/linux-appimage-upgrade-smoke.yml @@ -13,7 +13,7 @@ permissions: contents: read env: - RIVET_PIN: 4cd374f3f783a58306026381a64fc83c0e23ff48 + RIVET_PIN: a92877c02b6453b1826bfd061d7bbe70647ce5fa jobs: installed-upgrade: @@ -31,7 +31,7 @@ jobs: steps: - uses: actions/checkout@v4 - name: Set up embeddable Racket CS - uses: turinglambdaai/rivet/.github/actions/setup-embed-racket@4cd374f3f783a58306026381a64fc83c0e23ff48 + uses: turinglambdaai/rivet/.github/actions/setup-embed-racket@a92877c02b6453b1826bfd061d7bbe70647ce5fa - name: Install Rivet (pinned source) run: raco pkg install --auto --no-docs "https://github.com/turinglambdaai/rivet.git#${RIVET_PIN}" - name: Install native and headless GUI dependencies diff --git a/.github/workflows/macos-native-update-e2e.yml b/.github/workflows/macos-native-update-e2e.yml index 94c30890..9140420d 100644 --- a/.github/workflows/macos-native-update-e2e.yml +++ b/.github/workflows/macos-native-update-e2e.yml @@ -15,7 +15,7 @@ permissions: contents: read env: - RIVET_PIN: 4cd374f3f783a58306026381a64fc83c0e23ff48 + RIVET_PIN: a92877c02b6453b1826bfd061d7bbe70647ce5fa FULCRUM_UPDATE_E2E_TESTING: "1" jobs: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 1731b17a..f03c0630 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,7 +37,7 @@ env: # lockstep by hand. # Unified immutable upstream revision containing AppImage handoff, # branded-DMG signature preservation, and macOS update rollback safety. - RIVET_PIN: 4cd374f3f783a58306026381a64fc83c0e23ff48 + RIVET_PIN: a92877c02b6453b1826bfd061d7bbe70647ce5fa permissions: contents: write actions: read @@ -148,7 +148,7 @@ jobs: rpm desktop-file-utils - name: Set up embeddable Racket CS (Linux) if: matrix.platform == 'linux' - uses: turinglambdaai/rivet/.github/actions/setup-embed-racket@4cd374f3f783a58306026381a64fc83c0e23ff48 + uses: turinglambdaai/rivet/.github/actions/setup-embed-racket@a92877c02b6453b1826bfd061d7bbe70647ce5fa # Installed after the embeddable runtime so the catalog dependency # closure (cext-lib, crypto-lib, keel) resolves against the minimal # build — it ships no packages of its own. diff --git a/.github/workflows/windows-msi-upgrade-smoke.yml b/.github/workflows/windows-msi-upgrade-smoke.yml index 86effa63..d99422bb 100644 --- a/.github/workflows/windows-msi-upgrade-smoke.yml +++ b/.github/workflows/windows-msi-upgrade-smoke.yml @@ -26,7 +26,7 @@ jobs: architecture: x64 - name: Install pinned Rivet updater dependencies shell: bash - run: raco pkg install --auto --no-docs 'https://github.com/turinglambdaai/rivet.git#4cd374f3f783a58306026381a64fc83c0e23ff48' + run: raco pkg install --auto --no-docs 'https://github.com/turinglambdaai/rivet.git#a92877c02b6453b1826bfd061d7bbe70647ce5fa' - name: Verify official signed update discovery and MSI payload shell: bash run: racket scripts/acceptance/windows-signed-feed-smoke.rkt diff --git a/CHANGELOG.md b/CHANGELOG.md index ef57bed3..8bb54cea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,13 @@ independently per platform packaging run. ## [Unreleased] +### Changed + +- **Rivet pin moved to a92877c**, which fixes the release pipeline crash + that kept native Linux installers (deb/rpm/AppImage) out of 0.13.3 — + they return with the next release, alongside the AppImage update + payload in the signed feed. + ## [0.13.3] - 2026-10-22 ### Added diff --git a/macos-host/Sources/RivetHost/GeneratedBackend.swift b/macos-host/Sources/RivetHost/GeneratedBackend.swift index ff2ef788..926efa43 100644 --- a/macos-host/Sources/RivetHost/GeneratedBackend.swift +++ b/macos-host/Sources/RivetHost/GeneratedBackend.swift @@ -127,9 +127,39 @@ public enum RivetEvent: Sendable { } } +public protocol RivetGeneratedRPCClient: Sendable { + func call(_ name: String, arguments: [RivetValue]) async throws -> RivetValue +} + +// Keep generated clients compatible with the last released SwiftPM runtime. +// Authenticated network clients can use RivetAPI(call: deviceClient.call). +public extension RivetGeneratedRPCClient { + func getState(_ name: String) async throws -> RivetValue { + try await call("$state/get", arguments: [.string(name)]) + } + + @discardableResult + func setState(_ name: String, value: RivetValue) async throws -> RivetValue { + try await call("$state/set", arguments: [.string(name), value]) + } +} + +extension RivetClient: RivetGeneratedRPCClient {} + +private struct RivetGeneratedClosureClient: RivetGeneratedRPCClient { + let invoke: @Sendable (String, [RivetValue]) async throws -> RivetValue + + func call(_ name: String, arguments: [RivetValue]) async throws -> RivetValue { + try await invoke(name, arguments) + } +} + public struct RivetAPI: Sendable { - public let client: RivetClient - public init(client: RivetClient) { self.client = client } + public let client: any RivetGeneratedRPCClient + public init(client: any RivetGeneratedRPCClient) { self.client = client } + public init(call: @escaping @Sendable (String, [RivetValue]) async throws -> RivetValue) { + self.client = RivetGeneratedClosureClient(invoke: call) + } public func ai_status() async throws -> String { let rivetResult = try await client.call("ai-status", arguments: []) diff --git a/rivet.rktd b/rivet.rktd index a5fd869a..adf1653c 100644 --- a/rivet.rktd +++ b/rivet.rktd @@ -26,11 +26,10 @@ ;; the tar.gz path, while an AppImage process selects the AppImage by ;; installer kind so Rivet's atomic AppImage replacement can own the ;; eventual in-app install. deb/rpm remain package-manager-owned. - ;; Native Linux installers (deb/rpm/AppImage) are temporarily - ;; disabled: the pinned rivet revision's release summary crashes on - ;; a non-empty linux-formats list ("deb" applied as a procedure). - ;; Restore this line once the upstream fix lands and the pin moves. - (linux-formats . ())) + ;; Native Linux installers (deb/rpm/AppImage) ride along with the + ;; signed tar.gz; the signed update feed also carries the AppImage + ;; payload for in-place AppImage updates. + (linux-formats . ("deb" "rpm" "appimage"))) ;; Mac installer artwork is rendered from its editable SVG in the ;; release workflow. Windows installer bitmaps remain undeclared ;; until the files exist; never configure placeholder paths. \ No newline at end of file