@vxil/cli 0.26.1 → 0.26.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 CHANGED
@@ -23,7 +23,8 @@ export default defineConfig({
23
23
  features: {
24
24
  auth: { enabled: true },
25
25
  cms: { enabled: true, draftPublish: true },
26
- notifications: { enabled: true, provider: 'resend', fromEmail: 'noreply@example.com' },
26
+ // provider 'resend' needs its key: `vxil secrets set RESEND_API_KEY` (or use provider: 'mock' to try it)
27
+ notifications: { enabled: true, provider: 'resend', resendApiKeyRef: 'secret:RESEND_API_KEY', fromEmail: 'noreply@example.com' },
27
28
  },
28
29
  // (b) CMS schema-as-code — collections + fields, reconciled by `vxil push`
29
30
  cms: {
@@ -334,6 +334,7 @@ export declare const AuthConfigSchema: import("@sinclair/typebox").TObject<{
334
334
  breachedPasswords: import("@sinclair/typebox").TBoolean;
335
335
  captchaSecretRef: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
336
336
  captchaOnReset: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
337
+ emailChangeStepUp: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
337
338
  allowedRedirectOrigins: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TArray<import("@sinclair/typebox").TString>>;
338
339
  inviteOnly: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
339
340
  verifyLinkEvicts: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TBoolean>;
package/dist/vxil-main.js CHANGED
@@ -4079,6 +4079,12 @@ var AuthConfigSchema = Type.Object({
4079
4079
  // Optional, NO default (absent = false): every existing manifest folds
4080
4080
  // byte-identically and reset stays ungated. Inert without captchaSecretRef.
4081
4081
  captchaOnReset: Type.Optional(Type.Boolean()),
4082
+ // AUTH-EMAIL-CHANGE-GUARD (2026-10-13): when true, POST /email/change/request
4083
+ // answers 403 step_up_required unless THIS session passed a step-up in the
4084
+ // last 300 s (the password-change mechanism: auth.sessions.elevated_at).
4085
+ // Optional, NO default (absent = false) — existing manifests fold unchanged.
4086
+ // Requires otp.enabled (cross-field rule in validateFeatureConfig).
4087
+ emailChangeStepUp: Type.Optional(Type.Boolean()),
4082
4088
  allowedRedirectOrigins: Type.Optional(Type.Array(
4083
4089
  Type.String({ minLength: 8, maxLength: 253, pattern: REDIRECT_ORIGIN_PATTERN }),
4084
4090
  { maxItems: 32 }
@@ -5536,9 +5542,9 @@ function lowerAllTriggerBindings(def, name) {
5536
5542
  return bindings;
5537
5543
  }
5538
5544
  var CONFIG_FILENAMES = ["vxil.config.ts", "vxil.config.mjs", "vxil.config.js"];
5539
- var VXIL_CONFIG_PKG_VERSION = "0.19.0";
5540
- var VXIL_SDK_PKG_VERSION = "0.26.0";
5541
- var VXIL_CLI_PKG_VERSION = "0.26.1";
5545
+ var VXIL_CONFIG_PKG_VERSION = "0.19.1";
5546
+ var VXIL_SDK_PKG_VERSION = "0.26.1";
5547
+ var VXIL_CLI_PKG_VERSION = "0.26.2";
5542
5548
  function ensureScaffoldPackageJson(cwd, opts = {}) {
5543
5549
  const file = resolve(cwd, "package.json");
5544
5550
  const wanted = {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vxil/cli",
3
- "version": "0.26.1",
3
+ "version": "0.26.2",
4
4
  "private": false,
5
5
  "description": "The vxil CLI — init, quickstart, push, gen, secrets, keys, migrate, doctor, diff, functions, payments; installs the `vxil` command (npm i -g @vxil/cli).",
6
6
  "license": "MIT",
@@ -45,8 +45,8 @@
45
45
  }
46
46
  },
47
47
  "devDependencies": {
48
- "@vxil/config": "0.19.0",
49
- "@vxil/feature-configs": "0.17.0",
48
+ "@vxil/config": "0.19.1",
49
+ "@vxil/feature-configs": "0.17.1",
50
50
  "@vxil/runtime": "0.0.1",
51
51
  "@vxil/types": "0.0.1",
52
52
  "miniflare": "^4.20260730.0"