Repository navigation
fix(cloudflare): stop on unsupported runtimes and keep deploy failures readable and safe - #721
Merged
Merged
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
🚀 Deploying Preview to Cloudflare 🚀Preview URL: https://fix-cloudflare-deploy-node-runtime-void-cloud.voidzero-docs.workers.dev (commit 2b9ff55)This URL reflects your latest Preview deploymentPreview Deployments by commit
|
…s readable and safe `bunx void deploy` in the generated Bun workflow ran the CLI on the runner's Node 22. The helper child that reads the Cloudflare credential failed to load there (`node:http` has no `setGlobalProxyFromEnv`), the reason was dropped, and the upload stopped with "Cloudflare session has no bearer". A later trigger-sync failure then switched traffic back to an empty previous version. - Check the runtime before loading the CLI: `void` and `create-void` stop on Node outside ^24.22.0 || >=26.12.0, or Bun below 1.4.0, with a clear message. The bin entry imports only the check, then loads the CLI. - `void init --github` adds actions/setup-node to Bun workflows and sets check-latest on setup-node. - Child failures keep their exit code, signal and a scrubbed stderr tail. Credentials are removed by exact value before truncation. Each Cloudflare child step writes a debug `cloudflare_op` record, and failures write `deploy_end`. - Read the credential before upload when Worker settings will be published, so a missing credential leaves traffic unchanged. - When trigger sync fails after activation, keep the new version live if the previous one is an empty draft, a placeholder, or has no Void trigger snapshot. `activeVersionId` now always names the live version, and new `triggersRestored`/`restoreSkipped` fields drive a "Live now: <id>" message. - `keep_vars` no longer narrows the kept bindings to drop secret types. - Deploy log writes are synchronous so records survive process.exit. Fixes #627 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Brooooooklyn
force-pushed
the
fix/cloudflare-deploy-node-runtime
branch
from
November 6, 2026 06:54
51f9fec to
2b9ff55
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #627
What went wrong
The keyring flag in the issue plays no part: with
CLOUDFLARE_API_TOKENset, the token is returned before any keyring use.Changes
voidandcreate-voidcheck the runtime first and stop with a clear message on Node outside^24.22.0 || >=26.12.0or Bun < 1.4.0. The bin entry imports only the check, then loads the CLI, so an old Node never hits a load-timeSyntaxError.void init --githubaddsactions/setup-nodeto Bun workflows; setup-node getscheck-latest: true.cloudflare_oprecord;cloudflare_deploy_failedcarries reason, status and version ids; failures writedeploy_end. Log writes are synchronous so records surviveprocess.exit.activeVersionIdalways names the live version; newtriggersRestored/restoreSkippedfields. The message always saysLive now: <id>and gives Cloudflare's reason.keep_varsno longer drops secret types from the kept bindings (regression from 546a76e; hardening, not the reporter's cause).Recovery decision table:
Release notes (behaviour changes)
voidcommand, including--help, now exits 1 on Node 22, 24.14–24.21, 25.x or 26.0–26.11, and on Bun < 1.4.0. Existing Bun CI workflows need anactions/setup-nodestep (Node 24.22+) beforebunx void.@void/deploy-cloudflare: trigger-failure results always setactiveVersionIdand addtriggersRestoredandrestoreSkipped.Not in this PR
deploy_end; their earlier records now reach disk.Verification
create-voidon Node 18/22: message, exit 1, no folder. Node 24.22 and Bun 1.4.4:void --versionworks.vp run check: 33/33.vp run test: 780 files passed (16082 tests).🤖 Generated with Claude Code