Conversation
…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
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.
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
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
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.