Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/atomic-step-created-event.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@workflow/world-postgres': patch
---

Commit step entities and their `step_created` events atomically.
5 changes: 5 additions & 0 deletions .changeset/global-singleton-helper.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@workflow/utils': minor
---

Add `globalSingleton()`, which parks a package's process-wide state on `globalThis` so bundled copies of a module in one process share it.
5 changes: 5 additions & 0 deletions .changeset/module-scope-lint-hardening.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@workflow/world-testing': patch
---

Annotate the test server's per-run invocation counter as deliberately per-copy, so it passes the module-scope state rule.
8 changes: 8 additions & 0 deletions .changeset/module-scope-state-all-bundled-packages.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
'@workflow/core': patch
'@workflow/world': patch
'@workflow/ai': patch
'@workflow/nest': patch
---

Hold process-wide state on `globalThis` rather 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.
27 changes: 27 additions & 0 deletions .changeset/pre.json
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,7 @@
"analytics-utc-dates",
"ast-directive-validation",
"atomic-runs-publish",
"atomic-step-created-event",
"attr-inprocess-replay",
"attributes-mvp-plan",
"attributes-row-remove-flex-1",
Expand Down Expand Up @@ -114,6 +115,7 @@
"calm-geese-observe",
"calm-geese-share",
"cancel-v4-frame-stream",
"catchable-step-arg-serialization-errors",
"centralize-event-semantics",
"chatty-walls-appear",
"ci-runtime-fast-paths",
Expand Down Expand Up @@ -154,12 +156,14 @@
"dev-hmr-full-rebuild-race",
"dev-hmr-quiescence",
"dirty-bees-notice",
"disable-web-shared-decrypt-controls",
"discover-workflows-in-node-modules-opt-out",
"display-occurred-at",
"docs-event-sourcing-duplicate-events",
"docs-migration-guides-redirects",
"docs-rendered-link-lint",
"docs-step-executed-multiple-times",
"docs-v5-whats-new-pages",
"drain-consume-loop-synchronously",
"drain-pending-queue-on-completion",
"drop-precondition-guard-capability",
Expand All @@ -174,6 +178,7 @@
"e2e-timing-polling",
"e2e-wait-for-hook",
"early-cooks-accept",
"easy-dodos-doubt",
"eleven-lilies-film",
"empty-worlds-throw",
"enable-tanstack-start-vercel-e2e",
Expand Down Expand Up @@ -277,6 +282,7 @@
"gentle-keys-occur",
"getter-step-support",
"getwritable-share-pipe",
"global-singleton-helper",
"great-mails-argue",
"great-news-beg",
"green-streams-decode",
Expand Down Expand Up @@ -336,15 +342,19 @@
"local-hook-min-retention",
"local-port-cache",
"local-world-vercel-warning",
"log-order-draws",
"log-queue-handler-retries",
"loud-pugs-recycle",
"lucky-windows-smash",
"many-peas-jog",
"marker-kind-prefix",
"mean-cameras-hope",
"metadata-panel-styling",
"metadata-token-hookid-copy",
"mighty-pumas-rest",
"modern-penguins-peel",
"module-scope-lint-hardening",
"module-scope-state-all-bundled-packages",
"module-source-link",
"moody-rivers-play",
"narrow-step-bundling",
Expand Down Expand Up @@ -401,6 +411,7 @@
"precise-trace-viewer-durations",
"precondition-guard-default-on",
"preserve-imports-used-by-hoisted-steps",
"preserve-run-key-status",
"preserve-step-fn-names",
"pretty-log-format",
"prewarm-appended-payloads",
Expand Down Expand Up @@ -443,6 +454,7 @@
"remove-obsolete-world-factory-aliases",
"remove-old-trace-viewer",
"remove-private-subpath",
"remove-release-app-dispatch",
"remove-safe-mode",
"remove-sdk-serde-exclusion",
"remove-step-file-copy",
Expand All @@ -459,6 +471,7 @@
"repro-bound-storm-pressure",
"repro-comment-slim",
"repro-partial-results",
"repro-poke-decay",
"require-slot-event-ids",
"resilient-resume-hook",
"resilient-step-dispatch-off",
Expand All @@ -473,25 +486,30 @@
"retry-eve-connect-timeouts",
"retry-idempotent-event-posts",
"retry-vqs-handler-errors-immediately",
"reuse-runtime-world-for-route-handlers",
"revert-static-world-target",
"rich-signals-inline",
"rich-toes-live",
"route-bundle-isolation-regression-test",
"rsfs-replay-telemetry",
"run-cancel-reason",
"run-idempotency-docs",
"run-status-long-poll",
"run-step-error-hydration",
"runtime-decryption-error",
"runtime-schema-validation-failure",
"safe-wait-until-rejections",
"salty-ears-act",
"sealed-log-noop-shared-predicate",
"sealed-log-spec-seven",
"secure-package-deps-main",
"send-event-occurred-at",
"serializable-abort-controller",
"serializable-reviver-surfaces",
"serialization-refactor",
"setup-graphile-worker-schema",
"sharp-points-occur",
"short-step-trace-names",
"shy-frogs-juggle",
"shy-turtles-decide",
"sidebar-request-id",
Expand All @@ -503,6 +521,7 @@
"sixty-plants-shout",
"skip-changeset-release-deploys",
"skip-community-worlds-main",
"skip-unchanged-generated-writes",
"skip-world-local-nov-ghosts",
"slot-event-ids",
"slot-ids-are-required",
Expand Down Expand Up @@ -547,6 +566,7 @@
"stso-inline-vs-queue-hop",
"sveltekit-config-loader",
"sveltekit-h2-noderequire",
"sveltekit-public-config-loader",
"swc-arguments-not-closure",
"swc-destructuring-default-dce",
"swc-gitignore-builder",
Expand All @@ -559,6 +579,7 @@
"tame-coats-hug",
"tame-oranges-lead",
"tanstack-start-workbench",
"technical-writing-audit",
"ten-pets-say",
"terminal-run-event-replay-main",
"test-limit-env-config",
Expand Down Expand Up @@ -597,6 +618,7 @@
"update-vercel-queue",
"upgrading-workflows-cookbook",
"upset-ghosts-rush",
"utils-side-effects-free",
"v2-combined-bundle",
"v4-events-client",
"v4-events-via-global-fetch",
Expand All @@ -611,6 +633,7 @@
"versioning-docs",
"vitest-bundle-local-step-deps",
"vm-determinism-hardening",
"wait-continuation-rearm",
"warn-external-workflow-packages",
"web-analytics-list-reads",
"web-embeddable-handler",
Expand Down Expand Up @@ -645,7 +668,9 @@
"world-local-tighten-id-validation",
"world-local-untagged-recovery-filter",
"world-local-windows-unlink-retry",
"world-module-scope-state",
"world-runtime-deadline",
"world-testing-minted-floor",
"world-vercel-caller-user-agent",
"world-vercel-create-run-id",
"world-vercel-enable-h2",
Expand All @@ -659,6 +684,8 @@
"world-zod-dependency",
"writable-group-commit",
"ws-events-transport",
"ws-strict-fallback",
"ws-transport-default-on",
"ws-transport-synthetic-spans",
"yellow-pianos-relax",
"zstd-step-error-display",
Expand Down
5 changes: 5 additions & 0 deletions .changeset/reuse-runtime-world-for-route-handlers.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@workflow/core': patch
---

