relmio 0.2.4 → 0.2.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -5,7 +5,39 @@ version across `package.json`, `package-lock.json`, this file, the Git tag,
5
5
  and npm. Local checks validate the repository metadata; the publishing guide
6
6
  checks the registry separately after publication.
7
7
 
8
- ## Unreleased
8
+ ## [0.2.6] - 2026-08-02
9
+
10
+ ### Added
11
+
12
+ - Add a curl-based wizard bootstrap for macOS, Linux, WSL, and Git Bash that
13
+ reuses Node.js 22+ or downloads and checksum-verifies a temporary official
14
+ runtime when Node.js is not installed.
15
+ - Add a native Windows PowerShell bootstrap for PowerShell and Command Prompt
16
+ that works without Git Bash or a preinstalled Node.js runtime and verifies
17
+ the temporary official Windows archive before execution.
18
+ - Expand the hosted installer into an accessible macOS/Linux, PowerShell,
19
+ Command Prompt, and NPX terminal switcher.
20
+
21
+ ### Changed
22
+
23
+ - Revamp the hosted Vercel experience and local browser wizard around the
24
+ Signal Spine composition and Patchbay Ledger design language.
25
+ - Integrate the Astryx component system, neutral theme, CLI, and AI-readable
26
+ setup guidance in the hosted React application while keeping the published
27
+ wizard dependency-light.
28
+ - Add persistent route context, sanitized preview status, responsive layouts,
29
+ reduced-motion behavior, and synchronized GitHub/npm setup documentation.
30
+
31
+ ## [0.2.5] - 2026-07-31
32
+
33
+ ### Added
34
+
35
+ - Add a sanitized successful hosted-chat screenshot and a visible guide to the
36
+ required Sign in with ChatGPT browser extension across the website, GitHub
37
+ README, npm README, and troubleshooting documentation.
38
+ - Explain that the hosted extension requirement is separate from the local
39
+ npm wizard callback, where a callback-capturing extension may need to be
40
+ disabled temporarily during sign-in.
9
41
 
10
42
  ## [0.2.4] - 2026-07-31
11
43
 
package/README.md CHANGED
@@ -54,21 +54,79 @@ Try the hosted browser demo at
54
54
  request-bound ChatGPT experience; the npm package remains the local wizard for
55
55
  installing the private n8n sidecar.
56
56
 
