v1.21.0
Config lived in six hand-maintained lists that drifted apart: secrets.example.env, .dev.vars.example, wrangler.example.toml, scripts/setup.sh, the AGENTS-OPERATE §5 table, and release-manifest.json. This release makes one registry the source of truth for all 53 entries and adds a bulk path for setting secrets. Closes #42.
Highlights
- Bulk secrets.
cp secrets.example.env secrets.env, uncomment what you have, thennpx wrangler secret bulk secrets.env && rm secrets.env— one call instead of ~24 interactivewrangler secret putprompts.secrets*.envis gitignored. Leave anything you don't have commented: wrangler treats an uncommented empty value as a real, empty secret and will overwrite a live key with nothing. scripts/setup.shnow offers bulk or one-prompt-per-secret, and covers all 23 secrets. It previously prompted for 16 —CF_API_TOKEN,GITHUB_TOKEN,SPAM_FORM_TS_SECRETand theAKISMET_*pair were never offered. The six ID+secret pairs (Turnstile and the five OAuth providers) collapse behind one prompt each; Telegram's two secrets prompt separately, since the bot token alone enables outbound notifications.- One registry.
scripts/config-registry.tsholds all 53 entries (23 secrets, 30 vars).secrets.example.env,.dev.vars.example,wrangler.example.toml, setup.sh's prompt lists and the AGENTS-OPERATE §5 table are generated bynpm run config:build;npm run config:checkfails CI on drift. - New optional secret:
GITHUB_TOKEN— a read-onlypublic_repotoken that raises the 60 req/hr GitHub API cap used by update checks. Nothing breaks without it.
Fixes
npm run upgradenow reports optional secrets added since your installed release. They were previously invisible, passing neither the required-only secret diff nor the vars-only "new settings" filter.- "New settings" is keyed on
addedInrather than a manifest set-difference, so upgrading from an older install no longer lists settings you already have. wrangler.example.toml's[secrets] required = [...]block ships commented out, with the reason inline: declaring it makeswrangler devbind only the listed names out of.dev.varsand silently drop every other secret, so local OAuth, Resend, Akismet and Telegram read as unconfigured..dev.vars.exampleagain points at Cloudflare's always-pass Turnstile test keys for local dev.GITHUB_TOKENis declared in theBindingstype.
Notes
- No D1 migrations and no new required secrets — upgrading is redeploy-only. Run
npm run upgradeto see the plan for your install. - The Node.js 24 floor from 1.20.0 still appears in the upgrade plan's breaking-changes section. If you are already on 1.20.0 or later there is nothing to do; the entry is not yet version-scoped.