@void/platform 0.20.2 → 0.21.0

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.
@@ -0,0 +1,2 @@
1
+ ALTER TABLE "invitations" ADD COLUMN "email_delivery_status" text;--> statement-breakpoint
2
+ ALTER TABLE "invitations" ADD CONSTRAINT "invitations_email_delivery_status_check" CHECK ("invitations"."email_delivery_status" IS NULL OR "invitations"."email_delivery_status" IN ('sent', 'failed', 'unavailable'));
@@ -0,0 +1,2 @@
1
+ ALTER TABLE "project_access_events" DROP CONSTRAINT "project_access_events_action_check";--> statement-breakpoint
2
+ ALTER TABLE "project_access_events" ADD CONSTRAINT "project_access_events_action_check" CHECK ("project_access_events"."action" IN ('invited', 'invitation_resent', 'member_added', 'accepted', 'declined', 'invitation_revoked', 'role_changed', 'member_removed', 'left'));
@@ -22,9 +22,21 @@
22
22
  "platformVersion": "0.10.14",
23
23
  "schemaDigest": "3dbf4c31d4bc97a11edca35c59b34ffad1f072df0ad7174d69e2de1057e2610b"
24
24
  },
25
+ {
26
+ "platformVersion": "0.10.14",
27
+ "schemaDigest": "680a0af38a079d371ee8caa019a2cb6351855361b28d1041017c12fdf2abac46"
28
+ },
25
29
  {
26
30
  "platformVersion": "0.20.1",
27
31
  "schemaDigest": "6de871d9524b082bba675d0d653ade45f95206895a962fea2b9be4b85d486313"
32
+ },
33
+ {
34
+ "platformVersion": "0.20.3",
35
+ "schemaDigest": "089431e230970d03afa429c102613598e88371155cb693c076002c5d632bb0b6"
36
+ },
37
+ {
38
+ "platformVersion": "0.20.3",
39
+ "schemaDigest": "408364e61c4b7d83def4030a1c11e8b9b07fc21dd3bffe6529e1b7d3759979b6"
28
40
  }
29
41
  ]
30
42
  }
@@ -295,6 +295,20 @@
295
295
  "when": 1789920262096,
296
296
  "tag": "0048_project_teams",
297
297
  "breakpoints": true
298
+ },
299
+ {
300
+ "idx": 49,
301
+ "version": "7",
302
+ "when": 1790570687921,
303
+ "tag": "0049_invitation_delivery_status",
304
+ "breakpoints": true
305
+ },
306
+ {
307
+ "idx": 50,
308
+ "version": "7",
309
+ "when": 1790587573932,
310
+ "tag": "0050_project_member_direct_grants",
311
+ "breakpoints": true
298
312
  }
299
313
  ]
300
314
  }
@@ -1 +1 @@
1
- This folder contains the built output assets for the worker "void-runtime-build-email-gateway" generated at 2026-09-22T17:31:15.068Z.
1
+ This folder contains the built output assets for the worker "void-runtime-build-email-gateway" generated at 2026-09-29T09:51:01.870Z.
@@ -2,18 +2,18 @@
2
2
  "artifacts": {
3
3
  "api": {
4
4
  "path": "api/index.js",
5
- "sha256": "3b3035f38fb7ef4196e6ae2726cd75c4e96c10b6db72dbdb132eba7bbc10b679",
6
- "size": 3400212
5
+ "sha256": "65b19319fb25caf54a0ca50de984839b2a198dcf5e4ac0bd6f91700c4241d337",
6
+ "size": 7001175
7
7
  },
8
8
  "dispatch": {
9
9
  "path": "dispatch/index.js",
10
- "sha256": "acac2f0e8667498d032db87fdf6b6bf8e605c02ad1af40866acaa685f29dfa78",
11
- "size": 119225
10
+ "sha256": "13113d9d19ea435d7c84c33e7f3f4dd65fdeb6341f34a19a017b607a345b594c",
11
+ "size": 120672
12
12
  },
13
13
  "proxy": {
14
14
  "path": "proxy/index.js",
15
- "sha256": "0a1c71eeebc1f985280f03dfdc6d1cac9060c88582cfb15527e6d343f81136bf",
16
- "size": 176753
15
+ "sha256": "09c8a3af8c8947ee1dccab23cf3265fc981867dd2faf9409a8133eb442727f2a",
16
+ "size": 177919
17
17
  },
18
18
  "tail": {
19
19
  "path": "tail/index.js",
@@ -26,11 +26,23 @@
26
26
  "size": 187859
27
27
  }
28
28
  },
