sproutboat 0.16.0 → 0.18.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 +51 -1
- package/SURFACE.md +2 -2
- package/package.json +8 -8
- package/src/compile.ts +12 -2
package/CHANGELOG.md
CHANGED
|
@@ -10,6 +10,53 @@ maintained going forward by the `release` skill.
|
|
|
10
10
|
|
|
11
11
|
## Unreleased
|
|
12
12
|
|
|
13
|
+
## [0.18.0] - 2026-10-20
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
|
|
17
|
+
- Porffor Alpha 18 (`@sproutboat/toolchain` 0.9, `@sproutboat/runtime` 0.18).
|
|
18
|
+
- Standalone sprouts stream `ReadableStream` response bodies chunk by chunk, so
|
|
19
|
+
Server-Sent Events and long responses work; a client that disconnects cancels
|
|
20
|
+
the stream.
|
|
21
|
+
- `HTMLRewriter` (Cloudflare's API, output matching lol-html),
|
|
22
|
+
`CompressionStream`/`DecompressionStream` (gzip, deflate, deflate-raw),
|
|
23
|
+
`structuredClone`, `Event`/`EventTarget`/`AbortController`,
|
|
24
|
+
`TextEncoderStream`/`TextDecoderStream`, and more Web Crypto (SHA-1, MD5,
|
|
25
|
+
HMAC-SHA1, `exportKey`, `generateKey`).
|
|
26
|
+
- Fetch-spec `Request`, `Response`, `Headers`, `Blob` and `FormData`: byte bodies
|
|
27
|
+
go out as bytes, body readers read `ReadableStream` bodies, and `JSON.parse`
|
|
28
|
+
applies its reviver.
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
|
|
32
|
+
- `ctx.waitUntil` work no longer delays the response.
|
|
33
|
+
- `setTimeout(fn, 0)` fires on Linux.
|
|
34
|
+
- An edited compiler patch no longer hides behind a stale Porffor cache.
|
|
35
|
+
|
|
36
|
+
### Changed
|
|
37
|
+
|
|
38
|
+
- `Response.redirect` sends the serialized URL (`https://example.com/`), and a
|
|
39
|
+
204/205/304 response with a body throws, per Fetch and workerd.
|
|
40
|
+
- Porffor's build cache keeps the 100 most recent builds.
|
|
41
|
+
|
|
42
|
+
## [0.17.0] - 2026-10-11
|
|
43
|
+
|
|
44
|
+
### Added
|
|
45
|
+
|
|
46
|
+
- Native Web Streams globals and global timeout/interval functions. HTTP bodies
|
|
47
|
+
remain buffered.
|
|
48
|
+
- A pinned Better Auth 1.7.1 integration probe covering email/password signup,
|
|
49
|
+
signed-cookie sessions, wrong-password rejection, signin and signout with
|
|
50
|
+
an explicit memory database adapter and default password hashing.
|
|
51
|
+
|
|
52
|
+
### Changed
|
|
53
|
+
|
|
54
|
+
- Upgrade to Porffor Alpha 17, fixing dynamic number conversion, Math.round
|
|
55
|
+
ties, negative zero, console precision and class-field captures.
|
|
56
|
+
- Fix lexical local-function return types and Uint8Array base64 options,
|
|
57
|
+
padding and decoding. AES/JWE stateless auth sessions remain unsupported;
|
|
58
|
+
native default password hashing currently takes about six seconds.
|
|
59
|
+
|
|
13
60
|
## [0.16.0] - 2026-10-10
|
|
14
61
|
|
|
15
62
|
### Added
|
|
@@ -859,7 +906,10 @@ its own package.
|
|
|
859
906
|
- Renamed the package to `sproutboat` (was `@sproutboat/cli`); dropped the
|
|
860
907
|
`sprout` bin alias in favour of a user-defined shell alias.
|
|
861
908
|
|
|
862
|
-
[Unreleased]: https://github.com/baronunread/sproutboat-cli/compare/v0.
|
|
909
|
+
[Unreleased]: https://github.com/baronunread/sproutboat-cli/compare/v0.18.0...HEAD
|
|
910
|
+
[0.18.0]: https://github.com/baronunread/sproutboat-cli/compare/v0.17.0...v0.18.0
|
|
911
|
+
[0.17.0]: https://github.com/baronunread/sproutboat-cli/compare/v0.16.0...v0.17.0
|
|
912
|
+
[0.16.0]: https://github.com/baronunread/sproutboat-cli/compare/v0.15.0...v0.16.0
|
|
863
913
|
[0.15.0]: https://github.com/baronunread/sproutboat-cli/compare/v0.14.0...v0.15.0
|
|
864
914
|
[0.14.0]: https://github.com/baronunread/sproutboat-cli/compare/v0.13.0...v0.14.0
|
|
865
915
|
[0.13.0]: https://github.com/baronunread/sproutboat-cli/compare/v0.12.7...v0.13.0
|
package/SURFACE.md
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
> Generated by `src/surface.test.ts` from `src/surface.ts` + the pinned
|
|
4
4
|
> toolchain constants. Do not edit by hand — run `UPDATE_SURFACE=1 bun test`.
|
|
5
5
|
|
|
6
|
-
**Package:** `sproutboat` 0.
|
|
6
|
+
**Package:** `sproutboat` 0.18.0
|
|
7
7
|
|
|
8
8
|
## Commands
|
|
9
9
|
|
|
@@ -76,7 +76,7 @@ usage: sproutboat <init [name] | check [project-dir] | types [project-dir] | dev
|
|
|
76
76
|
| | |
|
|
77
77
|
| --- | --- |
|
|
78
78
|
| Zig | `0.16.0` (`zig cc -target x86_64-linux-musl`, static) |
|
|
79
|
-
| Provenance stamp | `zig-musl/0.16.0+porffor/
|
|
79
|
+
| Provenance stamp | `zig-musl/0.16.0+porffor/deda494+uws/360c276d` |
|
|
80
80
|
| Artifact schema | `2` |
|
|
81
81
|
| Runtime | `native-fetch` |
|
|
82
82
|
| Capability profile | `http-sync-v0` |
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sproutboat",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.18.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.5.0",
|
|
67
|
-
"@sproutboat/runtime": "^0.
|
|
68
|
-
"@sproutboat/toolchain": "^0.
|
|
69
|
-
"@sproutboat/wire": "^0.
|
|
67
|
+
"@sproutboat/runtime": "^0.18.0",
|
|
68
|
+
"@sproutboat/toolchain": "^0.9.0",
|
|
69
|
+
"@sproutboat/wire": "^0.13.1"
|
|
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.18.0",
|
|
82
|
+
"@sproutboat/cli-darwin-x64": "0.18.0",
|
|
83
|
+
"@sproutboat/cli-linux-arm64": "0.18.0",
|
|
84
|
+
"@sproutboat/cli-linux-x64": "0.18.0"
|
|
85
85
|
},
|
|
86
86
|
"engines": {
|
|
87
87
|
"node": ">=18"
|
package/src/compile.ts
CHANGED
|
@@ -120,19 +120,29 @@ let porfforBuildsPruned = false;
|
|
|
120
120
|
* never removes any (one machine had 1,395 of them, 6.3 GB). Drop the ones not
|
|
121
121
|
* compiled in for a week; the only cost is a recompile. Each dir's `flags`
|
|
122
122
|
* stamp is rewritten on every compile, so its mtime is "last used".
|
|
123
|
+
*
|
|
124
|
+
* Age alone does not bound it: every dev session, temp-dir test and scratch
|
|
125
|
+
* build is a new entry path, so another machine reached 923 dirs (10 GB) in
|
|
126
|
+
* three days. Keep only the `keep` most recently used as well (~11 MB each).
|
|
123
127
|
*/
|
|
124
128
|
export async function prunePorfforBuilds(
|
|
125
129
|
root = resolve(process.env.HOME ?? homedir(), ".cache/porffor/build"),
|
|
126
130
|
now = Date.now(),
|
|
131
|
+
keep = 100,
|
|
127
132
|
): Promise<number> {
|
|
128
133
|
porfforBuildsPruned = true;
|
|
129
134
|
const cutoff = now - 7 * 24 * 60 * 60 * 1000;
|
|
130
135
|
const entries: string[] = await readdir(root).catch(() => []);
|
|
131
|
-
|
|
136
|
+
const dirs: { dir: string; used: number }[] = [];
|
|
132
137
|
for (const name of entries) {
|
|
133
138
|
const dir = resolve(root, name);
|
|
134
139
|
const used = (await stat(resolve(dir, "flags")).catch(() => null)) ?? (await stat(dir).catch(() => null));
|
|
135
|
-
if (used
|
|
140
|
+
if (used) dirs.push({ dir, used: used.mtimeMs });
|
|
141
|
+
}
|
|
142
|
+
dirs.sort((a, b) => b.used - a.used);
|
|
143
|
+
let removed = 0;
|
|
144
|
+
for (const [index, { dir, used }] of dirs.entries()) {
|
|
145
|
+
if (used < cutoff || index >= keep) {
|
|
136
146
|
await rm(dir, { recursive: true, force: true });
|
|
137
147
|
removed++;
|
|
138
148
|
}
|