Commit Graph

6194 Commits

Author SHA1 Message Date
Guillaume Jacquart
394253553d test(core): Rebuild the shared node fixture for each lifecycle hook test
`mock<IWorkflowExecutionDataProcess>({ workflowData })` deep-proxies the object
it wraps. The proxy leaves auto-created mock functions on the shared fixture
node, so `node.disabled` reads as a function in every test that runs after it.

Any code that reads a node flag then sees a truthy value. The sub-workflow
progress tests are the first to do so, and they counted zero reachable nodes.

Rebuild the node in the shared `beforeEach`, next to the existing `settings`
reset.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-06 11:01:02 +02:00
Guillaume Jacquart
529d5997b7
feat(core): Gate sub-workflow progress behind an env feature flag
The progress stream is off unless `N8N_ENV_FEAT_SUBWORKFLOW_PROGRESS` is set,
so the feature can ship to master dark and be enabled per instance.

Gated at hook registration rather than at emit time, so with the flag off a
sub-execution registers no extra handlers, walks no graph and sends no pushes.
The `N8N_ENV_FEAT_` prefix also exposes the same switch to the editor through
the env-feature-flag channel.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-06 10:50:08 +02:00
Guillaume Jacquart
aa7edc2b03
perf(editor): Keep sub-workflow progress off the execution hot path
Two costs that scaled with the number of sub-executions rather than with
anything visible, both of which a parent loop over a few hundred items would
have multiplied.

The progress arc no longer trickles between steps. The trickle needed a
1s interval, and because the composable was called unconditionally, every
default node on the canvas ran one whether a sub-workflow was executing or
not. The arc's own reason for existing was weak once the point was granted
that the rotating running border already shows the node is alive, so this
drops the behaviour rather than gating the timer.

The reachable-node count is now computed on first emit instead of at hook
registration, and node events return early when no parent pushRef resolves.
Executions with no editor session — the overwhelming majority — no longer
walk the child workflow's graph at all. Nodes are still tallied before that
bail-out, so an editor attaching mid-run sees a truthful count.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-06 10:50:08 +02:00
Guillaume Jacquart
eec68f3f45
feat(editor): Show sub-workflow progress on the node border
Replaces the in-body progress bar with a determinate arc on the node's own
border, plus a step count in the status-icon slot that gives way to the success
checkmark on finish. The running child node name reuses the subtitle line, so
nothing shifts as the child advances.

The arc is drawn on its own layer rather than sharing the running halo's ring:
compositing the two there made the shimmer's bright head vanish behind the solid
arc and read as a flicker. It trickles between steps, bounded to half a step, so
a slow child node doesn't read as a stalled bar, and stops short of a full turn
so only completion closes the loop.

The step count carries no denominator. Nodes reached is knowable, the total is
only estimated, so the count is reported unclamped and the estimate is used just
to scale the arc. That total now counts only nodes reachable from the
sub-workflow's entry point (plus their AI/tool sub-nodes), which stops leftover
trigger branches and disconnected islands from scaling the arc down.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-06 10:50:08 +02:00
Guillaume Jacquart
4ff9c1204b
perf(core): Throttle sub-workflow progress pushes and limit them to direct children
The progress stream forwarded from a sub-workflow to the parent's canvas was
effectively unthrottled. The previous guard only suppressed consecutive
`nodeExecuteBefore` events for the same node with no intervening
`nodeExecuteAfter` — a sequence the engine does not produce — so steady state
was two messages per child node execution. Each of those is a pubsub broadcast
in scaling mode and a full canvas re-map in the editor, so a looping child
workflow could emit thousands of messages for one run.

Replace it with a trailing-edge throttle: the leading edge still emits
immediately so the overlay appears at once, subsequent events inside the window
coalesce into a single pending snapshot, and a trailing timer sends the latest
state. The overlay only renders the running node name, an "X / Y" counter and a
bar, so intermediate states are disposable. A 200-iteration child now emits two
messages instead of ~400. `workflowExecuteAfter` drops any pending snapshot,
since the finished event clears the overlay outright.

Also stop forwarding progress for nested sub-workflows. Only the workflow open
on the canvas renders the overlay, so a grandchild's parent node is not on
screen and the editor discarded those messages anyway. Resolving the direct
parent's pushRef instead of walking the whole ancestor chain removes that
wasted traffic and simplifies the lookup.

Tests now exercise real engine before/after sequences rather than the synthetic
double-`nodeExecuteBefore` the old throttle keyed on.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-10-06 10:50:07 +02:00
Guillaume Jacquart
b07a288a26
feat(core): Forward sub-workflow node progress to the parent execution 2026-10-06 10:50:06 +02:00
Mayank SIngh
439e8ba2e7
fix(core): Reload static data for queued executions (#39668)
Co-authored-by: Iván Ovejero <ivov.src@gmail.com>
2026-10-05 21:31:11 +00:00
Uddish Verma
0280644e77
refactor(API): Migrate GET /settings/log-streaming/event-types to the decorator pattern (no-changelog) (#40234)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 15:55:04 +00:00
Eugene
308ec2cc1c
feat(editor): Show Agent plans in preview chat (no-changelog) (#40006) 2026-10-05 15:42:28 +00:00
Robin Braumann
314c430bfc
fix(core): Limit background task continuation to the latest stop group (#40333) 2026-10-05 15:40:03 +00:00
Sandra Zollner
f7cfb520bf
feat(editor): Submit selected project changes from the promote modal (#39609) 2026-10-05 15:31:23 +00:00
Anne Aguirre
a2fd4189f1
feat(core): Persist agent budget spend in the database (#40138)
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
2026-10-05 15:11:29 +00:00
Sam Wooler
5f73c7cdcb
feat(API): Support multipart request bodies on Public API controller routes (no-changelog) (#40074) 2026-10-05 15:08:34 +00:00
Robin Braumann
f055d9cd11
docs(core): Explain background task continuation selection (#40321) 2026-10-05 14:33:56 +00:00
Charlie Kolb
b5fe251ba5
refactor(core): Move ownership transfer registry to backend services (#40308) 2026-10-05 14:30:21 +00:00
Charlie Kolb
206fc6f317
refactor(core): Move instance write access service (#40307) 2026-10-05 13:54:20 +00:00
Nour Alhadi Mahmoud
548bd57802
fix(core): Load workflow publish history in a separate query (#40171)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-05 13:30:49 +00:00
Robin Braumann
4939dbc787
feat(core): Stop background workflows in Preview (no-changelog) (#40291) 2026-10-05 13:19:23 +00:00
James Martin
073239e6d5
chore(core): Implements JWKS service to provide key pair for signing tokens (no-changelog) (#39718)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 12:22:32 +00:00
Andreas Fitzek
79924a5d93
refactor(core): Drop TypeORM imports from event bus, LDAP reset, ownership, evaluation, and tags (no-changelog) (#39353)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 12:14:47 +00:00
Savelii
44d9adfc7e
fix(core): Use the new client ID and secret for OAuth2 client credentials (#39891)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-10-05 12:02:55 +00:00
Ali Elkhateeb
fa8b8b243e
refactor(API): Migrate LDAP sync endpoints to PublicApiController (#40280)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-05 12:00:55 +00:00
Eugene
c4c31a529c
feat(core): Add parent-Agent plan tools (no-changelog) (#39542) 2026-10-05 11:59:50 +00:00
Yuliia Pominchuk
92ae1b336f
feat(editor): Show whose credential a node uses and let others switch from it (#40281) 2026-10-05 11:59:20 +00:00
Savelii
1cac1e056d
fix(core): Keep concurrent credential tests from sharing one node type registry (#40054)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 11:08:25 +00:00
Charlie Kolb
f47a2fe235
refactor(core): Decouple Insights from CLI and TypeORM (#40214) 2026-10-05 09:59:39 +00:00
Andreas Fitzek
32d7c8ebf4
feat(core): Add inbound-auth contracts and fail-closed defaults (no-changelog) (#40004)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-05 09:30:49 +00:00
Eugene
a9b0607111
feat(core): Add Agent plan model and validation (no-changelog) (#39530) 2026-10-05 09:21:41 +00:00
Eugene
b9695a7f6e
feat(core): Add Agent plan storage foundation (no-changelog) (#39482) 2026-10-05 09:01:48 +00:00
José Braulio González Valido
674fb57941
fix(ai-builder): Make the eval mock end lists like the real API (no-changelog) (#40017)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-10-05 08:09:16 +00:00
Irénée
d931d6415a
feat(API): Apply a selection of workflows on the destination (no-changelog) (#39612)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-10-05 08:07:22 +00:00
n8n-cat-bot[bot]
708e79264b
chore: Hashicorp vault does not handle batch (non-renewable) tokens (#39635)
Co-authored-by: n8n-cat-bot[bot] <n8n-cat-bot[bot]@users.noreply.github.com>
Co-authored-by: James Gee <1285296+geemanjs@users.noreply.github.com>
2026-10-05 07:58:49 +00:00
Ricardo Espinoza
5e28ff8c23
fix(core): Block publishing workflows with unconnected required node inputs (#37265)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-10-05 07:56:07 +00:00
Charlie Kolb
e6bb9e0f3b
test(core): Stabilize registry reconciliation integration test (#40172) 2026-10-05 06:26:18 +00:00
Charlie Kolb
d6a364c0c0
build: Load backend test utilities from source in Vitest (#40212) 2026-10-05 06:25:06 +00:00
n8n-cat-bot[bot]
be2ee6f356
fix: Replace deprecated APIs in services and tooling (#40199)
Co-authored-by: n8n-cat-bot[bot] <n8n-cat-bot[bot]@users.noreply.github.com>
2026-10-05 04:50:04 +00:00
Veljko Terzic
944afe5c88
feat(core): Run workflow history pruning as a durable system task (no-changelog) (#40106)
Some checks are pending
CI: Master (Build, Test, Lint) / Build & format (push) Waiting to run
CI: Master (Build, Test, Lint) / Unit tests (24.18.1) (push) Waiting to run
CI: Master (Build, Test, Lint) / Unit tests (26.5.1) (push) Waiting to run
CI: Master (Build, Test, Lint) / Lint (push) Waiting to run
CI: Master (Build, Test, Lint) / Verify single-instance deps (npm-install) (push) Waiting to run
CI: Master (Build, Test, Lint) / Notify Slack on failure (push) Blocked by required conditions
2026-10-02 15:57:08 +00:00
Robin Braumann
bae7656347
feat(core): Coordinate background sub-agent pause and resume in Preview (no-changelog) (#40119)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-10-02 15:29:57 +00:00
mfsiega
51c4770643
fix(core): Reject an instance rule on the migration rule detail route before the stale check (no-changelog) (#40210)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-02 14:56:07 +00:00
mfsiega
56d6e9da2c
feat(core): Stop engine v2 executions from the control plane (#39786)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-02 14:53:46 +00:00
Charlie Kolb
afd7cb4851
refactor(core): Move project scope service to backend services (#40209) 2026-10-02 14:45:32 +00:00
mfsiega
b8ff99f2cc
feat(core): Serve the migration rule detail from the finding table (#39974)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-02 13:52:49 +00:00
Romeo Balta
dae811ddd9
fix(core): Send instance group facts to PostHog with the owner ID (no-changelog) (#39084)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-10-02 13:46:50 +00:00
Charlie Kolb
ea38f3a3ee
refactor(core): Load packaged modules from a static manifest (no-changelog) (#40037) 2026-10-02 13:42:01 +00:00
Robin Braumann
628ada76cd
feat(core): Add an instance setting for Agents (#40153) 2026-10-02 13:28:21 +00:00
Robin Braumann
ea9021ed86
feat(core): Add durable pause checkpoints for background sub-agents (no-changelog) (#40118) 2026-10-02 13:10:50 +00:00
Charlie Kolb
a3ae96e87b
test(core): Stabilize OAuth and background agent tests (#40167) 2026-10-02 12:58:03 +00:00
Matsu
6337b94d3c
chore: Add typescript/no-deprecated and establish a baseline (#40168) 2026-10-02 12:54:37 +00:00
Benjamin Schroth
1adc57b97b
feat(editor): Add n8n Chat as an agent channel (no-changelog) (#40075) 2026-10-02 12:44:22 +00:00
Minho Yoo
407cf23da7
fix(core): Wait for credential deletion to finish (#40103)
Co-authored-by: yoo-minho <13810291+yoo-minho@users.noreply.github.com>
Co-authored-by: Garrit Franke <32395585+garritfra@users.noreply.github.com>
2026-10-02 12:39:52 +00:00