Skip to content

release: to prod#1468

Merged
joelorzet merged 13 commits into
prodfrom
staging
Jun 5, 2026
Merged

release: to prod#1468
joelorzet merged 13 commits into
prodfrom
staging

Conversation

@joelorzet

Copy link
Copy Markdown

No description provided.

joelorzet added 3 commits June 4, 2026 18:24
…perators

Group the condition operator dropdown by value type (General, Text, Number,
Boolean, Array, Object) with section headers so only the comparisons that make
sense for a given value are surfaced.

Add Boolean (is true/is false), Array (is empty/is not empty/contains/length)
and Object (is empty/has key) operators. Array and object operators generate
guarded expressions (Array.isArray / null-checked Object.keys) so they evaluate
to false instead of throwing when the referenced value is not the expected type.
This fixes empty-array checks, which previously stringified the operand and
always evaluated false.

Whitelist the isArray and keys reads in the expression validator, and keep the
new operators through node sanitization so AI/MCP-authored conditions are not
downgraded.
The method dropdown only persisted httpMethod when the user actively
changed it, so leaving it on the displayed POST default never wrote the
field. At runtime the missing method fell back to GET and a configured
body threw "Request with GET/HEAD method cannot have body". This also
left already-saved workflows broken.

Resolve a missing or empty method to POST in the worker, and route the
editor fallback, the method option list, and both codegen paths through
a single shared DEFAULT_HTTP_METHOD / HTTP_METHODS constant so they no
longer drift.
…sing-method

fix: default HTTP Request method to POST when unset
@joelorzet joelorzet requested review from a team, OleksandrUA, eskp and suisuss and removed request for a team June 5, 2026 13:34
Add generation and end-to-end evaluation tests for the new isTrue,
isFalse, arrayIsEmpty, arrayIsNotEmpty, arrayContains, arrayLength,
objectIsEmpty, and objectHasKey operators. The end-to-end cases assert
that array/object operators applied to a non-matching type (string,
number, null) evaluate to false instead of throwing, locking in the
Array.isArray / null-check guards.
joelorzet added 3 commits June 5, 2026 10:55
The week-to-month and month-to-year branches used floor division, so
elapsed times of 28-29 days rendered as '0 months ago' and 360-364 days
as '0 years ago'. Clamp both to a minimum of 1.
Non-owners only reach /billing via a direct URL (the menu link is
owner-gated). Serving a 404 read as an app error; redirect them to the
home page instead.
…operators

feat(workflow): type-aware condition builder with safe array/object operators
Long organization names wrapped to multiple lines in the switcher
dropdown. Names now truncate to a single line with an ellipsis, and a
hover tooltip reveals the full name so visually similar names stay
distinguishable before selecting.
…g-names

fix(org-switcher): truncate long org names to one line with tooltip
…-non-owners

fix(billing): redirect non-owners home instead of serving a 404
joelorzet added 2 commits June 5, 2026 12:34
A workflow node with no integration selected passed integrationId as
undefined to fetchCredentials, which forwarded it to getIntegrationById
where drizzle threw UNDEFINED_VALUE -- a user misconfiguration counted
against the system-error SLI.

Guard fetchCredentials so an empty integrationId returns no credentials
(the step then fails through its own 'credential required' path), and add
a classifier rule so that failure is labelled error_type=user instead of
defaulting to system.
…from-zero

fix(runs): never show "0 months" or "0 years" in relative time
…integration-id

fix(executor): treat missing integration credential as a user error
@joelorzet joelorzet merged commit cc7b6a3 into prod Jun 5, 2026
34 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant