From a5da267d06a693257aed06d7b65c19ed6630f64d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Fri, 11 Sep 2026 16:45:32 +0000 Subject: [PATCH] Version Packages --- .changeset/document-symlink-surface.md | 5 ----- .changeset/expose-fs-rename.md | 6 ------ .changeset/find-exclude-globs.md | 12 ----------- .changeset/mkdir-follows-symlinks.md | 5 ----- .changeset/on-disk-computerd-store.md | 5 ----- .changeset/selectable-exec-shell.md | 5 ----- docs/README.md | 2 +- examples/container/Dockerfile | 2 +- examples/egress/Dockerfile | 2 +- examples/mcp/Dockerfile | 2 +- .../Dockerfile.workspace | 2 +- examples/think/Dockerfile | 2 +- examples/tutorial/Dockerfile | 2 +- package-lock.json | 8 ++++---- .../computer-computerd-linux-x64/README.md | 2 +- .../computer-computerd-linux-x64/package.json | 2 +- packages/computer/CHANGELOG.md | 18 +++++++++++++++++ packages/computer/package.json | 2 +- packages/computerd/CHANGELOG.md | 12 +++++++++++ packages/computerd/package.json | 2 +- packages/dofs/CHANGELOG.md | 20 +++++++++++++++++++ packages/dofs/package.json | 2 +- packages/rpc/CHANGELOG.md | 7 +++++++ packages/rpc/package.json | 2 +- 24 files changed, 74 insertions(+), 55 deletions(-) delete mode 100644 .changeset/document-symlink-surface.md delete mode 100644 .changeset/expose-fs-rename.md delete mode 100644 .changeset/find-exclude-globs.md delete mode 100644 .changeset/mkdir-follows-symlinks.md delete mode 100644 .changeset/on-disk-computerd-store.md delete mode 100644 .changeset/selectable-exec-shell.md diff --git a/.changeset/document-symlink-surface.md b/.changeset/document-symlink-surface.md deleted file mode 100644 index 12783bc3..00000000 --- a/.changeset/document-symlink-surface.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@cloudflare/computer": patch ---- - -Document the symbolic-link filesystem surface. `docs/04_filesystem_interface.md` claimed that symbolic links were internal and that `Workspace.fs` had no `symlink`, `readlink`, `lstat`, or `chmod`, none of which matched the shipped API. Those four methods now have sections of their own covering return values and the `ENOENT`, `EINVAL`, and `ELOOP` cases, the comparison with `node:fs/promises` maps them, and the specification explains that `stat` follows a trailing link while `lstat` reports the link itself. diff --git a/.changeset/expose-fs-rename.md b/.changeset/expose-fs-rename.md deleted file mode 100644 index 7b2b8a39..00000000 --- a/.changeset/expose-fs-rename.md +++ /dev/null @@ -1,6 +0,0 @@ ---- -"@cloudflare/dofs": minor -"@cloudflare/computer": minor ---- - -`Workspace.fs` gains `rename(oldPath, newPath)`, exposing the store's existing transactional move through the public surface and through `WorkspaceFilesystemStub`. An existing destination is replaced when the two ends agree on kind — a file or symbolic link for a file or symbolic link, an empty directory for a directory — and the operation reports `ENOENT`, `ENOTEMPTY`, `EISDIR`, `ENOTDIR`, `EINVAL`, and `EROFS` as documented in `docs/04_filesystem_interface.md`. The Worker shell's `mv` now calls it, so an interrupted move no longer leaves the entry at both paths or a directory half copied. diff --git a/.changeset/find-exclude-globs.md b/.changeset/find-exclude-globs.md deleted file mode 100644 index e1472639..00000000 --- a/.changeset/find-exclude-globs.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -"@cloudflare/dofs": minor -"@cloudflare/computer": minor ---- - -`find` accepts `exclude`, a list of glob patterns matched against the same directory-relative path as the inclusion glob. Exclusion is decided first, so it always wins, and an excluded directory is pruned during traversal: neither it nor anything below it is read. `limit` and `offset` apply to the matches that survive. The option travels through `WorkspaceFilesystem`, `WorkspaceFilesystemStub`, and the public find tool. - -```ts -const sources = await workspace.fs.find("/workspace", "**/*.ts", { - exclude: ["node_modules", "node_modules/**", ".git", ".git/**"], -}); -``` diff --git a/.changeset/mkdir-follows-symlinks.md b/.changeset/mkdir-follows-symlinks.md deleted file mode 100644 index 814e2c9a..00000000 --- a/.changeset/mkdir-follows-symlinks.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@cloudflare/dofs": patch ---- - -`mkdir` now follows symbolic links in intermediate path segments, so a link to a directory resolves transparently instead of failing with `ENOTDIR`. Creating `/alias/new-directory` where `/alias` points at `/real` creates `/real/new-directory`, and recursive creation places its missing ancestors under the resolved parent. A resolved parent that is a file still reports `ENOTDIR`, a dangling parent link reports `ENOENT`, and a chain longer than the shared forty-hop budget reports `ELOOP`. diff --git a/.changeset/on-disk-computerd-store.md b/.changeset/on-disk-computerd-store.md deleted file mode 100644 index 9f0717ea..00000000 --- a/.changeset/on-disk-computerd-store.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@cloudflare/dofs": minor ---- - -Let `computerd` keep its workspace on disk instead of in memory, so it survives a restart. Set `COMPUTERD_DB` to a file path — see [the `computerd` README](../packages/computerd/README.md#on-disk-store). diff --git a/.changeset/selectable-exec-shell.md b/.changeset/selectable-exec-shell.md deleted file mode 100644 index 7cedaf8d..00000000 --- a/.changeset/selectable-exec-shell.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -"@cloudflare/computerd": minor ---- - -The exec runner now takes an optional shell naming the interpreter each command runs under, and computerd reads the same value from EXEC_SHELL. Both default to /bin/sh, so existing behavior is unchanged. On a Debian-family image /bin/sh is dash, where bash-only syntax such as the PIPESTATUS array is a parse error that aborts the command rather than a missing feature, and that array is how a caller recovers the real exit status of a pipeline whose output it filters. Repointing /bin/sh in the image was the only previous workaround, which changes echo semantics for every other script in that image and is unavailable when the image is prebuilt. diff --git a/docs/README.md b/docs/README.md index acec5888..a858e427 100644 --- a/docs/README.md +++ b/docs/README.md @@ -63,7 +63,7 @@ copies the prebuilt binary out of the public GHCR image and into a thin Debian base: ```dockerfile -FROM ghcr.io/cloudflare/computer-computerd-linux-x64:0.3.0 AS computerd +FROM ghcr.io/cloudflare/computer-computerd-linux-x64:0.4.0 AS computerd FROM debian:stable-slim diff --git a/examples/container/Dockerfile b/examples/container/Dockerfile index a5431973..eb9dc5d5 100644 --- a/examples/container/Dockerfile +++ b/examples/container/Dockerfile @@ -14,7 +14,7 @@ # back to the userspace shim transparently. -FROM ghcr.io/cloudflare/computer-computerd-linux-x64:0.3.0 AS computerd +FROM ghcr.io/cloudflare/computer-computerd-linux-x64:0.4.0 AS computerd FROM debian:stable-slim diff --git a/examples/egress/Dockerfile b/examples/egress/Dockerfile index 47b8f7f5..4f664672 100644 --- a/examples/egress/Dockerfile +++ b/examples/egress/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/cloudflare/computer-computerd-linux-x64:0.3.0 AS computerd +FROM ghcr.io/cloudflare/computer-computerd-linux-x64:0.4.0 AS computerd FROM debian:bookworm-slim diff --git a/examples/mcp/Dockerfile b/examples/mcp/Dockerfile index 48a95717..a4c22454 100644 --- a/examples/mcp/Dockerfile +++ b/examples/mcp/Dockerfile @@ -1,4 +1,4 @@ -FROM ghcr.io/cloudflare/computer-computerd-linux-x64:0.3.0 AS computerd +FROM ghcr.io/cloudflare/computer-computerd-linux-x64:0.4.0 AS computerd FROM node:22-bookworm-slim diff --git a/examples/think-compare-runtimes/Dockerfile.workspace b/examples/think-compare-runtimes/Dockerfile.workspace index 78ef135e..e2e8a4f0 100644 --- a/examples/think-compare-runtimes/Dockerfile.workspace +++ b/examples/think-compare-runtimes/Dockerfile.workspace @@ -12,7 +12,7 @@ # that do not expose /dev/fuse. -FROM ghcr.io/cloudflare/computer-computerd-linux-x64:0.3.0 AS computerd +FROM ghcr.io/cloudflare/computer-computerd-linux-x64:0.4.0 AS computerd FROM --platform=linux/amd64 node:22-trixie-slim diff --git a/examples/think/Dockerfile b/examples/think/Dockerfile index 065dca68..543ba358 100644 --- a/examples/think/Dockerfile +++ b/examples/think/Dockerfile @@ -9,7 +9,7 @@ # surface reads and writes. -FROM ghcr.io/cloudflare/computer-computerd-linux-x64:0.3.0 AS computerd +FROM ghcr.io/cloudflare/computer-computerd-linux-x64:0.4.0 AS computerd FROM debian:stable-slim diff --git a/examples/tutorial/Dockerfile b/examples/tutorial/Dockerfile index ad990296..fec0babf 100644 --- a/examples/tutorial/Dockerfile +++ b/examples/tutorial/Dockerfile @@ -8,7 +8,7 @@ # through the Workspace is on disk for pandoc to read, and the PDF # pandoc writes syncs back to the durable object. -FROM ghcr.io/cloudflare/computer-computerd-linux-x64:0.3.0 AS computerd +FROM ghcr.io/cloudflare/computer-computerd-linux-x64:0.4.0 AS computerd FROM debian:stable-slim diff --git a/package-lock.json b/package-lock.json index 96f2ef39..4a1ddd9f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12908,7 +12908,7 @@ }, "packages/computer": { "name": "@cloudflare/computer", - "version": "0.3.0", + "version": "0.4.0", "license": "MIT", "dependencies": { "acorn": "^8.17.0", @@ -12969,7 +12969,7 @@ }, "packages/computerd": { "name": "@cloudflare/computerd", - "version": "0.3.0", + "version": "0.4.0", "license": "MIT", "dependencies": { "@cloudflare/computer-rpc": "*", @@ -12989,7 +12989,7 @@ }, "packages/dofs": { "name": "@cloudflare/dofs", - "version": "0.3.0", + "version": "0.4.0", "devDependencies": { "@cloudflare/vitest-pool-workers": "^0.22.0", "@cloudflare/workers-types": "^4.20260616.1", @@ -13007,7 +13007,7 @@ }, "packages/rpc": { "name": "@cloudflare/computer-rpc", - "version": "0.3.0", + "version": "0.4.0", "dependencies": { "@cloudflare/dofs": "*", "capnweb": "^0.10.0" diff --git a/packages/computer-computerd-linux-x64/README.md b/packages/computer-computerd-linux-x64/README.md index 95581ec8..7dd2b2d5 100644 --- a/packages/computer-computerd-linux-x64/README.md +++ b/packages/computer-computerd-linux-x64/README.md @@ -20,7 +20,7 @@ builds the binary, stages it into `bin/computerd`, and publishes the image instead: ```dockerfile -FROM ghcr.io/cloudflare/computer-computerd-linux-x64:0.3.0 AS computerd +FROM ghcr.io/cloudflare/computer-computerd-linux-x64:0.4.0 AS computerd FROM debian:stable-slim RUN apt-get update \ && apt-get install -y --no-install-recommends \ diff --git a/packages/computer-computerd-linux-x64/package.json b/packages/computer-computerd-linux-x64/package.json index 6f834dc5..fc073841 100644 --- a/packages/computer-computerd-linux-x64/package.json +++ b/packages/computer-computerd-linux-x64/package.json @@ -1,6 +1,6 @@ { "name": "@cloudflare/computer-computerd-linux-x64", - "version": "0.3.0", + "version": "0.4.0", "description": "Docker image context for the prebuilt computerd linux-x64 binary.", "license": "MIT", "private": true diff --git a/packages/computer/CHANGELOG.md b/packages/computer/CHANGELOG.md index 79c6a406..1d0fee81 100644 --- a/packages/computer/CHANGELOG.md +++ b/packages/computer/CHANGELOG.md @@ -1,5 +1,23 @@ # @cloudflare/computer +## 0.4.0 + +### Minor Changes + +- [#124](https://github.com/cloudflare/computer/pull/124) `Workspace.fs` gains `rename(oldPath, newPath)`, exposing the store's existing transactional move through the public surface and through `WorkspaceFilesystemStub`. An existing destination is replaced when the two ends agree on kind — a file or symbolic link for a file or symbolic link, an empty directory for a directory — and the operation reports `ENOENT`, `ENOTEMPTY`, `EISDIR`, `ENOTDIR`, `EINVAL`, and `EROFS` as documented in `docs/04_filesystem_interface.md`. The Worker shell's `mv` now calls it, so an interrupted move no longer leaves the entry at both paths or a directory half copied. ([`e6a92c5`](https://github.com/cloudflare/computer/commit/e6a92c50cb53997bd601bdce0563b96276d0f8fc)) - Thanks [@aron-cf](https://github.com/aron-cf) + +- [#124](https://github.com/cloudflare/computer/pull/124) `find` accepts `exclude`, a list of glob patterns matched against the same directory-relative path as the inclusion glob. Exclusion is decided first, so it always wins, and an excluded directory is pruned during traversal: neither it nor anything below it is read. `limit` and `offset` apply to the matches that survive. The option travels through `WorkspaceFilesystem`, `WorkspaceFilesystemStub`, and the public find tool. ([`e6a92c5`](https://github.com/cloudflare/computer/commit/e6a92c50cb53997bd601bdce0563b96276d0f8fc)) - Thanks [@aron-cf](https://github.com/aron-cf) + + ```ts + const sources = await workspace.fs.find("/workspace", "**/*.ts", { + exclude: ["node_modules", "node_modules/**", ".git", ".git/**"], + }); + ``` + +### Patch Changes + +- [#124](https://github.com/cloudflare/computer/pull/124) Document the symbolic-link filesystem surface. `docs/04_filesystem_interface.md` claimed that symbolic links were internal and that `Workspace.fs` had no `symlink`, `readlink`, `lstat`, or `chmod`, none of which matched the shipped API. Those four methods now have sections of their own covering return values and the `ENOENT`, `EINVAL`, and `ELOOP` cases, the comparison with `node:fs/promises` maps them, and the specification explains that `stat` follows a trailing link while `lstat` reports the link itself. ([`e6a92c5`](https://github.com/cloudflare/computer/commit/e6a92c50cb53997bd601bdce0563b96276d0f8fc)) - Thanks [@aron-cf](https://github.com/aron-cf) + ## 0.3.0 ### Minor Changes diff --git a/packages/computer/package.json b/packages/computer/package.json index 8240061c..581a533f 100644 --- a/packages/computer/package.json +++ b/packages/computer/package.json @@ -1,6 +1,6 @@ { "name": "@cloudflare/computer", - "version": "0.3.0", + "version": "0.4.0", "description": "Cloudflare Computer — a SQLite-backed virtual filesystem with sync to a container-side daemon (computerd).", "license": "MIT", "repository": { diff --git a/packages/computerd/CHANGELOG.md b/packages/computerd/CHANGELOG.md index 6c7b71d6..0bb367a9 100644 --- a/packages/computerd/CHANGELOG.md +++ b/packages/computerd/CHANGELOG.md @@ -1,5 +1,17 @@ # @cloudflare/computerd +## 0.4.0 + +### Minor Changes + +- [#139](https://github.com/cloudflare/computer/pull/139) The exec runner now takes an optional shell naming the interpreter each command runs under, and computerd reads the same value from EXEC_SHELL. Both default to /bin/sh, so existing behavior is unchanged. On a Debian-family image /bin/sh is dash, where bash-only syntax such as the PIPESTATUS array is a parse error that aborts the command rather than a missing feature, and that array is how a caller recovers the real exit status of a pipeline whose output it filters. Repointing /bin/sh in the image was the only previous workaround, which changes echo semantics for every other script in that image and is unavailable when the image is prebuilt. ([`5f310b6`](https://github.com/cloudflare/computer/commit/5f310b69421d334dfd3791216ca0a6a704a36efa)) - Thanks [@aron-cf](https://github.com/aron-cf) + +### Patch Changes + +- Updated dependencies [[`e6a92c5`](https://github.com/cloudflare/computer/commit/e6a92c50cb53997bd601bdce0563b96276d0f8fc), [`e6a92c5`](https://github.com/cloudflare/computer/commit/e6a92c50cb53997bd601bdce0563b96276d0f8fc), [`e6a92c5`](https://github.com/cloudflare/computer/commit/e6a92c50cb53997bd601bdce0563b96276d0f8fc), [`ef8cd11`](https://github.com/cloudflare/computer/commit/ef8cd11040b222875f1d04e7cfd6553068e07bb7)]: + - @cloudflare/dofs@0.4.0 + - @cloudflare/computer-rpc@0.4.0 + ## 0.3.0 ### Patch Changes diff --git a/packages/computerd/package.json b/packages/computerd/package.json index 60343fb1..a18ec5f0 100644 --- a/packages/computerd/package.json +++ b/packages/computerd/package.json @@ -1,6 +1,6 @@ { "name": "@cloudflare/computerd", - "version": "0.3.0", + "version": "0.4.0", "description": "Computer daemon CLI and FUSE mount. Source-only; the distributable lives at @cloudflare/computer-computerd-linux-x64.", "license": "MIT", "private": true, diff --git a/packages/dofs/CHANGELOG.md b/packages/dofs/CHANGELOG.md index 021b3977..ffc722aa 100644 --- a/packages/dofs/CHANGELOG.md +++ b/packages/dofs/CHANGELOG.md @@ -1,5 +1,25 @@ # @cloudflare/dofs +## 0.4.0 + +### Minor Changes + +- [#124](https://github.com/cloudflare/computer/pull/124) `Workspace.fs` gains `rename(oldPath, newPath)`, exposing the store's existing transactional move through the public surface and through `WorkspaceFilesystemStub`. An existing destination is replaced when the two ends agree on kind — a file or symbolic link for a file or symbolic link, an empty directory for a directory — and the operation reports `ENOENT`, `ENOTEMPTY`, `EISDIR`, `ENOTDIR`, `EINVAL`, and `EROFS` as documented in `docs/04_filesystem_interface.md`. The Worker shell's `mv` now calls it, so an interrupted move no longer leaves the entry at both paths or a directory half copied. ([`e6a92c5`](https://github.com/cloudflare/computer/commit/e6a92c50cb53997bd601bdce0563b96276d0f8fc)) - Thanks [@aron-cf](https://github.com/aron-cf) + +- [#124](https://github.com/cloudflare/computer/pull/124) `find` accepts `exclude`, a list of glob patterns matched against the same directory-relative path as the inclusion glob. Exclusion is decided first, so it always wins, and an excluded directory is pruned during traversal: neither it nor anything below it is read. `limit` and `offset` apply to the matches that survive. The option travels through `WorkspaceFilesystem`, `WorkspaceFilesystemStub`, and the public find tool. ([`e6a92c5`](https://github.com/cloudflare/computer/commit/e6a92c50cb53997bd601bdce0563b96276d0f8fc)) - Thanks [@aron-cf](https://github.com/aron-cf) + + ```ts + const sources = await workspace.fs.find("/workspace", "**/*.ts", { + exclude: ["node_modules", "node_modules/**", ".git", ".git/**"], + }); + ``` + +- [#123](https://github.com/cloudflare/computer/pull/123) Let `computerd` keep its workspace on disk instead of in memory, so it survives a restart. Set `COMPUTERD_DB` to a file path — see [the `computerd` README](../packages/computerd/README.md#on-disk-store). ([`ef8cd11`](https://github.com/cloudflare/computer/commit/ef8cd11040b222875f1d04e7cfd6553068e07bb7)) - Thanks [@aron-cf](https://github.com/aron-cf) + +### Patch Changes + +- [#124](https://github.com/cloudflare/computer/pull/124) `mkdir` now follows symbolic links in intermediate path segments, so a link to a directory resolves transparently instead of failing with `ENOTDIR`. Creating `/alias/new-directory` where `/alias` points at `/real` creates `/real/new-directory`, and recursive creation places its missing ancestors under the resolved parent. A resolved parent that is a file still reports `ENOTDIR`, a dangling parent link reports `ENOENT`, and a chain longer than the shared forty-hop budget reports `ELOOP`. ([`e6a92c5`](https://github.com/cloudflare/computer/commit/e6a92c50cb53997bd601bdce0563b96276d0f8fc)) - Thanks [@aron-cf](https://github.com/aron-cf) + ## 0.3.0 ## 0.2.1 diff --git a/packages/dofs/package.json b/packages/dofs/package.json index ecbd8295..0af4788f 100644 --- a/packages/dofs/package.json +++ b/packages/dofs/package.json @@ -1,6 +1,6 @@ { "name": "@cloudflare/dofs", - "version": "0.3.0", + "version": "0.4.0", "private": true, "type": "module", "exports": { diff --git a/packages/rpc/CHANGELOG.md b/packages/rpc/CHANGELOG.md index 2fa6913c..792fabb3 100644 --- a/packages/rpc/CHANGELOG.md +++ b/packages/rpc/CHANGELOG.md @@ -1,5 +1,12 @@ # @cloudflare/computer-rpc +## 0.4.0 + +### Patch Changes + +- Updated dependencies [[`e6a92c5`](https://github.com/cloudflare/computer/commit/e6a92c50cb53997bd601bdce0563b96276d0f8fc), [`e6a92c5`](https://github.com/cloudflare/computer/commit/e6a92c50cb53997bd601bdce0563b96276d0f8fc), [`e6a92c5`](https://github.com/cloudflare/computer/commit/e6a92c50cb53997bd601bdce0563b96276d0f8fc), [`ef8cd11`](https://github.com/cloudflare/computer/commit/ef8cd11040b222875f1d04e7cfd6553068e07bb7)]: + - @cloudflare/dofs@0.4.0 + ## 0.3.0 ### Patch Changes diff --git a/packages/rpc/package.json b/packages/rpc/package.json index 2bebc2e8..fd79afa2 100644 --- a/packages/rpc/package.json +++ b/packages/rpc/package.json @@ -1,6 +1,6 @@ { "name": "@cloudflare/computer-rpc", - "version": "0.3.0", + "version": "0.4.0", "private": true, "type": "module", "exports": {