Skip to content

Bump Alchemy to 2.0.0-beta.85 and Effect to 4.1.2 - #180

Open
jonbeckman wants to merge 3 commits into
masterfrom
cursor/bump-alchemy-effect-d1cb
Open

jonbeckman wants to merge 3 commits into
masterfrom
cursor/bump-alchemy-effect-d1cb

Conversation

@jonbeckman

@jonbeckman jonbeckman commented Nov 7, 2026 •

Copy link
Copy Markdown
Contributor

Summary

Moves the workspace onto Alchemy 2.0.0-beta.85 and Effect 4.1.2.

The root workerd override is removed. It held workerd behind the release Alchemy beta.85's Vite forwarder needs. That forwarder waits for HTTP/1.1 100 Continue before it sends a POST body, and workerd 1.20261006.1 never sends that response.

No published Miniflare release depends on workerd 1.20261026.1, the exact version @alchemy.run/cloudflare-runtime@2.0.0-beta.85 depends on. Miniflare is now 5.20261101.0-beta, the next published release, and it depends on workerd 1.20261101.1. Wrangler 4.149.0 also depended on workerd 1.20261006.1 and Miniflare 5.20261006.1-alpha, so Wrangler is now 4.156.1, which uses that same Miniflare and workerd 1.20261101.1.

nub why workerd shows two versions:

  • 1.20261026.1, supplied by @alchemy.run/cloudflare-runtime (the binary alchemy dev uses)
  • 1.20261101.1, supplied by miniflare and wrangler

Both binaries include 100 Continue. 1.20261006.1 is gone. allowScripts still allows the workerd install script. VERSION is untouched.

Root cause

File: @alchemy.run/cloudflare-runtime@2.0.0-beta.85 src/vite/worker-request.ts, in forwardWorkerRequest.

  • Lines 70–79: a request with content-length or transfer-encoding is forwarded with expect: 100-continue.
  • Lines 169–174: the body is not piped until the upstream emits continue.