29
+ "assets": {
30
+ "adminClient": {
31
+ "path": "api/assets/admin/client.js",
32
+ "sha256": "f15e5323d29b8ab1816fa6b430ba13c7be878ee185f2db7b2aac03ab42fd9c3a",
33
+ "size": 963786
34
+ },
35
+ "adminStyle": {
36
+ "path": "api/assets/admin/style.css",
37
+ "sha256": "325917942661cce03e0a96c938859a062ea19dcc498f2ae50f0dd63435b9e128",
38
+ "size": 205773
39
+ }
40
+ },
29
41
  "authenticationProtocolVersion": 1,
30
42
  "emailProtocolVersion": 1,
31
43
  "applicationRoutingVersion": 1,
32
44
  "database": {
33
- "journalSha256": "1a899c244773a55827f1243bcbc26e2331a03bf74df1d9cfdf96558fbca9a561",
45
+ "journalSha256": "0057b046a19ea1210f3087f7e538bcd5f5d7b73d4c195fac768947507345f256",
34
46
  "lineage": "void-platform-postgresql-v1",
35
47
  "migrations": [
36
48
  {
@@ -284,6 +296,18 @@
284
296
  "sha256": "64841b7f24d93c896cf7ac19d5114e76d8afd683fc5353d3e1d320bc91711064",
285
297
  "tag": "0048_project_teams",
286
298
  "timestampMillis": 1789920262096
299
+ },
300
+ {
301
+ "index": 49,
302
+ "sha256": "1cba346329026c2034b3d6fd830305396b349a83f87bdb8973f6fd22343f8d6e",
303
+ "tag": "0049_invitation_delivery_status",
304
+ "timestampMillis": 1790570687921
305
+ },
306
+ {
307
+ "index": 50,
308
+ "sha256": "4ad14938169de2b5c397a3087393b963300a006cbb7394e1f8e083b1896c6e77",
309
+ "tag": "0050_project_member_direct_grants",
310
+ "timestampMillis": 1790587573932
287
311
  }
288
312
  ],
289
313
  "protocolVersion": 1,
@@ -308,18 +332,30 @@
308
332
  "platformVersion": "0.10.14",
309
333
  "schemaDigest": "3dbf4c31d4bc97a11edca35c59b34ffad1f072df0ad7174d69e2de1057e2610b"
310
334
  },
335
+ {
336
+ "platformVersion": "0.10.14",
337
+ "schemaDigest": "680a0af38a079d371ee8caa019a2cb6351855361b28d1041017c12fdf2abac46"
338
+ },
311
339
  {
312
340
  "platformVersion": "0.20.1",
313
341
  "schemaDigest": "6de871d9524b082bba675d0d653ade45f95206895a962fea2b9be4b85d486313"
342
+ },
343
+ {
344
+ "platformVersion": "0.20.3",
345
+ "schemaDigest": "089431e230970d03afa429c102613598e88371155cb693c076002c5d632bb0b6"
346
+ },
347
+ {
348
+ "platformVersion": "0.20.3",
349
+ "schemaDigest": "408364e61c4b7d83def4030a1c11e8b9b07fc21dd3bffe6529e1b7d3759979b6"
314
350
  }
315
351
  ],
316
- "schemaDigest": "089431e230970d03afa429c102613598e88371155cb693c076002c5d632bb0b6"
352
+ "schemaDigest": "9a9ae6677b795debd4ffaa20a05f533727063c7a21366310a2fe4b17bd918edd"
317
353
  },
