Commit Graph

23201 Commits

Author SHA1 Message Date
Matsuuu
d81a6b80b3
ci: Cache the npm registry metadata the closure check downloads
Resolving the scratch graph downloads a registry packument for every name in
it. Measured with a cold npm cache: 149MB for a 413-package closure, and
853MB for a full one. Both the real install and `--package-lock-only` pay this
— it is the dominant cost of the step once the tarball bodies are gone, so it
is what is worth caching.

Keyed on the pnpm lockfile rather than the run id, so an entry is written once
per dependency change. This cache shares a 10GB repo-wide budget with the pnpm
store caches, and a per-run key would evict them.

No `--prefer-offline`: a restored entry is revalidated, so a third-party
release published since the entry was written still changes the resolution.
Conditional requests cost a fraction of the bodies.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-20 10:38:01 +03:00
Matsuuu
b21ef9f5bc
ci: Resolve the npm-install graph without downloading it
The scratch step installed ~2500 packages to read their package.json files.
`npm install --package-lock-only` reports the tree npm would install without
fetching a tarball, and the lockfile's `packages` keys are the paths npm
materializes — one key is one physical copy, the same ground truth the on-disk
walk reads.

`copiesFromLockfile` maps that to the shape `analyze()` already takes. Two
details the on-disk walk got for free:

- An alias (`"zod-v3": "npm:zod@^3"`) is a real second copy of zod. npm records
  `name` on the entry when it differs from the directory, so the copy is keyed
  on the manifest name.
- A lockfile lists every platform's build of an optional native dependency,
  where an install unpacks only the matching one. Entries whose `os`/`cpu` rule
  out this machine are dropped, or the report invents copies that never
  coexist.

An unreadable or v1 lockfile throws, matching `collectCopies`: callers must
read that as "the check did not run", never as "no duplicates found".

Verified equivalent through the CLI on a 17-package closure (413 resolved
packages): the duplicate report is byte-identical to the real install's — 15
groups, same copy counts, same versions.

`collectCopies` stays; `verify-closure` still walks a built closure on disk.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-20 10:38:00 +03:00
n8n-assistant[bot]
6bdad11c52
ci: Speed up the single-instance npm-install check
The last master run took 4m26s: checkout 34s, toolchain 21s, `pnpm install`
35s, turbo build 2s, packing 51 packages 17s, the scratch `npm install` 2m20s,
analyze under 1s.

- Pack in one recursive `pnpm pack --json` run instead of one spawn per
  package: 32.9s to 17.3s locally for the same 51 packages. `--json` also names
  each tarball, so the destination directory is no longer diffed to guess it —
  that mis-attributes a tarball whose name is already present and then reports
  "pack produced nothing". Scripts are skipped; the one `prepack` among
  publishable packages only rebuilds `dist`, which this check does not read.
- Fetch the checkout without history blobs, which are 866MiB of the 1.0GiB
  pack, and check out `base-branch` through `ref` so that case fetches one
  commit rather than all history.
- Diff with `--no-renames`, so a moved file counts against both the old and the
  new package and rename detection reads no blobs.
- Quiet the scratch install, whose third-party deprecation notices ran to about
  2000 lines and buried the report.

The workspace install has to stay: `pnpm pack` resolves `workspace:` specs from
installed `node_modules`, so narrowing it to the verifier's own closure — 5.7s
instead of 35s — fails every pack outside that closure.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-20 10:37:41 +03:00
n8n-assistant[bot]
26f5d3b0ad
ci: Skip the npm-install closure check when the verifier is absent
`release-create-pr.yml` passes the release line it prepares as `base-branch`,
and the v1 patch track resolves that to `1.x`, where
`packages/testing/code-health` does not exist. The job checked that ref out and
then failed on the missing directory, which reads as a dependency finding
rather than as "this ref predates the check". The full-scope job landed on
2026-08-17, so that path has not run yet.

A new step reports whether the package is present, and the steps below are
gated on it.

