Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .github/workflows/acceptance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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 }})
Expand Down Expand Up @@ -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.
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/linux-appimage-upgrade-smoke.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ permissions:
contents: read

env:
RIVET_PIN: 4cd374f3f783a58306026381a64fc83c0e23ff48
RIVET_PIN: a92877c02b6453b1826bfd061d7bbe70647ce5fa

jobs:
installed-upgrade:
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/macos-native-update-e2e.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ permissions:
contents: read

env:
RIVET_PIN: 4cd374f3f783a58306026381a64fc83c0e23ff48
RIVET_PIN: a92877c02b6453b1826bfd061d7bbe70647ce5fa
FULCRUM_UPDATE_E2E_TESTING: "1"

jobs:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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.
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/windows-msi-upgrade-smoke.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
34 changes: 32 additions & 2 deletions macos-host/Sources/RivetHost/GeneratedBackend.swift
Original file line number Diff line number Diff line change
Expand Up @@ -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: [])
Expand Down
9 changes: 4 additions & 5 deletions rivet.rktd
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Loading