Repository navigation
workflow@5.0.0-beta.44
Pre-release
Pre-release
Immutable
release. Only release title and notes can be modified.
@workflow/core@5.0.0-beta.44
- #3700
9b1b8c7@VaguelySerious - Pin correlation-ID draw order to event-log order (Node.js VM engine), so two concurrent replays of the same run assign the same IDs even when one loaded a shorter event-log prefix. SetWORKFLOW_LOG_ORDER_DRAWS=0to opt back into arrival-order delivery resolution. - #3570
9454d51@pranaygp - Addworld.runs.waitForTerminalStatus(runId, { timeoutMs, signal, resolveData })method, which long-polls until the run reaches a terminal status.await run.returnValuenow internally uses this, if the World supports it, instead of using a polling interval. - #3634
7b79ba3@pranaygp - New runs are created with the sealed-log event identity (specVersion 7). A sealed-log run's event positions are assigned by the backend before each write commits, so concurrent writers never contend for a position. A position whose writer dies is closed by the backend with anoopevent; replay steps over those without delivering them or advancing the deterministic clock. SetWORKFLOW_SEALED_LOG=0to put a deployment back on the previous scheme. Every runtime reads sealed logs either way, and a run's version is fixed at creation, so the setting only affects new runs. - #3675
5b5a926@TooTallNate - Step-argument serialization failures now fail the step with a catchableSerializationError(via astep_failedevent, like a step-body failure) instead of failing the run from outside the workflow, and when uncaught they fail the run immediately as aUSER_ERRORrather than retrying until max queue deliveries. - #3728
f771585@pranaygp - Hold process-wide state onglobalThisrather than at module scope in the packages that get bundled into the host application's server build, where a bundler compiles one copy of each module per layer. Covers warn-once latches, lazy caches, the VM script and QuickJS asset caches, the dev-server port cache, and step single-flight, whose per-copy map was not actually single-flight. State that is deliberately per-copy is annotated with the reason. - #3728
f771585@pranaygp - Build the workflow entrypoint's queue handler from the runtime World (getWorld()) instead ofgetWorldHandlers(), so a process creates one World rather than two. A stateful World no longer gets duplicate connection pools or queue workers. - #3743
bf9de1c@VaguelySerious - A wait-continuation delivered before its wait elapses now re-arms under a fresh idempotency key instead of losing the wait's timer. Previously the re-enqueue reused a key the early delivery had already spent, so the world's dedupe window dropped it and the run slept indefinitely with nothing scheduled to wake it.
@workflow/world@5.0.0-beta.29
- #3570
9454d51@pranaygp - Addworld.runs.waitForTerminalStatus(runId, { timeoutMs, signal, resolveData })method, which long-polls until the run reaches a terminal status.await run.returnValuenow internally uses this, if the World supports it, instead of using a polling interval. - #3634
7b79ba3@pranaygp - New runs are created with the sealed-log event identity (specVersion 7). A sealed-log run's event positions are assigned by the backend before each write commits, so concurrent writers never contend for a position. A position whose writer dies is closed by the backend with anoopevent; replay steps over those without delivering them or advancing the deterministic clock. SetWORKFLOW_SEALED_LOG=0to put a deployment back on the previous scheme. Every runtime reads sealed logs either way, and a run's version is fixed at creation, so the setting only affects new runs. - #3728
f771585@pranaygp - Hold process-wide state onglobalThisrather than at module scope in the packages that get bundled into the host application's server build, where a bundler compiles one copy of each module per layer. Covers warn-once latches, lazy caches, the VM script and QuickJS asset caches, the dev-server port cache, and step single-flight, whose per-copy map was not actually single-flight. State that is deliberately per-copy is annotated with the reason. - #3743
bf9de1c@VaguelySerious - A wait-continuation delivered before its wait elapses now re-arms under a fresh idempotency key instead of losing the wait's timer. Previously the re-enqueue reused a key the early delivery had already spent, so the world's dedupe window dropped it and the run slept indefinitely with nothing scheduled to wake it.
@workflow/world-local@5.0.0-beta.38
- #3570
9454d51@pranaygp - Addworld.runs.waitForTerminalStatus(runId, { timeoutMs, signal, resolveData })method, which long-polls until the run reaches a terminal status.await run.returnValuenow internally uses this, if the World supports it, instead of using a polling interval. - #3634
7b79ba3@pranaygp - New runs are created with the sealed-log event identity (specVersion 7). A sealed-log run's event positions are assigned by the backend before each write commits, so concurrent writers never contend for a position. A position whose writer dies is closed by the backend with anoopevent; replay steps over those without delivering them or advancing the deterministic clock. SetWORKFLOW_SEALED_LOG=0to put a deployment back on the previous scheme. Every runtime reads sealed logs either way, and a run's version is fixed at creation, so the setting only affects new runs. - #3728
f771585@pranaygp - Hold process-wide state (the WebSocket transport registry, HTTP connection pools, ULID factories, caches, log-once latches) onglobalThisinstead of at module scope. This de-duplicates state across bundled packages. Fixes WebSocket transport, which was registered in one module state but looked up in another.
@workflow/world-postgres@5.0.0-beta.36
- #3570
9454d51@pranaygp - Addworld.runs.waitForTerminalStatus(runId, { timeoutMs, signal, resolveData })method, which long-polls until the run reaches a terminal status.await run.returnValuenow internally uses this, if the World supports it, instead of using a polling interval. - #3634
7b79ba3@pranaygp - New runs are created with the sealed-log event identity (specVersion 7). A sealed-log run's event positions are assigned by the backend before each write commits, so concurrent writers never contend for a position. A position whose writer dies is closed by the backend with anoopevent; replay steps over those without delivering them or advancing the deterministic clock. SetWORKFLOW_SEALED_LOG=0to put a deployment back on the previous scheme. Every runtime reads sealed logs either way, and a run's version is fixed at creation, so the setting only affects new runs. - #3575
71bc027@shin4141 - Commit step entities and theirstep_createdevents atomically.
@workflow/world-vercel@5.0.0-beta.40
- #3570
9454d51@pranaygp - Addworld.runs.waitForTerminalStatus(runId, { timeoutMs, signal, resolveData })method, which long-polls until the run reaches a terminal status.await run.returnValuenow internally uses this, if the World supports it, instead of using a polling interval. - #3634
7b79ba3@pranaygp - New runs are created with the sealed-log event identity (specVersion 7). A sealed-log run's event positions are assigned by the backend before each write commits, so concurrent writers never contend for a position. A position whose writer dies is closed by the backend with anoopevent; replay steps over those without delivering them or advancing the deterministic clock. SetWORKFLOW_SEALED_LOG=0to put a deployment back on the previous scheme. Every runtime reads sealed logs either way, and a run's version is fixed at creation, so the setting only affects new runs. - #3702
dc68611@shalabhc - Default the events transport to WebSockets.WORKFLOW_EVENTS_TRANSPORT=httpopts back out; any other value, including unset, now takes the socket. - #3599
d012bf0@karthikscale3 - Preserve upstream HTTP status codes when fetching Workflow run encryption keys. - #3728
f771585@pranaygp - Hold process-wide state (the WebSocket transport registry, HTTP connection pools, ULID factories, caches, log-once latches) onglobalThisinstead of at module scope. This de-duplicates state across bundled packages. Fixes WebSocket transport, which was registered in one module state but looked up in another. - #3702
dc68611@shalabhc - AddWORKFLOW_INTERNAL_EVENTS_TRANSPORT_STRICT, an internal flag that fails astep_completedwrite which falls back to HTTP while the WebSocket gate is on, so CI can tell a working socket from a silently demoted one.
@workflow/world-testing@5.0.0-beta.44
- #3728
f771585@pranaygp - Annotate the test server's per-run invocation counter as deliberately per-copy, so it passes the module-scope state rule. - #3737
7e48e7b@VaguelySerious - The event-id conformance test now floors a run's stampedspecVersionatmintedSpecVersion()rather thanSPEC_VERSION_CURRENT, so a World is not failed for stamping the version it was told to stamp while a spec bump is staged.
@workflow/web-shared@5.0.0-beta.44
- #3715
5a59bb8@karthikscale3 - Allow consumers to disable decrypt controls and explain why decryption is unavailable. - #3692
a06afee@mitul-s - Prefix trace viewer marker context cards with "Hook received" or "Attribute set" before the relative time. - #3634
7b79ba3@pranaygp - Render sealed log positions (noopevents) as the log rows they are: shown in event lists, excluded from span geometry and trace duration, since a seal's timestamp belongs to whichever reader wrote it rather than to the run. - #3684
4bd533d@karthikscale3 - Display short step names when observability events contain a workflow-prefixed name.
@workflow/ai@5.0.0-beta.14
- #3728
f771585@pranaygp - Hold process-wide state onglobalThisrather than at module scope in the packages that get bundled into the host application's server build, where a bundler compiles one copy of each module per layer. Covers warn-once latches, lazy caches, the VM script and QuickJS asset caches, the dev-server port cache, and step single-flight, whose per-copy map was not actually single-flight. State that is deliberately per-copy is annotated with the reason.
@workflow/builders@5.0.0-beta.44
- #3454
8a2648e@josuediazflores - Emitmanifest.jsonin a stable order and remove a redundant compilation round per no-op rebuild in Next dev.
@workflow/next@5.0.0-beta.44
- #3454
8a2648e@josuediazflores - Emitmanifest.jsonin a stable order and remove a redundant compilation round per no-op rebuild in Next dev.
@workflow/nitro@5.0.0-beta.44
- #3454
8a2648e@josuediazflores - Emitmanifest.jsonin a stable order and remove a redundant compilation round per no-op rebuild in Next dev.
@workflow/sveltekit@5.0.0-beta.44
- #3509
37ed049@dummdidumm - Load SvelteKit route configuration through@sveltejs/load-config, including projects that configure SvelteKit exclusively invite.config.
@workflow/utils@5.0.0-beta.9
- #3728
f771585@pranaygp - AddglobalSingleton(), which parks a package's process-wide state onglobalThisso bundled copies of a module in one process share it. - #3728
f771585@pranaygp - DeclaresideEffects: falseso bundlers can drop the unused parts of the barrel from a host application's build.
@workflow/nest@5.0.0-beta.44
- #3728
f771585@pranaygp - Hold process-wide state onglobalThisrather than at module scope in the packages that get bundled into the host application's server build, where a bundler compiles one copy of each module per layer. Covers warn-once latches, lazy caches, the VM script and QuickJS asset caches, the dev-server port cache, and step single-flight, whose per-copy map was not actually single-flight. State that is deliberately per-copy is annotated with the reason.