Skip to content

fix: finish or correct Void features that were advertised but unfinished - #433

Merged
Brooooooklyn merged 1 commit into
mainfrom
fix/unfinished-features
Oct 15, 2026
Merged

Brooooooklyn merged 1 commit into
mainfrom
fix/unfinished-features

Conversation

@Brooooooklyn

@Brooooooklyn Brooooooklyn commented Oct 15, 2026 •

Copy link
Copy Markdown
Member

Problem

The pre-release review found 46 places where Void promised something that the code did not do. The promise was in the docs, --help, a public type, or an error message.

promise                                   what happened
───────────────────────────────────────   ──────────────────────────────────────────────
copy button on Markdown code blocks   ──▶ button is drawn, nothing copies
auth.providers: ['cognito']           ──▶ every request fails (domain/region missing)
void db execute --remote --file       ──▶ "not yet supported ... pipe through stdin" (no stdin path)
                                          and the SQL goes to the first D1 row, not the configured binding
void gen model "… and DB types"       ──▶ no .void/db.d.ts until the next dev/prepare (tsc TS6053)
remote R2 get/put/list options        ──▶ silently ignored, metadata faked
void deploy --provision               ──▶ works, recommended in the D1 guide, missing from help and reference
platform uninstall --keep-zone        ──▶ does nothing; hidden --delete-zone only throws
useIslandForm "infers the action URL" ──▶ every adapter needs post(url)
connectEventStream({ events })        ──▶ option never read
… and ~30 more doc, help and type promises

What this PR changes

Each item gets one of three treatments:

build it        ── copy button · cognito settings · hosted D1 --file on the configured binding
                   · gen model writes db.d.ts · remote R2 metadata and list options
make it true    ── help · CLI reference · API reference · guides · error messages · interactive hints
deprecate       ── public options and exports that never worked; kept for 1.x, marked @deprecated

Remote R2 in dev now refuses what it cannot do, instead of returning wrong data:

get(key, { range: {offset, length} })         ──▶ throws: not supported in remote mode
get(key, { range: request.headers, ... })     ──▶ whole object, as before (browser reloads, media)
put(key, body, { customMetadata })            ──▶ stored with metadata on a current deployment
                                                  throws "stored without …" on an older one or the REST fallback
list({ delimiter, startAfter, include })      ──▶ real answer, or a clear error with retry/deploy advice

The Astro dev trigger fix is in its own PR, #434, because it changes the dev middleware writer.

Decisions

Topic Decision
Semver (Void 1.x) No public export, option, type, or documented flag is removed. Two hidden CLI flags that could only fail are removed: platform uninstall --delete-zone and email domain add --subdomain.
Layout paths (layout: './Shell.vue') Build warning; default layouts are used, as before. A hard error would break existing builds.
sendInDev Deprecated. Behavior unchanged.
DeployTargetAdapter.capabilities Deprecated, still required, so code that reads it still compiles.
Copy button script One small inline script on pages with code blocks. A CSP without 'unsafe-inline' blocks it, and the button stays inert as before.
Hosted D1 --file Sent as one request, the same as inline SQL. Real D1 splits the statements on the server for both the binding and REST paths; a failing statement rolls back the whole request.
void.json compatibility pin Unchanged. The "Found both void.config.ts and void.json" error now says how to fix it.

Behavior changes to note in the release

  • Markdown code blocks: the copy button copies the code (removed diff lines are left out). Pages with code blocks have a small inline script.
  • cognito: set AUTH_COGNITO_DOMAIN, AUTH_COGNITO_REGION, AUTH_COGNITO_USER_POOL_ID, or the same settings in auth.ts.
  • Remote R2: put() with metadata throws when the project deployment is older than this Void version (the object is stored without the metadata). get() with an object-form range or onlyIf throws.
  • ai.provider().fetch() on the platform proxy sends JSON bodies as written, the same as the direct path. Before, file-shaped values were rewritten into an internal marker.
  • void email domain add --subdomain fails at once as an unknown option.
  • A page layout path logs a build warning.
  • Deprecated: shiki.langs, FrontmatterContext, setFrontmatter(), sendInDev, StaticEdgeConfig.assetConfig, the @void/isr legacy key helpers, DeployTargetCapabilities, DatabaseProvisionResult.projectId, ConnectEventStreamOptions.events, void/remote, ImageFileInput, platform uninstall --keep-zone.

Known limits

  • void db status and void db migrate --remote on the Void platform still use the first D1 resource. This is unchanged from main.
  • A multi-line CREATE TRIGGER … BEGIN … END in a multi-statement SQL string can fail on real D1 (workers-sdk#15690). Inline --command already had this limit.
  • A Markdown page under a strict CSP keeps an inert copy button.

Testing

Check Result
New and changed tests Each fails with its fix reverted
Markdown copy button Browser test in dev and production: clipboard text, diff lines skipped
Remote R2 Unit tests through the binding handler; Miniflare runs for a new client against the old handler and an old client against the new handler
Hosted D1 --file Live on real D1, through REST /query and through a deployed Worker binding (prepare(sql).bind().all() / .run()): every statement runs; a failing statement rolls back the whole request
vp run build:all, vp run check, vp lint, vp fmt --check pass
vp run test 583 files pass

🤖 Generated with Claude Code

https://claude.ai/code/session_0123r5HnanmW2VUrZ7VWDufH

Docs, help, types and error messages promised behavior that the code did
not have. Each case now either works, or the promise matches the code:

- Markdown code-block copy buttons copy the code.
- The cognito auth provider reads its domain, region and user pool ID.
- Hosted `void db execute --remote --file` runs the file on the
  configured D1 binding.
- `void gen model` writes the database types it promises.
- Remote R2 keeps object metadata and list options, and refuses what it
  cannot honor instead of returning wrong data.
- Help, the CLI and API references, and guides describe what Void does.
- Public options and exports that never worked are deprecated, not
  removed, because Void is on 1.x.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0123r5HnanmW2VUrZ7VWDufH
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 15, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-15T05:26:34.278242Z 6fead32 PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@cloudflare-workers-and-pages

Copy link
Copy Markdown

🚀 Deploying Preview to Cloudflare 🚀

Preview URL: https://fix-unfinished-features-void-cloud.voidzero-docs.workers.dev (commit 6fead32)

This URL reflects your latest Preview deployment

Preview Deployments by commit

Status Deployment URL Commit Updated (UTC) See this deployment's details
  • Build: Success ✅
  • Deployment: Success ✅

View logs ↗
https://90081bd5-void-cloud.voidzero-docs.workers.dev 6fead32 2026-10-15T05:22:07.895Z Visit the dashboard ↗

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 6fead32656

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread packages/void/src/cli/db.ts
@Brooooooklyn
Brooooooklyn merged commit 33e95b6 into main Oct 15, 2026
34 checks passed
@Brooooooklyn
Brooooooklyn deleted the fix/unfinished-features branch October 15, 2026 05:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant