Skip to content

Releases: bonsaedev/node-red-salesforce

v0.7.1

13 Jun 01:34

Choose a tag to compare

0.7.1 (2026-06-13)

Bug Fixes

  • restore output port labels (upgrade @bonsae/nrg to 0.21.2) (dad22c0)

v0.7.0

12 Jun 13:26

Choose a tag to compare

0.7.0 (2026-06-12)

Bug Fixes

  • pin the OAuth callback postMessage to the editor origin (6dfa089)

Features

  • adopt the output/returnProperty convention across operation nodes (cdf1f47)

v0.6.2

09 Jun 02:53

Choose a tag to compare

0.6.2 (2026-06-09)

Bug Fixes

  • exclude apex-lsp from client unit coverage (9084371)
  • hide empty status bar, fix default code indentation, and remove node-red devDep (ba59339)
  • mark connection as required and add status bar visibility tests (aa9545a)
  • regenerate lockfile without local link override (223d54a)
  • use cross-platform vite scripts and align dependency versions (1af13fa)

v0.6.1

05 Jun 23:15

Choose a tag to compare

0.6.1 (2026-06-05)

Bug Fixes

  • correct error handling and add validations across Salesforce nodes (e02711a)

v0.6.0

03 Jun 18:59

Choose a tag to compare

0.6.0 (2026-06-03)

Bug Fixes

  • correct Apex type mappings for currency, percent, and long fields (3f4e90b)
  • extend tsconfig rootDir to include shared module (8bfbb3c)

Features

  • add Apex Language Server integration with Monaco editor (76d929f)
  • add SObject field completions from connected org (7b39124)
image image image image

Breaking Changes

Apex Code node: code field format changed

The code field now expects class body level code instead of just the run() method body.

Before (v0.5.x):

String reversed = payload.reverse();
return reversed;

After (v0.6.x):

private static Object run(String payload) {
    String reversed = payload.reverse();
    return reversed;
}

Users can now add helper methods and inner classes alongside run():

private static Object run(String payload) {
    Processor p = new Processor();
    return p.process(payload);
}

public class Processor {
    public String process(String input) {
        return input.reverse();
    }
}

Migration

  1. Delete existing Apex Code nodes from the canvas
  2. Re-add them — the new default code includes the run() method signature
  3. Move your logic into the run() method body

Why

This change enables users to define helper methods and inner classes, and provides better LSP support since the editor now shows the full method signature.

v0.5.0

03 Jun 03:56

Choose a tag to compare

0.5.0 (2026-06-03)

Bug Fixes

  • add missing locale labels and translate Connection field (e3eefc3)
  • use fresh token from jsforce connection for streaming (bf197e2)

Features

  • add channel picklist to streaming node (7d13eff)
  • add Open Org button to connection config node (1bbf8b0)
  • improve bulk node with streaming support and single result output (ed0bb7c)
  • split Apex into caller and code deployer nodes (0da89d9)

Breaking Changes

Apex nodes replaced

The salesforce-apex node has been replaced by two purpose-specific nodes:

  • salesforce-apex-invocation — Calls existing Apex REST endpoints or Invocable Actions. Select the type (REST/Invocable), pick an endpoint from a dropdown that queries your org, and choose the HTTP method.
  • salesforce-apex-code — Deploys and executes custom inline Apex code. Select the type (Invocable/REST), enter a class name, choose the HTTP method for REST, configure the URL mapping, and write your Apex method body in the built-in code editor.

Migration: Delete existing salesforce-apex nodes from your flows and replace them with salesforce-apex-invocation (for calling existing endpoints) or salesforce-apex-code (for deploying custom code). Re-wire any connections.

image image image

Bulk node restructured

The salesforce-bulk node has been significantly reworked:

  • Port layout changed: The node now has a single output port. Job Created and Job Complete output ports have been removed. Job lifecycle events (created, uploading, processing, complete) are communicated via this.status() — enable the Status Port toggle to react to them downstream.
  • Input format: Accepts Record[] arrays, CSV strings, or Node.js Readable streams for ingest operations. SOQL queries are now configured via a dedicated TypedInput field (str/msg/jsonata) instead of msg.payload.
  • Output format changed: For ingest operations, the output msg.payload is now a single results object { successfulResults, failedResults, unprocessedRecords } instead of streaming individual records.
  • New operations: hardDelete is now supported alongside insert, update, upsert, delete, and query.
  • emitJobCreated toggle removed: Job Created is no longer a separate output port.

Migration: Delete existing bulk nodes from your flows and re-add them. Update downstream nodes to read from msg.payload.successfulResults and msg.payload.failedResults instead of processing individual record messages. If you relied on the Job Created or Job Complete output ports, use the Status Port instead.

image

Config property renamed

The type config property has been renamed to apexType on both Apex nodes to avoid conflicts with Node-RED's reserved type property. This affects saved flows — nodes using the old property name will need to be reconfigured.

v0.4.1

20 May 03:47

Choose a tag to compare

0.4.1 (2026-05-20)

Bug Fixes

  • add missing completePort to streaming schema (91c3e0d)
  • restore sendJobCreated wrapper and update bulk test expectations (2851e00)

v0.4.0

13 May 04:18

Choose a tag to compare

0.4.0 (2026-05-13)

Features

  • use framework emit ports for bulk node completion (b39e6e4)

v0.3.0

10 May 23:13

Choose a tag to compare

0.3.0 (2026-05-10)

Bug Fixes

  • upgrade to @bonsae/nrg 0.13.1 and migrate tests to use config node auto-detection (9f02647)

Features

  • upgrade to @bonsae/nrg 0.13.0 and use schema-driven ports (804a4a7)

v0.2.0

08 May 02:17

Choose a tag to compare

0.2.0 (2026-05-08)

Bug Fixes

  • streaming node auth error handling and token refresh (18b588c)

Features

  • add emit ports to all IO nodes (49a4d3a)