Build the workflow entrypoint's queue handler from the runtime World (`getWorld()`) instead of `getWorldHandlers()`, so a process creates one World rather than two. A stateful World no longer gets duplicate connection pools or queue workers.
5 changes: 5 additions & 0 deletions .changeset/utils-side-effects-free.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@workflow/utils': patch
---

Declare `sideEffects: false` so bundlers can drop the unused parts of the barrel from a host application's build.
6 changes: 6 additions & 0 deletions .changeset/wait-continuation-rearm.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@workflow/core': patch
'@workflow/world': patch
---

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.
6 changes: 6 additions & 0 deletions .changeset/world-module-scope-state.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@workflow/world-vercel': patch
'@workflow/world-local': patch
---

Hold process-wide state (the WebSocket transport registry, HTTP connection pools, ULID factories, caches, log-once latches) on `globalThis` instead 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.
5 changes: 5 additions & 0 deletions .changeset/world-testing-minted-floor.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
'@workflow/world-testing': patch
---

The event-id conformance test now floors a run's stamped `specVersion` at `mintedSpecVersion()` rather than `SPEC_VERSION_CURRENT`, so a World is not failed for stamping the version it was told to stamp while a spec bump is staged.
7 changes: 7 additions & 0 deletions .changeset/ws-strict-fallback.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
'@workflow/world-vercel': patch
---

Add `WORKFLOW_INTERNAL_EVENTS_TRANSPORT_STRICT`, an internal flag that fails a
`step_completed` write which falls back to HTTP while the WebSocket gate is on,
so CI can tell a working socket from a silently demoted one.
6 changes: 6 additions & 0 deletions .changeset/ws-transport-default-on.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'@workflow/world-vercel': minor
---

Default the events transport to WebSockets. `WORKFLOW_EVENTS_TRANSPORT=http`
opts back out; any other value, including unset, now takes the socket.
Loading
Loading