Skip to content

Commit e5796ec

Browse files
authored
Fix fresh Windows and Linux runtime setup (#49)
Signed-off-by: Joseph Yaksich <gitcommit90@users.noreply.github.com> Co-authored-by: Joseph Yaksich <gitcommit90@users.noreply.github.com>
1 parent c232d30 commit e5796ec

15 files changed

Lines changed: 155 additions & 67 deletions

CHANGELOG.md

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
77

88
## [Unreleased]
99

10+
## [0.0.33] - 2026-08-01
11+
12+
### Fixed
13+
14+
- Fixed fresh Windows shared-runtime setup so the expected pre-install
15+
`wsl.exe --version` failure is inspected instead of terminating PowerShell
16+
before the pinned Microsoft WSL package can be downloaded and installed.
17+
- Preserved unexpected elevated Windows host-setup failures in the shared
18+
status file so onboarding reports the actionable cause rather than only the
19+
child process exit code.
20+
- Added SHA-256-pinned x64 and arm64 Cloudflare tunnel connectors to the Linux
21+
host archive, selected the connector matching the running host, and made
22+
fresh install/update validation reject incomplete Linux packages.
23+
1024
## [0.0.32] - 2026-08-01
1125

1226
### Fixed
@@ -941,7 +955,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
941955
notarization, stapled tickets, Gatekeeper verification, persistent
942956
Application Support, and isolated Apple container machines.
943957

944-
[Unreleased]: https://github.com/gitcommit90/1Helm/compare/v0.0.32...HEAD
958+
[Unreleased]: https://github.com/gitcommit90/1Helm/compare/v0.0.33...HEAD
959+
[0.0.33]: https://github.com/gitcommit90/1Helm/compare/v0.0.32...v0.0.33
945960
[0.0.32]: https://github.com/gitcommit90/1Helm/compare/v0.0.31...v0.0.32
946961
[0.0.31]: https://github.com/gitcommit90/1Helm/compare/v0.0.30...v0.0.31
947962
[0.0.30]: https://github.com/gitcommit90/1Helm/compare/v0.0.29...v0.0.30

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ A fresh data directory opens first-run setup. The source runtime defaults to
313313
| `PORT` | `8123` | HTTP/WebSocket control-plane port. |
314314
| `CTRL_DATA_DIR` | `./data` | Databases, routing state, uploads, and non-OCI development/Apple workspace mirrors. |
315315
| `HELM_CHANNEL_COMPUTER_BACKEND` | `apple` on macOS, `oci` on Linux and Windows | Host isolation backend; `native` and `mock` are explicit development/test overrides. |
316-
| `HELM_CHANNEL_MACHINE_IMAGE` | `local/1helm-channel-machine:0.0.32` | Versioned channel-machine image contract. |
316+
| `HELM_CHANNEL_MACHINE_IMAGE` | `local/1helm-channel-machine:0.0.33` | Versioned channel-machine image contract. |
317317

318318
### Agent-first JSON CLI
319319

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "1helm",
33
"productName": "1Helm",
4-
"version": "0.0.32",
4+
"version": "0.0.33",
55
"private": true,
66
"type": "module",
77
"license": "AGPL-3.0-only",

scripts/install-wsl-runtime.ps1

Lines changed: 71 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -37,8 +37,19 @@ function Fetch-File {
3737
# version/list matches fail unless the NULs are stripped first.
3838
function Get-WslText {
3939
param([Parameter(Mandatory = $true)][string[]]$ArgumentList)
40-
$raw = & $wsl @ArgumentList 2>&1 | Out-String
41-
$code = $LASTEXITCODE
40+
# Windows PowerShell promotes native stderr to ErrorRecord objects. With the
41+
# script-wide Stop policy, an expected nonzero probe (such as --version on a
42+
# genuinely fresh host) otherwise aborts before we can inspect LASTEXITCODE
43+
# and install WSL. Keep the probe non-terminating, then restore fail-closed
44+
# behavior for the surrounding setup transaction.
45+
$previousErrorAction = $ErrorActionPreference
46+
try {
47+
$ErrorActionPreference = "Continue"
48+
$raw = & $wsl @ArgumentList 2>&1 | Out-String
49+
$code = $LASTEXITCODE
50+
} finally {
51+
$ErrorActionPreference = $previousErrorAction
52+
}
4253
$text = ($raw -replace [char]0, "").Trim()
4354
return [pscustomobject]@{ ExitCode = $code; Text = $text }
4455
}
@@ -103,63 +114,69 @@ function Fail-Setup {
103114
}
104115

105116
if ($HostSetup) {
106-
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
107-
$principal = [Security.Principal.WindowsPrincipal]::new($identity)
108-
if (-not $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
109-
Fail-Setup "The WSL host setup phase requires administrator approval."
110-
}
111-
Write-SetupStatus -Status "running" -Step "Enabling Windows WSL features..." -Progress 8
112-
$wslFeature = Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
113-
$vmFeature = Get-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
114-
if ($wslFeature.State -ne "Enabled") { Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -All -NoRestart | Out-Null }
115-
if ($vmFeature.State -ne "Enabled") { Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -All -NoRestart | Out-Null }
116-
$wslFeature = Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
117-
$vmFeature = Get-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
118-
$restartRequired = (Test-RestartRequired $wslFeature) -or (Test-RestartRequired $vmFeature)
119-
$hostTemporary = Join-Path ([System.IO.Path]::GetTempPath()) ("1helm-wsl-host-" + [Guid]::NewGuid().ToString("N"))
120-
New-Item -ItemType Directory -Path $hostTemporary | Out-Null
121117
try {
122-
if (-not (Test-PinnedWslRuntime)) {
123-
$msi = Join-Path $hostTemporary "wsl.candidate.msi"
124-
Write-SetupStatus -Status "running" -Step "Downloading Microsoft WSL installer..." -Progress 12
125-
Fetch-File -Url $wslInstallerUrl -Destination $msi
126-
if ((Get-FileHash -LiteralPath $msi -Algorithm SHA256).Hash.ToLowerInvariant() -ne $wslInstallerSha256) {
127-
Fail-Setup "Microsoft WSL installer did not match 1Helm's pinned SHA-256."
128-
}
129-
$signature = Get-AuthenticodeSignature -LiteralPath $msi
130-
if ($signature.Status -ne [System.Management.Automation.SignatureStatus]::Valid -or $null -eq $signature.SignerCertificate -or
131-
$signature.SignerCertificate.Subject -notmatch '(^|,\s*)CN=Microsoft Corporation(,|$)') {
132-
Fail-Setup "Microsoft WSL installer did not have a valid Microsoft Corporation signature."
133-
}
134-
Write-SetupStatus -Status "running" -Step "Installing Microsoft WSL $wslVersion..." -Progress 18
135-
$installer = Start-Process -FilePath "$env:SystemRoot\System32\msiexec.exe" -ArgumentList @("/i", $msi, "/qn", "/norestart") -Wait -PassThru
136-
# 0 success; 1641/3010 success+reboot; 1638 already installed (same/newer).
137-
# 1603 is a hard fail from msiexec, but on machines that already have the
138-
# pinned WSL build (or UTF-16 made detection fail earlier) the package may
139-
# still leave a working runtime - re-verify before failing closed.
140-
if ($installer.ExitCode -in @(1641, 3010)) { $restartRequired = $true }
141-
elseif ($installer.ExitCode -notin @(0, 1638)) {
142-
if (Test-PinnedWslRuntime) {
143-
Write-Host "Microsoft WSL installer returned $($installer.ExitCode), but pinned WSL $wslVersion is already present; continuing."
144-
} else {
145-
Fail-Setup "Microsoft WSL installer failed with exit code $($installer.ExitCode)."
118+
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
119+
$principal = [Security.Principal.WindowsPrincipal]::new($identity)
120+
if (-not $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) {
121+
Fail-Setup "The WSL host setup phase requires administrator approval."
122+
}
123+
Write-SetupStatus -Status "running" -Step "Enabling Windows WSL features..." -Progress 8
124+
$wslFeature = Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
125+
$vmFeature = Get-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
126+
if ($wslFeature.State -ne "Enabled") { Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux -All -NoRestart | Out-Null }
127+
if ($vmFeature.State -ne "Enabled") { Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform -All -NoRestart | Out-Null }
128+
$wslFeature = Get-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux
129+
$vmFeature = Get-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
130+
$restartRequired = (Test-RestartRequired $wslFeature) -or (Test-RestartRequired $vmFeature)
131+
$hostTemporary = Join-Path ([System.IO.Path]::GetTempPath()) ("1helm-wsl-host-" + [Guid]::NewGuid().ToString("N"))
132+
New-Item -ItemType Directory -Path $hostTemporary | Out-Null
133+
try {
134+
if (-not (Test-PinnedWslRuntime)) {
135+
$msi = Join-Path $hostTemporary "wsl.candidate.msi"
136+
Write-SetupStatus -Status "running" -Step "Downloading Microsoft WSL installer..." -Progress 12
137+
Fetch-File -Url $wslInstallerUrl -Destination $msi
138+
if ((Get-FileHash -LiteralPath $msi -Algorithm SHA256).Hash.ToLowerInvariant() -ne $wslInstallerSha256) {
139+
Fail-Setup "Microsoft WSL installer did not match 1Helm's pinned SHA-256."
146140
}
141+
$signature = Get-AuthenticodeSignature -LiteralPath $msi
142+
if ($signature.Status -ne [System.Management.Automation.SignatureStatus]::Valid -or $null -eq $signature.SignerCertificate -or
143+
$signature.SignerCertificate.Subject -notmatch '(^|,\s*)CN=Microsoft Corporation(,|$)') {
144+
Fail-Setup "Microsoft WSL installer did not have a valid Microsoft Corporation signature."
145+
}
146+
Write-SetupStatus -Status "running" -Step "Installing Microsoft WSL $wslVersion..." -Progress 18
147+
$installer = Start-Process -FilePath "$env:SystemRoot\System32\msiexec.exe" -ArgumentList @("/i", $msi, "/qn", "/norestart") -Wait -PassThru
148+
# 0 success; 1641/3010 success+reboot; 1638 already installed (same/newer).
149+
# 1603 is a hard fail from msiexec, but on machines that already have the
150+
# pinned WSL build (or UTF-16 made detection fail earlier) the package may
151+
# still leave a working runtime - re-verify before failing closed.
152+
if ($installer.ExitCode -in @(1641, 3010)) { $restartRequired = $true }
153+
elseif ($installer.ExitCode -notin @(0, 1638)) {
154+
if (Test-PinnedWslRuntime) {
155+
Write-Host "Microsoft WSL installer returned $($installer.ExitCode), but pinned WSL $wslVersion is already present; continuing."
156+
} else {
157+
Fail-Setup "Microsoft WSL installer failed with exit code $($installer.ExitCode)."
158+
}
159+
}
160+
} else {
161+
Write-SetupStatus -Status "running" -Step "Microsoft WSL $wslVersion is already installed." -Progress 18
147162
}
148-
} else {
149-
Write-SetupStatus -Status "running" -Step "Microsoft WSL $wslVersion is already installed." -Progress 18
150-
}
151-
if ($restartRequired) {
152-
Write-SetupStatus -Status "restart_required" -Step "WSL 2 features are enabled. Restart Windows once, then retry 1Helm computer setup." -Progress 20
153-
exit 10
163+
if ($restartRequired) {
164+
Write-SetupStatus -Status "restart_required" -Step "WSL 2 features are enabled. Restart Windows once, then retry 1Helm computer setup." -Progress 20
165+
exit 10
166+
}
167+
if (-not (Test-PinnedWslRuntime)) { Fail-Setup "Microsoft WSL $wslVersion was installed but could not be verified." }
168+
Write-SetupStatus -Status "running" -Step "Setting WSL 2 as the default..." -Progress 22
169+
$defaultVersion = Get-WslText -ArgumentList @("--set-default-version", "2")
170+
if ($defaultVersion.ExitCode -ne 0) { Fail-Setup "WSL could not set version 2 as the default. $($defaultVersion.Text)" }
171+
} finally {
172+
if (Test-Path -LiteralPath $hostTemporary) { Remove-Item -LiteralPath $hostTemporary -Recurse -Force }
154173
}
155-
if (-not (Test-PinnedWslRuntime)) { Fail-Setup "Microsoft WSL $wslVersion was installed but could not be verified." }
156-
Write-SetupStatus -Status "running" -Step "Setting WSL 2 as the default..." -Progress 22
157-
$defaultVersion = Get-WslText -ArgumentList @("--set-default-version", "2")
158-
if ($defaultVersion.ExitCode -ne 0) { Fail-Setup "WSL could not set version 2 as the default. $($defaultVersion.Text)" }
159-
} finally {
160-
if (Test-Path -LiteralPath $hostTemporary) { Remove-Item -LiteralPath $hostTemporary -Recurse -Force }
174+
exit 0
175+
} catch {
176+
$message = $_.Exception.Message
177+
if (-not $message) { $message = "$_" }
178+
Fail-Setup $message
161179
}
162-
exit 0
163180
}
164181

165182
# Keep the distribution owned by the signed-in Windows account. Only optional

scripts/package-linux-host.mjs

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
#!/usr/bin/env node
2-
import { copyFileSync, existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync } from "node:fs";
2+
import { chmodSync, copyFileSync, existsSync, mkdirSync, mkdtempSync, readFileSync, rmSync } from "node:fs";
33
import { tmpdir } from "node:os";
44
import { join, resolve } from "node:path";
55
import { spawnSync } from "node:child_process";
@@ -9,6 +9,19 @@ const version = String(JSON.parse(readFileSync(resolve(root, "package.json"), "u
99
if (!/^\d+\.\d+\.\d+$/.test(version)) throw new Error("package.json must contain a release version");
1010
const dist = resolve(root, "dist");
1111
const output = resolve(dist, `1Helm-${version}-linux-node.tgz`);
12+
const cloudflaredVersion = "2026.3.0";
13+
const cloudflared = [
14+
{
15+
arch: "x64",
16+
asset: "cloudflared-linux-amd64",
17+
sha256: "4a9e50e6d6d798e90fcd01933151a90bf7edd99a0a55c28ad18f2e16263a5c30",
18+
},
19+
{
20+
arch: "arm64",
21+
asset: "cloudflared-linux-arm64",
22+
sha256: "0755ba4cbab59980e6148367fcf53a8f3ec85a97deefd63c2420cf7850769bee",
23+
},
24+
];
1225
const sealed = [
1326
"container/channel-machine.oci.tar",
1427
"container/channel-machine.oci.sha256",
@@ -43,6 +56,19 @@ try {
4356
copyFileSync(src, join(stage, prefix, rel));
4457
}
4558

59+
const resourcesDir = join(stage, prefix, "resources");
60+
mkdirSync(resourcesDir, { recursive: true });
61+
for (const connector of cloudflared) {
62+
const destination = join(resourcesDir, `cloudflared-linux-${connector.arch}`);
63+
const url = `https://github.com/cloudflare/cloudflared/releases/download/${cloudflaredVersion}/${connector.asset}`;
64+
const download = spawnSync("curl", ["-fsSL", "--proto", "=https", "--tlsv1.2", "--retry", "3", "-o", destination, url], { stdio: "inherit" });
65+
if (download.status !== 0) throw new Error(`Could not download pinned cloudflared for Linux ${connector.arch}`);
66+
const digest = spawnSync("sha256sum", [destination], { encoding: "utf8" });
67+
const actual = digest.status === 0 ? String(digest.stdout || "").trim().split(/\s+/)[0] : "";
68+
if (actual !== connector.sha256) throw new Error(`Pinned cloudflared digest mismatch for Linux ${connector.arch} (got ${actual || "unavailable"})`);
69+
chmodSync(destination, 0o755);
70+
}
71+
4672
const pack = spawnSync("tar", ["-czf", output, "-C", stage, prefix], { stdio: "inherit" });
4773
if (pack.status !== 0) throw new Error("Could not write the Linux host archive");
4874
} finally {

site/public/install.sh

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,8 @@ PACKAGE_VERSION="$("$NODE_LINK/bin/node" -p 'require(process.argv[1]).version' "
183183
&& -r "$RELEASE_STAGE/deploy/1helm-oci-runtime-v1.conf" \
184184
&& -r "$RELEASE_STAGE/container/Containerfile.oci" \
185185
&& -f "$RELEASE_STAGE/container/channel-machine.oci.tar" \
186-
&& -f "$RELEASE_STAGE/container/channel-machine.oci.sha256" ]] \
186+
&& -f "$RELEASE_STAGE/container/channel-machine.oci.sha256" \
187+
&& -x "$RELEASE_STAGE/resources/cloudflared-linux-$NODE_ARCH" ]] \
187188
|| { echo "The verified Linux artifact is missing its complete OCI runtime contract." >&2; exit 1; }
188189
chown -R "$SERVICE_USER:$SERVICE_USER" "$RELEASE_STAGE"
189190
runuser -u "$SERVICE_USER" -- env HOME="$STATE_ROOT" PATH="$NODE_LINK/bin:/usr/bin:/bin" PUPPETEER_SKIP_DOWNLOAD=1 "$NODE_LINK/bin/npm" --prefix "$RELEASE_STAGE" ci
@@ -193,7 +194,8 @@ if [[ -e "$RELEASE_ROOT" ]]; then
193194
EXISTING_VERSION="$("$NODE_LINK/bin/node" -p 'require(process.argv[1]).version' "$RELEASE_ROOT/package.json" 2>/dev/null || true)"
194195
[[ "$EXISTING_VERSION" == "$VERSION" \
195196
&& -f "$RELEASE_ROOT/container/channel-machine.oci.tar" \
196-
&& -f "$RELEASE_ROOT/container/channel-machine.oci.sha256" ]] \
197+
&& -f "$RELEASE_ROOT/container/channel-machine.oci.sha256" \
198+
&& -x "$RELEASE_ROOT/resources/cloudflared-linux-$NODE_ARCH" ]] \
197199
|| { echo "Existing release directory does not match the verified v$VERSION Linux artifact." >&2; exit 1; }
198200
else
199201
mv "$RELEASE_STAGE" "$RELEASE_ROOT"

site/public/update-host.sh

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,11 @@ STATUS_FILE="$STATE_ROOT/host-update-status.json"
1313
LOCK_FILE="$INSTALL_ROOT/host-update.lock"
1414
SERVICE_NAME="1helm.service"
1515
PORT="8123"
16+
case "$(uname -m)" in
17+
x86_64|amd64) CONNECTOR_ARCH="x64" ;;
18+
aarch64|arm64) CONNECTOR_ARCH="arm64" ;;
19+
*) echo "Unsupported architecture: $(uname -m)" >&2; exit 1 ;;
20+
esac
1621
HOST_CONTRACT_PATHS=(
1722
/usr/libexec/1helm-oci-runtime
1823
/etc/1helm/oci-runtime-v1.conf
@@ -192,7 +197,7 @@ if [[ "$VERSION_ORDER" != "-1" ]]; then
192197
RELEASE_ROOT="$(readlink -f "$APP_ROOT" 2>/dev/null || true)"
193198
[[ "$RELEASE_ROOT" == "$RELEASES_ROOT/"* && -d "$RELEASE_ROOT" ]] \
194199
|| fail "The current 1Helm release is not inside the verified release store."
195-
[[ -x "$RELEASE_ROOT/site/public/apply-linux-release.sh" && -x "$RELEASE_ROOT/site/public/install-oci-runtime.sh" && -x "$RELEASE_ROOT/site/public/install-linux-units.sh" && -x "$RELEASE_ROOT/site/public/uninstall-host.sh" && -x "$RELEASE_ROOT/scripts/1helm-oci-runtime" ]] \
200+
[[ -x "$RELEASE_ROOT/site/public/apply-linux-release.sh" && -x "$RELEASE_ROOT/site/public/install-oci-runtime.sh" && -x "$RELEASE_ROOT/site/public/install-linux-units.sh" && -x "$RELEASE_ROOT/site/public/uninstall-host.sh" && -x "$RELEASE_ROOT/scripts/1helm-oci-runtime" && -x "$RELEASE_ROOT/resources/cloudflared-linux-$CONNECTOR_ARCH" ]] \
196201
|| fail "The current verified release is missing its OCI runtime contract."
197202
write_status "installing" "$TARGET_VERSION" "The application is current; the host is applying its verified OCI contract."
198203
APPLY_UNIT="1helm-host-contract-apply-${TARGET_VERSION//./-}-$$"
@@ -220,7 +225,7 @@ PACKAGE_VERSION="$("$NODE_LINK/bin/node" -p 'require(process.argv[1]).version' "
220225
|| fail "The verified Linux artifact version does not match its release tag."
221226
[[ -x "$STAGE/site/public/update-host.sh" ]] \
222227
|| fail "The verified Linux artifact is missing its host updater."
223-
[[ -x "$STAGE/site/public/apply-linux-release.sh" && -x "$STAGE/site/public/install-oci-runtime.sh" && -x "$STAGE/site/public/install-linux-units.sh" && -x "$STAGE/site/public/uninstall-host.sh" && -x "$STAGE/scripts/1helm-oci-runtime" && -r "$STAGE/deploy/1helm-oci-runtime-v1.conf" && -r "$STAGE/container/Containerfile.oci" ]] \
228+
[[ -x "$STAGE/site/public/apply-linux-release.sh" && -x "$STAGE/site/public/install-oci-runtime.sh" && -x "$STAGE/site/public/install-linux-units.sh" && -x "$STAGE/site/public/uninstall-host.sh" && -x "$STAGE/scripts/1helm-oci-runtime" && -r "$STAGE/deploy/1helm-oci-runtime-v1.conf" && -r "$STAGE/container/Containerfile.oci" && -x "$STAGE/resources/cloudflared-linux-$CONNECTOR_ARCH" ]] \
224229
|| fail "The verified Linux artifact is missing its OCI runtime contract."
225230
chown -R "$SERVICE_USER:$SERVICE_USER" "$STAGE"
226231

src/server/channel-computers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ const APPLE_RUNTIME_VERSION = "1.1.0";
6868
export const APPLE_RUNTIME_PACKAGE = `container-${APPLE_RUNTIME_VERSION}-installer-signed.pkg`;
6969
export const APPLE_RUNTIME_URL = `https://github.com/apple/container/releases/download/${APPLE_RUNTIME_VERSION}/${APPLE_RUNTIME_PACKAGE}`;
7070
export const APPLE_RUNTIME_SHA256 = "0ca1c42a2269c2557efb1d82b1b38ac553e6a3a3da1b1179c439bcee1e7d6714";
71-
export const DEFAULT_CHANNEL_IMAGE = process.env.HELM_CHANNEL_MACHINE_IMAGE || "local/1helm-channel-machine:0.0.32";
71+
export const DEFAULT_CHANNEL_IMAGE = process.env.HELM_CHANNEL_MACHINE_IMAGE || "local/1helm-channel-machine:0.0.33";
7272
const CONTAINER_CANDIDATES = [process.env.HELM_CONTAINER_CLI, "/usr/local/bin/container", "/opt/homebrew/bin/container", "container"].filter(Boolean) as string[];
7373
const OCI_RUNTIME_VERSION = "1helm-oci-runtime-v1";
7474
const OCI_HELPER_CANDIDATES = [

0 commit comments

Comments
 (0)