Commit Graph

7577 Commits

Author SHA1 Message Date
konstantintieber
0d8c38917a
refactor(core): Limit the backfill to the compaction threshold
A report no longer carries a day older than the day-to-week compaction
threshold minus one day: 179 days by default. No weekly row can be
inside that window, so the backfill no longer needs to find the newest
weekly row. getDailyDataStart() is removed. The first owed day now
comes from the existing getEarliestDataDate(). The limit replaces the
730-day cap.

The day of margin covers Postgres, which dates the compaction
threshold in the session's time zone rather than in UTC.

getEarliestDataDate() now parses the SQLite datetime string as UTC.
Before, it read it as local time, so the insights settings could show
the day before the first data on a server outside UTC.

LOCAL_VERIFICATION.md no longer says that the report reads insights as
the instance owner.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 11:05:29 +02:00
konstantintieber
ca818751ca
refactor(core): Return one start day from getDailyDataStart
getDailyDataStart() now returns one day: the oldest hourly or daily
row's day, but never before the Monday after the newest weekly row.
Without hourly or daily rows, it returns that Monday. Before, it
returned two bounds, and the gap after a delivered report used the
weekly bound alone.

A gap after a delivered report now also starts no earlier than the
first insights data. Days without executions before that data are
left out instead of sent as 0. No execution count is lost.

RETRIES.md also states that insights never stores a 0, so a day
without executions and a day without collected data look the same.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 10:55:47 +02:00
konstantintieber
c798951a9c
test(core): Cover daily execution totals in the insights service
getDailyExecutionTotals() was only run through the instance
reporting integration test, which seeds success rows only. The new
test checks that the method adds succeeded and failed executions of
workflows in different projects, leaves other insight types out, and
puts hourly rows on their own UTC day.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 08:54:59 +02:00
konstantintieber
ef49635a8a
docs(core): Clarify which days an instance report backfills
- README: Say that days before the first insights data are not sent,
  and that a day without data inside the sent range is 0. Limit the
  "insights disabled" note to days after the first data.
- LOCAL_VERIFICATION: Give the real bounds of the first report: the
  oldest hourly or daily row, the Monday after the newest weekly row,
  and the 730-day cap.
- RETRIES: Do not claim that a 413 is impossible. Say what happens
  when the receiver rejects a report for its size. State that the
  backfill does not apply the license's insights history limit.

The first commit on this branch also removed a link to a spec file
that does not exist.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 08:46:12 +02:00
konstantintieber
ce0f529669
fix(core): Find the newest weekly insights row without a bound
getDailyDataStart() no longer limits the weekly lookup to rows older
than the oldest hourly or daily row. That bound assumed that
compaction always leaves every weekly row older than every daily
row. An hourly row older than a weekly row hid that weekly row, so
the backfill read days whose totals sit in a weekly row.

The two reads no longer depend on each other, so they now run in
parallel.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 08:44:54 +02:00
konstantintieber
1003ff5503
fix(core): Read backfill days in one day-bucketed insights query
Instance reports now read their daily totals with a new
InsightsService.getDailyExecutionTotals() method. It always buckets
by UTC day, for any range length.

Before, the backfill read insights in chunks of 30 days through
getInsightsByTime(). That method picks the bucket size from the range
length in the server's local time zone. A 30-day chunk that crossed a
DST change was bucketed by week, which put a whole week's total on one
day. Each chunk also read one extra day.

The read is instance-wide, so the owner lookup and OwnershipService
are no longer needed.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 08:41:34 +02:00
konstantintieber
12c913f2c5
feat(core): Backfill historic daily data when instance-reporting is enabled
The first report now carries every day with exact insights data,
not only yesterday. Skipped reports no longer lose days, and gaps
longer than 30 days are recovered. Insights is read in 30-day chunks
so that every day keeps its own value.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-25 08:02:25 +02:00
Dmitrii
d9c9d6e616
fix(core): Stop retrying instance reports the receiver rejects with 400 or 413 (#39502) 2026-09-24 15:23:14 +00:00
Kai
2b891f17a5
feat(editor): Create credentials and variables from promotion bindings (#39342) 2026-09-24 14:36:58 +00:00
Robin Braumann
5ca15b3793
feat(core): Connect Preview and integrations to the agent queue (#39468) 2026-09-24 14:24:38 +00:00
Sandra Zollner
3ea51f9944
feat(core): Add project-scoped selective promote endpoint (no-changelog) (#38434)
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Irénée <irenee.ajeneza@n8n.io>
2026-09-24 14:07:29 +00:00
Bernhard Wittmann
edf112cd92
feat: Guide the Microsoft Teams channel setup from n8n (no-changelog) (#38804)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-24 13:48:06 +00:00
n8n-cat-bot[bot]
fbb27a989c
chore: Extract the duplicated workflowPublish policy-enforcement (#37674)
Co-authored-by: n8n-cat-bot[bot] <n8n-cat-bot[bot]@users.noreply.github.com>
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-24 13:16:55 +00:00
Robin Braumann
6c592bdb33
feat(core): Add the durable agent message queue foundation (#39435) 2026-09-24 12:27:30 +00:00
Jaakko Husso
482ffb5306
fix(core): Run one node of a tool through the node that runs it (no-changelog) (#38759)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-24 12:26:45 +00:00
n8n-cat-bot[bot]
25eeb74fe9
chore: Migrate GET /api/v1/community-packages to PublicApiController (#39352)
Co-authored-by: n8n-cat-bot[bot] <n8n-cat-bot[bot]@users.noreply.github.com>
Co-authored-by: Ali Elkhateeb <ali.elkhateeb@n8n.io>
2026-09-24 12:04:37 +00:00
MHMD
5e65197df6
feat(core): Block publishing a workflow the publisher cannot run (no-changelog) (#39425) 2026-09-24 12:01:43 +00:00
Oğuz Eroğlu
dd4e7f62b2
feat(editor): Route assistant credit CTAs to top-up for UBB accounts (#39416) 2026-09-24 11:48:53 +00:00
Roman Makowiak
099e832028
feat(core): Return the limit on a refused preference write and show the refusal in the chat (no-changelog) (#39324)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-24 11:42:02 +00:00
Benjamin Schroth
3628dc1f04
fix(core): Close Chat integration runtime on shutdown and let followers send (#38958)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-24 11:06:12 +00:00
Robin Braumann
c829374f48
fix(core): Show content filtering errors in agent chat (no-changelog) (#39477) 2026-09-24 11:05:24 +00:00
Pierantonio Cangianiello
e5996eeaff
feat(engine): Support Buffer bodies in Engine 2.0 sendResponse (no-changelog) (#39483)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-24 11:03:12 +00:00
Lorent Lempereur
b94a3e5d16
fix(core): Run the telemetry pulse packet on the durable scheduler (no-changelog) (#39321) 2026-09-24 10:23:46 +00:00
Lorent Lempereur
f49b611321
refactor(core): Move the telemetry buffer flush to a system task (no-changelog) (#39309) 2026-09-24 10:23:45 +00:00
Lorent Lempereur
40b99348e8
refactor(core): Move the telemetry pulse packet to a system task (no-changelog) (#39304) 2026-09-24 10:23:44 +00:00
Ricardo Espinoza
b4106dcf63
feat(core): Save, update and undo a preference over MCP (no-changelog) (#39436)
Co-authored-by: Roman Makowiak <roman.makowiak@n8n.io>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-24 09:35:56 +00:00
Anne Aguirre
3b3ac393ba
feat(editor): Add a write lock to the agent builder (#38758)
Co-authored-by: cubic-dev-ai[bot] <191113872+cubic-dev-ai[bot]@users.noreply.github.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-24 09:22:54 +00:00
James Martin
96735b20d9
feat(editor): Displays instance admins (and owner) in all project user lists (#39419)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-24 09:13:23 +00:00
mfsiega
fdd6f127c2
refactor(core): Prepare engine data plane for standalone execution (no-changelog) (#39439)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Co-authored-by: Tomi Turtiainen <10324676+tomi@users.noreply.github.com>
2026-09-24 09:11:16 +00:00
Michael Kret
4dbe8de82d
feat: Add Gateway credits option to Agent web search (#39169) 2026-09-24 09:06:10 +00:00
Tomi Turtiainen
d1e5637929
refactor(core): Extract webhook invocation (no-changelog) (#39452) 2026-09-24 08:53:14 +00:00
Tomi Turtiainen
95c4070090
feat(core): Support the responseNode webhook response mode on engine 2.0 (no-changelog) (#39003) 2026-09-24 08:24:43 +00:00
Yuliia Pominchuk
7d1bae51fc
fix(core): Validate token payload before resolving the user (#39078)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-24 07:54:13 +00:00
Theodore Nastos
ea1e4ef249
feat(core): Propagate project span attributes to node spans (#39420) 2026-09-24 07:42:06 +00:00
Bernhard Wittmann
f9982ef182
feat(core): Add the Microsoft Teams agent channel (no-changelog) (#38686)
Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-24 07:06:58 +00:00
Dmitrii
f9147709a6
fix(core): Retry instance reports that cross the UTC midnight boundary (#39290) 2026-09-23 20:49:41 +00:00
Samyak Jain
82cd04c9a6
fix(core): Release the expression isolate when the webhook response ends (#39138)
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
2026-09-23 20:12:46 +00:00
Theodore Nastos
dc98f6483a
fix(core): Apply a node type policy rule to the node's synthetic tool variants (no-changelog) (#39289) 2026-09-23 18:30:50 +00:00
Milorad FIlipović
0efb22a1dd
feat(editor): Support bounded workflow search and recent state (no-changelog) (#39283) 2026-09-23 18:20:56 +00:00
Tomi Turtiainen
972db68d6b
feat(engine): Report execution response failures (#39001) 2026-09-23 16:54:39 +00:00
Rúben Castro
49c61475de
feat(core): Add credential type availability endpoint for a project (no-changelog) (#39317)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-23 15:52:26 +00:00
Ricardo Espinoza
46be542125
chore(core): Revert deprecate the "Any workflow" caller policy (#39400)
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
2026-09-23 15:48:53 +00:00
Tomi Turtiainen
e0ee51f442
refactor(core): Normalize webhook helper errors (no-changelog) (#39374) 2026-09-23 14:39:10 +00:00
Rúben Castro
9dfcef628b
feat(API): Add credential type policy public API endpoints (no-changelog) (#39168)
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
2026-09-23 14:30:41 +00:00
Tuukka Kantola
5cc6640ae8
fix(editor): Shorten the Assistant name in navigation and settings (#39288) 2026-09-23 14:12:09 +00:00
Emilia
73bdae55c6
fix(core): Return test webhook response when the call lands on another main (#39382)
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 13:59:19 +00:00
n8n-cat-bot[bot]
853f99919d
chore: Schema-First migration — security-policy (#39165)
Co-authored-by: n8n-cat-bot[bot] <n8n-cat-bot[bot]@users.noreply.github.com>
Co-authored-by: Sam Wooler <swooler592@gmail.com>
2026-09-23 13:34:23 +00:00
Robin Braumann
487f4af04c
fix(core): Keep agent chat session pointer across restarts (no-changelog) (#39365)
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
2026-09-23 13:33:58 +00:00
mfsiega
8c720987cb
fix(core): Persist workflow publication retry state (no-changelog) (#39266) 2026-09-23 13:13:46 +00:00
Uddish Verma
84886e33b9
refactor(API): Migrate GET /workflows/{workflowId}/test-runs/{runId} and its test-cases route to the decorator pattern (no-changelog) (#39260)
Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
2026-09-23 13:08:57 +00:00