57
+ > **Warning — Hosted chat requires the browser extension.** Install the
58
+ > open-source [Sign in with ChatGPT extension for
59
+ > Chrome](https://chromewebstore.google.com/detail/sign-in-with-chatgpt/odbgboachaefbbbdiffcefhpkekhfcna)
60
+ > or [Firefox](https://addons.mozilla.org/firefox/addon/sign-in-with-chatgpt/)
61
+ > before connecting. If the hosted chat stays disconnected, confirm the
62
+ > extension is installed and enabled, reload the page, and select **Connect
63
+ > ChatGPT** again.
64
+
65
+ > The local npm wizard uses its own `localhost:1455` callback instead. If an
66
+ > OAuth extension captures that callback, temporarily disable it during local sign-in,
67
+ > complete the wizard sign-in, and then re-enable it.
68
+
69
+ <figure>
70
+ <img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/examples/hosted-chat-connected.png" alt="Relmio hosted chat showing a connected ChatGPT session and a ready prompt field" width="720">
71
+ <figcaption>Successful hosted-chat state: the browser extension completed the OAuth handoff and Relmio shows the ChatGPT session as connected.</figcaption>
72
+ </figure>
73
+
57
74
  Use the site's [Install wizard](https://relmio.vercel.app/install) page for a
58
- copyable command tailored to the current self-hosted n8n and Hostinger VPS
59
- setup path.
75
+ clickable macOS/Linux, PowerShell, Command Prompt, and NPX command switcher plus
76
+ a preview of the same five gates used by the local self-hosted n8n and
77
+ Hostinger VPS setup.
60
78
 
61
79
  ## Quick start
62
80
 
63
- Run this on your own macOS, Windows, or Linux computer—not on the VPS:
81
+ Choose the terminal already on your own computer. Do not run these commands on
82
+ the VPS.
83
+
84
+ ### macOS, Linux, WSL, or Git Bash
85
+
86
+ ```bash
87
+ curl -fsSL https://relmio.vercel.app/install.sh | sh
88
+ ```
89
+
90
+ ### Windows PowerShell
91
+
92
+ ```powershell
93
+ irm https://relmio.vercel.app/install.ps1 | iex
94
+ ```
95
+
96
+ ### Windows Command Prompt
97
+
98
+ ```bat
99
+ powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://relmio.vercel.app/install.ps1 | iex"
100
+ ```
101
+
102
+ No Node.js or Git Bash installation is required first. The
103
+ [POSIX](https://github.com/Demonbane18/relmio/blob/main/web/public/install.sh)
104
+ and [Windows PowerShell](https://github.com/Demonbane18/relmio/blob/main/web/public/install.ps1)
105
+ bootstraps reuse Node.js 22 or newer when available. Otherwise they download
106
+ the matching current official Node.js 22 runtime to a private temporary
107
+ directory, verify its SHA-256 checksum, run Relmio with npm lifecycle scripts
108
+ disabled, and remove the temporary runtime when the wizard closes.
109
+
110
+ Users who already have Node.js 22 or newer can run the npm package directly:
111
+
112
+ ### NPX (requires Node.js 22+)
64
113
 
65
114
  ```bash
66
115
  npx --yes --ignore-scripts relmio@latest
67
116
  ```
68
117
 
69
- Requirements:
118
+ Either command opens the redesigned local wizard. Its Signal Spine keeps five
119
+ trust gates visible: local sign-in, host verification, read-only n8n discovery,
120
+ the exact sidecar plan, and the verified private endpoint. On a wide screen the
121
+ route stays beside the current gate; on a small screen it becomes a compact
122
+ progress strip.
123
+
124
+ ### Requirements
70
125
 
71
- - Node.js 22 or newer
126
+ - On macOS/Linux/WSL/Git Bash: `curl`, `awk`, `tar`, and either `sha256sum` or
127
+ `shasum`; Git Bash also needs `unzip`
128
+ - On native Windows: Windows PowerShell 5.1 or PowerShell 7; Command Prompt can
129
+ launch the included PowerShell bootstrap
72
130
  - A browser and an eligible ChatGPT/Codex account
73
131
  - A self-hosted n8n Docker deployment on a VPS
74
132
  - Docker Compose v2, SSH access, and a Docker network shared with n8n
@@ -97,28 +155,30 @@ product name to n8n. SuperGrok/xAI OAuth is a gated feasibility item on the
97
155
  [provider roadmap](https://github.com/Demonbane18/relmio/blob/main/docs/roadmap.md);
98
156
  it is not currently advertised as supported.
99
157
 
100
- ## Visual walkthrough
158
+ ## Updated browser wizard walkthrough
101
159
 
102
160
  All images below are sanitized previews with reserved addresses, fake server
103
- data, and no real credential or session information.
161
+ data, and no real credential or session information. Only the current gate is
162
+ actionable, and remote writes remain locked until the review checkbox is
163
+ selected.
104
164
 
105
- ### 1. Confirm the local ChatGPT/Codex sign-in
165
+ ### Gate 1: Confirm the local ChatGPT/Codex sign-in
106
166
 
107
167
  <img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/01-local-sign-in-ready.png" alt="Sanitized local sign-in ready screen" width="720">
108
168
 
109
- ### 2. Verify the VPS identity
169
+ ### Gate 2: Verify the VPS identity
110
170
 
111
171
  <img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/02-vps-identity-confirmed.png" alt="Sanitized VPS fingerprint confirmation screen" width="720">
112
172
 
113
- ### 3. Choose the detected n8n container and network
173
+ ### Gate 3: Choose the detected n8n container and network
114
174
 
115
175
  <img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/03-n8n-detected.png" alt="Sanitized n8n discovery screen" width="720">
116
176
 
117
- ### 4. Review the exact sidecar-only plan
177
+ ### Gate 4: Review the exact sidecar-only plan
118
178
 
119
179
  <img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/04-install-plan.png" alt="Sanitized installation plan screen" width="720">
120
180
 
121
- ### 5. Copy the verified n8n settings
181
+ ### Gate 5: Copy the verified n8n settings
122
182
 
123
183
  <img src="https://cdn.jsdelivr.net/npm/relmio@latest/docs/images/setup/05-bridge-ready.png" alt="Sanitized verified bridge screen" width="720">
124
184
 
@@ -5,7 +5,19 @@ Every command on this page targets the separate
5
5
 
6
6
  ## Refresh an expired ChatGPT login
7
7
 
8
- The easiest method:
8
+ The easiest method is to open the
9
+ [hosted install page](https://relmio.vercel.app/install) and choose the local
10
+ terminal you already have. For macOS, Linux, WSL, or Git Bash:
11
+
12
+ ```bash
13
+ curl -fsSL https://relmio.vercel.app/install.sh | sh
14
+ ```
15
+
16
+ For Windows PowerShell, with no Git Bash or preinstalled Node.js required:
17
+
18
+ ```powershell
19
+ irm https://relmio.vercel.app/install.ps1 | iex
20
+ ```
9
21
 
10
22
  1. Start the local wizard again.
11
23
  2. Select **Refresh ChatGPT sign-in**.
package/docs/security.md CHANGED
@@ -92,8 +92,14 @@ The current release pins:
92
92
  - `ssh2` `1.17.0`
93
93
  - `openai-oauth` `2.0.0`
94
94
 
95
- Install scripts are disabled for local dependencies. The generated sidecar
96
- also installs `openai-oauth` with `--ignore-scripts`.
95
+ The POSIX and native Windows PowerShell bootstraps reuse a compatible local
96
+ Node.js runtime or download the matching current official Node.js 22 archive
97
+ to a private temporary directory. Each validates the archive against Node.js's
98
+ SHA-256 manifest before execution and removes it when the wizard closes. The
99
+ PowerShell bootstrap accepts only strict Windows x64 or ARM64 archive names,
100
+ uses HTTPS without redirects, and enables TLS 1.2 for Windows PowerShell 5.1.
101
+ npm lifecycle scripts are disabled when either bootstrap starts Relmio. The
102
+ generated sidecar also installs `openai-oauth` with `--ignore-scripts`.
97
103
 
98
104
  Do not replace pinned versions with `latest` in production. Follow the upgrade
99
105
  checklist in [maintenance.md](maintenance.md).
@@ -9,19 +9,60 @@ wizard or any manual VPS command. The documented commands are sidecar-only and
9
9
  do not delete, restart, or rebuild n8n, but they still access your VPS and write
10
10
  files there.
11
11
 
12
+ ## Hosted chat browser extension
13
+
14
+ The hosted demo at [relmio.vercel.app](https://relmio.vercel.app/) needs the
15
+ open-source **Sign in with ChatGPT** extension to complete the OAuth handoff:
16
+
17
+ - [Install for Chrome](https://chromewebstore.google.com/detail/sign-in-with-chatgpt/odbgboachaefbbbdiffcefhpkekhfcna)
18
+ - [Install for Firefox](https://addons.mozilla.org/firefox/addon/sign-in-with-chatgpt/)
19
+
20
+ After installation, reload Relmio and select **Connect ChatGPT** again. If the
21
+ chat still shows **Not connected**, confirm the extension is enabled, close
22
+ stale ChatGPT authorization tabs, and start one fresh connection from Relmio.
23
+ The hosted sign-in component also displays its extension install screen when
24
+ it detects that the extension is missing.
25
+
26
+ This requirement applies to the hosted chat, not the local npm wizard. The
27
+ wizard listens directly on `localhost:1455`; if an OAuth extension captures
28
+ that local callback, temporarily disable it during local sign-in and re-enable
29
+ it after the wizard saves the credential.
30
+
12
31
  ## Confirm the local package first
13
32
 
14
- Run these commands on your own computer, not on the VPS:
33
+ Close every old wizard terminal and browser tab, then run the newest published
34
+ build on your own computer, not on the VPS. Choose the command for the terminal
35
+ you already have.
36
+
37
+ macOS, Linux, WSL, or Git Bash:
15
38
 
16
39
  ```bash
17
- node --version
18
- npm view relmio version
40
+ curl -fsSL https://relmio.vercel.app/install.sh | sh
19
41
  ```
20
42
 
21
- Node must be version 22 or newer. Then close every old wizard terminal and
22
- browser tab and start the newest published build:
43
+ Windows PowerShell:
44
+
45
+ ```powershell
46
+ irm https://relmio.vercel.app/install.ps1 | iex
47
+ ```
48
+
49
+ Windows Command Prompt:
50
+
51
+ ```bat
52
+ powershell -NoProfile -ExecutionPolicy Bypass -Command "irm https://relmio.vercel.app/install.ps1 | iex"
53
+ ```
54
+
55
+ These commands do not require Node.js to be installed. The Windows options do
56
+ not require Git Bash. Each bootstrap reuses Node.js 22 or newer when available,
57
+ or downloads an official temporary runtime and verifies its SHA-256 checksum
58
+ before execution.
59
+
60
+ If you choose the existing-Node fallback, confirm Node is version 22 or newer
61
+ and check the published package version first:
23
62
 
24
63
  ```bash
64
+ node --version
65
+ npm view relmio version
25
66
  npx --yes --ignore-scripts relmio@latest
26
67
  ```
27
68
 
@@ -30,7 +71,7 @@ newest printed `http://127.0.0.1:...` URL into the browser. That URL contains a
30
71
  temporary setup token: do not post it in an issue or screenshot.
31
72
 
32
73
  You do not need to sign in to npm, configure npm 2FA, or own this package to
33
- run its public `npx` command. npm authentication is required only for the
74
+ run any public command. npm authentication is required only for the
34
75
  maintainer who publishes a release.
35
76
 
36
77
  ## Quick VPS checks
@@ -69,7 +110,9 @@ bypassed.
69
110
 
70
111
  | Symptom | Meaning | Fix |
71
112
  |---|---|---|
72
- | `node: command not found`, `node is not recognized`, or Node is older than 22 | The local runtime is missing or unsupported. | Install Node.js 22 or newer on the local computer, open a new terminal, and rerun the `@latest` command. Do not install it on the VPS for the wizard. |
113
+ | `node: command not found`, `node is not recognized`, or Node is older than 22 | The NPX fallback cannot use the local runtime. | Use the macOS/Linux curl command or the native Windows PowerShell/Command Prompt command above. Either can run with a verified temporary runtime. Do not install Node.js on the VPS for the wizard. |
114
+ | `curl` or `sh` is not recognized on Windows | The macOS/Linux command was pasted into a native Windows terminal. | Use the PowerShell command in PowerShell, or the longer `powershell -NoProfile ...` command in Command Prompt. Git Bash is not required. |
115
+ | A bootstrap reports a checksum mismatch | The Node.js download did not match the official SHA-256 manifest, so it was not executed. | Retry on a trusted connection. Do not bypass the check. If it repeats, use an existing Node.js 22+ installation and report the sanitized error. |
73
116
  | The browser did not open | The automatic browser launch failed, but the local server may still be running. | Keep the newest terminal open and copy its newest `127.0.0.1` setup URL into the browser. Do not reuse a URL from a closed terminal. |
74
117
  | An old wizard page reports an invalid or expired setup session | The local server was closed or a newer wizard run created a different one-time session token. | Close the old page and use only the URL printed by the currently running terminal. |
75
118
  | `npx` appears to run an older wizard | An old terminal or tab is still active, or the package was run without an explicit tag. | Close old runs, check `npm view relmio version`, then run `npx --yes --ignore-scripts relmio@latest`. |
@@ -41,17 +41,26 @@ Use this simple explanation:
41
41
 
42
42
  On screen: the Mermaid flowchart in the README.
43
43
 
44
- ### 2:20 — Start the npm package
44
+ ### 2:20 — Start the wizard
45
45
 
46
- Run locally:
46
+ Open the hosted install page and choose the terminal already on the local
47
+ computer. Show both the macOS/Linux and native Windows choices:
47
48
 
48
49
  ```bash
49
- npx --yes --ignore-scripts relmio@latest
50
+ curl -fsSL https://relmio.vercel.app/install.sh | sh
51
+ ```
52
+
53
+ ```powershell
54
+ irm https://relmio.vercel.app/install.ps1 | iex
50
55
  ```
51
56
 
52
57
  Explain that:
53
58
 
54
- - `npx` downloads and runs the published version for this session;
59
+ - no preinstalled Node.js runtime is required;
60
+ - native Windows does not require Git Bash and also has a Command Prompt option;
61
+ - the bootstrap reuses Node.js 22+ or downloads and checksum-verifies a
62
+ temporary official Node.js 22 runtime;
63
+ - npm lifecycle scripts stay disabled when it starts the published package;
55
64
  - the wizard binds to `127.0.0.1`;
56
65
  - the printed setup URL is private and temporary;
57
66
  - the terminal must remain open until the wizard finishes.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "relmio",
3
- "version": "0.2.4",
3
+ "version": "0.2.6",
4
4
  "description": "Turn a supported ChatGPT/Codex OAuth sign-in into a private OpenAI-compatible endpoint, starting with self-hosted n8n.",
5
5
  "keywords": [
6
6
  "relmio",
package/src/ui/app.js CHANGED
@@ -9,6 +9,7 @@ const state = {
9
9
  discovery: null,
10
10
  networks: null,
11
11
  installAttempted: false,
12
+ previewMode: false,
12
13
  };
13
14
 
14
15
  const element = (id) => document.getElementById(id);
@@ -125,10 +126,12 @@ async function waitForOAuthCompletion() {
125
126
 
126
127
  function showStep(step) {
127
128
  state.step = step;
129
+ let activePanel = null;
128
130
  for (const panel of document.querySelectorAll("[data-step]")) {
129
131
  const active = Number(panel.dataset.step) === step;
130
132
  panel.hidden = !active;
131
133
  if (active) {
134
+ activePanel = panel;
132
135
  panel.querySelector("h2")?.focus({ preventScroll: true });
133
136
  }
134
137
  }
@@ -141,7 +144,12 @@ function showStep(step) {
141
144
  marker.removeAttribute("aria-current");
142
145
  }
143
146
  }
144
- window.scrollTo({ top: 0, behavior: "smooth" });
147
+ activePanel?.closest(".work-column")?.scrollIntoView({
148
+ block: "start",
149
+ behavior: window.matchMedia("(prefers-reduced-motion: reduce)").matches
150
+ ? "auto"
151
+ : "smooth",
152
+ });
145
153
  }
146
154
 
147
155
  async function api(path, { method = "GET", body } = {}) {
@@ -209,8 +217,10 @@ async function refreshAuthStatus({ fresh = false } = {}) {
209
217
  const loginButton = element("login-button");
210
218
  const next = element("signin-next");
211
219
  const formattedUpdatedAt = renderAuthUpdatedAt(status.authUpdatedAt);
220
+ state.previewMode = status.previewMode === true;
221
+ element("preview-badge").hidden = !state.previewMode;
212
222
 
213
- if (status.previewMode) {
223
+ if (state.previewMode) {
214
224
  indicator.classList.add("ready");
215
225
  element("auth-title").textContent = "Sanitized preview credential";
216
226
  element("auth-detail").textContent =
@@ -294,7 +304,7 @@ async function discover() {
294
304
  element("container-select"),
295
305
  result.containers.map((container) => ({
296
306
  value: container.name,
297
- label: `${container.name} ${container.image}`,
307
+ label: `${container.name} · ${container.image}`,
298
308
  })),
299
309
  result.containers[0].name,
300
310
  );
@@ -483,11 +493,16 @@ element("install-button").addEventListener("click", async (event) => {
483
493
  element("result-models").textContent = result.models.join(", ");
484
494
  element("result-http-url").textContent =
485
495
  `${result.baseUrl.replace(/\/$/u, "")}/responses`;
496
+ if (state.previewMode) {
497
+ element("done-title").textContent = "The sanitized preview route is complete";
498
+ }
486
499
  showStep(5);
487
500
  setMessage(
488
- result.deploymentMode === "updated"
489
- ? "OAuth refreshed on the existing wizard-managed sidecar. n8n was not restarted."
490
- : "Installation verified. Your existing n8n was not restarted.",
501
+ state.previewMode
502
+ ? "Sanitized preview complete. The endpoint and models below are sample data."
503
+ : result.deploymentMode === "updated"
504
+ ? "OAuth refreshed on the existing wizard-managed sidecar. n8n was not restarted."
505
+ : "Installation verified. Your existing n8n was not restarted.",
491
506
  );
492
507
  } catch (error) {
493
508
  showError(error);
Binary file