diff --git a/.gitignore b/.gitignore index 547c684..2142fdd 100644 --- a/.gitignore +++ b/.gitignore @@ -15,6 +15,12 @@ public/excalidraw/ *.sqlite-shm dist/ +# Sealed OCI channel image (Linux/Windows). Built by scripts/build-oci-channel-image.sh; +# never commit the multi‑hundred‑MB archive into git. +container/channel-machine.oci.tar +container/channel-machine.oci.sha256 +container/channel-machine.oci.json + # local runtime state & session artifacts data-refactored/ .deploy-backups/ diff --git a/CHANGELOG.md b/CHANGELOG.md index be9d11d..e038f7c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,20 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [0.0.30] - 2026-07-31 + +### Fixed +- Windows shared WSL OCI bootstrap: script-scoped downloads, UTF-16 WSL output handling, tracked setup progress, and honest readiness errors after cold start. +- Windows channel Files/Cowork no longer depend on `\\wsl.localhost` (interop-off kills 9p). Host IO uses the OCI helper `storage-*` operations. +- Channel storage root stays `0711` so helper verification and Files layout stay consistent. +- Mobile keyboard: focus no longer self-dismisses on tall threads; form controls stay at 16px on small screens to avoid iOS auto-zoom. +- Main-channel `@` suggestions no longer list Skipper twice. +- Linux OCI channel networks: when Podman rejects Docker-style `com.docker.network.bridge.name` (CNI and some netavark builds), the helper falls back to a labeled network create so channel computers provision on Debian/Ubuntu hosts that previously failed with “owned network missing / labels incomplete”. +- Linux package archives now include the sealed channel-machine OCI image required by the host installer. + +### Notes +- Desktop train: macOS notarized DMG + updater ZIP, Linux host archive, Windows Setup + Squirrel package from one version. + ## [0.0.29] - 2026-07-30 ### Changed @@ -863,7 +877,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 notarization, stapled tickets, Gatekeeper verification, persistent Application Support, and isolated Apple container machines. -[Unreleased]: https://github.com/gitcommit90/1Helm/compare/v0.0.29...HEAD +[Unreleased]: https://github.com/gitcommit90/1Helm/compare/v0.0.30...HEAD +[0.0.30]: https://github.com/gitcommit90/1Helm/compare/v0.0.29...v0.0.30 [0.0.29]: https://github.com/gitcommit90/1Helm/compare/v0.0.28...v0.0.29 [0.0.28]: https://github.com/gitcommit90/1Helm/compare/v0.0.27...v0.0.28 [0.0.27]: https://github.com/gitcommit90/1Helm/compare/v0.0.26...v0.0.27 diff --git a/README.md b/README.md index e9f56f3..0dd1b5b 100644 --- a/README.md +++ b/README.md @@ -310,7 +310,7 @@ A fresh data directory opens first-run setup. The source runtime defaults to | `PORT` | `8123` | HTTP/WebSocket control-plane port. | | `CTRL_DATA_DIR` | `./data` | Databases, routing state, uploads, and non-OCI development/Apple workspace mirrors. | | `HELM_CHANNEL_COMPUTER_BACKEND` | `apple` on macOS, `oci` on Linux and Windows | Host isolation backend; `native` and `mock` are explicit development/test overrides. | -| `HELM_CHANNEL_MACHINE_IMAGE` | `local/1helm-channel-machine:0.0.29` | Versioned channel-machine image contract. | +| `HELM_CHANNEL_MACHINE_IMAGE` | `local/1helm-channel-machine:0.0.30` | Versioned channel-machine image contract. | ### Agent-first JSON CLI diff --git a/deploy/1helm-oci-runtime-v1.conf b/deploy/1helm-oci-runtime-v1.conf index f552f0f..5ff0ed4 100644 --- a/deploy/1helm-oci-runtime-v1.conf +++ b/deploy/1helm-oci-runtime-v1.conf @@ -2,6 +2,8 @@ ONEHELM_OCI_RUNTIME_VERSION="1helm-oci-runtime-v1" ONEHELM_OCI_STATE_ROOT="/var/lib/1helm-oci-v1/runtime/oci" ONEHELM_OCI_RUN_ROOT="/run/1helm-oci" ONEHELM_OCI_CONTAINERFILE="/usr/lib/1helm-oci/Containerfile.oci" +ONEHELM_OCI_IMAGE_ARCHIVE="/usr/lib/1helm-oci/channel-machine.oci.tar" +ONEHELM_OCI_IMAGE_SHA256_FILE="/usr/lib/1helm-oci/channel-machine.oci.sha256" ONEHELM_OCI_SERVICE_USER="1helm" ONEHELM_OCI_AGENT_UID="1000" ONEHELM_OCI_AGENT_GID="1000" diff --git a/package-lock.json b/package-lock.json index 1d95e34..bfc5a91 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "1helm", - "version": "0.0.29", + "version": "0.0.30", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "1helm", - "version": "0.0.29", + "version": "0.0.30", "hasInstallScript": true, "license": "AGPL-3.0-only", "dependencies": { diff --git a/package.json b/package.json index 6fe8748..5e28b3c 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "1helm", "productName": "1Helm", - "version": "0.0.29", + "version": "0.0.30", "private": true, "type": "module", "license": "AGPL-3.0-only", @@ -47,6 +47,7 @@ "desktop": "electron .", "package:mac": "node scripts/package-mac-dmg.cjs", "package:dmg:release": "HELM_REQUIRE_NOTARIZATION=1 node scripts/package-mac-dmg.cjs", + "package:channel-image": "bash scripts/build-oci-channel-image.sh", "package:linux": "node scripts/package-linux-host.mjs", "package:windows": "node scripts/package-windows.cjs", "package:windows:release": "set HELM_REQUIRE_WINDOWS_SIGNATURE=1&& node scripts/package-windows.cjs", diff --git a/public/index.html b/public/index.html index 4b45f99..14b1adb 100644 --- a/public/index.html +++ b/public/index.html @@ -30,12 +30,12 @@ document.querySelectorAll('meta[name="theme-color"]').forEach(function (m) { m.setAttribute("content", color); }); })(); - +
- +