void 0.21.0 → 0.21.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -2
- package/dist/{auth-cmd-MkBG2u1f.mjs → account-cmd-D8OC-U7y.mjs} +8 -8
- package/dist/{auth-link-Devmv96E.mjs → auth-link-BYFeMJAp.mjs} +3 -3
- package/dist/auth-router-OHZNmrb_.mjs +74 -0
- package/dist/{build-cmd-DsBGwtfs.mjs → build-cmd-Bft7EY51.mjs} +2 -2
- package/dist/{cache-BMw8eMyF.mjs → cache-CKV1Gz2w.mjs} +2 -2
- package/dist/{cancel-deploy-B3_s9NIN.mjs → cancel-deploy-BAKmkX4f.mjs} +2 -2
- package/dist/cli/cf-compat.mjs +13 -3
- package/dist/cli/cli.mjs +112 -60
- package/dist/{connect-BvC9kolB.mjs → connect-DLx1pRYk.mjs} +3 -3
- package/dist/{create-project-C9lQhRzj.mjs → create-project-BZBl_gQ0.mjs} +1 -1
- package/dist/{create-project-CI-17RVJ.mjs → create-project-JV9-6ICF.mjs} +1 -1
- package/dist/{db-R7IQgOv5.mjs → db-B98_UV4H.mjs} +8 -8
- package/dist/{delete-CghI_NXn.mjs → delete-BEEyqlwd.mjs} +2 -2
- package/dist/{deploy-H968Lo4T.mjs → deploy-Bsymb0_c.mjs} +85 -48
- package/dist/{deploy-CYPymbtG.mjs → deploy-CsjbRNyv.mjs} +1 -1
- package/dist/{domain-CITt8lC-.mjs → domain-Av2AkLQP.mjs} +2 -2
- package/dist/{email-_8VmyX7V.mjs → email-CUqa6TtH.mjs} +3 -3
- package/dist/{env-DV4r3nHz.mjs → env-D4RIGEzz.mjs} +2 -2
- package/dist/gen-B87rlalt.mjs +2 -0
- package/dist/{gen-CFOEEc-t.mjs → gen-pg-Ojg8Y.mjs} +1 -1
- package/dist/{github-cmd-jYjha2LO.mjs → github-cmd-BEK4VprE.mjs} +4 -4
- package/dist/{help-C46mnlUS.mjs → help-iQOt7WHk.mjs} +40 -9
- package/dist/help-r_vrpH_d.mjs +2 -0
- package/dist/index.mjs +5 -5
- package/dist/{init-CSXmvxKu.mjs → init-D5niUPAz.mjs} +5 -5
- package/dist/{link-DxMOALXk.mjs → link-3lGrfXzd.mjs} +3 -3
- package/dist/{list-0wQs0oYg.mjs → list-CVjGr_C6.mjs} +2 -2
- package/dist/{login-CKk5NX4d.mjs → login-BgQJzxAl.mjs} +3 -3
- package/dist/login-Bz0zEPoy.mjs +2 -0
- package/dist/{logs-hxWBSoej.mjs → logs-DbzD-QDf.mjs} +2 -2
- package/dist/{migrate-DcW8F2W8.mjs → migrate-BV8qHiCb.mjs} +1 -1
- package/dist/migrate-BXY3B3m7.mjs +2 -0
- package/dist/{operator-cmd-BEUYhaHB.mjs → operator-cmd-CR6Lxzt0.mjs} +3 -3
- package/dist/{output-urU86XeT.mjs → output-CCH48AMM.mjs} +4 -4
- package/dist/{platform-auth-config-Df6yVw-e.mjs → platform-auth-config-De7BqRJm.mjs} +2 -2
- package/dist/{platform-auth-protection-Jb0yftay.mjs → platform-auth-protection-Dcat-6zu.mjs} +2 -2
- package/dist/{platform-auth-recovery-DmRyIfW0.mjs → platform-auth-recovery-C9gsM640.mjs} +2 -2
- package/dist/{platform-cmd-C9Vt7m-d.mjs → platform-cmd-Cl9Uhzru.mjs} +1 -1
- package/dist/{platform-cmd-DRxCOTwy.mjs → platform-cmd-CudokNIg.mjs} +4 -4
- package/dist/{platform-domain-IjiXgrXJ.mjs → platform-domain-Ckpd2kXw.mjs} +2 -2
- package/dist/{platform-lifecycle-BquAaU-5.mjs → platform-lifecycle-DVzM2T4j.mjs} +8 -8
- package/dist/{platform-lifecycle-CuJIZNvA.mjs → platform-lifecycle-DlpiGcjr.mjs} +1 -1
- package/dist/{platform-management-Cgyed0WY.mjs → platform-management-44Bxd3YC.mjs} +1 -1
- package/dist/{platform-management-CCQKGsq4.mjs → platform-management-ibuS1as0.mjs} +2 -2
- package/dist/{platform-recovery-DS8ih1SW.mjs → platform-recovery-D_KmvdSk.mjs} +2 -2
- package/dist/{prepare-CaUxODOU.mjs → prepare-_T-Haxrr.mjs} +1 -1
- package/dist/{project-cmd-2lN--YAX.mjs → project-cmd-BuF9doku.mjs} +14 -14
- package/dist/{project-team-Dapn9HZn.mjs → project-team-B1Tia8vd.mjs} +3 -3
- package/dist/{project-token-C90v9SJK.mjs → project-token-Bwxjf4y6.mjs} +1 -1
- package/dist/{requests-CzX46I0i.mjs → requests-CphRF98D.mjs} +2 -2
- package/dist/{rollback-BEeyc73H.mjs → rollback-BYHJV2yD.mjs} +2 -2
- package/dist/{secret-wnTel5Yw.mjs → secret-Rt9c4Ttw.mjs} +2 -2
- package/dist/{subcommand-prompt-Gj3VzLIh.mjs → subcommand-prompt-BuGYkAkC.mjs} +1 -1
- package/package.json +7 -7
- package/skills/migrate-vite-cloudflare-to-void/SKILL.md +1 -1
- package/skills/void/SKILL.md +4 -2
- package/skills/void/docs/guide/deployment.md +6 -13
- package/skills/void/docs/guide/email.md +53 -59
- package/skills/void/docs/guide/index.md +15 -41
- package/skills/void/docs/guide/platform/administration/access.md +1 -1
- package/skills/void/docs/guide/project-collaboration.md +1 -1
- package/skills/void/docs/guide/quickstart.md +11 -78
- package/skills/void/docs/index.md +17 -17
- package/skills/void/docs/integrations/cloudflare.md +16 -23
- package/skills/void/docs/reference/cli.md +38 -17
- package/skills/void/docs/reference/config.md +7 -7
- package/dist/gen-BBiIZw6g.mjs +0 -2
- package/dist/help-CS_nAsWu.mjs +0 -2
- package/dist/login-Ch9cgWRF.mjs +0 -2
- package/dist/migrate-CLty4mZR.mjs +0 -2
|
@@ -3,9 +3,9 @@ layout: home
|
|
|
3
3
|
theme: dark
|
|
4
4
|
|
|
5
5
|
hero:
|
|
6
|
-
name: Void
|
|
7
|
-
text:
|
|
8
|
-
tagline:
|
|
6
|
+
name: Void
|
|
7
|
+
text: Full-stack apps with Vite
|
|
8
|
+
tagline: Add server routes, data, and Cloudflare resources to your app. Deploy with one command.
|
|
9
9
|
actions:
|
|
10
10
|
- theme: brand
|
|
11
11
|
text: Get Started
|
|
@@ -16,26 +16,26 @@ hero:
|
|
|
16
16
|
|
|
17
17
|
features:
|
|
18
18
|
- iconify: lucide:terminal
|
|
19
|
-
title: One Command
|
|
20
|
-
details: '`void deploy` builds your app,
|
|
19
|
+
title: Deploy with One Command
|
|
20
|
+
details: '`void deploy` builds your app, provisions resources, applies migrations, and deploys it.'
|
|
21
21
|
- iconify: lucide:layers
|
|
22
|
-
title:
|
|
23
|
-
details:
|
|
22
|
+
title: Full-Stack Features
|
|
23
|
+
details: Use a database, KV, object storage, AI, authentication, queues, and cron jobs as your app needs them.
|
|
24
24
|
- iconify: lucide:wand-sparkles
|
|
25
|
-
title:
|
|
26
|
-
details: Void detects supported resources from your
|
|
25
|
+
title: Resources from Your Code
|
|
26
|
+
details: Void detects supported resources from your imports and provisions them on deploy. Configure existing resources explicitly.
|
|
27
27
|
- iconify: lucide:shield-check
|
|
28
|
-
title:
|
|
29
|
-
details:
|
|
28
|
+
title: Deploy with Confidence
|
|
29
|
+
details: Run on Cloudflare Workers with checked migrations, versioned deployments, logs, and rollback.
|
|
30
30
|
- iconify: lucide:blocks
|
|
31
|
-
title: Your Framework
|
|
32
|
-
details: React, Vue, Svelte, Solid, Vite
|
|
31
|
+
title: Choose Your Framework
|
|
32
|
+
details: Use React, Vue, Svelte, Solid, or a supported Vite framework with SSR, SSG, ISR, and islands.
|
|
33
33
|
- iconify: lucide:bot
|
|
34
|
-
title:
|
|
35
|
-
details:
|
|
34
|
+
title: Work with Coding Agents
|
|
35
|
+
details: Void provides project instructions and skills to help coding agents build and deploy your app.
|
|
36
36
|
|
|
37
|
-
footer_heading: Deploy
|
|
38
|
-
footer_subheading:
|
|
37
|
+
footer_heading: Build with Vite. Deploy with Void.
|
|
38
|
+
footer_subheading: Server code, resources, and deployment in one workflow.
|
|
39
39
|
---
|
|
40
40
|
|
|
41
41
|
<script setup>
|
|
@@ -4,11 +4,11 @@ outline: deep
|
|
|
4
4
|
|
|
5
5
|
# Cloudflare
|
|
6
6
|
|
|
7
|
-
Void runs on Cloudflare Workers.
|
|
7
|
+
Void runs on Cloudflare Workers. Use this guide to access bindings, configure your Worker, and deploy to your own account.
|
|
8
8
|
|
|
9
9
|
## Bindings
|
|
10
10
|
|
|
11
|
-
Void
|
|
11
|
+
Void detects supported resource use in your source and provisions the corresponding bindings. How you access them depends on your framework.
|
|
12
12
|
|
|
13
13
|
### Via Hono context (`c.env`)
|
|
14
14
|
|
|
@@ -132,43 +132,36 @@ For environment variables, declare the schema in `env.ts` and put local values i
|
|
|
132
132
|
API_URL=https://api.example.com
|
|
133
133
|
```
|
|
134
134
|
|
|
135
|
-
Binding arrays such as `d1_databases`, `kv_namespaces`, and `r2_buckets` belong in the `cloudflare` field. Void adds inferred bindings that are missing by name and preserves custom bindings with real resource IDs. See [Cloudflare
|
|
135
|
+
Binding arrays such as `d1_databases`, `kv_namespaces`, and `r2_buckets` belong in the `cloudflare` field. Void adds inferred bindings that are missing by name and preserves custom bindings with real resource IDs. See [Cloudflare Configuration](#cloudflare-configuration) for details.
|
|
136
136
|
|
|
137
137
|
For non-secret plain-text defaults, you can also set `worker.vars` in `void.config.ts`. Local `.env` values override `worker.vars` during development. Production builds reject any `worker.vars` name that is declared as a server key in `env.ts`; store those values remotely with `void secret put` instead.
|
|
138
138
|
|
|
139
|
-
## Cloudflare
|
|
139
|
+
## Cloudflare Configuration
|
|
140
140
|
|
|
141
|
-
|
|
141
|
+
Set Worker options in `void.config.ts`. Void combines its `cloudflare` settings with resource IDs in `void.lock.json` for development and deployment. `void init` and `void deploy` migrate root `wrangler.jsonc` or `wrangler.json` files from existing apps.
|
|
142
142
|
|
|
143
|
-
|
|
143
|
+
Commit `void.lock.json` when Void records resource IDs or Durable Object migration history.
|
|
144
144
|
|
|
145
145
|
### Void-only mode and Vite-based frameworks
|
|
146
146
|
|
|
147
|
-
In
|
|
147
|
+
In native Void apps, TanStack Start, and React Router, Void manages the Cloudflare Vite plugin. It merges inferred bindings with your `cloudflare` settings:
|
|
148
148
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
4. The merged config is used for both `vite dev` (Miniflare) and `vite build` (output `wrangler.json` in `dist/`).
|
|
149
|
+
- An existing binding with the same name stays unchanged.
|
|
150
|
+
- Missing inferred bindings get local placeholder IDs for development. Deploy replaces them with provisioned IDs.
|
|
151
|
+
- Other `cloudflare` settings, such as routes, services, variables, and compatibility settings, pass through.
|
|
153
152
|
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
Fields that Void always sets (`main`, `triggers`, `assets`) don't need to be in your Cloudflare config -- they're added programmatically based on your project structure.
|
|
157
|
-
|
|
158
|
-
In this mode, normal inferred bindings are merged in memory. Typed state modules in `durable-objects/` are the exception: Void records their bindings and append-only `new_sqlite_classes` history in `void.lock.json`. Commit the lock.
|
|
153
|
+
Void sets `main`, `triggers`, and `assets` from your project structure. It also records typed Durable Object bindings and migration history from `durable-objects/` in `void.lock.json`.
|
|
159
154
|
|
|
160
155
|
### Adapter-based frameworks (SvelteKit, Nuxt, Astro)
|
|
161
156
|
|
|
162
|
-
|
|
157
|
+
SvelteKit, Nuxt, and Astro build Workers through their own adapters. Void provides database types, migrations, and binding sync without replacing those adapters.
|
|
163
158
|
|
|
164
|
-
|
|
159
|
+
At dev startup, Void updates the framework's generated Cloudflare config:
|
|
165
160
|
|
|
166
|
-
-
|
|
167
|
-
-
|
|
168
|
-
- Also ensures the `nodejs_als` compatibility flag is present.
|
|
169
|
-
- The framework adapter reads the generated config through its configured path.
|
|
161
|
+
- It adds missing bindings by name without changing existing ones.
|
|
162
|
+
- It copies `worker.compatibility_date`, when set, and adds the `nodejs_als` compatibility flag.
|
|
170
163
|
|
|
171
|
-
|
|
164
|
+
`void deploy --platform cloudflare` provisions production resources for inferred bindings.
|
|
172
165
|
|
|
173
166
|
### Merge precedence
|
|
174
167
|
|
|
@@ -28,7 +28,8 @@ Use this page as a command reference. If you are setting up a project for the fi
|
|
|
28
28
|
| `void secret sync .env` | Bulk upload secrets from dotenv file |
|
|
29
29
|
| `void env check [--remote]` | Validate env.ts schema |
|
|
30
30
|
| `void env types` | Regenerate .void/env.d.ts from env.ts |
|
|
31
|
-
| `void auth login` | Authenticate with
|
|
31
|
+
| `void auth login` | Authenticate with the project’s saved destination, or choose one |
|
|
32
|
+
| `void account login` | Authenticate with a Void platform |
|
|
32
33
|
| `void cloudflare login` | Authenticate with Cloudflare through Void |
|
|
33
34
|
| `void platform install` | Install a company Void platform in Cloudflare |
|
|
34
35
|
| `void connect <url>` | Connect the CLI to a Void platform |
|
|
@@ -78,7 +79,9 @@ Use `void --help` for the command list. For a specific command, try `void deploy
|
|
|
78
79
|
|
|
79
80
|
### `void migrate`
|
|
80
81
|
|
|
81
|
-
`void migrate` converts `void.json` and root `wrangler.jsonc` or `wrangler.json` into
|
|
82
|
+
`void migrate` converts legacy `void.json` and root `wrangler.jsonc` or `wrangler.json` files into `void.config.ts`. It also accepts one root `wrangler*.json(c)` file referenced by a supported framework adapter. Void saves backups in `.void/config-migration/`, records resource IDs in `void.lock.json`, and updates supported adapters to use its generated Cloudflare config.
|
|
83
|
+
|
|
84
|
+
`.void-wrangler.jsonc` is generated for Cloudflare tooling and belongs in `.gitignore`; migration adds the entry. Review and commit `void.config.ts`, `void.lock.json`, and `.gitignore`. `void init` and `void deploy` migrate legacy files automatically. If the project has conflicting or multiple Cloudflare configs, resolve them first. The project's installed `void` package must match the CLI version before Cloudflare deployment.
|
|
82
85
|
|
|
83
86
|
### `void init`
|
|
84
87
|
|
|
@@ -167,9 +170,23 @@ The deployment preference is saved in `.void/project.json`. Connecting to anothe
|
|
|
167
170
|
|
|
168
171
|
In a non-interactive shell, supply a URL or explicit target. Cloudflare requires usable credentials and an unambiguous account (`CLOUDFLARE_ACCOUNT_ID` when needed). For a Void platform, provide `VOID_TOKEN` with a matching `VOID_API_URL`, or reuse a valid origin-scoped keychain session. Use `void connect <url> --no-login` to save the verified connection without authenticating; this option is only available for Void platforms.
|
|
169
172
|
|
|
170
|
-
##
|
|
173
|
+
## Authentication
|
|
174
|
+
|
|
175
|
+
`void auth login`, `void auth status`, and `void auth logout` use the destination
|
|
176
|
+
saved for the current project by `void init` or `void connect`. If no destination
|
|
177
|
+
is saved, interactive commands let you choose Cloudflare or a connected Void
|
|
178
|
+
platform. In a non-interactive shell, pass `--platform cloudflare|void` or use
|
|
179
|
+
the explicit `void cloudflare` and `void account` commands. Choosing a destination
|
|
180
|
+
for authentication does not change the project's deploy target.
|
|
181
|
+
|
|
182
|
+
`void auth whoami`, `void auth link`, and `void auth token` remain supported for
|
|
183
|
+
existing scripts. `whoami` follows the selected destination; `link` and `token`
|
|
184
|
+
are Void account operations. Prefer `void auth status`, `void account link`, and
|
|
185
|
+
`void account token` in new scripts.
|
|
171
186
|
|
|
172
|
-
|
|
187
|
+
## Void platform account
|
|
188
|
+
|
|
189
|
+
### `void account login`
|
|
173
190
|
|
|
174
191
|
Browser login through one of the platform's currently enabled methods. The token is saved in the operating-system keychain, scoped to the platform origin. Login fails closed when no keychain is available instead of writing the token to a plaintext file; headless environments use `VOID_TOKEN` from their secret manager.
|
|
175
192
|
|
|
@@ -180,22 +197,22 @@ saved login instead, unset `VOID_TOKEN`.
|
|
|
180
197
|
|
|
181
198
|
This is optional if you already completed auth during `void connect` or the interactive `void init` flow.
|
|
182
199
|
|
|
183
|
-
### `void
|
|
200
|
+
### `void account link [connection-id]`
|
|
184
201
|
|
|
185
202
|
Link another enabled login method to your current account. Sign in again if your
|
|
186
203
|
session is no longer recent, complete the additional provider's browser login,
|
|
187
204
|
and confirm the displayed identity. With no connection ID, choose an enabled
|
|
188
205
|
method interactively. The optional dashboard exposes the same flow in **Account**.
|
|
189
206
|
|
|
190
|
-
### `void
|
|
207
|
+
### `void account logout`
|
|
191
208
|
|
|
192
209
|
Removes saved credentials.
|
|
193
210
|
|
|
194
|
-
### `void
|
|
211
|
+
### `void account whoami`
|
|
195
212
|
|
|
196
213
|
Prints your current login.
|
|
197
214
|
|
|
198
|
-
### `void
|
|
215
|
+
### `void account token`
|
|
199
216
|
|
|
200
217
|
Copies your human auth token to the system clipboard. It is intended for
|
|
201
218
|
interactive troubleshooting and remains subject to login-method revocation. Do
|
|
@@ -775,9 +792,11 @@ The installed platform needs a separate runtime token to provision resources for
|
|
|
775
792
|
|
|
776
793
|
To enable email during install or upgrade, set both `VOID_EMAIL_SENDER_DOMAIN` and `VOID_EMAIL_SHARED_ZONE_ID`. Void records the pair for later upgrades; supplying only one is an error.
|
|
777
794
|
|
|
778
|
-
`--plan`
|
|
795
|
+
`--plan` shows resource names, login methods, the callback URL, and setup links without opening credential pages or saving a draft. Cloudflare browser login can still open if needed. It prints an install command with the resolved name, account, domain, and any supplied authentication file or runtime. Run that command later to recalculate and confirm the plan. If you chose login methods interactively, choose them again during installation. For unfinished installations, the plan prints the saved `--resume` command instead.
|
|
796
|
+
|
|
797
|
+
New resources use `void-<name>-<role>` names. Existing installations keep their recorded names; an unowned name conflict stops installation. After confirmation, Void opens setup pages for missing credentials. The runtime-token link preselects required account permissions, including Workers Tail, Hyperdrive, and AI Gateway when needed; select the indicated zone for domain installs. Supplied credentials skip those pages.
|
|
779
798
|
|
|
780
|
-
|
|
799
|
+
Setup drafts save Worker names, the login callback, and partial credentials encrypted locally. Interactive installs offer unfinished installations, including interrupted provisioning, or a new one. Choosing an unfinished name asks to resume it; choosing a new one leaves earlier setup, credentials, and resources untouched. Use `--resume` for non-interactive recovery. Completed platforms cannot be resumed.
|
|
781
800
|
|
|
782
801
|
Use an empty PostgreSQL database dedicated to the installation. You can correct a failed initial connection, but after the database is claimed or Hyperdrive is provisioned, commands reject a different URL.
|
|
783
802
|
|
|
@@ -959,19 +978,21 @@ Email setup needs a browser session from `void cloudflare login`, which carries
|
|
|
959
978
|
|
|
960
979
|
Sandbox apps need Docker, [Workers Paid](https://dash.cloudflare.com/?to=/:account/workers/plans), and Containers access. API tokens need Account / Containers: Edit and Account / Cloudchamber: Edit. Void checks access before provisioning or building; apps without Sandbox skip that check.
|
|
961
980
|
|
|
962
|
-
Void provisions inferred resources, builds and validates the app, applies migrations,
|
|
981
|
+
Void provisions inferred resources, builds and validates the app, applies migrations, checks required secrets, and verifies the uploaded Worker before sending it traffic. It then updates routes and triggers. Supported frameworks can deploy static, hybrid, and SSR output. A new Worker may need one initial deployment before versioned deployment is available.
|
|
982
|
+
|
|
983
|
+
During deployment, Void shows the current phase and an animated spinner in an interactive terminal. CI and redirected output receive plain progress lines. Cloudflare CLI setup notices and successful command output are hidden; Void reports deployment errors directly.
|
|
963
984
|
|
|
964
985
|
If Cloudflare Access protects readiness URLs, supply an allowed `CF_ACCESS_CLIENT_ID` and `CF_ACCESS_CLIENT_SECRET` pair, or a short-lived local `CF_ACCESS_TOKEN`. These credentials are used only for matching HTTPS readiness requests. Versions without accessible previews can be checked at 0% traffic through the stable hostname.
|
|
965
986
|
|
|
966
987
|
Secrets and migrations are validated after the build, so a failed check may leave provisioned resources. It doesn't apply remote D1 migrations or upload the application Worker. PostgreSQL migrations are transactional; MySQL schema changes may partially apply on error.
|
|
967
988
|
|
|
968
|
-
|
|
989
|
+
Void records provisioned resource IDs in `void.lock.json`. Commit it for other machines and CI. Run the first deploy from one machine at a time; provisioning locks are local. The `--provision` flag is accepted but no longer needed.
|
|
969
990
|
|
|
970
|
-
`.env`
|
|
991
|
+
`.env` stays local. Store server keys declared in `env.ts` with `void secret put <NAME>`; Void rejects them as plaintext Worker vars. If the first deploy reports missing remote secrets, set them and retry. Custom D1 migration layouts must match the exact files, contents, and order Void validated. Direct deploy and Cloudflare commands use the top-level settings, not named environments or alternate config paths.
|
|
971
992
|
|
|
972
993
|
Existing remote secrets are preserved. Void also preserves or creates `BETTER_AUTH_SECRET` for auth apps.
|
|
973
994
|
|
|
974
|
-
**Email.**
|
|
995
|
+
**Email.** If the app uses `sendEmail()` or `email/` handlers, set `email.from` in `void.config.ts`. Void shows the Cloudflare account changes and asks before applying them. Later deploys skip the prompt once setup is ready. Without `email.from`, deploy continues without email. For CI, run `void email setup --platform cloudflare` locally and commit `void.lock.json`; pass `--require-email` to fail when email is unavailable. DNS propagation may delay a deploy after setup. See [Email on your own Cloudflare account](../guide/email.md#your-own-cloudflare-account) for setup and recovery.
|
|
975
996
|
|
|
976
997
|
See the [Cloudflare guide](../integrations/cloudflare.md#deploy-to-your-own-cloudflare-account) for the complete deployment sequence, first-deploy exceptions, secret precedence, and recovery behavior.
|
|
977
998
|
|
|
@@ -1294,12 +1315,12 @@ Deploy-on-GitHub works from **any** Void login — Google, GitHub, or other SSO.
|
|
|
1294
1315
|
void github link
|
|
1295
1316
|
```
|
|
1296
1317
|
|
|
1297
|
-
Link your current Void account to a GitHub identity. Opens your browser to authorize Void on GitHub (a localhost + PKCE handshake, the same mechanics as `void
|
|
1318
|
+
Link your current Void account to a GitHub identity. Opens your browser to authorize Void on GitHub (a localhost + PKCE handshake, the same mechanics as `void account login`), then binds that GitHub identity to the logged-in account. Requires an authenticated CLI (`void account login` first).
|
|
1298
1319
|
|
|
1299
1320
|
You normally don't need to run this directly — `void github install` runs the link automatically when your account has no GitHub identity yet. Run it on its own to link ahead of time, or to link a GitHub identity without installing the App.
|
|
1300
1321
|
|
|
1301
1322
|
::: warning Existing GitHub sign-in
|
|
1302
|
-
Void accounts cannot be merged. If the GitHub account you authorize is already linked to a different Void account, including one created through GitHub sign-in, `void github link` is refused with `This GitHub account is already linked to another Void account.` Run `void
|
|
1323
|
+
Void accounts cannot be merged. If the GitHub account you authorize is already linked to a different Void account, including one created through GitHub sign-in, `void github link` is refused with `This GitHub account is already linked to another Void account.` Run `void account logout` and sign in to that existing account, or authorize a different GitHub account. The command is also refused if your current Void account is already linked to a different GitHub identity. Re-authorizing the GitHub account attached to your current Void account is allowed and reports `GitHub account already linked.`
|
|
1303
1324
|
:::
|
|
1304
1325
|
|
|
1305
1326
|
### `void github install`
|
|
@@ -1328,7 +1349,7 @@ Join the GitHub App installations your organization already has. If a teammate i
|
|
|
1328
1349
|
|
|
1329
1350
|
In an interactive terminal you rarely need to run this yourself — `void github connect` runs the same join automatically when no active installations are linked to your account. Running `void github join` yourself matters mainly for non-interactive use (without a TTY, `void github connect` never opens a browser), or to link installations ahead of time.
|
|
1330
1351
|
|
|
1331
|
-
Requires an authenticated CLI (`void
|
|
1352
|
+
Requires an authenticated CLI (`void account login` first) and organization-installation sharing enabled on your Void instance; when it is not enabled the command fails closed with a clear message. You can only join installations your GitHub authorization actually returns — you cannot name or join one you cannot access on GitHub.
|
|
1332
1353
|
|
|
1333
1354
|
### `void github connect`
|
|
1334
1355
|
|
|
@@ -6,9 +6,9 @@ outline: deep
|
|
|
6
6
|
|
|
7
7
|
## Config File Format
|
|
8
8
|
|
|
9
|
-
Use
|
|
9
|
+
Use `void.config.ts` to configure your app. For a guided introduction, start with [What is Void?](../guide/).
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Put `void.config.ts` at the project root and import `defineConfig` from `void/config`. All fields are optional. `void init`, `void deploy`, and `void migrate` can convert older Void and Cloudflare JSON config files, saving backups under `.void/config-migration/`. Commit `void.config.ts` and `void.lock.json` when Void creates the lock; it records resource IDs and migration history.
|
|
12
12
|
|
|
13
13
|
```ts
|
|
14
14
|
// void.config.ts
|
|
@@ -217,7 +217,7 @@ Use remote D1/KV/R2 bindings during local development instead of local miniflare
|
|
|
217
217
|
|
|
218
218
|
**Requirements:**
|
|
219
219
|
|
|
220
|
-
- Must be logged in (`void
|
|
220
|
+
- Must be logged in (`void account login`)
|
|
221
221
|
- Must have a linked project (`void project link`)
|
|
222
222
|
- Only affects D1 (`DB`), KV (`KV`), and R2 (`STORAGE`) bindings
|
|
223
223
|
|
|
@@ -253,7 +253,7 @@ Enable and configure Cloudflare Sandboxes for Void apps. Importing from `void/sa
|
|
|
253
253
|
| `instanceType` | `string` | `lite` on Void deploy |
|
|
254
254
|
| `maxInstances` | `number` | `20` on Void deploy |
|
|
255
255
|
|
|
256
|
-
Sandbox
|
|
256
|
+
Sandbox is available to Void apps on the Cloudflare target and requires [Workers Paid](https://dash.cloudflare.com/?to=/:account/workers/plans) and Containers access. Void checks access before provisioning or building. For a managed platform, its runtime token needs Account / Containers: Edit and Account / Cloudchamber: Edit. Apps without Sandbox use neither Containers nor an entitlement check. The default image matches the installed `@cloudflare/sandbox` version. If `sandbox.image` points to a local Dockerfile, set `sandbox.platformImage` to the pushed image for the platform.
|
|
257
257
|
|
|
258
258
|
### `target`
|
|
259
259
|
|
|
@@ -316,7 +316,7 @@ Void writes a generated Cloudflare config for its tooling and records provisione
|
|
|
316
316
|
|
|
317
317
|
If you need to remove a value that Void previously generated, remove it from the `resolved` object in `void.lock.json`. Void refreshes the generated Cloudflare file on the next command. Put ongoing custom settings in `cloudflare` in `void.config.ts`.
|
|
318
318
|
|
|
319
|
-
`worker.limits.cpu_ms`
|
|
319
|
+
`worker.limits.cpu_ms` sets the CPU time limit per request, from 1 to 300000 ms. On a Void platform, deploy fails if the limit exceeds the account plan; lower it in `void.config.ts` before retrying. Rollback instead caps the old limit at the current plan ceiling. On direct deploys, [Cloudflare enforces the value](https://developers.cloudflare.com/workers/platform/limits/#cpu-time): Workers Free allows up to 10 ms and Workers Paid up to 300000 ms per request.
|
|
320
320
|
|
|
321
321
|
```json
|
|
322
322
|
{
|
|
@@ -493,9 +493,9 @@ Each binding accepts `true` (use default name), `false` (disable), or a string (
|
|
|
493
493
|
| `ai` | `AI` | `Ai` | `"ai": "MY_AI"` |
|
|
494
494
|
| `email` | — | — | Boolean only |
|
|
495
495
|
|
|
496
|
-
Custom
|
|
496
|
+
Custom binding names work with `void/db`, `void/kv`, and `void/storage` during development and deployment. Custom AI names also work with `void/ai` on direct Cloudflare deploys; managed Workers AI uses the platform's proxy.
|
|
497
497
|
|
|
498
|
-
`email` is a feature switch
|
|
498
|
+
`email` is a boolean feature switch. Set it to `true` to enable [email](../guide/email.md) and the `void dev` inbox without an import from `void/email`, or `false` to disable them. On a Void platform, sending uses the platform proxy. Direct Cloudflare setup records a `SEND_EMAIL` binding in `void.lock.json`; see [`email.from`](#email).
|
|
499
499
|
|
|
500
500
|
#### `inference.build`
|
|
501
501
|
|
package/dist/gen-BBiIZw6g.mjs
DELETED
package/dist/help-CS_nAsWu.mjs
DELETED
package/dist/login-Ch9cgWRF.mjs
DELETED