318
- "platformVersion": "0.20.2",
354
+ "platformVersion": "0.21.0",
319
355
  "safetyProtocols": {
320
- "sandboxDrain": 2
356
+ "sandboxDrain": 3
321
357
  },
322
358
  "schemaVersion": 2,
323
- "sourceRevision": "87f3bc69b806cc5bc6f29197b9c030c7d098db0b",
359
+ "sourceRevision": "8046d5cbbd46ac1e757c16acb07fd2988088e55c",
324
360
  "usageProtocolVersion": 2
325
361
  }
@@ -1 +1 @@
1
- This folder contains the built output assets for the worker "void-runtime-build-proxy" generated at 2026-09-22T17:31:14.191Z.
1
+ This folder contains the built output assets for the worker "void-runtime-build-proxy" generated at 2026-09-29T09:51:00.849Z.
@@ -5506,7 +5506,13 @@ app3.post("/*", async (context, next) => {
5506
5506
  const token = authHeader.slice(7);
5507
5507
  const payload = await verifyJwt(token, context.env.JWT_SECRET);
5508
5508
  if (!payload) {
5509
- return context.json({ error: "invalid or expired token" }, 401);
5509
+ return context.json(
5510
+ {
5511
+ error: "invalid or expired token",
5512
+ message: "This proxy credential is invalid or expired. Sign in to the connected platform again for remote development, or restart the build to obtain a fresh prerender token."
5513
+ },
5514
+ 401
5515
+ );
5510
5516
  }
5511
5517
  const projectId = asString(body.projectId);
5512
5518
  if (!projectId) {
@@ -5514,7 +5520,13 @@ app3.post("/*", async (context, next) => {
5514
5520
  }
5515
5521
  if (payload.aud === "prerender") {
5516
5522
  if (!payload.project || payload.project !== projectId) {
5517
- return context.json({ error: "forbidden" }, 403);
5523
+ return context.json(
5524
+ {
5525
+ error: "forbidden",
5526
+ message: "This prerender token does not match the requested project. Restart the build with a prerender token issued for the selected project."
5527
+ },
5528
+ 403
5529
+ );
5518
5530
  }
5519
5531
  const active = await verifyPrerenderAuthority(
5520
5532
  context.env.API,
@@ -5529,7 +5541,8 @@ app3.post("/*", async (context, next) => {
5529
5541
  if (!active) {
5530
5542
  return context.json(
5531
5543
  {
5532
- error: payload.credential ? "prerender token credential is no longer active" : payload.build ? "prerender token build is no longer active" : "prerender token authority is no longer active"
5544
+ error: payload.credential ? "prerender token credential is no longer active" : payload.build ? "prerender token build is no longer active" : "prerender token authority is no longer active",
5545
+ message: payload.credential ? "The deploy credential used for prerendering is no longer authorized. Ask the project owner for an active deploy credential, then restart the build." : payload.build ? "This build is no longer authorized to prerender. Start a new build to obtain a fresh prerender token." : "This prerender token is no longer authorized. Confirm your project access with a project admin or owner, then restart the build to obtain a fresh token."
5533
5546
  },
5534
5547
  403
5535
5548
  );
@@ -5546,7 +5559,13 @@ app3.post("/*", async (context, next) => {
5546
5559
  ), "checkOwner");
5547
5560
  revalidateHuman = /* @__PURE__ */ __name(async () => payload.exp > Date.now() / 1e3 && await checkOwner(), "revalidateHuman");
5548
5561
  if (!await revalidateHuman()) {
5549
- return context.json({ error: "forbidden" }, 403);
5562
+ return context.json(
5563
+ {
5564
+ error: "forbidden",
5565
+ message: "Remote access could not be authorized. Check the selected platform and project, then ask a project admin or owner to confirm your access. If your access is correct, retry shortly."
5566
+ },
5567
+ 403
5568
+ );
5550
5569
  }
5551
5570
  }
5552
5571
  context.set("projectId", projectId);