Skip to content

Releases

v0.2.0-beta.14

v0.2.0-beta.14 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 11 Nov 12:34
  • Add a Visual View on the proposal detail page for reviewing flow changes on a
    Node-RED-like canvas, with compact and editor-position layouts, related nodes,
    and change diffs.
  • Approve proposals from a Deploy-style split button that chooses the deployment
    type.
  • Distinguish Moved (position-only) nodes from Modified, with shared inline SVG
    status icons and purple move arrows from the old-position ghost to the
    highlight outline.
  • Draw input and output ports from the registered node type, so inject has no
    input port and debug has no output port.
  • Split dashboard, REST, MCP, OAuth, and configuration documentation out of the
    README.

Install

cd /data && npm i https://github.com/com55/node-red-ai-access/releases/download/v0.2.0-beta.14/com55-node-red-ai-access-0.2.0-beta.14.tgz

Install in your Node-RED user directory (/data for Docker or ~/.node-red locally), then restart Node-RED.

v0.2.0-beta.13

v0.2.0-beta.13 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Nov 07:29
1466cac
  • Label the "Opened from dashboard" card action Go to flow for flow, tab and
    subflow targets. Keep Go to node for node, group and config targets.

v0.2.0-beta.12

v0.2.0-beta.12 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 10 Nov 06:47
57b6e66
  • Rename the dashboard navigation item and section to MCP OAuth.
  • Keep the "Opened from dashboard" card until dismissed or replaced by a newer
    request. Go to node no longer closes the card.
  • Show an editor notification when revealing a flow, tab or subflow that is
    already active.
  • From this beta onward, pre-releases are not published to npm. They ship as
    GitHub Release assets created with npm pack. Install this beta with:
    cd /data && npm i https://github.com/com55/node-red-ai-access/releases/download/v0.2.0-beta.12/com55-node-red-ai-access-0.2.0-beta.12.tgz.

v0.2.0-beta.11

