From 85c9ce31ef45d77fa0c37a7628c564fcc8286d69 Mon Sep 17 00:00:00 2001 From: Nathaniel Tucker Date: Wed, 25 Mar 2026 08:57:09 -0400 Subject: [PATCH 1/3] internal: Improve bench precision --- docs/rest/shared/_entity_lifecycle_methods.mdx | 4 ++-- examples/benchmark-react/bench/scenarios.ts | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/rest/shared/_entity_lifecycle_methods.mdx b/docs/rest/shared/_entity_lifecycle_methods.mdx index 1765072c3b91..87adcf308960 100644 --- a/docs/rest/shared/_entity_lifecycle_methods.mdx +++ b/docs/rest/shared/_entity_lifecycle_methods.mdx @@ -318,7 +318,7 @@ static mergeMetaWithStore( ### static queryKey(args, queryKey, getEntity, getIndex): pk? {#queryKey} -This method enables `Entities` to be [Queryable](./schema.md#queryable) - allowing store access without an endpoint. +This method enables `Entities` to be [Queryable](/rest/api/schema#queryable) - allowing store access without an endpoint. Overriding can allow customization or disabling of this behavior altogether. @@ -361,7 +361,7 @@ Called when denormalizing an entity. This will create an instance of this class if it is deemed 'valid'. `undefined` return will result in [Invalid expiry status](/docs/concepts/expiry-policy#expiry-status), -like [Invalidate](./Invalidate.md). +like [Invalidate](/rest/api/Invalidate). [`Invalid`](/docs/concepts/expiry-policy#expiry-status) expiry generally means hooks will enter a loading state and attempt a new fetch. diff --git a/examples/benchmark-react/bench/scenarios.ts b/examples/benchmark-react/bench/scenarios.ts index 1968b53e790a..9ff34a51560a 100644 --- a/examples/benchmark-react/bench/scenarios.ts +++ b/examples/benchmark-react/bench/scenarios.ts @@ -23,15 +23,15 @@ export const RUN_CONFIG: Record = { small: { warmup: 2, minMeasurement: 3, - maxMeasurement: process.env.CI ? 15 : 12, - targetMarginPct: process.env.CI ? 5 : 10, + maxMeasurement: 15, + targetMarginPct: process.env.CI ? 4 : 6, opsPerRound: defaultOpsPerRound, }, large: { warmup: 1, minMeasurement: 3, - maxMeasurement: process.env.CI ? 12 : 6, - targetMarginPct: process.env.CI ? 8 : 15, + maxMeasurement: 10, + targetMarginPct: process.env.CI ? 6 : 10, opsPerRound: defaultOpsPerRound, }, }; @@ -50,13 +50,13 @@ export const CONVERGENT_CONFIG: Record = { warmup: 5, minMeasurement: 5, maxMeasurement: 50, - targetMarginPct: process.env.CI ? 5 : 8, + targetMarginPct: process.env.CI ? 4 : 6, }, large: { warmup: 3, minMeasurement: 5, maxMeasurement: 40, - targetMarginPct: process.env.CI ? 8 : 12, + targetMarginPct: process.env.CI ? 6 : 10, }, }; From 339a4473fc073ceeb9f8e6d888e012abc95e0112 Mon Sep 17 00:00:00 2001 From: Nathaniel Tucker Date: Wed, 25 Mar 2026 09:09:09 -0400 Subject: [PATCH 2/3] internal(fix): Gate GitHub releases on hasChangesets instead of published (#3816) `published == 'true'` is never satisfied because changesets/action cannot detect publications from the custom `yarn workspaces foreach` publish command. Use `hasChangesets == 'false'` which reliably indicates the Version Packages PR was merged and publish executed. Made-with: Cursor --- .github/workflows/release.yml | 5 +++++ scripts/create-github-releases.mjs | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3762df45a5b6..a078136d21da 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -37,7 +37,12 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + # hasChangesets is 'false' after the Version Packages PR is merged (no + # changeset files remain), which is the same run where publish executes. + # We can't use `published == 'true'` because the custom yarn publish + # command isn't detectable by changesets/action. - name: Create GitHub Releases + if: steps.changesets.outputs.hasChangesets == 'false' run: node scripts/create-github-releases.mjs env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/scripts/create-github-releases.mjs b/scripts/create-github-releases.mjs index 6ad613df0448..8412111fe7cd 100644 --- a/scripts/create-github-releases.mjs +++ b/scripts/create-github-releases.mjs @@ -2,7 +2,8 @@ /** * Creates GitHub releases for published packages. * Scans all packages, checks if a release already exists for the current version, - * and creates one if not. Safe to run on every push (idempotent). + * and creates one if not. Gated in CI by `hasChangesets == 'false'` so it only + * runs after the Version Packages PR is merged and publish executes. */ import { execSync } from 'child_process'; import { readdirSync, readFileSync, existsSync } from 'fs'; From ff6c76451e363f1a511a176e01e307db043f9747 Mon Sep 17 00:00:00 2001 From: Nathaniel Tucker Date: Wed, 25 Mar 2026 09:28:24 -0400 Subject: [PATCH 3/3] pkg(security): Force twig on 2 --- package.json | 3 ++- yarn.lock | 31 +++++++++++-------------------- 2 files changed, 13 insertions(+), 21 deletions(-) diff --git a/package.json b/package.json index 5a4500b6a5fe..ea03ce586ed4 100644 --- a/package.json +++ b/package.json @@ -113,7 +113,8 @@ "node-gyp": ">=11.0.0", "react": "19.2.3", "react-dom": "19.2.3", - "react-test-renderer": "19.2.3" + "react-test-renderer": "19.2.3", + "twig": "^2.0.0" }, "packageManager": "yarn@4.13.0", "prettier": { diff --git a/yarn.lock b/yarn.lock index edcd9e49e6f0..118be468e344 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19197,10 +19197,10 @@ __metadata: languageName: node linkType: hard -"locutus@npm:^2.0.11": - version: 2.0.39 - resolution: "locutus@npm:2.0.39" - checksum: 10c0/96fa50951d50817777441bc761a07a2a583a3ac47ed8a5e23897b83c2979a968a68d9764887714288dcb730f700476308a0fe66fbe7ef85c9e2de43e7b713a32 +"locutus@npm:^3.0.9": + version: 3.0.25 + resolution: "locutus@npm:3.0.25" + checksum: 10c0/32e936cc6defa3df3529bc937331141e2d2ff57345c5b268ab22092c35589871621ab95d4be5e0e42c52f38ff0447cd3d9e9848df6c1f04efa7dc995a5753b31 languageName: node linkType: hard @@ -20851,15 +20851,6 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:3.0.x": - version: 3.0.8 - resolution: "minimatch@npm:3.0.8" - dependencies: - brace-expansion: "npm:^1.1.7" - checksum: 10c0/72b226f452dcfb5075255f53534cb83fc25565b909e79b9be4fad463d735cb1084827f7013ff41d050e77ee6e474408c6073473edd2fb72c2fd630cfb0acc6ad - languageName: node - linkType: hard - "minimatch@npm:3.1.5, minimatch@npm:^3.0.3, minimatch@npm:^3.0.4, minimatch@npm:^3.0.5, minimatch@npm:^3.1.1, minimatch@npm:^3.1.2, minimatch@npm:^3.1.5": version: 3.1.5 resolution: "minimatch@npm:3.1.5" @@ -20878,7 +20869,7 @@ __metadata: languageName: node linkType: hard -"minimatch@npm:^10.0.3, minimatch@npm:^10.2.1, minimatch@npm:^10.2.2": +"minimatch@npm:^10, minimatch@npm:^10.0.3, minimatch@npm:^10.2.1, minimatch@npm:^10.2.2": version: 10.2.4 resolution: "minimatch@npm:10.2.4" dependencies: @@ -28423,17 +28414,17 @@ __metadata: languageName: node linkType: hard -"twig@npm:^1.17.1": - version: 1.17.1 - resolution: "twig@npm:1.17.1" +"twig@npm:^2.0.0": + version: 2.0.0 + resolution: "twig@npm:2.0.0" dependencies: "@babel/runtime": "npm:^7.8.4" - locutus: "npm:^2.0.11" - minimatch: "npm:3.0.x" + locutus: "npm:^3.0.9" + minimatch: "npm:^10" walk: "npm:2.3.x" bin: twigjs: bin/twigjs - checksum: 10c0/b932a935e9444fbdc2a0dbfc47fd4da14459f6011f4f65786b39c69a26278092707f5b05c92f7e55c88c2623039e9e9cd8a9ce1d6cf4010763d4a976d61c65dd + checksum: 10c0/db15587eed648d0f79887538ff6fa1152b138567dc3fc96b507910313134b0c1753ca42c90177d96f5a302fe9d655cefc70b75fff907acd477bb0772382b21f0 languageName: node linkType: hard