Commit Graph

358 Commits

Author SHA1 Message Date
Vercel Release Bot fc6a32d6dc Version Packages (beta) (#607) @workflow/nitro@4.0.1-beta.30 @workflow/next@4.0.1-beta.31 workflow@4.0.1-beta.32 @workflow/world-testing@4.0.1-beta.33 @workflow/world-postgres@4.1.0-beta.20 @workflow/world-local@4.0.1-beta.18 @workflow/ai@4.0.1-beta.32 @workflow/web-shared@4.0.1-beta.28 @workflow/utils@4.0.1-beta.7 @workflow/sveltekit@4.0.0-beta.24 @workflow/world-vercel@4.0.1-beta.20 @workflow/web@4.0.1-beta.17 @workflow/builders@4.0.1-beta.26 @workflow/errors@4.0.1-beta.9 @workflow/core@4.0.1-beta.27 @workflow/cli@4.0.1-beta.32 @workflow/nuxt@4.0.1-beta.19 @workflow/astro@4.0.0-beta.9 2025-12-16 21:05:18 +01:00
Adrian 29967bff90 fix: nitro duplicate building workflows on startup (#619) 2025-12-16 12:04:05 -08:00
Peter Wielander deaf0193e9 [world-vercel] Allow skipping vercel backend proxy for e2e tests where CLI runs in runtime env (#627) 2025-12-16 20:44:05 +01:00
Adrian 89ad239516 remove react-router workbench (#631) 2025-12-16 10:46:31 -08:00
Adrian 1ef6b2fdc8 fix: use workflow health endpoint to check for port (#616)
* chore: use workflow health endpoint to check for port

* chore: update comment

* changeset

* Fix: The JSDoc comment for the `probePort` function is outdated and doesn't match the implementation. It claims the function returns true for "non-404 response" but the code now checks for exactly 200 status.

This commit fixes the issue reported at packages/utils/src/get-port.ts:251

## Outdated JSDoc comment in probePort() function doesn't match implementation

**What fails:** The JSDoc comment at line 251 of `packages/utils/src/get-port.ts` claims the `probePort()` function `@returns true if the port responds as a workflow server (non-404 response)`, but the actual implementation at line 269 explicitly checks `return response.status === 200;`

**How to reproduce:**
1. Read the JSDoc comment for `probePort()` function in `packages/utils/src/get-port.ts` (line 251)
2. Read the implementation at lines 268-269
3. Observe the mismatch: the comment says "non-404 response" but code checks for exactly status 200

**What happened vs expected behavior:**
- The code behavior was changed in commit `34cb235` (Dec 15, 2025) from checking `response.status !== 404` to checking `response.status === 200`
- The internal code comments were updated in commit `5840ab2`, but the JSDoc was left outdated
- Developers reading the JSDoc would incorrectly believe the function accepts any non-404 response (400, 405, etc.) when it actually requires exactly 200

**Fix:** Updated the JSDoc `@returns` line to accurately reflect the implementation: `@returns true if the port responds with a 200 status from the health check endpoint`

**Verification:** All 19 tests in `packages/utils/src/get-port.test.ts` pass with the updated documentation.

Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>

---------

Co-authored-by: Vercel <vercel[bot]@users.noreply.github.com>
2025-12-15 16:34:44 -08:00
Nathan Rajlich 4d7a393906 Add workflow endpoints health check query parameter (#613)
* Add workflow endpoints health check query parameter

* .

* .

* Add e2e
2025-12-15 15:14:29 -08:00
Peter Wielander 05ea6789e5 [web] Add actions for waking up workflow from sleep and re-enqueue runs for debugging (#582) 2025-12-14 17:39:25 -08:00
Copilot b56aae3fe9 Override timeout functions in workflow VM context to throw helpful errors (#505)
* Initial plan

* Override timeout functions in workflow VM context to throw helpful errors

Co-authored-by: TooTallNate <71256+TooTallNate@users.noreply.github.com>

* Use WorkflowRuntimeError instead of vmGlobalThis.Error for timeout functions

Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>

* Add docs page for timeout-in-workflow error

Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>

* Reorder unavailable functions list: set* functions first, then clear* functions

Co-authored-by: TooTallNate <71256+TooTallNate@users.noreply.github.com>

---------

Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: TooTallNate <71256+TooTallNate@users.noreply.github.com>
Co-authored-by: pranaygp <1797812+pranaygp@users.noreply.github.com>
2025-12-13 01:47:03 -08:00
Vishal Yathish 3198f6d1b7 [docs] bump @ai/react version to stop schema validation errors (#606) 2025-12-13 01:25:31 -08:00
Daniel Erickson 795c0f38e7 Update README.md (#601) 2025-12-12 23:44:26 -08:00
Vercel Release Bot 5f61987a58 Version Packages (beta) (#605) @workflow/ai@4.0.1-beta.31 workflow@4.0.1-beta.31 @workflow/world-testing@4.0.1-beta.32 @workflow/web@4.0.1-beta.16 @workflow/next@4.0.1-beta.30 @workflow/cli@4.0.1-beta.31 2025-12-12 19:16:54 -08:00
Peter Wielander 6265534d6b CVE-2025-55184 changeset (#604) 2025-12-12 19:09:08 -08:00
Peter Wielander f5db6ed52c CVE-2025-55184 (#603) 2025-12-12 19:07:21 -08:00
Vercel Release Bot 7018f490e6 Version Packages (beta) (#589)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
@workflow/nuxt@4.0.1-beta.18 @workflow/world-postgres@4.1.0-beta.19 @workflow/astro@4.0.0-beta.8 @workflow/builders@4.0.1-beta.25 @workflow/cli@4.0.1-beta.30 @workflow/core@4.0.1-beta.26 @workflow/errors@4.0.1-beta.8 @workflow/next@4.0.1-beta.29 @workflow/nitro@4.0.1-beta.29 @workflow/ai@4.0.1-beta.30 @workflow/sveltekit@4.0.0-beta.23 @workflow/utils@4.0.1-beta.6 @workflow/web-shared@4.0.1-beta.27 @workflow/world-local@4.0.1-beta.17 workflow@4.0.1-beta.30 @workflow/world-vercel@4.0.1-beta.19 @workflow/world-testing@4.0.1-beta.31
2025-12-12 18:11:25 -08:00
Adrian c9b8d843fd fix: improve port detection reliability with HTTP probing (#590)
* add logs

* fix: sveltekit type error

* feat: add polling for ports

* cleanup logs

* changeset

* fix test

* test

* test

* trigger

* trigger

* trigger

* trigger
2025-12-10 13:06:19 -08:00
Adrian 8d2cabe27e fix: externalize virtual modules in sveltekit builder (#573)
* fix: add virtual modules to sveltekit builder

* add test dynamic import

* changeset

* revert
2025-12-10 11:49:02 -08:00
Peter Wielander 30c0274cdb Fix changelog generation on changeset publish (#585) 2025-12-09 18:03:18 -08:00
Karthik Kalyanaraman a4b67a9b3a [web] Show chat conversation UI when detecting step spans from DurableAgent (#586)
---------

Signed-off-by: Karthik Kalyanaraman <karthik@scale3labs.com>
2025-12-09 16:35:46 -08:00
Peter Wielander 696e7e31e8 [core] Fix runs getting stuck due to step status edge case (#588) 2025-12-09 15:04:29 -08:00
Vercel Release Bot 76795b0cd0 Version Packages (beta) (#561) @workflow/world@4.0.1-beta.10 workflow@4.0.1-beta.29 2025-12-09 09:26:51 -08:00
Peter Wielander 161c54ca13 [web] [cli] Add Web and CLI UI for listing and viewing streams (#575) 2025-12-08 18:10:02 -08:00
Peter Wielander c82b46720c [world] Add Streamer.listByRunId method to list all streams for a run (#574) 2025-12-08 16:05:44 -08:00
Nathan Rajlich 656a5027ab Check step maxRetries at the beginning of the step handler (#532) 2025-12-08 15:42:34 -08:00
Nathan Rajlich 8ff4b3a508 Enable Vercel Deployment Protection bypass secret for E2E tests (#580)
This allows us to enable the Deployment Protection feature for the
Vercel test projects.
2025-12-08 14:44:41 -08:00
JJ Kasper b29d8a80e0 Revert "fix: import stripping in client mode for step functions (#563)" (#577)
This reverts commit 8b8135fb37.
2025-12-08 14:23:05 -08:00
Adrian 451b67256c docs: fix port getting started for vite and astro (#578) 2025-12-08 14:14:43 -08:00
Adrian 3064fbfa7d fix: force devalue version (#576) 2025-12-08 13:29:15 -08:00
Peter Wielander 33c254c82c [web] Clean up error handling and surface status code (#572) 2025-12-08 12:59:05 -08:00
Ariel Weinberger 8b8135fb37 fix: import stripping in client mode for step functions (#563)
* fix client output

* inputs

* add fixtures

* test: wip

* fix: update step-with-imports fixture to match transform output

* DCO Remediation Commit for Ariel Weinberger <weinberger.ariel@gmail.com>

I, Ariel Weinberger <weinberger.ariel@gmail.com>, hereby add my Signed-off-by to this commit: 949bc0cc68
I, Ariel Weinberger <weinberger.ariel@gmail.com>, hereby add my Signed-off-by to this commit: 79e31ad4b2
I, Ariel Weinberger <weinberger.ariel@gmail.com>, hereby add my Signed-off-by to this commit: 5f6a825815
I, Ariel Weinberger <weinberger.ariel@gmail.com>, hereby add my Signed-off-by to this commit: fb20e60836
I, Ariel Weinberger <weinberger.ariel@gmail.com>, hereby add my Signed-off-by to this commit: ed8e944f0b

Signed-off-by: Ariel Weinberger <weinberger.ariel@gmail.com>

* add changeset

Signed-off-by: Ariel Weinberger <weinberger.ariel@gmail.com>

---------

Signed-off-by: Ariel Weinberger <weinberger.ariel@gmail.com>
2025-12-08 12:49:06 -08:00
Peter Wielander 058757c476 [web] Tidy time helper functions (#562) 2025-12-08 12:16:53 -08:00
Gal Schlezinger c35b445875 core: do not treat workflow suspensions as errors in otel (#567) 2025-12-08 11:00:11 -08:00
Nathan Rajlich d3fd81dffd Enhance serialization falure error reporting (#571) 2025-12-08 10:21:47 -08:00
Peter Wielander d42a9681a1 [world-local] Bump undici dependency to latest minor version (#568) 2025-12-07 13:58:46 -08:00
Pranay Prakash ad7d14e6e1 Fix asset upload in CI 2025-12-06 19:41:13 -08:00
Pranay Prakash ee4fff6814 benchmarking: make steps simulate real work (+ misc improvements) (#565)
* perf: add 5s delay to benchmark steps to simulate real work

* perf: add realistic workloads to benchmark steps

Add realistic workloads to benchmark step functions:
- doWork() - 1 second delay to simulate real computation
- stressTestStep() - 1 second delay to simulate real computation
- genBenchStream() - generates ~5KB of data in 50 chunks
- transformStream() - uppercases stream content (renamed from doubleNumbers)

Add "Slurp Time" metric to stream benchmarks measuring time from
first byte to complete stream consumption, complementing TTFB.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

* fix(e2e): increase dev test timeouts for Windows

Windows file watching and rebuilding is slower than macOS/Linux,
causing the 10s timeouts to fail. Increased to 30s to accommodate.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

* fix(ci): treat community world failures as warnings, not errors

Community world tests/benchmarks are now non-blocking:
- Removed from has_failures check in both tests.yml and benchmarks.yml
- Added separate has_warnings output for community failures
- Split PR comment notices: ❌ for failures, ⚠️ for community warnings

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

* fix: apply PR review suggestions

- Fix chunk size calculation: chunkSize - 11 for ~100 bytes per chunk
- Remove redundant metadata check (always truthy)

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-06 19:27:02 -08:00
Pranay Prakash 516f16fe98 fix(ci): ensure publish-results job runs when E2E tests fail
The publish-results job was being skipped because it depends on the
summary job which uses `if: always()`. When a job uses `always()`,
downstream jobs need to also use `always()` in their condition,
otherwise GitHub Actions skips them when any upstream job fails.

This was causing e2e-results.json to never be published to gh-pages.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-06 19:04:21 -08:00
Pranay Prakash b28cd847de fix: step.ts handling corrupted step invocation log 2025-12-06 18:43:39 -08:00
Pranay Prakash 54ba1888cd fix: compare benchmarks against PR base branch instead of main (#560)
* fix: compare benchmarks against PR base branch instead of main

- Use github.event.pull_request.base.ref instead of hardcoded main
- Remove search_artifacts: true to ensure most recent baseline is used
- For stacked PRs, this compares against the parent PR's baseline

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

* fix: group failed e2e tests by category and app in summary

Instead of listing each failed test as a separate item, group them by:
1. Category (world): e.g., "Community Worlds", "Vercel Production"
2. App (framework): e.g., "mongodb", "turso", "nextjs-turbopack"

This makes the summary much more readable when there are many failures.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

* fix: ensure local E2E tests always produce JSON output

- Add 'fastify' to app detection list in aggregate-e2e-results.js
- Change && to ; so e2e tests run even if dev.test.ts fails
- This ensures local-dev, local-prod, and local-postgres categories
  appear in the E2E summary comment

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

* fix: ensure local E2E tests always produce JSON output

- Add 'fastify' to app detection list in aggregate-e2e-results.js
- Change && to ; so e2e tests run even if dev.test.ts fails
- This ensures local-dev, local-prod, and local-postgres categories
  appear in the E2E summary comment

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

* feat: publish CI results to GitHub Pages for docs

- Add generate-docs-data.js script to create JSON summaries from CI artifacts
- Add publish-results job to tests.yml and benchmarks.yml workflows
- Update docs/lib/worlds-data.ts to fetch from GitHub Pages URLs
- Results published to https://vercel.github.io/workflow/ci/

This allows the docs worlds page to display actual test/benchmark
results without requiring a GITHUB_TOKEN.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

* fix: correct outputFile path for local E2E test artifacts

The --outputFile path was using ../../ which placed files outside the
repo because pnpm run test:e2e executes from workspace root, not from
the cd'd workbench directory. This prevented local-dev, local-prod, and
local-postgres test results from being uploaded as artifacts.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

* fix: show green checkmark for skipped tests instead of warning

Skipped tests are intentional and shouldn't show as warnings in the
E2E test summary comments.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

* feat: use collapsible sections in benchmark PR comment

Wrap each benchmark, stream benchmarks section, and summary tables in
<details> toggles to make the PR comment more compact and readable.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

* feat: add Vercel observability links to benchmark PR comments

- Store runId in benchmark timing data
- Add project-slug to Vercel benchmark matrix
- Pass WORKFLOW_VERCEL_PROJECT_SLUG env var to benchmarks
- Store Vercel metadata (teamSlug, projectSlug, environment) in timing files
- Generate observability deep links for each Vercel world benchmark
- Show observability links below Production (Vercel) tables

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

* fix: use correct Vercel project slugs for observability links

- nextjs-turbopack → example-nextjs-workflow-turbopack
- nitro-v3 → workbench-nitro-workflow

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

---------

Co-authored-by: Claude <noreply@anthropic.com>
2025-12-06 18:30:25 -08:00
Pranay Prakash 0bbd26f8c8 perf: use Map for invocationsQueue (O(1) lookup/delete) (#541)
* perf: use Map for invocationsQueue (O(1) lookup/delete)

Replace array-based invocationsQueue with Map<string, QueueItem> for
O(1) lookup and delete operations. This eliminates the O(n²) complexity
from findIndex + splice patterns in step.ts, hook.ts, and sleep.ts.

Changes:
- private.ts: Change invocationsQueue type from QueueItem[] to Map
- workflow.ts: Initialize with new Map() instead of []
- global.ts: Accept Map or array in WorkflowSuspension, add single-pass counting
- step.ts: Use Map.set/has/delete instead of push/findIndex/splice
- hook.ts: Use Map.set/delete instead of push/findIndex/splice
- sleep.ts: Use Map.set/get/delete instead of push/find/findIndex/splice

This is Phase 1 of the high-concurrency workflow optimization plan.
See beads issue wrk-fyx for details.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

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

* Update packages/core/src/step.ts

Co-authored-by: Nathan Rajlich <n@n8.io>

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Nathan Rajlich <n@n8.io>
2025-12-06 18:29:50 -08:00
Peter Wielander cbb03bcb08 Direct changeset to write github changelogs (#558) 2025-12-05 18:19:10 -08:00
Adrian 19c271c072 refactor: move request converters to @workflow/builders (#503)
sveltekit and astro use the exact same code for normalizing requests so it's been refactored to `request-converter.ts` inside `@workflow/builders`
2025-12-05 16:02:26 -08:00
Adrian 205b3953f0 refactor: add vite package for hmr (#501)
nitro, sveltekit and astro and additional vite integrations will use `hotUpdate` for hmr in the future. this adds a `@workflow/vite` package to standardize hmr in workflows
2025-12-05 16:00:26 -08:00
Vercel Release Bot 6194ded51b Version Packages (beta) (#533) @workflow/world-postgres@4.1.0-beta.17 @workflow/world-testing@4.0.1-beta.29 workflow@4.0.1-beta.28 @workflow/cli@4.0.1-beta.28 @workflow/ai@4.0.1-beta.28 @workflow/nitro@4.0.1-beta.27 @workflow/next@4.0.1-beta.27 @workflow/web-shared@4.0.1-beta.25 @workflow/builders@4.0.1-beta.23 @workflow/world-vercel@4.0.1-beta.17 @workflow/nuxt@4.0.1-beta.16 @workflow/world-local@4.0.1-beta.15 @workflow/web@4.0.1-beta.14 @workflow/swc-plugin@4.0.1-beta.12 @workflow/world@4.0.1-beta.9 @workflow/world-testing@4.0.1-beta.2 @workflow/core@4.0.1-beta.2 @workflow/world-vercel@4.0.1-beta.1 @workflow/world-local@4.0.1-beta.1 @workflow/web@4.0.1-beta.1 @workflow/swc-plugin@4.0.1-beta.1 @workflow/sveltekit@4.0.0-beta.21 @workflow/rollup@4.0.0-beta.6 @workflow/astro@4.0.0-beta.6 2025-12-05 15:24:04 -08:00
Nathan Rajlich 43f2dec31b Improved workflow registration in workflow mode (#557)
Primary motivation here is to allow a `use workflow` function to be non-exported, meaning that it is called by `start()` in i.e. an API route within the same function:

- SWC plugin now emits `globalThis.__private_workflows.set(workflowId, fn)` directly after setting `workflowId`
- Non-exported workflow functions are now properly registered and can be invoked
- Removed runtime iteration over exports in the workflow bundle - registration happens at transform time
- Simplified virtual entry generation in base-builder
2025-12-05 15:19:24 -08:00
Nathan Rajlich 21cff154a3 Add support for .mjs, .mts, .cjs, and .cts file extensions in the SWC transform (#556)
- Updated turbopack rules to include `*.mjs`, `*.mts`, `*.cjs`, `*.cts` in addition to existing extensions
- Fixed TypeScript detection for `.mts` and `.cts` files across all transform plugins
- Updated esbuild `resolveExtensions` to include `.mts` and `.cts`
- Updated the file watcher's `watchableExtensions` to include `.cts`
2025-12-05 14:39:10 -08:00
Nathan Rajlich af5b005ac8 Set workflowId property in workflow mode for non-exported workflow functions (#555)
### TL;DR

Modified the SWC plugin to set the `workflowId` property for all workflow functions in workflow mode, regardless of whether they are exported.

### What changed?

- Removed conditional logic that only added the `workflowId` property to exported workflow functions in workflow mode
- Now all workflow functions will have the `workflowId` property set, regardless of export status
- Updated test fixtures to reflect this change

### How to test?

1. Create a workflow file with non-exported workflow functions
2. Verify that the compiled output includes `workflowId` properties for all workflow functions
3. Run the existing test suite to ensure all tests pass with the updated behavior

### Why make this change?

This change ensures consistent behavior for all workflow functions. Previously, only exported workflow functions received the `workflowId` property in workflow mode, which could lead to inconsistent behavior when referencing non-exported workflow functions within the same file. This change makes the behavior more predictable and ensures all workflow functions are properly identified.
2025-12-05 14:31:54 -08:00
Nathan Rajlich fa37d26275 Set workflowId property directly after function declarations (#548)
Set `workflowId` property directly after function declarations in the SWC plugin.

### What changed?

Modified the SWC plugin to add the `workflowId` property immediately after workflow function declarations instead of collecting and adding them at the end of the file. This change applies to all transform modes (Client, Step, and Workflow).

The key changes include:
- Removed mode-specific conditions for adding `workflowId` assignments
- Simplified the code by adding `workflowId` inline for all workflow functions
- Cleared the `workflow_exports_to_expand` collection since it's no longer needed

### How to test?

1. Run the test suite to verify that all tests pass with the updated output format
2. Check the test fixtures to confirm that `workflowId` properties now appear directly after their respective function declarations
3. Verify that the behavior is consistent across all transform modes

### Why make this change?

This change improves code organization by placing the `workflowId` property closer to its associated function declaration, making the generated code more readable and maintainable. It also simplifies the plugin's logic by using a consistent approach across all transform modes rather than handling different modes separately.
2025-12-05 14:30:04 -08:00
Nathan Rajlich f46c51e30f Apply workflow transformation with export { fnName } syntax (#547)
Added support for workflow transformation with `export { fnName }` syntax.

### What changed?

Enhanced the SWC plugin to properly handle workflow functions that are exported using the named export syntax (`export { fnName }`). Previously, the plugin only properly handled workflow functions that were directly exported with `export function` or `export const`.

The implementation now:
- Collects names that are exported via `export { ... }` syntax in a first pass
- Applies the appropriate transformations to workflow functions that are later exported
- Ensures workflowId is correctly assigned to functions exported with this syntax
- Works across all transformation modes (Client, Step, and Workflow)

### How to test?

Test with files that use the named export syntax:

```javascript
async function workflowFunction() {
  'use workflow';
  // function body
}

export { workflowFunction };
```

Verify that the transformation correctly:
- Adds workflowId to the function
- Applies the appropriate mode-specific transformations
- Preserves the export statement

### Why make this change?

This change ensures consistent behavior across different export syntaxes. Previously, workflow functions exported with the `export { fnName }` syntax weren't properly transformed, which could lead to runtime errors or unexpected behavior. This enhancement provides developers with more flexibility in how they structure and export their workflow functions.
2025-12-05 14:20:40 -08:00
Pranay Prakash 48b3a12fd0 Add stress test benchmarks for large concurrent step counts (#539)
Add new benchmark workflows to reproduce reported issues with Promise.race
and Promise.all falling over when array sizes exceed a few hundred.

New workflows:
- promiseAllStressTestWorkflow(count) - Tests Promise.all with many concurrent steps
- promiseRaceStressTestLargeWorkflow(count) - Tests Promise.race with Map pattern

New benchmarks at 100, 500, and 1000 concurrent step scales for both
Promise.all and Promise.race patterns.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-12-05 14:20:00 -08:00
Peter Wielander 24e6271592 [web] UI polish: inline durations, font fixes, trace viewer scrolling fix (#554) 2025-12-05 12:43:39 -08:00