v0.2.0-beta.11 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 03 Nov 08:46
88f8740
  • Put the Create access token button back at the end of the fields row on wide
    screens and narrow the Amount input for Custom expiry (#117).
  • Confirm dashboard-to-editor jumps with a dashboard toast and an "Opened from
    dashboard" card in the editor AI Access sidebar below the Open AI Access
    dashboard button, with Go to node and dismiss actions (#117).
  • Deliver editor jumps across tabs through BroadcastChannel with a
    localStorage fallback. Acknowledge requests immediately in the editor and
    wait up to one second before opening a new editor tab, without reloading an
    existing editor. Clear the stored request on acknowledgement and replay it
    only in the fallback-opened editor. Use toast text specific to each delivery
    path (#117).

v0.2.0-beta.10

v0.2.0-beta.10 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 03 Nov 02:24
9a58db5
  • Arrange the Create access token form with Channel, Expires after and Label in
    one left-aligned, content-sized row on wide screens, with the Create button on
    its own row. Use a single column below about 600px (#115).
  • Scroll to the top when switching dashboard sections (#115).
  • Show date added and last used for Registered OAuth clients in browser local
    time, with "Never used" for unused clients. Stop counting registration as use
    and coalesce lastUsedAt writes to every five minutes (#115).
  • Flush and dispose the OAuth store on cleanup, close and exit so a stale store
    cannot overwrite OAuth data after re-registration (#115).
  • Backfill missing client_id_issued_at on load so legacy clients get pruned
    normally (#115).

v0.2.0-beta.9

v0.2.0-beta.9 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 02 Nov 10:03
d76dc1b
  • Redesign the dashboard with a GitHub-Settings-style grouped left sidebar and
    inline SVG icons. Show one section at a time with hash routing and browser
    back/forward navigation, single-column rows, a 1200px container and a narrow
    top menu. Improve current-page semantics, group labels and heading focus
    (#110).
  • Harden the approval queue against deployments that finish after the
    five-minute cap. Block approvals with deploy_outcome_unknown until
    settlement, restart or an attempt-matched "Confirm live checked", unless an
    audited override is used; allow rejection with a warning. Audit late
    overwrites across tabs, alert on affected later decisions, show a dashboard
    banner and mark proposals that landed after withdrawal (#111).
  • Keep outputs, wires and switch rules coupled during rebase for every
    node type. Preserve the owner acknowledgement flag when an unchanged
    replacement body still differs from base (#111).
  • Fix OpenAPI loading in the CommonJS build with import.meta shims and an
    __dirname fallback (#111).
  • Reuse production builds in tests through a content-hash build stamp, with
    SKIP_TEST_BUILD=1 support (#111). Exclude dist/.production-build-hash from
    the npm package.

v0.2.0-beta.8

v0.2.0-beta.8 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 29 Oct 02:02
c923afa
  • Proposal review shows human conflict reasons and Base / Live / Proposed field
    values, including flow environment variables. Choices have explanations,
    confirmation, a visible chosen state, and persisted undo of the latest choice.

  • Proposals with no net deployment change clearly say nothing changes and hide
    approval and security notes.

  • Consolidate review notes with a count and separate security from
    configuration; omit duplicate comparisons and unchanged editor diffs. Re-check
    shows progress and a result toast. Pending totals match the badge, including
    conflicts.

  • Improve light-theme readability, settings width, sticky navigation clearance,
    sign-in footer visibility and stable sign-in button colors; errors use alerts.

  • Reject invalid TTL settings with a minimum of 1; keep invalid input visible
    and never report it saved. Investigate the NR4 Active link (box-only
    findings).

  • Merge disjoint fields on the same node and tab, including env entries by
    unique name and credentials by key. Conflict choices preserve independent
    changes from both sides and retain secret safeguards and warnings.

  • Keep peer proposals mergeable after approval of a different field on the same
    node.

  • Report actual changed fields in outbound_node_changed warnings.

  • Expose baseRev and rename the informational revision flag to
    baseRevChanged; use rebase.state and rebase.rev to assess the checked
    merge.

  • Add nodeId + choice to MCP/REST proposal resolution and clarify that
    replacement operations apply to the flow snapshot at expectedRev.

  • Allow full admins to withdraw proposals after token loss, with recovery
    authority and original ownership in the audit log. Other tokens remain
    blocked.

v0.2.0-beta.7

v0.2.0-beta.7 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 28 Oct 17:13
9b7a51c

Fixed

  • Unrelated flow changes no longer expire or reject pending proposals.

Added

  • Automatic three-way rebasing onto live flows, with a conflict status that
    blocks approval until resolved.
  • Configurable proposalTtlDays (1–365 days, default 7); only TTL expiry closes
    old open proposals.
  • Admin conflict-choice and recheck routes, AI REST resolution, and the MCP
    resolve_proposal_conflict tool.
  • Diffs include editor changes and the merged deployment; approval requires a
    mergedHash acknowledgement when live changes are merged.
  • Recent known stale revisions are accepted at submit and rebased immediately.

v0.2.0-beta.6

v0.2.0-beta.6 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 28 Oct 14:08
496884b

Added

  • OAuth consent page signs in automatically once you sign in to the Node-RED
    editor in another tab (it watches the editor token in localStorage and
    re-checks on tab focus / visibility). Works for adminAuth strategy
    (OIDC/passport) logins, which cannot return to the consent page by themselves.
    The Retry button stays as a fallback.
  • Dashboard (/ai-access) refreshes status, access links, proposals, logs and
    the OAuth client list when you return to a tab left open (visibility / focus,
    at most every 5 s). It never reloads while a dialog — such as the one-time
    token modal — is open or while you are typing in a field, and never reloads
    settings forms.
  • Proposals view: flow names and modified/removed nodes link to the editor
    (#flow/<id>, #node/<id>). A click reveals the item in an already open
    editor tab (via a same-origin BroadcastChannel answered by the editor
    sidebar script, using RED.view.reveal / RED.workspaces.show); with no open
    editor it opens one in a named node-red-editor window that later clicks
    reuse. Browsers do not let a page bring another tab to the front, so the
    dashboard shows a toast when the item was revealed in the existing tab.

v0.2.0-beta.5

v0.2.0-beta.5 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 28 Oct 11:45
a3375b4

Security

  • outbound_node_changed (now incl. http response, link out/call and
    third-party nodes with url/host fields) and new secret_reference_added
    (code/config newly reading a secret-named env/global/flow value) are emitted
    on every proposal, not only when secrets were restored; red approve banner.
  • Unquoted values: strong secret names redact any value; weak names need a
    random-looking value (digit/symbol, 16+ chars, or high entropy).
  • Full-field redaction is decided by length only (no time budget), so reads and
    submits agree.
  • Redaction scanning is linear-time: the connection-string rule is a plain split
    (was quadratic: 250k chars took ~46 s), every regex is length-bounded, and
    fields over 256 KB are hidden whole.
  • More reviewer warnings when secrets are restored: secret_wires_changed,
    secret_scope_changed, outbound_node_changed, secret_tab_changed.
  • Secret-named URL query params are redacted; duplicate header names restore
    one-to-one.
  • Strict placeholder restore on proposal submit: [REDACTED] becomes the real
    secret only in its original node/field/line, env and header entries matched by
    exact name (never by index); added, duplicated, moved or renamed placeholders
    reject the submit (redacted_placeholder_mismatch). Approve cards list
    restored-secret fields and warn loudly (secret_destination_changed,
    secret_node_code_changed) when such a node's destination or code changes.
  • Detection also covers DSN/connection strings, unquoted password: x,
    Buffer.from("user:pw"), the PW pattern, and content of node
    name/label/info; string fields over 256 KB are fully redacted for AI.
    The dashboard warns when the pattern list is empty, and the REST redaction
    audit middleware only acts on AI REST routes under /mcp/.
  • Likely secrets are redacted from everything AI clients receive: MCP tools
    (list_flows, get_flow, get_node, get_node_field, search_flows,
    proposal tools and diffs), REST with an access link or OAuth token, and GET
    links. Previously list_flows returned plaintext env values such as a group
    OAUTH_POC_PASSWORD to OAuth read clients. Admin-session (dashboard) reads
    are unchanged and show real values.
    • Env entries (tab, group, subflow, subflow instance, node, global-config)
      whose name matches a secret pattern get value: "[REDACTED]" and
      redacted: true; secret-named node settings and name/value pairs in node
      config (change rules, inject props, http headers) are redacted too.
    • Function func/initialize/finalize and all other string fields are
      scanned for known token formats (AWS, GitHub, Slack, OpenAI, Stripe, Google,
      JWT, PEM private keys, Bearer/Basic headers, URL passwords) and
      name = "literal" assignments; only the literal is replaced. Redacted nodes
      carry _aiRedactions (field paths).
    • Proposals restore [REDACTED] placeholders to the original secret on submit
      (full tab or node ops), so AI edits never overwrite a secret with the
      placeholder; unmatched placeholders produce a
      redacted_placeholder_unresolved warning.
    • The audit log records ai.redacted with the count per response and the
      operation (never values); proposal.created adds restoredRedactions.

Added

  • secretNamePatterns setting (dashboard Settings → Secret redaction: add,
    remove, reset to defaults; PUT /settings accepts a list or null to reset).
    Lockable via settings.js aiAccess.secretNamePatterns.