From b7e5fb799bd9cd504f8bcf43684da8ff09622a1e Mon Sep 17 00:00:00 2001 From: Paul O'Fallon Date: Fri, 4 Sep 2026 12:49:19 +0000 Subject: [PATCH 1/2] =?UTF-8?q?feat(remo):=200.11.0-beta.1=20=E2=80=94=20r?= =?UTF-8?q?emo-web=204.4.0rc1=20on=20the=20beta=20channel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit First bundle pre-release published under the release-channels model (#149, try-hola/hola ADR 0005). Pins the upstream release candidate ghcr.io/get2knowio/remo-web:4.4.0rc1 by digest (built by get2knowio/remo's new rc-image.yml from tag rc-4.4.0rc1; `latest` untouched) and follows the publishing flow in docs/release-channels.md: this PR publishes ghcr.io/try-hola/remo:0.11.0-beta.1 with the moving tag suppressed, main's package.json stays on 0.10.1, and the next catalog regeneration lists both. - manifest: two new dormant-by-default enum params for the 4.4 console surfaces, REMO_WEB_HOST_ADMIN and REMO_WEB_REGISTRY_ADMIN (remo-web treats an empty value as unset, so the default is safe); upgrade metadata now recommends a pre-upgrade backup and points at the rc release notes. - compose: image pin + the two env passthroughs. - README: a "Beta channel" section with the install command. Refs #149 Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01Vck5KSX2CLxhohx14nb5Sh --- src/remo/README.md | 18 ++++++++++ src/remo/package.json | 2 +- src/remo/src/compose.yaml | 7 +++- src/remo/src/manifest.json | 68 ++++++++++++++++++++++++++++++++++---- 4 files changed, 86 insertions(+), 9 deletions(-) diff --git a/src/remo/README.md b/src/remo/README.md index d598515..e240eab 100644 --- a/src/remo/README.md +++ b/src/remo/README.md @@ -85,3 +85,21 @@ hola bundle deploy -p src/remo/src --app-id remo --port 8080 ``` Or install it from the Hola web catalog once published. + +## Beta channel + +Remo pre-releases are published on the catalog's `beta` channel as bundle +pre-releases (for example `remo 0.11.0-beta.1`, which pins upstream +`remo-web:4.4.0rc1`). Install one beside your stable copy without the +allow-multiple override: + +```bash +hola install remo --channel beta --as remo-beta +``` + +A beta copy starts with empty data (it tests boot, routing and SSO, not a data +migration) and follows the `beta` channel for upgrades until you change it. The +4.4 pre-release adds two dormant-by-default console surfaces you can enable at +install or later from the deployment's configuration: **Host maintenance from +the console** (`REMO_WEB_HOST_ADMIN`) and **Host registry management from the +console** (`REMO_WEB_REGISTRY_ADMIN`). Both sit behind Hola's forward-auth. diff --git a/src/remo/package.json b/src/remo/package.json index 09d6372..b679293 100644 --- a/src/remo/package.json +++ b/src/remo/package.json @@ -1,6 +1,6 @@ { "name": "remo", - "version": "0.10.1", + "version": "0.11.0-beta.1", "description": "Remo — browser terminal for remote development instances (Hola app package)", "license": "MIT", "oci": { diff --git a/src/remo/src/compose.yaml b/src/remo/src/compose.yaml index 408b7e2..310ee13 100644 --- a/src/remo/src/compose.yaml +++ b/src/remo/src/compose.yaml @@ -1,6 +1,6 @@ services: remo-web: - image: ghcr.io/get2knowio/remo-web:4.3.4@sha256:7fa42084acb972aeea9f8581aef3d80a9643a17bfc8ecc4961fd21b0b4c52edf + image: ghcr.io/get2knowio/remo-web:4.4.0rc1@sha256:8b43b932f1473d598afed0f365405fe2eba03e37ef4a82d90c2e4123be06dccc environment: # Host-header allowlist (no wildcards). Traefik serves the public host; # loopback is kept so the container healthcheck below is accepted. @@ -20,6 +20,11 @@ services: # through (Traefik copies it onto the request). Both from manifest defaultEnv. REMO_WEB_OPERATOR_AUTH: "${REMO_WEB_OPERATOR_AUTH}" REMO_WEB_FORWARD_AUTH_HEADER: "${REMO_WEB_FORWARD_AUTH_HEADER}" + # 4.4 opt-in admin surfaces (both dormant unless exactly "enabled"; an + # empty value is treated as unset by remo-web, so an unset Hola param is + # safe). Both sit behind Hola's forward-auth operator identity. + REMO_WEB_HOST_ADMIN: "${REMO_WEB_HOST_ADMIN}" + REMO_WEB_REGISTRY_ADMIN: "${REMO_WEB_REGISTRY_ADMIN}" volumes: # Writable state volume (REMO_HOME). remo-web generates its service SSH # identity here (web-identity/) and stores the registry pushed by diff --git a/src/remo/src/manifest.json b/src/remo/src/manifest.json index c28fd97..95450d4 100644 --- a/src/remo/src/manifest.json +++ b/src/remo/src/manifest.json @@ -1,6 +1,6 @@ { "name": "remo", - "version": "0.10.1", + "version": "0.11.0-beta.1", "title": "Remo", "description": "Browser terminal for your Remo-managed remote development instances", "icon": "https://raw.githubusercontent.com/try-hola/apps/main/icons/remo.svg", @@ -27,7 +27,11 @@ "isSecret": false, "type": "enum", "options": [ - { "value": "forward", "label": "Forward auth (Authentik / Traefik)", "description": "Trust the proxy-injected identity header named by REMO_WEB_FORWARD_AUTH_HEADER." } + { + "value": "forward", + "label": "Forward auth (Authentik / Traefik)", + "description": "Trust the proxy-injected identity header named by REMO_WEB_FORWARD_AUTH_HEADER." + } ], "description": "How remo-web authenticates the operator who mints adoption/pairing codes. Behind Hola's Authentik forward-auth, `forward` trusts the proxy-injected identity header named by REMO_WEB_FORWARD_AUTH_HEADER.", "label": "Operator auth mode" @@ -38,25 +42,75 @@ "isSecret": false, "description": "The trusted request header carrying the authenticated user, injected by Hola's Traefik forward-auth from Authentik's outpost. Default matches Authentik (X-authentik-username) — Authentik's equivalent of X-Forwarded-User. Only read when REMO_WEB_OPERATOR_AUTH=forward.", "label": "Forward-auth identity header" + }, + { + "key": "REMO_WEB_HOST_ADMIN", + "value": "", + "isSecret": false, + "type": "enum", + "options": [ + { + "value": "", + "label": "Dormant (default)", + "description": "Host maintenance from the console is off; every gated route answers 404." + }, + { + "value": "enabled", + "label": "Enabled", + "description": "Turn on host maintenance from the browser: clone/delete/rebuild projects and open a host shell. Gated by the forward-auth operator identity." + } + ], + "description": "New in 4.4: gates the mutating host-maintenance surface (project clone/delete/rebuild, host shell). Leave dormant unless you want console-driven maintenance; it is protected by Hola's forward-auth either way.", + "label": "Host maintenance from the console" + }, + { + "key": "REMO_WEB_REGISTRY_ADMIN", + "value": "", + "isSecret": false, + "type": "enum", + "options": [ + { + "value": "", + "label": "Dormant (default)", + "description": "Host registry management from the console is off; every gated route answers 404." + }, + { + "value": "enabled", + "label": "Enabled", + "description": "Let the console add, remove and configure SSH hosts (no workstation CLI needed). Larger blast radius than host maintenance: it changes which machines the service will SSH into." + } + ], + "description": "New in 4.4: gates the registry-management surface (add/remove/configure hosts from the console via the embedded CLI). Separate from host maintenance because registry mutation changes which machines the service SSHes into. Protected by Hola's forward-auth either way.", + "label": "Host registry management from the console" } ], "defaults": { "ports": [ - { "container": 8080, "protocol": "tcp" } + { + "container": 8080, + "protocol": "tcp" + } ], "volumes": [ - { "containerPath": "/home/remo/.config/remo" } + { + "containerPath": "/home/remo/.config/remo" + } ] }, "auth": { "mode": "forward-auth", "forwardAuth": { - "bypassPaths": ["/api/v1/setup/"] + "bypassPaths": [ + "/api/v1/setup/" + ] } }, "upgrade": { "breaking": true, - "upgradeNotesUrl": "https://github.com/get2knowio/remo/blob/main/CHANGELOG.md" + "preUpgradeBackup": "recommended", + "upgradeNotesUrl": "https://github.com/get2knowio/remo/releases/tag/rc-4.4.0rc1" }, - "accepts": ["backup@1"] + "accepts": [ + "backup@1" + ] } From 3aa97f9923edd2088d04ef1b4ba967937973b04f Mon Sep 17 00:00:00 2001 From: Paul O'Fallon <505519+pofallon@users.noreply.github.com> Date: Sat, 19 Sep 2026 12:50:55 +0000 Subject: [PATCH 2/2] =?UTF-8?q?feat(remo):=200.11.0-beta.2=20=E2=80=94=20r?= =?UTF-8?q?emo-web=204.4.0rc2=20on=20the=20beta=20channel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Rolls the beta bundle forward to the new upstream release candidate, ghcr.io/get2knowio/remo-web:4.4.0rc2, pinned by digest (built by get2knowio/remo's rc-image.yml from tag rc-4.4.0rc2; `latest` untouched). The bundle version moves beta.1 -> beta.2 rather than republishing beta.1 with different contents: beta.1 is already in GHCR and listed in the catalog, and a pre-release tag is immutable in practice — re-pushing the same version with a different image is what the channel model exists to avoid. Both betas are newer than stable 0.10.1, so the next regeneration lists both; beta.1 retires when 0.11.0 ships, or sooner by deleting its GHCR tag. Upstream rc2 adds spec 024 (discovery resilience): the console keeps a host in the left rail and its terminals mounted through an intermittent discovery failure instead of clearing the workspace, with a grace window tunable via REMO_WEB_DISCOVERY_OFFLINE_GRACE_S. - compose: image pin 4.4.0rc1 -> 4.4.0rc2 (digest re-resolved from GHCR). - manifest: version, and upgradeNotesUrl -> the rc-4.4.0rc2 release. - README: the beta-channel example names the current pair. Refs #149 Co-Authored-By: Claude Opus 5 (1M context) --- src/remo/README.md | 4 ++-- src/remo/package.json | 2 +- src/remo/src/compose.yaml | 2 +- src/remo/src/manifest.json | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/remo/README.md b/src/remo/README.md index e240eab..c541b11 100644 --- a/src/remo/README.md +++ b/src/remo/README.md @@ -89,8 +89,8 @@ Or install it from the Hola web catalog once published. ## Beta channel Remo pre-releases are published on the catalog's `beta` channel as bundle -pre-releases (for example `remo 0.11.0-beta.1`, which pins upstream -`remo-web:4.4.0rc1`). Install one beside your stable copy without the +pre-releases (for example `remo 0.11.0-beta.2`, which pins upstream +`remo-web:4.4.0rc2`). Install one beside your stable copy without the allow-multiple override: ```bash diff --git a/src/remo/package.json b/src/remo/package.json index b679293..e8748b1 100644 --- a/src/remo/package.json +++ b/src/remo/package.json @@ -1,6 +1,6 @@ { "name": "remo", - "version": "0.11.0-beta.1", + "version": "0.11.0-beta.2", "description": "Remo — browser terminal for remote development instances (Hola app package)", "license": "MIT", "oci": { diff --git a/src/remo/src/compose.yaml b/src/remo/src/compose.yaml index 310ee13..2d1acb3 100644 --- a/src/remo/src/compose.yaml +++ b/src/remo/src/compose.yaml @@ -1,6 +1,6 @@ services: remo-web: - image: ghcr.io/get2knowio/remo-web:4.4.0rc1@sha256:8b43b932f1473d598afed0f365405fe2eba03e37ef4a82d90c2e4123be06dccc + image: ghcr.io/get2knowio/remo-web:4.4.0rc2@sha256:d85677da75a7618b8bfa91baea4fe4e160de632f9507176dffcf4997fc1a2fd9 environment: # Host-header allowlist (no wildcards). Traefik serves the public host; # loopback is kept so the container healthcheck below is accepted. diff --git a/src/remo/src/manifest.json b/src/remo/src/manifest.json index 95450d4..0587465 100644 --- a/src/remo/src/manifest.json +++ b/src/remo/src/manifest.json @@ -1,6 +1,6 @@ { "name": "remo", - "version": "0.11.0-beta.1", + "version": "0.11.0-beta.2", "title": "Remo", "description": "Browser terminal for your Remo-managed remote development instances", "icon": "https://raw.githubusercontent.com/try-hola/apps/main/icons/remo.svg", @@ -108,7 +108,7 @@ "upgrade": { "breaking": true, "preUpgradeBackup": "recommended", - "upgradeNotesUrl": "https://github.com/get2knowio/remo/releases/tag/rc-4.4.0rc1" + "upgradeNotesUrl": "https://github.com/get2knowio/remo/releases/tag/rc-4.4.0rc2" }, "accepts": [ "backup@1"