sproutboat 0.24.0 → 0.25.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 CHANGED
@@ -10,6 +10,61 @@ maintained going forward by the `release` skill.
10
10
 
11
11
  ## Unreleased
12
12
 
13
+ ## [0.25.0] - 2026-10-22
14
+
15
+ Built on `@sproutboat/runtime` 0.26.0 and `@sproutboat/wire` 0.15.0.
16
+
17
+ ### Changed
18
+
19
+ - KV behaves as in Workers from compatibility date `2026-10-25`:
20
+ - `get`, `getWithMetadata`, `put`, `delete` and `list` return Promises, and
21
+ errors reject them.
22
+ - `get(key, type)` takes `"text"`, `"json"`, `"arrayBuffer"` and `"stream"`;
23
+ `get([keys])` returns a `Map`.
24
+ - `put()` takes strings, bytes and `ReadableStream`s, with `expiration`,
25
+ `expirationTtl` and `metadata`; `getWithMetadata()` returns the metadata.
26
+ - `list({ prefix, limit, cursor })` returns each key's `expiration` and
27
+ `metadata`, `list_complete` and `cursor`, and pages at up to 1,000 keys.
28
+ - Bad keys, values, expirations, metadata and limits fail with KV's own errors.
29
+
30
+ Apps with an earlier date keep the synchronous KV. Move `compatibility_date`
31
+ to `2026-10-25` to opt in.
32
+ - D1 behaves as in workerd from compatibility date `2026-10-24`:
33
+ - every call except `bind()` returns a Promise, and errors reject it;
34
+ - `meta` has D1's keys, `raw({ columnNames: true })` and `first("name")` work
35
+ as in D1, and `withSession()` returns a session;
36
+ - parameters, parameter counts and foreign keys are checked as in D1, and
37
+ errors read `D1_ERROR: <message>: SQLITE_<CODE>`;
38
+ - `BEGIN`, `COMMIT`, `ROLLBACK`, `SAVEPOINT` and `RELEASE` are refused, and
39
+ `exec()` runs line by line, all or nothing.
40
+
41
+ Apps with an earlier date keep the synchronous D1.
42
+
43
+ ### Added
44
+
45
+ - A storage quota for an app's data directory (KV, D1, R2, Durable Object
46
+ storage, queues): `SB_STORAGE_MAX_BYTES`, 10 GiB by default. Past it, writes
47
+ fail with an error that says so, and reads and deletes keep working. The size
48
+ is measured at most once a second, so the write that crosses the limit is
49
+ accepted. With LTX capture on, an over-quota D1 database refuses every write
50
+ until the app is under its quota again.
51
+
52
+ ### Fixed
53
+
54
+ - These apply at every date:
55
+ - D1 bytes are no longer lost: a `Uint8Array`, `DataView` or `ArrayBuffer`
56
+ parameter stored NULL in a standalone sprout, with every parameter after it.
57
+ - A standalone sprout's D1 `batch()` is one transaction, as in D1.
58
+ - `meta.changes` is 0 for a statement that only reads.
59
+ - A KV `list()` prefix matches exactly. It used SQL `LIKE`, so `a_` also
60
+ listed `ab`, and `a` also listed `AB`.
61
+ - The quota counts a D1 database's WAL file. While the app is over its quota,
62
+ the runtime now checkpoints and truncates the WAL before measuring again, so
63
+ `DELETE` then `VACUUM` is enough to get back under it.
64
+ - LTX capture starts when a worker's filesystem sandbox allows writes only
65
+ under its own state directory: its scratch index file now lives in the
66
+ database's replication spool, not the global temporary directory.
67
+
13
68
  ## [0.24.0] - 2026-10-22
14
69
 
15
70
  ### Changed
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.24.0
6
+ **Package:** `sproutboat` 0.25.0
7
7
 
8
8
  ## Commands
9
9
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sproutboat",
3
- "version": "0.24.0",
3
+ "version": "0.25.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.23.0",
67
+ "@sproutboat/runtime": "^0.26.0",
68
68
  "@sproutboat/toolchain": "^0.13.0",
69
- "@sproutboat/wire": "^0.14.3"
69
+ "@sproutboat/wire": "^0.15.0"
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.24.0",
82
- "@sproutboat/cli-darwin-x64": "0.24.0",
83
- "@sproutboat/cli-linux-arm64": "0.24.0",
84
- "@sproutboat/cli-linux-x64": "0.24.0"
81
+ "@sproutboat/cli-darwin-arm64": "0.25.0",
82
+ "@sproutboat/cli-darwin-x64": "0.25.0",
83
+ "@sproutboat/cli-linux-arm64": "0.25.0",
84
+ "@sproutboat/cli-linux-x64": "0.25.0"
85
85
  },
86
86
  "engines": {
87
87
  "node": ">=18"