sproutboat 0.35.0 → 0.36.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.
- package/CHANGELOG.md +26 -0
- package/README.md +3 -2
- package/SURFACE.md +1 -1
- package/package.json +8 -8
- package/src/main.ts +1 -1
- package/types/sproutboat.d.ts +10 -4
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,32 @@ maintained going forward by the `release` skill.
|
|
|
10
10
|
|
|
11
11
|
## Unreleased
|
|
12
12
|
|
|
13
|
+
## [0.36.0] - 2026-10-26
|
|
14
|
+
|
|
15
|
+
Built on `@sproutboat/runtime` 0.34.0, `@sproutboat/toolchain` 0.19.0 and
|
|
16
|
+
`@sproutboat/wire` 0.20.2.
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- **WebSockets everywhere, from compatibility date 2026-11-01.** Standalone executables and the
|
|
21
|
+
platform carry the client end of a 101 response (before the date they answer 501), and the
|
|
22
|
+
platform edge proxies the upgrade.
|
|
23
|
+
- **Outbound WebSockets, from 2026-11-01.** `new WebSocket(url, protocols)` and
|
|
24
|
+
`fetch(url, { headers: { Upgrade: "websocket" } })` (the Response's `webSocket`, then
|
|
25
|
+
`accept()`); returning that Response from a handler relays the client's socket to the upstream.
|
|
26
|
+
`ws`, `wss`, `http` and `https` URLs. `sproutboat check` and `build` accept `WebSocket(` from
|
|
27
|
+
that date and refuse it before. They run on standalone executables and sproutd; `sproutboat dev`
|
|
28
|
+
and the platform (broker transport) reject `fetch` upgrades for now.
|
|
29
|
+
- **Hibernation on sproutd, from 2026-11-01.** A Durable Object's hibernatable socket no longer
|
|
30
|
+
keeps its worker running: the worker is reaped while the socket idles, the auto-response is
|
|
31
|
+
answered without waking it, and a message or close starts a worker that constructs the object
|
|
32
|
+
again with `getWebSockets()` as it was.
|
|
33
|
+
|
|
34
|
+
### Changed
|
|
35
|
+
|
|
36
|
+
- `types/sproutboat.d.ts` and the README describe the above. The toolchain moves to 0.19.0, so
|
|
37
|
+
compiled apps get a new fingerprint and rebuild once.
|
|
38
|
+
|
|
13
39
|
## [0.35.0] - 2026-10-26
|
|
14
40
|
|
|
15
41
|
Built on `@sproutboat/runtime` 0.33.0, `@sproutboat/toolchain` 0.18.0 and
|
package/README.md
CHANGED
|
@@ -168,8 +168,9 @@ Windows, build from WSL.
|
|
|
168
168
|
## Limits
|
|
169
169
|
|
|
170
170
|
Capability profile `http-sync-v0`: one synchronous `fetch` handler, optional
|
|
171
|
-
`scheduled` / `queue` handlers. WebSockets (from compatibility date 2026-10-30
|
|
172
|
-
|
|
171
|
+
`scheduled` / `queue` handlers. WebSockets (from compatibility date 2026-10-30; standalone
|
|
172
|
+
and platform sprouts from 2026-11-01) and outbound `new WebSocket(url)` (2026-11-01) are
|
|
173
|
+
supported. Binding values are
|
|
173
174
|
text/JSON, one at a time over a 32 MiB loopback frame. Sprout uploads cap at
|
|
174
175
|
16 MiB, assets at 64 MiB / 4096 files.
|
|
175
176
|
|
package/SURFACE.md
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sproutboat",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.36.0",
|
|
4
4
|
"description": "Wrangler-shaped CLI for Sproutboat. Deploys workers to any control plane via --api-url / SPROUTBOAT_API_URL.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"cli",
|
|
@@ -64,9 +64,9 @@
|
|
|
64
64
|
"@sproutboat/artifact": "^0.3.0",
|
|
65
65
|
"@sproutboat/assets": "^0.3.0",
|
|
66
66
|
"@sproutboat/config": "^0.6.0",
|
|
67
|
-
"@sproutboat/runtime": "^0.
|
|
68
|
-
"@sproutboat/toolchain": "^0.
|
|
69
|
-
"@sproutboat/wire": "^0.20.
|
|
67
|
+
"@sproutboat/runtime": "^0.34.0",
|
|
68
|
+
"@sproutboat/toolchain": "^0.19.0",
|
|
69
|
+
"@sproutboat/wire": "^0.20.2"
|
|
70
70
|
},
|
|
71
71
|
"devDependencies": {
|
|
72
72
|
"@oxlint/plugins": "1.85.0",
|
|
@@ -78,10 +78,10 @@
|
|
|
78
78
|
"typescript": "7.0.2"
|
|
79
79
|
},
|
|
80
80
|
"optionalDependencies": {
|
|
81
|
-
"@sproutboat/cli-darwin-arm64": "0.
|
|
82
|
-
"@sproutboat/cli-darwin-x64": "0.
|
|
83
|
-
"@sproutboat/cli-linux-arm64": "0.
|
|
84
|
-
"@sproutboat/cli-linux-x64": "0.
|
|
81
|
+
"@sproutboat/cli-darwin-arm64": "0.36.0",
|
|
82
|
+
"@sproutboat/cli-darwin-x64": "0.36.0",
|
|
83
|
+
"@sproutboat/cli-linux-arm64": "0.36.0",
|
|
84
|
+
"@sproutboat/cli-linux-x64": "0.36.0"
|
|
85
85
|
},
|
|
86
86
|
"engines": {
|
|
87
87
|
"node": ">=18"
|
package/src/main.ts
CHANGED
|
@@ -235,7 +235,7 @@ async function readProject(directory = process.cwd()) {
|
|
|
235
235
|
} catch (cause) {
|
|
236
236
|
fail(cause instanceof BundleError ? cause.message : String(cause));
|
|
237
237
|
}
|
|
238
|
-
const supported = validateHttpSyncSource(bundle.code);
|
|
238
|
+
const supported = validateHttpSyncSource(bundle.code, project.config.compatibility_date);
|
|
239
239
|
if (!supported.ok) fail(supported.errors.join("\n"));
|
|
240
240
|
return { ...project, sourcePath, source, bundle };
|
|
241
241
|
}
|
package/types/sproutboat.d.ts
CHANGED
|
@@ -275,7 +275,10 @@ declare global {
|
|
|
275
275
|
/**
|
|
276
276
|
* The WebSocket hibernation API, from compatibility date 2026-10-30. Messages and
|
|
277
277
|
* closes on an accepted socket go to the class's `webSocketMessage` and
|
|
278
|
-
* `webSocketClose`. On sproutd an open socket keeps the app's worker running
|
|
278
|
+
* `webSocketClose`. On sproutd an open socket keeps the app's worker running before
|
|
279
|
+
* compatibility date 2026-11-01; from it the worker is reaped while the socket idles and
|
|
280
|
+
* the object is constructed again (with `getWebSockets()` as it was) when a message or
|
|
281
|
+
* close arrives.
|
|
279
282
|
*/
|
|
280
283
|
acceptWebSocket(ws: WebSocket, tags?: string[]): void;
|
|
281
284
|
getWebSockets(tag?: string): WebSocket[];
|
|
@@ -289,9 +292,12 @@ declare global {
|
|
|
289
292
|
/**
|
|
290
293
|
* From compatibility date 2026-10-30, as in workerd. Return the client end in a
|
|
291
294
|
* `new Response(null, { status: 101, webSocket: client })` and talk on the server end.
|
|
292
|
-
* Client sockets are carried by sproutd
|
|
293
|
-
*
|
|
294
|
-
*
|
|
295
|
+
* Client sockets are carried by sproutd, and from compatibility date 2026-11-01 by
|
|
296
|
+
* standalone and platform sprouts too (before it they answer a 101 with 501). Inbound
|
|
297
|
+
* messages are capped at 32 MiB (1009 above it). From 2026-11-01 `new WebSocket(url,
|
|
298
|
+
* protocols)` and `fetch(url, { headers: { Upgrade: "websocket" } })` connect out; the
|
|
299
|
+
* Response's `webSocket` needs `accept()`, and returning it from a handler relays the client.
|
|
300
|
+
* Outbound sockets need the embedded transport (standalone, sproutd), not `sproutboat dev`.
|
|
295
301
|
*/
|
|
296
302
|
class WebSocketPair {
|
|
297
303
|
0: WebSocket;
|