Files
windmill/backend/tests
08319a004c feat: allow early return on steps inside branches (#11733)
* feat: allow early return on steps inside a branch to one

The "Early return for sync webhooks" flow setting could only point at a
top-level step. It can now also point at a step inside a branch to one,
in any branch including the default one, and through nested branches to
one.

When the branch is taken, the sync call returns that step's result as
soon as it completes while the rest of the flow keeps running. When it
is not taken, the call returns the flow's final result. The sync wait
loops already resolved nested steps and fell back to the final result,
so they are unchanged.

Worker: check_if_early_return_or_last_in_early_return_parent now
accepts a job whose step id matches early_return at any depth, as long
as every job between it and the root is a branch to one. A loop
iteration or a subflow reusing the same id does not take the stream.
The existing case, the last step of a branch to one that is itself the
early-return step, is unchanged.

Frontend: the native <select> is replaced by EarlyReturnPicker, a
searchable list in flow order where each nested step shows its path
(e.g. `a › Branch 1`). Branch to all and loops inside a branch to one,
and the steps inside them, are not offered: the results lookup cannot
resolve them when nested. Picking a nested step shows a hint that it
only runs if its branch is taken.

* fix: stream the last step when the early return branch is not taken

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: keep the stream off the last step once the early return step ran

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* refactor: list early return steps by id only

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* refactor: use the standard select for the early return step

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: match the early return step by its flow scope, not its path

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: keep branch to all and loop steps off the early return stream

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* feat: allow early return on steps inside a branch to all

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: resolve a nested branch to all or loop as the early return step

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* test: pin which step streams for an early return inside branches

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* fix: return an empty nested loop or branch to all as its early return list

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

* revert: read an empty container's early return status from the root

An empty nested loop or branch to all falls back to the flow's final result again,
so an empty top-level loop that failed keeps its real status.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

---------

Co-authored-by: stefan <stefan.radovanovic@ip-paris.fr>
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-14 23:19:29 +02:00
..