The skip applies only when the caller passed `base-branch`. Without one the ref
is the caller's own revision, where the package must exist, so a move or rename
still fails the job — the rest of this file is built around the rule that the
job must not go green after verifying nothing.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-20 10:37:16 +03:00
n8n-assistant[bot]
c9f2ee661c
chore: Bundle/2.x (#36558)
Co-authored-by: Matsu <matias.huhta@n8n.io>
Co-authored-by: Sam Wooler <swooler592@gmail.com>
Co-authored-by: Dimitri Lavrenük <20122620+dlavrenuek@users.noreply.github.com>
Co-authored-by: Bernhard Wittmann <bernhard.wittmann@n8n.io>
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Lorent Lempereur <looorent@users.noreply.github.com>
Co-authored-by: yehorkardash <yehor.kardash@n8n.io>
Co-authored-by: Danny Martini <danny@n8n.io>
Co-authored-by: mfsiega <93014743+mfsiega@users.noreply.github.com>
Co-authored-by: phyllis-noester <102315132+phyllis-noester@users.noreply.github.com>
Co-authored-by: n8n-assistant[bot] <n8n-assistant[bot]@users.noreply.github.com>
Co-authored-by: Emilia <100027345+sovietspaceship@users.noreply.github.com>
Co-authored-by: Robin Braumann <50590409+bjorger@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-19 07:57:44 +03:00
n8n-assistant[bot]
a39502f304
chore: Update e2e impact map (#36555)
Some checks are pending
CI: Master (Build, Test, Lint) / Build for Github Cache (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) / Performance (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
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-08-19 03:15:41 +00:00
Lorent Lempereur
5d9d462d69
feat(core): Add retryabilityFromError to @n8n/backend-network (no-changelog) (#36527)
Co-authored-by: Danny Martini <danny@n8n.io>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-18 21:56:30 +00:00
Sandra Zollner
f938e13b45
feat(core): Persist review baseline at approval time (#36132)
Some checks are pending
Build: Benchmark Image / build (push) Waiting to run
CI: Master (Build, Test, Lint) / Build for Github Cache (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) / Performance (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
Util: Publish API Schema / Cloudflare Pages (push) Waiting to run
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: kgrhartlage <kai.hartlage@n8n.io>
2026-08-18 17:35:58 +00:00
Sebastien Powell
f5a8c69c0a
feat(editor): Promote v2 Pagination to core, removed legacy CSS (#36522) 2026-08-18 17:02:25 +00:00
Kai
ec4ad66ed6
feat(editor): Show review status as a badge on the workflows list (#36476) 2026-08-18 16:26:52 +00:00
Michael Drury
09613dc1c7
fix(editor): Keep agent preview user messages right-aligned (#36521) 2026-08-18 15:59:20 +00:00
Irénée
56bb5f593d
fix(core): Restore AWS Secrets Manager connection reuse (#36426)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-18 15:46:43 +00:00
Rob Hough
c0b3a12a1c
refactor(editor): Improve N8nIconPicker UX and performance (#35878) 2026-08-18 15:36:50 +00:00
Thai Pangsakulyanont
0358654a5a
feat(Grist Node): Add upsert operation (#18067)
Co-authored-by: Claude <209825114+claude[bot]@users.noreply.github.com>
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
Co-authored-by: dtinth-claw[bot] <290121326+dtinth-claw[bot]@users.noreply.github.com>
Co-authored-by: Elias Meire <elias@meire.dev>
2026-08-18 15:16:40 +00:00
Uddish Verma
e73244eca6
refactor(API): Migrate workflow archive, unarchive, and transfer routes to the decorator pattern (no-changelog) (#35835)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-18 15:14:06 +00:00
Predrag Ristic
59efcb95b2
fix(core): Handle managed credentials in workflow codegen (#36210) 2026-08-18 15:04:36 +00:00
Predrag Ristic
7b94975c55
fix: Preserve explicit credential selection (#36500) 2026-08-18 14:36:39 +00:00
Michael Drury
38ec2ec6d0
fix(editor): Open new agents without Instance AI (#36462) 2026-08-18 14:35:18 +00:00
Benjamin Schroth
cc340df75a
refactor(core): Add breaking change rule for AI Agent versions below 2 (#36404) 2026-08-18 14:32:23 +00:00
yehorkardash
f7e84c9bdd
chore: Replace n8n-claude-skills usages with n8n-agent-skills (#36332) 2026-08-18 14:25:44 +00:00
yehorkardash
2f2e2d9fc0
fix(MongoDB Chat Memory Node): Sanitize messages (#36294) 2026-08-18 14:25:08 +00:00
Pierantonio Cangianiello
aa126ab276
fix(core): Coerce the deleteBefore param when deleting executions (#36477)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 14:22:16 +00:00
Benjamin Schroth
3d70ae7fc4
fix(core): Run agent scheduled tasks in the timezone they were authored in (#36226) 2026-08-18 14:21:46 +00:00
Iván Ovejero
ce154150e8
build: Install Kafka binding on fresh clone (#36502) 2026-08-18 14:19:53 +00:00
n8n-cat-bot[bot]
c0d1bd0e5f
test: Gate canvas readiness before header interactions after route (#36422)
Co-authored-by: n8n-cat-bot[bot] <n8n-cat-bot[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 14:19:13 +00:00
Sandra Zollner
8fa6cde8a1
feat(core): Allow reviewer to decide after version submit (#36282)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Kai <kai.hartlage@n8n.io>
2026-08-18 14:12:26 +00:00
Danny Martini
f76b35ca5a
feat(core): Add pure node-id heal function for published workflow versions (no-changelog) (#36453)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-18 14:11:48 +00:00
Irénée
9c947996da
feat(core): Add Git connection database table (no-changelog) (#36268)
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-18 13:54:47 +00:00
Mike Repeć
2435ed5cf0
fix(core): Report activation mode 'activate' for a first publication via the outbox (#36512)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-18 13:53:44 +00:00
Guillaume Jacquart
83db64a94e
fix(core): Resolve end-user credentials when loading node parameters (#36452)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 13:39:48 +00:00
Declan Carroll
c57d1c1e3f
build: Bump dependency pins to patched minor and patch versions (no-changelog) (#36503)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-18 13:28:13 +00:00
Robin Braumann
d551999c6c
fix(core): Surface failures in agent sessions (#36492)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 13:07:10 +00:00
Ali Elkhateeb
697d53c8d0
feat(editor): Hide convert to sub-workflow when Execute Workflow nodes are excluded (#36499)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 12:45:30 +00:00
Sam Wooler
47f4bc8d1e
feat(API): Add endpoint to list role-mapping rules (#36501)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-18 12:42:04 +00:00
Tomi Turtiainen
8219b149c0
ci: Bump PR title action to v2.5.0 and document engine scope (#36514) 2026-08-18 12:41:03 +00:00
Tomi Turtiainen
0deba44cb8
feat: Emit trigger payloads as step output slots (no-changelog) (#36416) 2026-08-18 12:29:18 +00:00
Elias Meire
fdbf88b469
test(core): Add MCP registry discovery evals (no-changelog) (#36063) 2026-08-18 12:28:05 +00:00
Guillaume Jacquart
85f7dde311
fix(core): Show a clear no-access message when SSO role mapping denies a login (#36407)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 12:00:57 +00:00
Alex Grozav
59d4300596
refactor(editor): Extract instance-registry into a frontend module package (no-changelog) (#36325)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: multica-agent <github@multica.ai>
2026-08-18 12:00:24 +00:00
Jaakko Husso
e1a6ede450
fix(core): Handle projects better on AIA workflow listing (#36413)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 11:58:35 +00:00
Sebastien Powell
d629607ead
feat(editor): Pagination control improvements (#34774)
Some checks are pending
Build: Benchmark Image / build (push) Waiting to run
CI: Master (Build, Test, Lint) / Build for Github Cache (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) / Performance (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
Util: Publish API Schema / Cloudflare Pages (push) Waiting to run
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 11:10:15 +00:00
Dimitri Lavrenük
950ef236bf
feat: Add browser connection status to credential setup telemetry event (no-changelog) (#36457) 2026-08-18 11:02:32 +00:00
Dawid Myslak
9836cf52a3
feat(editor): Restore n8n credits settings link (#36435)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 10:53:09 +00:00
Anne Aguirre
12cae8cbd9
feat(ai-builder): Show tool hard and soft failures in agent session trace - timeline (#36405)
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
2026-08-18 10:51:57 +00:00
Jaakko Husso
207c29f8e3
fix(OpenAI Node): Filter non-chat models out of the chat model dropdown (#35785)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Co-authored-by: Ricardo Espinoza <ricardo@n8n.io>
2026-08-18 10:47:43 +00:00
Declan Carroll
6155d8e882
build: Re-pin mailsplit license election to 5.4.15 (no-changelog) (#36491)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-08-18 10:39:29 +00:00
Uddish Verma
39be106f68
fix(API): Return a request schema for decorator routes in /discover (#36211)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-18 10:03:08 +00:00
Fg
fa460a4313
fix(Extract From File Node): Parse date-only RRULE UNTIL values (#29522) 2026-08-18 10:00:37 +00:00
MHMD
a5ac2aa10d
feat(editor): Warn about self-escalation via Manage project roles scope (#36458) 2026-08-18 09:45:45 +00:00
Ali Elkhateeb
43220e18a2
fix(editor): Open node details links in a new tab in canvas-only mode (#36446)
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-18 09:28:48 +00:00