@com55/node-red-ai-access 0.2.0-beta.1 → 0.2.0-beta.2

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
@@ -8,6 +8,52 @@ and this project adheres to
8
8
 
9
9
  ## Unreleased
10
10
 
11
+ ## [0.2.0-beta.2] - 2026-10-28
12
+
13
+ ### Fixed
14
+
15
+ - OAuth route collision check no longer counts disabled `http in` nodes or nodes
16
+ on disabled flows; collisions are re-evaluated from scratch on every deploy,
17
+ and an enabled `http in` node is reported once (not again as an Express "bound
18
+ dispatch" route).
19
+ - OAuth route collision check ignores `http in` nodes in subflow templates
20
+ without a running instance, compares real mounted paths (`httpAdminRoot` /
21
+ `httpNodeRoot`), and matches paths case-insensitively like Express.
22
+ - `GET /mcp/api/v1/oauth/status` no longer exposes absolute `httpStatic`
23
+ filesystem paths to users without full (`*`) permission.
24
+ - Editor sidebar: OAuth lifetime number inputs and unit dropdowns sit on one
25
+ line, including the narrow Node-RED 5 sidebar.
26
+ - Editor sidebar: OAuth route collisions are shown as a readable bulleted list,
27
+ one route per line with paths in `<code>`; `http in` nodes link to the node in
28
+ the editor.
29
+ - Editor sidebar: Public URL "Check" result is shown as a clear green/red
30
+ status; loopback notes and the trust proxy state are moved into a muted,
31
+ collapsible "About the check" section with human-readable wording.
32
+ - OAuth route collision check also honours `httpStaticRoot` (and per-entry
33
+ `httpStatic` roots).
34
+ - `/mcp` page Access links: the area under the form now always shows generic
35
+ usage (with a `<YOUR_TOKEN>` placeholder) for the currently selected channel
36
+ and updates when the channel changes. The real token and client setup are
37
+ shown once in a modal right after creation; closing it removes the token from
38
+ the page.
39
+ - Access link create/list responses are sent with `Cache-Control: no-store` and
40
+ `Pragma: no-cache`.
41
+ - Access link tokens are kept in memory as a SHA-256 hash only (the raw token is
42
+ no longer retained after creation).
43
+
44
+ ### Breaking
45
+
46
+ - **Access tokens can no longer be viewed or copied after creation:**
47
+ `GET /mcp/api/v1/links` no longer returns `token` (rest/mcp) or `url`
48
+ (get_link), and the links table only offers Revoke. Revoke and create a new
49
+ token instead.
50
+
51
+ ### Added
52
+
53
+ - Editor sidebar: short "How to use MCP OAuth" help in the OAuth section.
54
+ - `GET /mcp/api/v1/oauth/status` returns structured `details` (path, source,
55
+ node id/name) for each collision.
56
+
11
57
  ## [0.2.0-beta.1] - 2026-10-28
12
58
 
13
59
  First pre-release of 0.2.0, published under the npm `beta` dist-tag.
package/README.md CHANGED
@@ -287,9 +287,9 @@ a `code`. `token_expired` also includes `expiredAt` and `accessLinksUrl` (the
287
287
 
288
288
  Access links are **in memory** (default TTL **4h**, max 10). Caps: **get_link ≤
289
289
  24h**, **rest/mcp ≤ 30d**. Creating a link returns the raw `token` plus a
290
- self-contained `url` for `get_link` (`/mcp/a/<token>`). While the link remains
291
- active, `GET /links` includes `url` again so admins can re-copy from `/mcp` (the
292
- raw `token` field stays create-only). After a restart every old token is
290
+ self-contained `url` for `get_link` (`/mcp/a/<token>`). The token is shown only
291
+ once: `GET /links` never returns `token` or `url`, so to give access again
292
+ revoke the link and create a new one. After a restart every old token is
293
293
  invalid.
294
294
 
295
295
  Call `list_flows` or `get_flow` first and pass the returned `rev` as
package/ai-access.html CHANGED
@@ -14,7 +14,7 @@
14
14
  }
15
15
  window.__com55AiAccessSidebarLoading = true;
16
16
 
17
- var EDITOR_SIDEBAR_ASSET_VERSION = '0.2.0-beta.1';
17
+ var EDITOR_SIDEBAR_ASSET_VERSION = '0.2.0-beta.2';
18
18
  var root = (RED.settings.httpAdminRoot || '/').replace(/\/$/, '');
19
19
  var src =
20
20
  (root || '') +