That landed in commit 3bb45b0f08 (feat(cloudflare-runtime): update workerd and sync workers-sdk, #2673), which is in 2.0.0-beta.85 and not in 2.0.0-beta.84. Beta.84 piped the body immediately.

A packet capture of POST /api/auth/sign-in/email to port 3000 showed the Vite process sending headers, including expect: 100-continue and content-length: 40, and then no body. workerd acknowledged the headers and never replied 100 Continue. The Worker then failed request.arrayBuffer() with Network connection lost once the client gave up. The same POST to port 3100 does not go through this Vite forwarder, so it returned 200.

workerd 1.20261006.1 has no 100 Continue string in the binary. 1.20261026.1 and 1.20261101.1 do.

Validation

  • nub run format, nub run lint, and nub run typecheck: passed, including the pre-push hook.
  • nub run test:config: 27 passed (4 files), including the Miniflare service-binding and storage fixtures. One workerd stderr line reported a hung request during the service-binding case; the test still passed.
  • Container e2e was not run on this VM. CI runs that suite.
  • Earlier on this branch, with workerd 1.20261026.1 forced by the override, nub run test was 2 failed, 30 passed. Sign-in passed. OpenCode and Codex timed out because the container failed to start.

Checklist

  • I added or updated tests for behavior changes, or explained why tests are not needed. The existing config suite covers the Miniflare fixtures.
  • I updated documentation and config examples when behavior or configuration changed. The config JSON schema was regenerated for Effect 4.1. Stale workerd 1.20261006.1 entries were removed from .npmrc minimumReleaseAgeExclude. The new Miniflare and workerd versions did not need an age exclusion.
  • I added a .tegami/ release entry. VERSION is untouched.
  • I ran nub run format, nub run lint, nub run typecheck, and nub run test:config. Container e2e is left to CI.
  • I did not include credentials, private data, internal URLs, or organization-specific defaults.
  • I updated THIRD_PARTY_NOTICES.md for new third-party code or separately licensed assets. No new third-party source was added.

Held for Jonathan. Do not merge.

Open in Web Open in Cursor 

cursoragent and others added 2 commits November 7, 2026 01:43
Alchemy 2.0.0-beta.85 requires Effect ^4.1.0. Regenerate the config JSON schema so Effect 4.1's flattened anyOf output matches the committed document.

Co-authored-by: Jonathan Beckman <jonathantbeckman@gmail.com>
The Vite dev forwarder waits for HTTP 100 Continue before it sends a request body. workerd 1.20261006.1 never sends that response, so local POSTs through port 3000 lose their body. Alchemy 2.0.0-beta.85 depends on workerd 1.20261026.1, which does.

Co-authored-by: Jonathan Beckman <jonathantbeckman@gmail.com>
@jonbeckman
jonbeckman marked this pull request as ready for review November 9, 2026 09:42
@github-actions

github-actions Bot commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

Tegami

This repository uses Tegami to manage releases. When your changes affect published packages, add a changelog file under .tegami/ before merging.

Create a changelog → · Changelog format

Release preview

Package Bump Version
solzero patch 2.0.0 → 2.0.1

Changelogs in this PR

Changelog Title
2026-11-07-alchemy-effect-bump.md Deploy with Alchemy 2.0.0-beta.85 and Effect 4.1.2

Run nub run tegami locally to create a changelog interactively.

Managed by Tegami.

@github-actions

github-actions Bot commented Nov 9, 2026 •

Copy link
Copy Markdown
Contributor

🟢 e2e solzero-core: 32 passed

4 agent steps · 4 replayed from cache

Change 14 files changed since 487a836
Filter decision kept all 30 tests (the diff is over 60 kB, so the decision filter left nothing out)

All 32 tests in 13 files
Test Agent Time
🟢 tests/accounts.e2e.ts · 3 passed 6.4s
🟢 create, use and revoke an isolated user API key 3.2s
🟢 Better Auth 1.7 account APIs select the local account row id 175ms
🟢 Accounts settings shows GitHub as unlinked without OAuth providers 3.0s
🟢 tests/admin.e2e.ts · 1 passed 3.7s
🟢 administrator pages show live control-plane configuration 3.7s
🟢 tests/advanced-sessions.e2e.ts · 2 passed 6.2s
🟢 incognito sessions stay outside normal lists but open directly 2.8s
🟢 session MCP definitions and subagent preferences persist 3.4s
🟢 tests/api-contract.e2e.ts · 1 passed 317ms
🟢 exported API key and session schemas decode actual Worker responses 317ms
🟢 tests/auth.e2e.ts · 4 passed 13.7s
🟢 sign-in gate protects every application route 805ms
🟢 credential sign-in opens the requested settings page 6.0s
🟢 anonymous callers cannot access any protected API group 123ms
🟢 sign-out removes authenticated UI access 6.8s
🟢 tests/auth.setup.e2e.ts · 2 passed 6.2s
🟢 authenticate isolated admin 4.2s
🟢 authenticate isolated peer 2.0s
🟢 tests/bots.e2e.ts · 1 passed 4.5s
🟢 create a bot and manage a temporary routine through the UI 4.5s
🟢 tests/branding.e2e.ts · 3 passed 243ms
🟢 the selected deployment brand reaches the browser 208ms
🟢 health identifies the configured application without exposing configuration 19ms
🟢 OpenAPI uses the selected deployment brand 16ms
🟢 tests/session-transfer.e2e.ts · 1 passed 1.9s
🟢 admin authentication transfer redeems once and retains its deep link 1.9s
🟢 tests/sessions.e2e.ts · 5 passed 1 step 39.3s
🟢 session tools, archive and restoration persist through the real Worker 1 step 4.7s
🟢 a second account cannot read or mutate another account's session 315ms
🟢 isolate executes a real prompt and persists its output 8.0s
🟢 opencode executes a real prompt and persists its output 13.3s
🟢 codex executes a real prompt and persists its output 13.0s
🟢 tests/settings.e2e.ts · 5 passed 2 steps 22.7s
🟢 all settings categories load real data 7.3s
🟢 runtime default persists after reload 5.6s
🟢 MCP deep link and legacy settings URL open the MCP tab 2.0s
🟢 secret editor creates, finds and deletes a disposable secret 1 step 3.7s
🟢 theme preference survives reload 1 step 4.1s
🟢 tests/skills.e2e.ts · 1 passed 7.5s
🟢 global skill defaults and per-user preferences persist independently 7.5s
🟢 tests/workflows.e2e.ts · 3 passed 1 step 7.5s
🟢 workflow authoring, rename, export, disable and archive persist 1 step 5.3s
🟢 manual workflow executes JavaScript and stores a real R2 artifact 2.2s
🟢 invalid workflow definitions are rejected before storage 94ms

e2e 0.21.3 · 3m 3s · local-cloudflare · run artifacts

The override held workerd behind the release Alchemy beta.85's Vite forwarder needs for 100 Continue. Miniflare 5.20261101.0-beta and Wrangler 4.156.1 depend on workerd 1.20261101.1. Alchemy's runtime still depends on workerd 1.20261026.1. No published Miniflare release depends on that exact version.

Co-authored-by: Jonathan Beckman <jonathantbeckman@gmail.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants