Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion dev/test/benchmark.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -189,7 +189,7 @@ describe('benchmark contract', () => {
};

expect(WORDPRESS_TARGET).toBe('7.1');
expect(gutenbergVersion()).toBe('10.5.0');
expect(gutenbergVersion()).toBe('11.0.0');
expect(pkg.dependencies['@wordpress/block-library']).toBe(gutenbergVersion());
});

Expand Down
2 changes: 1 addition & 1 deletion dev/test/proof-packaging.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ describe('proof packaging boundary', () => {
for (const [name, version] of Object.entries(proofTooling)) {
expect(packageJson.dependencies[name]).toBeUndefined();
expect(packageJson.devDependencies[name]).toBe(version);
expect(packageJson.peerDependencies[name]).toBe(version);
expect(packageJson.peerDependencies[name]).toBe(`^${version}`);
expect(packageJson.peerDependenciesMeta[name]).toEqual({ optional: true });
}
});
Expand Down
5 changes: 3 additions & 2 deletions docs/reference.md
Original file line number Diff line number Diff line change
Expand Up @@ -118,8 +118,9 @@ Library plus `convert`, `assemble`, `validate`, `fix`, `author`, `plugin`, `cont
and `skill` need only Block Runner's production dependencies. WP-CLI remains an
external requirement only when selected for context, token, or media resolution.

The browser-proof packages are exact optional peers, absent from a basic installation.
Install them only where real-WordPress proof will run.
The browser-proof packages are optional peers with compatible caret ranges, absent from a basic
installation. The proof setup below deliberately pins the known-good versions for reproducible
real-WordPress proof.

Set up the runtime/editor proof boundary before requesting `runtime` or `editor`:

Expand Down
1,123 changes: 539 additions & 584 deletions package-lock.json

Large diffs are not rendered by default.

18 changes: 9 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -91,9 +91,9 @@
},
"dependencies": {
"@babel/parser": "7.29.8",
"@wordpress/block-editor": "17.0.0",
"@wordpress/block-library": "10.5.0",
"@wordpress/blocks": "15.27.0",
"@wordpress/block-editor": "17.1.0",
"@wordpress/block-library": "11.0.0",
"@wordpress/blocks": "16.0.0",
"ajv": "8.18.0",
"commander": "14.0.3",
"fast-glob": "3.3.3",
Expand All @@ -120,12 +120,12 @@
"vitest": "4.1.11"
},
"peerDependencies": {
"@playwright/test": "1.61.1",
"@wordpress/e2e-test-utils-playwright": "1.51.0",
"@wordpress/env": "11.15.0",
"axe-core": "4.11.0",
"pixelmatch": "7.1.0",
"pngjs": "7.0.0"
"@playwright/test": "^1.61.1",
"@wordpress/e2e-test-utils-playwright": "^1.51.0",
"@wordpress/env": "^11.15.0",
"axe-core": "^4.11.0",
"pixelmatch": "^7.1.0",
"pngjs": "^7.0.0"
},
"peerDependenciesMeta": {
"@playwright/test": {
Expand Down
12 changes: 6 additions & 6 deletions proof/dependency-pins.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@
"source": "package-lock.json",
"packages": {
"node_modules/@wordpress/block-editor": {
"version": "17.0.0",
"integrity": "sha512-RGWvjWLwIKMKEgLt6kZseC+oEO7oNnDFMzfZ56eGuQKZCKM88x5F7jaEly6YWqj8XtonXEz1ihfxL5JrPeSFNg=="
"version": "17.1.0",
"integrity": "sha512-p+4YgopJOP/gXif9QEjE3LpQY8fGMtGCVkRZ37Ia6fl9rH8QPD6MDhgCjsg1LDazMTc18MwbMyRKLFfFrwqeUw=="
},
"node_modules/@wordpress/block-library": {
"version": "10.5.0",
"integrity": "sha512-+zpSxYNHitzBboMdziL/lS9oc1r0VaEiz1EPZCYWqJk6iRINNGYuv0FKCgO87dmeL/rQ2dBvuVsTzpcFERb/Lg=="
"version": "11.0.0",
"integrity": "sha512-WdtkEUkvbJKw1t+GVRl/nl2bgqhsYqsdsPxCl4BfEw4Xtc+i5MwRXN0d3cY6ZMIP/e51L+QxASvk50VBtla17A=="
},
"node_modules/@wordpress/blocks": {
"version": "15.27.0",
"integrity": "sha512-HW8SJBMF2HhZn8/9XKxu37Rspm3Oqb5odGHnpcc29jZKbYRzH/7AhEUYAdjuUedVwXB2UvzaybDMFFOZ6lN4FA=="
"version": "16.0.0",
"integrity": "sha512-wDL8R5VuJK0vvavZbvSUjWagPB5Vt9bmNQo1G8OAoAjl/JUCICjU9BvZWM8XK/BXSS95qcb5l3H3UIca5onuwQ=="
},
"node_modules/@wordpress/e2e-test-utils-playwright": {
"version": "1.51.0",
Expand Down
8 changes: 4 additions & 4 deletions scripts/package-boundary-check.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ async function verifyBasicConsumer({ consumer, packageRoot, cli, require }) {
const manifest = require('block-runner/package.json');
for (const name of PROOF_TOOLING) {
if (manifest.dependencies[name]) throw new Error(`Proof tooling remains a production dependency: ${name}`);
if (manifest.peerDependencies?.[name] !== manifest.devDependencies?.[name]) throw new Error(`Proof peer is not pinned to development tooling: ${name}`);
if (manifest.peerDependencies?.[name] !== `^${manifest.devDependencies?.[name]}`) throw new Error(`Proof peer is not a compatible range from development tooling: ${name}`);
if (manifest.peerDependenciesMeta?.[name]?.optional !== true) throw new Error(`Proof peer is not optional: ${name}`);
try {
require.resolve(`${name}/package.json`);
Expand Down Expand Up @@ -105,10 +105,10 @@ async function verifyBasicConsumer({ consumer, packageRoot, cli, require }) {

async function verifyProofConsumer({ consumer, packageRoot, cli, require }) {
const manifest = require('block-runner/package.json');
const pins = Object.entries(manifest.peerDependencies ?? {}).map(([name, version]) => `${name}@${version}`);
const pins = PROOF_TOOLING.map((name) => `${name}@${manifest.devDependencies[name]}`);
run('npm', ['install', '--ignore-scripts', '--no-audit', '--no-fund', '--save-dev', '--save-exact', ...pins], { cwd: consumer });
for (const name of PROOF_TOOLING) {
const expected = manifest.peerDependencies[name];
const expected = manifest.devDependencies[name];
const installed = require(`${name}/package.json`).version;
if (installed !== expected) throw new Error(`Proof tooling pin mismatch for ${name}: expected ${expected}, got ${installed}`);
}
Expand Down Expand Up @@ -194,7 +194,7 @@ function compareInstalledDependencyInventories(proofEnabled, basic) {

function proofToolingInstallCommand(manifest, profile) {
const required = profile === 'full' ? PROOF_TOOLING : PROOF_TOOLING.slice(0, 4);
return `npm install --save-dev --save-exact ${required.map((name) => `${name}@${manifest.peerDependencies?.[name]}`).join(' ')}`;
return `npm install --save-dev --save-exact ${required.map((name) => `${name}@${manifest.devDependencies?.[name]}`).join(' ')}`;
}

function run(command, args, { cwd = ROOT, expectedStatus = 0, env = process.env } = {}) {
Expand Down
2 changes: 1 addition & 1 deletion src/proof/runner.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1917,7 +1917,7 @@ function commandFailure(command: string, error: unknown): ProofCommandResult {
}

function proofToolingVersion(name: (typeof PROOF_TOOLING)[number]): string {
const version = packageJson.peerDependencies?.[name] ?? packageJson.devDependencies?.[name];
const version = packageJson.devDependencies?.[name];
if (!version) throw new Error(`Missing pinned proof tooling declaration for ${name}.`);
return version;
}
Expand Down
Loading