Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
f36d7e5
Respect fit/gravity/background on the Images binding local transform …
allocsys Jul 16, 2026
7327a79
Add regression tests for Images binding fit/gravity/background
allocsys Jul 16, 2026
bd347dd
Add changeset for Images binding fit/gravity/background fix
allocsys Jul 16, 2026
1d5327d
[devprod] Migrate metrics to WShim internal binding (#14704)
ascorbic Jul 16, 2026
cb6c3f9
feat(wrangler): access do storage with test harness (#14706)
edmundhung Jul 16, 2026
e93d27e
[local-explorer-ui] Fix worker selector scrolling (#14668)
DebadityaHait Jul 16, 2026
b38f494
chore: consolidate most packages on zod 4.4.3 in pnpm catalog (#14707)
emily-shen Jul 16, 2026
ddced01
[create-cloudflare] Allow fresh framework releases in E2E tests (#14722)
ascorbic Jul 16, 2026
4c1309e
[wrangler] Use default readiness timeout in local dev E2Es (#14729)
ascorbic Jul 16, 2026
c79504f
fix(wrangler): support containers in test harness (#14725)
edmundhung Jul 16, 2026
028ce1f
[wrangler] Wait for workers.dev propagation in E2Es (#14728)
ascorbic Jul 16, 2026
24731b5
[wrangler] Wait for workerd cleanup in port conflict E2E (#14730)
ascorbic Jul 17, 2026
e6fbc4e
[miniflare] Avoid email cleanup race (#14723)
ascorbic Jul 17, 2026
3f3afbb
[miniflare] Prevent Browser Rendering teardown hangs (#14727)
ascorbic Jul 17, 2026
82918ad
Version Packages (#14699)
workers-devprod Jul 17, 2026
5eac99e
[vitest-pool-workers] Support streaming tails to the main worker (#14…
Ankcorn Jul 17, 2026
d1d6945
[wrangler] GA automatic resource provisioning (#13352)
penalosa Jul 17, 2026
f03b108
[wrangler] Apply Email Routing addresses during deploy (#14471)
DiogoSantoss Jul 17, 2026
ec2600e
Enable `@typescript-eslint/no-deprecated` linting rule for `vite-plug…
dario-piotrowicz Jul 17, 2026
a330170
[create-cloudflare] Preserve existing Nuxt `modules` when adding Clou…
petebacondarwin Jul 17, 2026
6687a91
docs: React Router v7 -> v8 in vite plugin README (#14757)
nickbabcock Jul 20, 2026
34430b3
[Workflows] Add sensitive option to Workflows steps (#14742)
pombosilva Jul 20, 2026
a0a091b
[wrangler] Drop "Experimental:" prefix from provisioning header (#14744)
penalosa Jul 20, 2026
947ad34
[C3] Bump @angular/create from 22.0.6 to 22.0.7 in /packages/create-c…
dependabot[bot] Jul 20, 2026
de34449
[vitest-pool-workers] Fix module fallback failure on non-ASCII worksp…
allocsys Jul 20, 2026
4e92e32
[wrangler] Support Artifacts Queue event sources (#14721)
dmmulroy Jul 20, 2026
f75ae5d
fix(wrangler): derive `nodejsCompatMode` from the effective compatibi…
martijnwalraven Jul 20, 2026
c82d96b
WC-5290 Use PATCH APIs for 'wrangler versions secret' commands (#14448)
GregBrimble Jul 20, 2026
9ed6dc2
[C3] Bump sv from 0.16.2 to 0.16.3 in /packages/create-cloudflare/src…
dependabot[bot] Jul 20, 2026
deae171
Add `exclude_packages` option to `dependencies_instrumentation` confi…
dario-piotrowicz Jul 20, 2026
a7b9e65
[miniflare] Route storage/remote bindings through shared services via…
penalosa Jul 20, 2026
a0c8bb1
feat(wrangler): surface Local Explorer API to headless agents (#14688)
NuroDev Jul 20, 2026
a50f73a
Support settings export in new config (#14724)
jamesopstad Jul 20, 2026
538e867
[vitest-pool-workers] Treat `webSocket*` as optional Durable Object h…
gianghungtien Jul 20, 2026
a6c214f
fix(workers-utils): reject null observability config instead of crash…
samarth70 Jul 20, 2026
3733de3
[workflows-shared] Prevent Windows CI worker exits in sensitive-outpu…
NuroDev Jul 21, 2026
2b390d7
Add nub to recognised package managers (#14595)
colinhacks Jul 21, 2026
d83a476
[wrangler] Remove stray characters from Sites asset-key error message…
chinesepowered Jul 21, 2026
af6e91d
skip agent memory e2e binding test (#14782)
emily-shen Jul 21, 2026
4815711
[miniflare] Report the Worker's error for HEAD requests (#14766)
gianghungtien Jul 21, 2026
0df3d43
[wrangler] Extract remote bindings into a package (#14720)
penalosa Jul 21, 2026
5cee1d4
[C3] Bump create-docusaurus from 3.10.1 to 3.10.2 in /packages/create…
dependabot[bot] Jul 21, 2026
42af66d
Bump the workerd-and-workers-types group across 1 directory with 2 up…
dependabot[bot] Jul 21, 2026
9e61971
unskip agent memory remote bindings test (#14786)
emily-shen Jul 21, 2026
03ce063
bump create next app (#14790)
emily-shen Jul 21, 2026
88f42e7
Version Packages (#14740)
workers-devprod Jul 21, 2026
a06fc78
Fix resolveFit(): contain/scale-down should pad to exact box (Sharp "…
allocsys Jul 21, 2026
6df178f
Fix resolveFit: split Images binding vs cf.image semantics
allocsys Jul 21, 2026
67827d3
Merge branch 'main' into fix/14695-images-fit-gravity-background
allocsys Jul 21, 2026
9fd505d
Fix formatting: wrap long lines in resolveImagesBindingFit to match p…
allocsys Jul 21, 2026
f0fa205
Fix formatting: revert incorrect line wrap, oxfmt wants signature on …
allocsys Jul 21, 2026
4be1d0d
Add one-off workflow_dispatch job to regenerate the stale get-platfor…
allocsys Jul 21, 2026
f0718fd
Port both regen-image-snapshot workflow fixes from main (commits 4913…
allocsys Jul 21, 2026
41a4ed3
Update stale get-platform-proxy Image bindings snapshot (56x100 unpad…
allocsys Jul 22, 2026
d6e0b19
Fix Images binding local transform returning unbuffered Sharp stream:…
allocsys Jul 22, 2026
7b5d445
Remove one-off snapshot regeneration workflow
allocsys Jul 22, 2026
5fd60db
Buffer request body before env.IMAGES.input() in transform.spec.ts
allocsys Jul 22, 2026
cb65af1
Add diagnostic output to transform.spec.ts to see actual response bytes
allocsys Jul 22, 2026
c464058
Fix root cause of transform.spec.ts failures: missing compatibilityDate
allocsys Jul 22, 2026
b854c25
Fix gravity:top/bottom tests: source (200x100, 2:1) and requested dim…
allocsys Jul 22, 2026
df31b91
Fix gravity test boundary artifact: 100x25 (scale 0.5) placed the bot…
allocsys Jul 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 0 additions & 11 deletions .changeset/c3-frameworks-update-14661.md

This file was deleted.

8 changes: 0 additions & 8 deletions .changeset/calm-assets-flow.md

This file was deleted.

7 changes: 0 additions & 7 deletions .changeset/calm-durable-objects-exit.md

This file was deleted.

9 changes: 0 additions & 9 deletions .changeset/config-watch-failed-restart.md

This file was deleted.

13 changes: 0 additions & 13 deletions .changeset/dependabot-update-14682.md

This file was deleted.

8 changes: 0 additions & 8 deletions .changeset/detect-nub-package-manager.md

This file was deleted.

16 changes: 0 additions & 16 deletions .changeset/email-routing-addresses.md

This file was deleted.

5 changes: 5 additions & 0 deletions .changeset/fix-images-binding-fit-gravity-background.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"miniflare": patch
---

Fix the local Images binding transform (`env.IMAGES.input(...).transform(...)`) ignoring `fit`, `gravity`, and `background`. The resize call previously hardcoded sharp's `fit: "contain"` for every transform, which letterboxes the output with black bars regardless of what was requested. `fit`, `gravity`, and `background` are now forwarded to sharp using the same resolution logic already used for `cf.image` fetch subrequests, and an unspecified `fit` now matches production's non-padding default instead of always letterboxing.
7 changes: 0 additions & 7 deletions .changeset/kv-asset-retry.md

This file was deleted.

9 changes: 0 additions & 9 deletions .changeset/miniflare-handle-uncaught-error.md

This file was deleted.

7 changes: 0 additions & 7 deletions .changeset/miniflare-unmappable-frame-urls.md

This file was deleted.

9 changes: 0 additions & 9 deletions .changeset/quiet-routers-loop.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/start-worker-public-input-type.md

This file was deleted.

7 changes: 0 additions & 7 deletions .changeset/workers-dev-subdomain-before-upload.md

This file was deleted.

7 changes: 0 additions & 7 deletions .changeset/wrangler-runtime-error-event.md

This file was deleted.

1 change: 1 addition & 0 deletions .oxfmtrc.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,7 @@
"fixtures/interactive-dev-tests/src/startup-error.ts",
"packages/vite-plugin-cloudflare/playground/**/*.d.ts",
"fixtures/**/worker-configuration.d.ts",
"packages/**/worker-configuration.d.ts",
"packages/local-explorer-ui/src/routeTree.gen.ts",
"packages/local-explorer-ui/src/api/generated",
],
Expand Down
7 changes: 0 additions & 7 deletions .oxlintrc.jsonc
Original file line number Diff line number Diff line change
Expand Up @@ -206,12 +206,5 @@
"workers-sdk/no-wrangler-named-imports": "error",
},
},
// TODO: Remove the following override.
{
"files": ["packages/vite-plugin-cloudflare/**"],
"rules": {
"@typescript-eslint/no-deprecated": "off",
},
},
],
}
6 changes: 5 additions & 1 deletion fixtures/container-app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,17 @@
"dev": "wrangler dev",
"dev:registry": "wrangler dev -c ./wrangler.registry.jsonc",
"start": "wrangler dev",
"start:registry": "wrangler dev -c ./wrangler.registry.jsonc"
"start:registry": "wrangler dev -c ./wrangler.registry.jsonc",
"test:ci": "vitest run",
"type:tests": "tsc -p ./tests/tsconfig.json"
},
"devDependencies": {
"@cloudflare/workers-tsconfig": "workspace:*",
"@cloudflare/workers-types": "catalog:default",
"@types/node": "catalog:default",
"ts-dedent": "^2.2.0",
"typescript": "catalog:default",
"vitest": "catalog:default",
"wrangler": "workspace:*"
}
}
60 changes: 60 additions & 0 deletions fixtures/container-app/tests/container.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
import { execSync } from "child_process";
import { afterAll, beforeAll, describe, test, vi } from "vitest";
import { createTestHarness } from "wrangler";

const isCINonLinux = process.platform !== "linux" && process.env.CI === "true";

function isDockerRunning() {
try {
execSync("docker ps", { stdio: "ignore" });
return true;
} catch (e) {
return false;
}
}

/** Indicates whether the test is being run locally (not in CI) AND docker is currently not running on the system */
const isLocalWithoutDockerRunning =
process.env.CI !== "true" && !isDockerRunning();

if (isLocalWithoutDockerRunning) {
console.warn(
"The tests are running locally but there is no docker instance running on the system, skipping containers tests"
);
}

describe.skipIf(
isCINonLinux ||
// If the tests are being run locally and docker is not running we just skip this test
isLocalWithoutDockerRunning
)("container app", () => {
const server = createTestHarness({
workers: [{ configPath: "./wrangler.jsonc" }],
});

beforeAll(async () => {
await server.listen();
});

afterAll(async () => {
await server.close();
});

test("starts and fetches from the container", async ({ expect }) => {
const statusResponse = await server.fetch("/status");
expect(await statusResponse.json()).toBe(false);

const startResponse = await server.fetch("/start");
expect(await startResponse.text()).toBe("Container create request sent...");

await vi.waitFor(
async () => {
const fetchResponse = await server.fetch("/fetch");
expect(await fetchResponse.text()).toBe(
"Hello World! Have an env var! I'm an env var!"
);
},
{ interval: 500, timeout: 30_000 }
);
});
});
10 changes: 10 additions & 0 deletions fixtures/container-app/tests/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
{
"extends": "@cloudflare/workers-tsconfig/tsconfig.json",
"compilerOptions": {
"module": "esnext",
"noEmit": true,
"types": ["node"]
},
"include": ["./**/*.ts"],
"exclude": []
}
12 changes: 12 additions & 0 deletions fixtures/container-app/vitest.config.mts
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import { defineProject, mergeConfig } from "vitest/config";
import configShared from "../../vitest.shared";

export default mergeConfig(
configShared,
defineProject({
test: {
include: ["tests/**/*.test.ts"],
retry: 0,
},
})
);
10 changes: 9 additions & 1 deletion fixtures/experimental-new-config/cloudflare.config.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
import { bindings, defineWorker } from "wrangler/experimental-config";
import {
bindings,
defineSettings,
defineWorker,
} from "wrangler/experimental-config";
import * as entrypoint from "./src/index.ts" with { type: "cf-worker" };

export const settings = defineSettings({
complianceRegion: "public",
});

export default defineWorker((ctx) => ({
name: "experimental-new-config",
entrypoint,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,8 @@ if (auth) {
).toMatchInlineSnapshot(`
"X [ERROR] A request to the Cloudflare API (/accounts/NOT a valid account id/workers/subdomain/edge-preview) failed.
Could not route to /client/v4/accounts/NOT%20a%20valid%20account%20id/workers/subdomain/edge-preview, perhaps your object identifier is invalid? [code: 7003]
"
`);
});
Expand Down
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 1 addition & 1 deletion fixtures/unsafe-external-plugin/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@
"esbuild": "catalog:default",
"miniflare": "workspace:*",
"tsx": "^3.12.8",
"zod": "3.22.3"
"zod": "catalog:default"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -48,10 +48,6 @@ export class Counter extends DurableObject {
this.#webSocketMessages.push(value);
ws.send(value);
}

webSocketClose() {}

webSocketError() {}
}

export class SQLiteDurableObject extends DurableObject {
Expand Down
26 changes: 26 additions & 0 deletions packages/autoconfig/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,31 @@
# @cloudflare/autoconfig

## 0.2.0

### Minor Changes

- [#14595](https://github.com/cloudflare/workers-sdk/pull/14595) [`2b390d7`](https://github.com/cloudflare/workers-sdk/commit/2b390d7831ff27aa13cdf05aa8e11e4c0086f924) Thanks [@colinhacks](https://github.com/colinhacks)! - Recognise nub as a package manager

wrangler now detects nub — from its `npm_config_user_agent` and an installed `nub` binary — and autoconfig detects nub projects by their `nub.lock`, alongside npm, pnpm, yarn, and bun.

### Patch Changes

- [#14534](https://github.com/cloudflare/workers-sdk/pull/14534) [`a330170`](https://github.com/cloudflare/workers-sdk/commit/a330170e8dfbe481a99597b3e07c1438e20f5ebb) Thanks [@petebacondarwin](https://github.com/petebacondarwin)! - Preserve existing Nuxt `modules` when configuring a project for Cloudflare

Configuring an existing Nuxt project whose `nuxt.config.ts` already declares a `modules` array previously overwrote that array when adding `nitro-cloudflare-dev`, dropping modules such as `@nuxt/ui`. Existing entries are now retained and the Cloudflare module is appended instead.

- Updated dependencies [[`2b390d7`](https://github.com/cloudflare/workers-sdk/commit/2b390d7831ff27aa13cdf05aa8e11e4c0086f924), [`a6c214f`](https://github.com/cloudflare/workers-sdk/commit/a6c214fb311215b1ed09b273171b7995033fb7d7)]:
- @cloudflare/workers-utils@0.28.0
- @cloudflare/cli-shared-helpers@0.1.16

## 0.1.6

### Patch Changes

- Updated dependencies [[`8cd805d`](https://github.com/cloudflare/workers-sdk/commit/8cd805db2f9901cba52d574b385577bafd595cb5)]:
- @cloudflare/cli-shared-helpers@0.1.15
- @cloudflare/workers-utils@0.27.0

## 0.1.5

### Patch Changes
Expand Down
2 changes: 1 addition & 1 deletion packages/autoconfig/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@cloudflare/autoconfig",
"version": "0.1.5",
"version": "0.2.0",
"description": "Framework autoconfig detection and configuration for Cloudflare Workers",
"license": "MIT OR Apache-2.0",
"repository": {
Expand Down
17 changes: 15 additions & 2 deletions packages/autoconfig/src/details/framework-detection.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import {
BunPackageManager,
FatalError,
NpmPackageManager,
NubPackageManager,
PnpmPackageManager,
UserError,
YarnPackageManager,
Expand Down Expand Up @@ -82,7 +83,10 @@ export async function detectFramework(

// Convert the package manager detected by @netlify/build-info to our PackageManager type.
// This is populated after getBuildSettings() runs, which triggers the full detection chain.
const packageManager = convertDetectedPackageManager(project.packageManager);
const packageManager = convertDetectedPackageManager(
project.packageManager,
projectPath
);

const lockFileExists = packageManager.lockFiles.some((lockFile) =>
existsSync(join(projectPath, lockFile))
Expand Down Expand Up @@ -145,11 +149,20 @@ export async function detectFramework(
* Falls back to npm if no package manager was detected.
*
* @param pkgManager The package manager detected by @netlify/build-info (from project.packageManager)
* @param projectPath Path to the project root, used to detect nub via its lock file
* @returns A PackageManager object compatible with wrangler's package manager utilities
*/
function convertDetectedPackageManager(
pkgManager: { name: string } | null
pkgManager: { name: string } | null,
projectPath: string
): PackageManager {
// TODO: Remove this nub.lock check once netlify/build#7124 is merged and
// released, after which @netlify/build-info recognises nub directly.
// https://github.com/netlify/build/pull/7124
if (existsSync(join(projectPath, "nub.lock"))) {
return NubPackageManager;
}

if (!pkgManager) {
return NpmPackageManager;
}
Expand Down
Loading
Loading