From 00477251640c7654d4cd928c7b9439dbc3fc2ec5 Mon Sep 17 00:00:00 2001 From: "tryghost-renovate[bot]" <269725441+tryghost-renovate[bot]@users.noreply.github.com> Date: Tue, 9 Jun 2026 16:39:54 +0000 Subject: [PATCH 01/14] Update dependency supertest to v7 (#28287) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [supertest](https://redirect.github.com/ladjs/supertest) | [`6.3.4` → `7.2.2`](https://renovatebot.com/diffs/npm/supertest/6.3.4/7.2.2) | ![age](https://developer.mend.io/api/mc/badges/age/npm/supertest/7.2.2?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/supertest/6.3.4/7.2.2?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/28155) for more information. --- ### Release Notes
ladjs/supertest (supertest) ### [`v7.2.2`](https://redirect.github.com/forwardemail/supertest/releases/tag/v7.2.2) [Compare Source](https://redirect.github.com/ladjs/supertest/compare/v7.2.1...v7.2.2) - fix: replace 'should' dependency with native assertions in cookies module [`1954bcf`](https://redirect.github.com/ladjs/supertest/commit/1954bcf) *** ### [`v7.2.1`](https://redirect.github.com/forwardemail/supertest/releases/tag/v7.2.1) [Compare Source](https://redirect.github.com/ladjs/supertest/compare/v7.2.0...v7.2.1) - fix: correct case-sensitive require path for assertion module [`d4f04fb`](https://redirect.github.com/ladjs/supertest/commit/d4f04fb) *** ### [`v7.2.0`](https://redirect.github.com/forwardemail/supertest/releases/tag/v7.2.0) [Compare Source](https://redirect.github.com/ladjs/supertest/compare/v7.1.4...v7.2.0) - fix: fixed package lock [`c4b08a6`](https://redirect.github.com/ladjs/supertest/commit/c4b08a6) - fix: drop v14 and v16 from tests [`d084ce2`](https://redirect.github.com/ladjs/supertest/commit/d084ce2) - Merge pull request [#​872](https://redirect.github.com/ladjs/supertest/issues/872) from forwardemail/dependabot/npm\_and\_yarn/js-yaml-3.14.2 [`61f3ddf`](https://redirect.github.com/ladjs/supertest/commit/61f3ddf) - Merge pull request [#​873](https://redirect.github.com/ladjs/supertest/issues/873) from forwardemail/dependabot/npm\_and\_yarn/multi-6d05d0e569 [`bd2fe45`](https://redirect.github.com/ladjs/supertest/commit/bd2fe45) - chore(deps): bump qs, body-parser and express [`07bf4fb`](https://redirect.github.com/ladjs/supertest/commit/07bf4fb) - Merge pull request [#​866](https://redirect.github.com/ladjs/supertest/issues/866) from SchroederSteffen/use-lowercase-header-name [`0666797`](https://redirect.github.com/ladjs/supertest/commit/0666797) - Merge pull request [#​868](https://redirect.github.com/ladjs/supertest/issues/868) from dmurvihill/cookie-assertions [`953eca7`](https://redirect.github.com/ladjs/supertest/commit/953eca7) - chore(deps-dev): bump js-yaml from 3.14.1 to 3.14.2 [`81ab94c`](https://redirect.github.com/ladjs/supertest/commit/81ab94c) - Merge pull request [#​870](https://redirect.github.com/ladjs/supertest/issues/870) from kudlav/patch-1 [`14d905d`](https://redirect.github.com/ladjs/supertest/commit/14d905d) - Update links to documentation in README [`f508b30`](https://redirect.github.com/ladjs/supertest/commit/f508b30) - feat(cookies): add cookie assertions [`4f89680`](https://redirect.github.com/ladjs/supertest/commit/4f89680) - chore(readme): use lower-case header name [`1e642b0`](https://redirect.github.com/ladjs/supertest/commit/1e642b0) *** ### [`v7.1.4`](https://redirect.github.com/forwardemail/supertest/releases/tag/v7.1.4) [Compare Source](https://redirect.github.com/ladjs/supertest/compare/v7.1.3...v7.1.4) - chore: bump deps [`6021ec8`](https://redirect.github.com/ladjs/supertest/commit/6021ec8) - Merge pull request [#​865](https://redirect.github.com/ladjs/supertest/issues/865) from forwardemail/dependabot/npm\_and\_yarn/form-data-4.0.4 [`ceca508`](https://redirect.github.com/ladjs/supertest/commit/ceca508) - chore(deps): bump form-data from 4.0.3 to 4.0.4 [`b1fb983`](https://redirect.github.com/ladjs/supertest/commit/b1fb983) *** ### [`v7.1.3`](https://redirect.github.com/forwardemail/supertest/releases/tag/v7.1.3) [Compare Source](https://redirect.github.com/ladjs/supertest/compare/v7.1.2...v7.1.3) - fix: revert automatic server closing (per [#​651](https://redirect.github.com/ladjs/supertest/issues/651)) [`b6fd281`](https://redirect.github.com/ladjs/supertest/commit/b6fd281) - fix: rename ci file [`75bcbc9`](https://redirect.github.com/ladjs/supertest/commit/75bcbc9) *** ### [`v7.1.2`](https://redirect.github.com/forwardemail/supertest/releases/tag/v7.1.2) [Compare Source](https://redirect.github.com/ladjs/supertest/compare/v7.1.1...v7.1.2) - feat: fix server lifecycle, callback handling, and SuperAgent v10 compatibility [`6d060e3`](https://redirect.github.com/ladjs/supertest/commit/6d060e3) - Merge pull request [#​862](https://redirect.github.com/ladjs/supertest/issues/862) from noritaka1166/fix-typo-test [`0413057`](https://redirect.github.com/ladjs/supertest/commit/0413057) - Merge pull request [#​841](https://redirect.github.com/ladjs/supertest/issues/841) from viniciusamc/master [`e2be0e1`](https://redirect.github.com/ladjs/supertest/commit/e2be0e1) - chore: fix typo in test [`b7f985b`](https://redirect.github.com/ladjs/supertest/commit/b7f985b) - feat(bearer):bearer auth token method [`411f7ce`](https://redirect.github.com/ladjs/supertest/commit/411f7ce) *** ### [`v7.1.1`](https://redirect.github.com/forwardemail/supertest/releases/tag/v7.1.1) [Compare Source](https://redirect.github.com/ladjs/supertest/compare/v7.1.0...v7.1.1) - Merge pull request [#​858](https://redirect.github.com/ladjs/supertest/issues/858) from ByteOPCode/master [`f553845`](https://redirect.github.com/ladjs/supertest/commit/f553845) - feat: update superagent version [`d37d197`](https://redirect.github.com/ladjs/supertest/commit/d37d197) ### [`v7.1.0`](https://redirect.github.com/forwardemail/supertest/releases/tag/v7.1.0) [Compare Source](https://redirect.github.com/ladjs/supertest/compare/v7.0.0...v7.1.0) - Merge pull request [#​852](https://redirect.github.com/ladjs/supertest/issues/852) from alxndrsn/econnreset [`de045d4`](https://redirect.github.com/ladjs/supertest/commit/de045d4) - Merge pull request [#​845](https://redirect.github.com/ladjs/supertest/issues/845) from ikonst/master [`be0d5c7`](https://redirect.github.com/ladjs/supertest/commit/be0d5c7) - Merge pull request [#​854](https://redirect.github.com/ladjs/supertest/issues/854) from alxndrsn/commitlint [`35ac86f`](https://redirect.github.com/ladjs/supertest/commit/35ac86f) - fix(dev): commitlint dev dependency & config [`e67fcb2`](https://redirect.github.com/ladjs/supertest/commit/e67fcb2) - fix: avoid server re-use race conditions [`96c06e3`](https://redirect.github.com/ladjs/supertest/commit/96c06e3) - test: fix test failure due to localhost being also ipv6 [`92079a0`](https://redirect.github.com/ladjs/supertest/commit/92079a0) ### [`v7.0.0`](https://redirect.github.com/forwardemail/supertest/releases/tag/v7.0.0) [Compare Source](https://redirect.github.com/ladjs/supertest/compare/v6.3.4...v7.0.0) - Merge pull request [#​834](https://redirect.github.com/ladjs/supertest/issues/834) from Bruception/master [`225118c`](https://redirect.github.com/ladjs/supertest/commit/225118c) - Fix TestAgent not inheriting Agent properties [`f290431`](https://redirect.github.com/ladjs/supertest/commit/f290431) - fix: bump deps, drop Node.js v<14.16.0 [`1e18c20`](https://redirect.github.com/ladjs/supertest/commit/1e18c20)
--- ### Configuration 📅 **Schedule**: (in timezone Etc/UTC) - Branch creation - Only on Sunday and Saturday (`* * * * 0,6`) - Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`) - Between 12:00 AM and 04:59 AM, Monday through Saturday (`* 0-4 * * 1-6`) - Automerge - Only on Sunday and Saturday (`* * * * 0,6`) - Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`) - Between 12:00 AM and 04:59 AM, Monday through Saturday (`* 0-4 * * 1-6`) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://redirect.github.com/renovatebot/renovate). Co-authored-by: Steve Larson <9larsons@gmail.com> --- ghost/core/package.json | 2 +- .../e2e-frontend/advanced-url-config.test.js | 6 +-- ghost/core/test/e2e-server/admin.test.js | 2 +- ghost/core/test/utils/config-utils.js | 9 ++++ pnpm-lock.yaml | 51 ++++++++++--------- pnpm-workspace.yaml | 1 + 6 files changed, 41 insertions(+), 30 deletions(-) diff --git a/ghost/core/package.json b/ghost/core/package.json index 266dbd75077..9eef5c5cec6 100644 --- a/ghost/core/package.json +++ b/ghost/core/package.json @@ -299,7 +299,7 @@ "qs": "6.15.2", "rewire": "9.0.1", "sinon": "catalog:", - "supertest": "6.3.4", + "supertest": "catalog:", "tmp": "0.2.6", "tsx": "catalog:", "typescript": "catalog:", diff --git a/ghost/core/test/e2e-frontend/advanced-url-config.test.js b/ghost/core/test/e2e-frontend/advanced-url-config.test.js index 8f7b5735c7d..3cb2feceb6f 100644 --- a/ghost/core/test/e2e-frontend/advanced-url-config.test.js +++ b/ghost/core/test/e2e-frontend/advanced-url-config.test.js @@ -25,7 +25,7 @@ describe('Advanced URL Configurations', function () { await testUtils.startGhost(); - request = supertest.agent(configUtils.config.get('server:host') + ':' + configUtils.config.get('server:port')); + request = supertest.agent(configUtils.getServerUrl()); }); after(async function () { @@ -107,14 +107,14 @@ describe('Advanced URL Configurations', function () { configUtils.set('admin:url', 'http://admin.localhost/'); urlUtils.stubUrlUtilsFromConfig(); await testUtils.startGhost(); - request = supertest.agent(configUtils.config.get('server:host') + ':' + configUtils.config.get('server:port')); + request = supertest.agent(configUtils.getServerUrl()); }); after(async function () { await urlUtils.restore(); await configUtils.restore(); await testUtils.startGhost(); - request = supertest.agent(configUtils.config.get('server:host') + ':' + configUtils.config.get('server:port')); + request = supertest.agent(configUtils.getServerUrl()); }); it('/blog/ghost should redirect to external admin SPA', async function () { diff --git a/ghost/core/test/e2e-server/admin.test.js b/ghost/core/test/e2e-server/admin.test.js index b3f82ef8b17..3bba8429c73 100644 --- a/ghost/core/test/e2e-server/admin.test.js +++ b/ghost/core/test/e2e-server/admin.test.js @@ -86,7 +86,7 @@ describe('Admin Routing', function () { urlUtils.stubUrlUtilsFromConfig(); await testUtils.startGhost(); - request = supertest.agent(config.get('server:host') + ':' + config.get('server:port')); + request = supertest.agent(configUtils.getServerUrl()); }); after(async function () { diff --git a/ghost/core/test/utils/config-utils.js b/ghost/core/test/utils/config-utils.js index 7cef41987c8..db47cf369dd 100644 --- a/ghost/core/test/utils/config-utils.js +++ b/ghost/core/test/utils/config-utils.js @@ -1,4 +1,5 @@ const _ = require('lodash'); +const net = require('net'); const config = require('../../core/shared/config'); const configUtils = {}; @@ -42,4 +43,12 @@ configUtils.restore = async function () { }); }; +configUtils.getServerUrl = function ({protocol = 'http'} = {}) { + const host = config.get('server:host'); + const port = config.get('server:port'); + const hostname = net.isIPv6(host) ? `[${host}]` : host; + + return `${protocol}://${hostname}:${port}`; +}; + module.exports = configUtils; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b3e84c9e898..db8b5a3521b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -249,6 +249,9 @@ catalogs: storybook: specifier: 10.3.5 version: 10.3.5 + supertest: + specifier: 7.2.2 + version: 7.2.2 tailwindcss: specifier: 4.2.2 version: 4.2.2 @@ -2940,8 +2943,8 @@ importers: specifier: 'catalog:' version: 22.0.0 supertest: - specifier: 6.3.4 - version: 6.3.4 + specifier: 'catalog:' + version: 7.2.2 tmp: specifier: 0.2.6 version: 0.2.6 @@ -14320,8 +14323,9 @@ packages: resolution: {integrity: sha512-KcpbcpuLNOwrEjnbpMC0gS+X8ciDoZE1kkqzat4a8vrprf+s9pKNQ/QIwWfbfs4ltgmFl3MD177SNTkve3BwGQ==} deprecated: 'Please upgrade to latest, formidable@v2 or formidable@v3! Check these notes: https://bit.ly/2ZEqIau' - formidable@2.1.5: - resolution: {integrity: sha512-Oz5Hwvwak/DCaXVVUtPn4oLMLLy1CdclLKO1LFgU7XzDpVMUU5UjlSLpGMocyQNNk8F6IJW9M/YdooSn2MRI+Q==} + formidable@3.5.4: + resolution: {integrity: sha512-YikH+7CUTOtP44ZTnUhR7Ic2UASBPOqmaRkRKxRbywPTe5VxF7RRCck4af9wutiZ/QKM5nME9Bie2fFaPz5Gug==} + engines: {node: '>=14.0.0'} forwarded-parse@2.1.2: resolution: {integrity: sha512-alTFZZQDKMporBH77856pXgzhEzaUVmLCDk+egLgIgHst3Tpndzz8MnKe+GzRJRfvVdn69HhpW7cmXzvtLvJAw==} @@ -20482,20 +20486,18 @@ packages: superagent-throttle@1.0.1: resolution: {integrity: sha512-m5Ngf0S5QoA84zgwVqVnVA34u9uvo8uM+QEF9B7eNI5FDaSoSoUwQsx7V1GmLXgYLkolhIiucFDVJXF9z49hgQ==} + superagent@10.3.0: + resolution: {integrity: sha512-B+4Ik7ROgVKrQsXTV0Jwp2u+PXYLSlqtDAhYnkkD+zn3yg8s/zjA2MeGayPoY/KICrbitwneDHrjSotxKL+0XQ==} + engines: {node: '>=14.18.0'} + superagent@5.3.1: resolution: {integrity: sha512-wjJ/MoTid2/RuGCOFtlacyGNxN9QLMgcpYLDQlWFIhhdJ93kNscFonGvrpAHSCVjRVj++DGCglocF7Aej1KHvQ==} engines: {node: '>= 7.0.0'} deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net - superagent@8.1.2: - resolution: {integrity: sha512-6WTxW1EB6yCxV5VFOIPQruWGHqc3yI7hEmZK6h+pyk69Lk/Ut7rLUY6W/ONF2MjBuGjvmMiIpsrVJ2vjrHlslA==} - engines: {node: '>=6.4.0 <13 || >=14'} - deprecated: Please upgrade to superagent v10.2.2+, see release notes at https://github.com/forwardemail/superagent/releases/tag/v10.2.2 - maintenance is supported by Forward Email @ https://forwardemail.net - - supertest@6.3.4: - resolution: {integrity: sha512-erY3HFDG0dPnhw4U+udPfrzXa4xhSG+n4rxfRuZWCUvjFWwKl+OxWf/7zk50s84/fAAs7vf5QAb9uRa0cCykxw==} - engines: {node: '>=6.4.0'} - deprecated: Please upgrade to supertest v7.1.3+, see release notes at https://github.com/forwardemail/supertest/releases/tag/v7.1.3 - maintenance is supported by Forward Email @ https://forwardemail.net + supertest@7.2.2: + resolution: {integrity: sha512-oK8WG9diS3DlhdUkcFn4tkNIiIbBx9lI2ClF8K+b2/m8Eyv47LSawxUzZQSNKUrVb2KsqeTDCcjAAVPYaSLVTA==} + engines: {node: '>=14.18.0'} supports-color@1.2.0: resolution: {integrity: sha512-mS5xsnjTh5b7f2DM6bch6lR582UCOTphzINlZnDsfpIRrwI6r58rb6YSSGsdexkm8qw2bBVO2ID2fnJOTuLiPA==} @@ -37067,12 +37069,11 @@ snapshots: formidable@1.2.6: {} - formidable@2.1.5: + formidable@3.5.4: dependencies: '@paralleldrive/cuid2': 2.3.1 dezalgo: 1.0.4 once: 1.4.0 - qs: 6.15.2 forwarded-parse@2.1.2: {} @@ -44985,41 +44986,41 @@ snapshots: superagent-throttle@1.0.1: {} - superagent@5.3.1: + superagent@10.3.0: dependencies: component-emitter: 1.3.1 cookiejar: 2.1.4 debug: 4.4.3(supports-color@5.5.0) fast-safe-stringify: 2.1.1 - form-data: 3.0.4 - formidable: 1.2.6 + form-data: 4.0.5 + formidable: 3.5.4 methods: 1.1.2 mime: 2.6.0 qs: 6.15.2 - readable-stream: 3.6.2 - semver: 7.7.4 transitivePeerDependencies: - supports-color - superagent@8.1.2: + superagent@5.3.1: dependencies: component-emitter: 1.3.1 cookiejar: 2.1.4 debug: 4.4.3(supports-color@5.5.0) fast-safe-stringify: 2.1.1 - form-data: 4.0.5 - formidable: 2.1.5 + form-data: 3.0.4 + formidable: 1.2.6 methods: 1.1.2 mime: 2.6.0 qs: 6.15.2 + readable-stream: 3.6.2 semver: 7.7.4 transitivePeerDependencies: - supports-color - supertest@6.3.4: + supertest@7.2.2: dependencies: + cookie-signature: 1.2.2 methods: 1.1.2 - superagent: 8.1.2 + superagent: 10.3.0 transitivePeerDependencies: - supports-color diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index e61671d0f5a..e03dc0c9aa1 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -107,6 +107,7 @@ catalog: sinon: 22.0.0 sonner: 2.0.7 storybook: 10.3.5 + supertest: 7.2.2 tailwindcss: 4.2.2 tsx: 4.21.0 tw-animate-css: 1.4.0 From 4a33a3e044bc58b9a7ea851c85e1d39517a1ec17 Mon Sep 17 00:00:00 2001 From: "tryghost-renovate[bot]" <269725441+tryghost-renovate[bot]@users.noreply.github.com> Date: Tue, 9 Jun 2026 16:41:27 +0000 Subject: [PATCH 02/14] Update dependency @faker-js/faker to v10 (#28273) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [@faker-js/faker](https://fakerjs.dev) ([source](https://redirect.github.com/faker-js/faker)) | [`7.6.0` → `10.4.0`](https://renovatebot.com/diffs/npm/@faker-js%2ffaker/7.6.0/10.4.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@faker-js%2ffaker/10.4.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@faker-js%2ffaker/7.6.0/10.4.0?slim=true) | | [@faker-js/faker](https://fakerjs.dev) ([source](https://redirect.github.com/faker-js/faker)) | [`8.4.1` → `10.4.0`](https://renovatebot.com/diffs/npm/@faker-js%2ffaker/8.4.1/10.4.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@faker-js%2ffaker/10.4.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@faker-js%2ffaker/8.4.1/10.4.0?slim=true) | | [@faker-js/faker](https://fakerjs.dev) ([source](https://redirect.github.com/faker-js/faker)) | [`9.9.0` → `10.4.0`](https://renovatebot.com/diffs/npm/@faker-js%2ffaker/9.9.0/10.4.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/@faker-js%2ffaker/10.4.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@faker-js%2ffaker/9.9.0/10.4.0?slim=true) | --- ### Release Notes
faker-js/faker (@​faker-js/faker) ### [`v10.4.0`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#1040-2026-03-23) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v10.3.0...v10.4.0) ##### New Locales - **locale:** add Japanese bear definitions ([#​3720](https://redirect.github.com/faker-js/faker/issues/3720)) ([2a4b15c](https://redirect.github.com/faker-js/faker/commit/2a4b15cff44cec578b23b579d9bd8603887024ac)) - **locale:** add Japanese bird definitions ([#​3719](https://redirect.github.com/faker-js/faker/issues/3719)) ([dc31ff8](https://redirect.github.com/faker-js/faker/commit/dc31ff8f79c9811ed23ebea845ece4abd375aeaa)) - **locale:** add Japanese cat breed definitions ([#​3716](https://redirect.github.com/faker-js/faker/issues/3716)) ([54af8a8](https://redirect.github.com/faker-js/faker/commit/54af8a8ca051631350a727a2dc596e212b91061a)) - **locale:** add Japanese cattle breed definitions ([#​3717](https://redirect.github.com/faker-js/faker/issues/3717)) ([c2c7342](https://redirect.github.com/faker-js/faker/commit/c2c7342d8d0bd93871659fa9150ce6f80364cf93)) - **locale:** add Japanese fish definitions ([#​3721](https://redirect.github.com/faker-js/faker/issues/3721)) ([15fc361](https://redirect.github.com/faker-js/faker/commit/15fc36187225cff20037658dd9f9b6e076641ca9)) - **locale:** add Japanese horse breed definitions ([#​3718](https://redirect.github.com/faker-js/faker/issues/3718)) ([e02536e](https://redirect.github.com/faker-js/faker/commit/e02536ee5283e29961965dc3e4e56c74dc65c16f)) - **locale:** add Norwegian (nb\_NO) country definition ([#​3714](https://redirect.github.com/faker-js/faker/issues/3714)) ([614b4e9](https://redirect.github.com/faker-js/faker/commit/614b4e9eb7f86334619822d654063abc7026ee48)) ##### Features - fi locale phone numbers ([#​3747](https://redirect.github.com/faker-js/faker/issues/3747)) ([7afa8b5](https://redirect.github.com/faker-js/faker/commit/7afa8b5628e51a8eba5e56d63d0ffc0ff2cea11f)) - **food:** add plant-based dish variety ([#​3745](https://redirect.github.com/faker-js/faker/issues/3745)) ([41edf49](https://redirect.github.com/faker-js/faker/commit/41edf49c9eb32db4a70a57a3e0ab687b9ec4b6a5)) ##### Changed Locales - **locale:** filter and cleanup PersonEntryDefintions data ([#​3266](https://redirect.github.com/faker-js/faker/issues/3266)) ([67defc8](https://redirect.github.com/faker-js/faker/commit/67defc8b0b3d4006f2151889d4401a3f2aa00580)) ##### Bug Fixes - **locales:** correct typos and capitalization in es\_MX street names ([#​3737](https://redirect.github.com/faker-js/faker/issues/3737)) ([2b32c28](https://redirect.github.com/faker-js/faker/commit/2b32c28b438307904a12e1271fbc4f2e614091b6)) ### [`v10.3.0`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#1030-2026-02-06) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v10.2.0...v10.3.0) ##### New Locales - **locale:** add Japanese dog definition ([#​3715](https://redirect.github.com/faker-js/faker/issues/3715)) ([76c9df1](https://redirect.github.com/faker-js/faker/commit/76c9df131a55f63da55101cc7cccff2f7928187c)) - **locale:** add Japanese color definitions ([#​3707](https://redirect.github.com/faker-js/faker/issues/3707)) ([bbbb215](https://redirect.github.com/faker-js/faker/commit/bbbb215ef6441ec7a3ebdd660fd2690074f69c67)) - **locale:** add Japanese food module ([#​3706](https://redirect.github.com/faker-js/faker/issues/3706)) ([71d55c0](https://redirect.github.com/faker-js/faker/commit/71d55c09f15ab437444c57d0eebff4477f75b131)) - **locale:** add Japanese internet definitions ([#​3708](https://redirect.github.com/faker-js/faker/issues/3708)) ([184a709](https://redirect.github.com/faker-js/faker/commit/184a709825979c6d8d7c3ea240ac2485bed96296)) - **locale:** add Japanese job definitions for person module ([#​3705](https://redirect.github.com/faker-js/faker/issues/3705)) ([e7f3ccd](https://redirect.github.com/faker-js/faker/commit/e7f3ccd2e5b0ba84455edb680dfcfa5d86ecdbaf)) - **locale:** add Japanese suffix definitions for person module ([#​3704](https://redirect.github.com/faker-js/faker/issues/3704)) ([45ad7d8](https://redirect.github.com/faker-js/faker/commit/45ad7d81682f65ab7fe37eea0633d7f0262cde87)) - **locale:** add Norwegian (nb\_NO) continent definitions ([#​3712](https://redirect.github.com/faker-js/faker/issues/3712)) ([c0f0f23](https://redirect.github.com/faker-js/faker/commit/c0f0f232adad715791cde3622939b463d925c165)) - **locale:** add Norwegian (nb\_NO) direction definition ([#​3713](https://redirect.github.com/faker-js/faker/issues/3713)) ([43b18fa](https://redirect.github.com/faker-js/faker/commit/43b18fa0c540fdc2a3a61517377da63653802d25)) - **locale:** add Norwegian (nb\_NO) sex definitions ([#​3710](https://redirect.github.com/faker-js/faker/issues/3710)) ([76063f2](https://redirect.github.com/faker-js/faker/commit/76063f26574b48f7ea8fd918f18744f3276669ad)) - **locale:** add Norwegian (nb\_NO) vehicle definition ([#​3732](https://redirect.github.com/faker-js/faker/issues/3732)) ([d1c32b0](https://redirect.github.com/faker-js/faker/commit/d1c32b0326298534f40986328296232af209eb19)) ##### Features - **locales:** add Norwegian (nb\_NO) zodiac sign definitions ([#​3711](https://redirect.github.com/faker-js/faker/issues/3711)) ([e306542](https://redirect.github.com/faker-js/faker/commit/e306542867a4839fbe7eb8015c73db2f24bc6ceb)) - **person:** `sexType` can return `'generic'` ([#​3259](https://redirect.github.com/faker-js/faker/issues/3259)) ([0e099a1](https://redirect.github.com/faker-js/faker/commit/0e099a1033ae89de2f9810558c3c0257d78a50fe)) - **string:** support uuid v7 ([#​3701](https://redirect.github.com/faker-js/faker/issues/3701)) ([87c2753](https://redirect.github.com/faker-js/faker/commit/87c2753fe3c92e53925a970f40a7b10422f44378)) ##### Changed Locales - **locale:** normalize system locale data ([#​3702](https://redirect.github.com/faker-js/faker/issues/3702)) ([ba91653](https://redirect.github.com/faker-js/faker/commit/ba91653cd4c4ceecf6c96ef887979bfd97fa4e5c)) ##### Bug Fixes - **locale:** remove empty string from Hebrew lorem words ([#​3698](https://redirect.github.com/faker-js/faker/issues/3698)) ([81a896c](https://redirect.github.com/faker-js/faker/commit/81a896c09a3a0907fd34734b6d636b5e35fb8291)) - **location:** state name to 'Trøndelag' for nb\_NO ([#​3691](https://redirect.github.com/faker-js/faker/issues/3691)) ([eaef389](https://redirect.github.com/faker-js/faker/commit/eaef38961863a40a7bed6632858bcf36dd23c560)) ### [`v10.2.0`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#1020-2025-12-27) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v10.1.0...v10.2.0) ##### New Locales - **locale:** add bn\_BD location module ([#​3614](https://redirect.github.com/faker-js/faker/issues/3614)) ([99a448c](https://redirect.github.com/faker-js/faker/commit/99a448c0d723c1c4c94d0289dd73cb19c963a19c)) - **locale:** add counties & states to nb\_NO location ([#​3617](https://redirect.github.com/faker-js/faker/issues/3617)) ([3dbcbe1](https://redirect.github.com/faker-js/faker/commit/3dbcbe1465ae886551b179bb084953aed197d690)) - **locale:** add da states (regions) ([#​3656](https://redirect.github.com/faker-js/faker/issues/3656)) ([78c892b](https://redirect.github.com/faker-js/faker/commit/78c892b66de7237009964898eb6f874cb1be202c)) - **locale:** add id\_ID translation for animal, color, commerce, and word also add country to location id\_ID translation. ([#​3608](https://redirect.github.com/faker-js/faker/issues/3608)) ([02c2c3e](https://redirect.github.com/faker-js/faker/commit/02c2c3ea5e14ec180b436e83c21459d99be282cf)) - **locale:** add ku\_kmr\_latin locale ([#​3629](https://redirect.github.com/faker-js/faker/issues/3629)) ([247f42d](https://redirect.github.com/faker-js/faker/commit/247f42dd72b7afbf968a5c87a0f54160abf82ac3)) - **locale:** add person module data to ku\_ckb ([#​3630](https://redirect.github.com/faker-js/faker/issues/3630)) ([6be2c20](https://redirect.github.com/faker-js/faker/commit/6be2c2064f5ddc5d13877b61c428c016c29a174a)) ##### Features - Add support for UPC ([#​3648](https://redirect.github.com/faker-js/faker/issues/3648)) ([57b2d78](https://redirect.github.com/faker-js/faker/commit/57b2d78f7d21e618c7c4abbc3570bc1436a7d453)) - **commerce:** allow for locale-specific product name patterns ([#​3657](https://redirect.github.com/faker-js/faker/issues/3657)) ([1cf3991](https://redirect.github.com/faker-js/faker/commit/1cf3991c180ddeb75253d1850f085147a04ee3bf)) - **finance:** add IR iban ([#​3678](https://redirect.github.com/faker-js/faker/issues/3678)) ([101a74a](https://redirect.github.com/faker-js/faker/commit/101a74af5172d23704a4b50e0b2022e048d714f2)) - **locales:** add sl\_SI locale, person module ([#​3564](https://redirect.github.com/faker-js/faker/issues/3564)) ([e7c9945](https://redirect.github.com/faker-js/faker/commit/e7c99457ed07ba5e05951db1e709c64fd3d79b44)) - **location:** Hungarian support for city name, full street address, continents, countries and directions (hu) ([#​3618](https://redirect.github.com/faker-js/faker/issues/3618)) ([2c9aefd](https://redirect.github.com/faker-js/faker/commit/2c9aefdf6c59eab86ae2042b211aba6d4ff5f304)) ##### Bug Fixes - **food:** move raspberry from vegetable to fruit ([#​3650](https://redirect.github.com/faker-js/faker/issues/3650)) ([6a4f01f](https://redirect.github.com/faker-js/faker/commit/6a4f01f43bbfcbfe70c87c9aff261d1006d4fd46)) - **locale:** endonym should be in Latin script ([#​3660](https://redirect.github.com/faker-js/faker/issues/3660)) ([4cda07f](https://redirect.github.com/faker-js/faker/commit/4cda07f207d84892245c065a99592b350870fcc8)) - **locale:** remove additional inappropriate words from ja locale ([#​3665](https://redirect.github.com/faker-js/faker/issues/3665)) ([18a1554](https://redirect.github.com/faker-js/faker/commit/18a15542d66b6d8c7477ed98cc2cfb4ab0a1614f)) - **locale:** remove offensive and inappropriate words from ja locale ([#​3661](https://redirect.github.com/faker-js/faker/issues/3661)) ([8310c8c](https://redirect.github.com/faker-js/faker/commit/8310c8c2c466cfbad992ea8eadc78649ff4606df)) - **locale:** remove some negative hu words ([#​3664](https://redirect.github.com/faker-js/faker/issues/3664)) ([bd36bae](https://redirect.github.com/faker-js/faker/commit/bd36bae6517c181a6a187dee5c4634a402be4c54)) - **location:** Use accents in en country names ([#​3637](https://redirect.github.com/faker-js/faker/issues/3637)) ([24aa11f](https://redirect.github.com/faker-js/faker/commit/24aa11f55a86bed8417187ca881ab80c1c305ee2)) - **vehicle:** Updated spelling Mercielago to Murcielago ([#​3636](https://redirect.github.com/faker-js/faker/issues/3636)) ([bfb1bdb](https://redirect.github.com/faker-js/faker/commit/bfb1bdba63e7972d23d00b52dfa78478084949ee)) ### [`v10.1.0`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#1010-2025-10-14) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v10.0.0...v10.1.0) ##### New Locales - **locale:** Add ku\_ckb locale ([#​3441](https://redirect.github.com/faker-js/faker/issues/3441)) ([9de894a](https://redirect.github.com/faker-js/faker/commit/9de894a638e040ec7d9511a8ca0d2db44def6ed5)) - **locale:** add Russian localization for book module ([#​3628](https://redirect.github.com/faker-js/faker/issues/3628)) ([428ff33](https://redirect.github.com/faker-js/faker/commit/428ff3328b4c4b13ec29d646eea7c4ea98522323)) ##### Bug Fixes - **locale:** fix the Spring Airlines IATA Code ([#​3612](https://redirect.github.com/faker-js/faker/issues/3612)) ([b547045](https://redirect.github.com/faker-js/faker/commit/b547045a55a86f327940852ce8b8df3c3a656109)) ### [`v10.0.0`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#1000-2025-08-21) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v9.9.0...v10.0.0) ##### New Locales - **locale:** extended list of colors in Polish ([#​3586](https://redirect.github.com/faker-js/faker/issues/3586)) ([9940d54](https://redirect.github.com/faker-js/faker/commit/9940d54f75205b65a74d11484cb385c85656a43f)) ##### Features - **locales:** add animal vocabulary(bear, bird, cat, rabbit, pet\_name) in Korean ([#​3535](https://redirect.github.com/faker-js/faker/issues/3535)) ([0d2143c](https://redirect.github.com/faker-js/faker/commit/0d2143c75d804d1dc53c17078eb59bc1970a07d1)) ##### Changed Locales - **locale:** remove invalid credit card issuer patterns ([#​3568](https://redirect.github.com/faker-js/faker/issues/3568)) ([9783d95](https://redirect.github.com/faker-js/faker/commit/9783d95a8e43c45bc44c5c0c546b250b6c2ae140)) ### [`v9.9.0`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#990-2025-07-01) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v9.8.0...v9.9.0) ##### New Locales - **locale:** add word data to pt\_br and pt\_pt locales ([#​3531](https://redirect.github.com/faker-js/faker/issues/3531)) ([a405ac8](https://redirect.github.com/faker-js/faker/commit/a405ac8740bcfb2ec5f84c06752484a2b332a90a)) ##### Features - **location:** simple coordinate methods ([#​3528](https://redirect.github.com/faker-js/faker/issues/3528)) ([d07d96d](https://redirect.github.com/faker-js/faker/commit/d07d96d01833085f2d3c5f9c851a572ebf8c47df)) ### [`v9.8.0`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#980-2025-05-13) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v9.7.0...v9.8.0) ##### New Locales - **locale:** Add additional Japanese last names to the locale data ([#​3484](https://redirect.github.com/faker-js/faker/issues/3484)) ([72e66c3](https://redirect.github.com/faker-js/faker/commit/72e66c3a3a22738ce163b26dc5315c82f49032e7)) - **locale:** add Japanese date and month definitions ([#​3492](https://redirect.github.com/faker-js/faker/issues/3492)) ([b70e793](https://redirect.github.com/faker-js/faker/commit/b70e7934b7b3181d8f3fbe98627985cd71fbfe26)) - **locale:** add Japanese science locale data including elements and units ([#​3491](https://redirect.github.com/faker-js/faker/issues/3491)) ([54fd551](https://redirect.github.com/faker-js/faker/commit/54fd5519e92270926e75a914ccf98b4699fbb4f2)) - **locale:** add Japanese sex definitions for person locale ([#​3495](https://redirect.github.com/faker-js/faker/issues/3495)) ([1dbd8fa](https://redirect.github.com/faker-js/faker/commit/1dbd8fa511e0c69ed73324a330f16f9aa1a6670a)) - **locale:** add vehicle locale data for Japanese ([#​3490](https://redirect.github.com/faker-js/faker/issues/3490)) ([dfadb1d](https://redirect.github.com/faker-js/faker/commit/dfadb1da746e7bf82b59dc5314bb9f0735b0f37d)) - **locale:** add zh\_CN book ([#​3477](https://redirect.github.com/faker-js/faker/issues/3477)) ([786a3d0](https://redirect.github.com/faker-js/faker/commit/786a3d0bd8d72d2bf2cfc38358c45d2960848654)) - **locale:** add zh\_CN food ([#​3479](https://redirect.github.com/faker-js/faker/issues/3479)) ([6c883e7](https://redirect.github.com/faker-js/faker/commit/6c883e74b894f1b777291e67d5b2b7bc63e38a80)) - **locale:** update Japanese company categories ([#​3489](https://redirect.github.com/faker-js/faker/issues/3489)) ([8c0953a](https://redirect.github.com/faker-js/faker/commit/8c0953a2617f3c8ddd95320af46063d83d115ddb)) - **locale:** update zh\_CN animal ([#​3480](https://redirect.github.com/faker-js/faker/issues/3480)) ([38ee7b8](https://redirect.github.com/faker-js/faker/commit/38ee7b81a82c466710586091e7046d7bfcbed337)) - **locale:** update zh\_CN location ([#​3481](https://redirect.github.com/faker-js/faker/issues/3481)) ([456f102](https://redirect.github.com/faker-js/faker/commit/456f10276bfbc1a654162e94e5815ca01ffa7fdd)) - **locale:** update zh\_CN word ([#​3478](https://redirect.github.com/faker-js/faker/issues/3478)) ([aa98867](https://redirect.github.com/faker-js/faker/commit/aa98867765093588ea2fbda2daa6cbce40b20d5f)) ##### Changed Locales - **locale:** ko state data update ([#​3487](https://redirect.github.com/faker-js/faker/issues/3487)) ([b611ec2](https://redirect.github.com/faker-js/faker/commit/b611ec2e519bc0be6d53e81fb333fcb15c3964f1)) - **locale:** normalize internet data ([#​3502](https://redirect.github.com/faker-js/faker/issues/3502)) ([e6151e4](https://redirect.github.com/faker-js/faker/commit/e6151e4efd29f360b82ff25c4ddb2ffae8e30e86)) - **locale:** rename pt-BR streetSuffix to streetPrefix ([#​3493](https://redirect.github.com/faker-js/faker/issues/3493)) ([7c23db3](https://redirect.github.com/faker-js/faker/commit/7c23db316e794aab2a9181e0f960e094bea71054)) ##### Bug Fixes - **locale:** correct Japanese country names ([#​3510](https://redirect.github.com/faker-js/faker/issues/3510)) ([046bb81](https://redirect.github.com/faker-js/faker/commit/046bb8155850b9fee0c22a0177e695c3ba0d3a1a)) - **locale:** correct the name of element Lv in Japanese ([#​3509](https://redirect.github.com/faker-js/faker/issues/3509)) ([6a7ef4c](https://redirect.github.com/faker-js/faker/commit/6a7ef4c2ad97f50e9a47efd0fa7c22804fc9d4f1)) - **locale:** ko modified street\_name to street\_name\_part ([#​3485](https://redirect.github.com/faker-js/faker/issues/3485)) ([c15da8e](https://redirect.github.com/faker-js/faker/commit/c15da8efec3fc05d089bdf2dc1513183b614e04b)) ### [`v9.7.0`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#970-2025-04-13) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v9.6.0...v9.7.0) ##### New Locales - **locale:** Add bn\_BD locale ([#​3439](https://redirect.github.com/faker-js/faker/issues/3439)) ([fef0ad7](https://redirect.github.com/faker-js/faker/commit/fef0ad7859ff5994947c2c02afd6bdf13dffd234)) - **locale:** add cy locale, start with date ([#​3462](https://redirect.github.com/faker-js/faker/issues/3462)) ([f70a6f7](https://redirect.github.com/faker-js/faker/commit/f70a6f7a656090ed900ea18b39961d0d5ff78be0)) - **locale:** add finance support for ja locale ([#​3449](https://redirect.github.com/faker-js/faker/issues/3449)) ([b2c5298](https://redirect.github.com/faker-js/faker/commit/b2c5298c94f632681937fc6d62da2f84252b5c66)) - **locale:** add localize sex support for zh\_CN & zh\_TW ([#​3450](https://redirect.github.com/faker-js/faker/issues/3450)) ([048c325](https://redirect.github.com/faker-js/faker/commit/048c32581bd5d15f333ef63e4ca968e02793373d)) - **locale:** add Tamil language support ([#​3468](https://redirect.github.com/faker-js/faker/issues/3468)) ([cdf6dc4](https://redirect.github.com/faker-js/faker/commit/cdf6dc4a973b8e64069f8b8d98e6921188f08575)) ##### Bug Fixes - **airline:** Air France and KLM Royal Dutch Airlines ([#​3440](https://redirect.github.com/faker-js/faker/issues/3440)) ([8a2d168](https://redirect.github.com/faker-js/faker/commit/8a2d168f62307af8c4b04ab8ab4624786009671b)) - **iban:** more strict pattern for IE and PS ([#​3464](https://redirect.github.com/faker-js/faker/issues/3464)) ([7b12056](https://redirect.github.com/faker-js/faker/commit/7b120567139b2ac84d052f42f1f352c6697f2aa2)) - **locale:** rename ja and zh\_CN company affix files ([#​3448](https://redirect.github.com/faker-js/faker/issues/3448)) ([1e551c5](https://redirect.github.com/faker-js/faker/commit/1e551c5f47e292d3dc6bbefae9eaf75664a052a1)) - **number:** don't ignore multipleOf in float when min=max ([#​3417](https://redirect.github.com/faker-js/faker/issues/3417)) ([e4cc4e5](https://redirect.github.com/faker-js/faker/commit/e4cc4e50d1d4103c26f06fd2db0ca187dbb537cd)) ### [`v9.6.0`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#960-2025-03-06) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v9.5.1...v9.6.0) ##### Features - **finance:** add ISO 4217 numerical codes to Currency ([#​3404](https://redirect.github.com/faker-js/faker/issues/3404)) ([ae9aec6](https://redirect.github.com/faker-js/faker/commit/ae9aec67b19f779e818be5550a8edc44f20d91d4)) - **number:** bigint multipleOf ([#​3402](https://redirect.github.com/faker-js/faker/issues/3402)) ([7b4f85a](https://redirect.github.com/faker-js/faker/commit/7b4f85a2c00bf2adff2b88957bd6322100e6e541)) ### [`v9.5.1`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#951-2025-02-28) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v9.5.0...v9.5.1) ##### Bug Fixes - test before using Buffers ([#​3400](https://redirect.github.com/faker-js/faker/issues/3400)) ([ec7c9a8](https://redirect.github.com/faker-js/faker/commit/ec7c9a8e607d63a008d06747f89c9512f5b3171e)) ### [`v9.5.0`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#950-2025-02-10) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v9.4.0...v9.5.0) ##### Features - **image:** add AI-generated avatars ([#​3126](https://redirect.github.com/faker-js/faker/issues/3126)) ([9e13953](https://redirect.github.com/faker-js/faker/commit/9e1395380cf9baf9f0350c43cbbc303430e77dfb)) ### [`v9.4.0`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#940-2025-01-15) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v9.3.0...v9.4.0) ##### Features - **finance:** use fake patterns for transactionDescription ([#​3202](https://redirect.github.com/faker-js/faker/issues/3202)) ([5ec4a6c](https://redirect.github.com/faker-js/faker/commit/5ec4a6c9ddc037ae189ee93f339fa52065ac2a26)) - **internet:** update to simplified modern user-agent list ([#​3324](https://redirect.github.com/faker-js/faker/issues/3324)) ([3c7abb5](https://redirect.github.com/faker-js/faker/commit/3c7abb55e68fcbcf41560539a15845e7c8882765)) - **location:** add list of spoken languages ([#​3333](https://redirect.github.com/faker-js/faker/issues/3333)) ([ff6dda9](https://redirect.github.com/faker-js/faker/commit/ff6dda94ddd312ebcff816cbb63e74df9857d091)) ##### Changed Locales - **locale:** fix various locale data with trailing spaces ([#​3329](https://redirect.github.com/faker-js/faker/issues/3329)) ([e5eec0e](https://redirect.github.com/faker-js/faker/commit/e5eec0ed848d298ccba1d6db9392a507c5ce2bc4)) - **locale:** improve product\_name data in en and tr ([#​3372](https://redirect.github.com/faker-js/faker/issues/3372)) ([773fc1f](https://redirect.github.com/faker-js/faker/commit/773fc1f654a2ab57d048443e54761f0f288e7427)) ##### Bug Fixes - **animal:** re-moo-ved some incorrect cow data ([#​3326](https://redirect.github.com/faker-js/faker/issues/3326)) ([47f835b](https://redirect.github.com/faker-js/faker/commit/47f835bd0dc257e5d7b9d7e7e06c08854474a3a7)) - basic wildcard range handling + add more tests ([#​3322](https://redirect.github.com/faker-js/faker/issues/3322)) ([817f8a0](https://redirect.github.com/faker-js/faker/commit/817f8a01d93378e00c03cf73154fcec34fd5feef)) - **finance:** update Discover card number format to ensure accuracy ([#​3336](https://redirect.github.com/faker-js/faker/issues/3336)) ([69c0063](https://redirect.github.com/faker-js/faker/commit/69c006344b8c54a9cd5f0adc36d49c88a223de4e)) - **image:** dataUri should return random type ([#​3347](https://redirect.github.com/faker-js/faker/issues/3347)) ([eceb17d](https://redirect.github.com/faker-js/faker/commit/eceb17d25741c5fb1bd56b8151067eed3708a076)) - **locales:** update chemical element names in zh\_CN ([#​3371](https://redirect.github.com/faker-js/faker/issues/3371)) ([6ec6f84](https://redirect.github.com/faker-js/faker/commit/6ec6f84922a16a8489215ba152e683227f5c8262)) - **location:** fix bad uz street\_name\_part data ([#​3328](https://redirect.github.com/faker-js/faker/issues/3328)) ([b6132cb](https://redirect.github.com/faker-js/faker/commit/b6132cbee67ae7e53f57ffb344688d3980f91d3d)) - **music:** fix truncated song names with commas ([#​3327](https://redirect.github.com/faker-js/faker/issues/3327)) ([f36fc71](https://redirect.github.com/faker-js/faker/commit/f36fc71ac4cce6d5a6c9e6b16d7a22a98a01db74)), closes [#​996](https://redirect.github.com/faker-js/faker/issues/996) - **system:** semver parts should not be limited to 0-9 ([#​3349](https://redirect.github.com/faker-js/faker/issues/3349)) ([c0d92b8](https://redirect.github.com/faker-js/faker/commit/c0d92b8fa856d0c841f5aee57c6e08627025447a)) ### [`v9.3.0`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#930-2024-12-02) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v9.2.0...v9.3.0) ##### Features - add initial seed parameter to constructors ([#​3220](https://redirect.github.com/faker-js/faker/issues/3220)) ([1633c8d](https://redirect.github.com/faker-js/faker/commit/1633c8deb8f6f41151b39b62689ae3e02ab295bc)) ##### Changed Locales - **locale:** improve zh\_CN vehicle manufacturers ([#​3254](https://redirect.github.com/faker-js/faker/issues/3254)) ([9abaed1](https://redirect.github.com/faker-js/faker/commit/9abaed1061b5fa9dc9f93822162610105a788296)) - **locale:** lowercase Mexican color names ([#​3200](https://redirect.github.com/faker-js/faker/issues/3200)) ([0d85075](https://redirect.github.com/faker-js/faker/commit/0d850758d0ea0db45a9a4c8abda5c1e09796fb44)) - **locale:** sort person data ([#​3269](https://redirect.github.com/faker-js/faker/issues/3269)) ([01e20e9](https://redirect.github.com/faker-js/faker/commit/01e20e9695575211ee63c7a937f4ae93a934ef32)) - **locale:** split en\_AU\_ocker first\_names by sex ([#​3270](https://redirect.github.com/faker-js/faker/issues/3270)) ([b0a5ad3](https://redirect.github.com/faker-js/faker/commit/b0a5ad38bb6e516ba4a6776342c0bb389ca17363)) - **locale:** split up Spanish generic first names ([#​3279](https://redirect.github.com/faker-js/faker/issues/3279)) ([5d5fe30](https://redirect.github.com/faker-js/faker/commit/5d5fe30ab4f4df092a1ebac991cdf4a345f604fc)) - **locale:** update Polish city name ([#​3306](https://redirect.github.com/faker-js/faker/issues/3306)) ([53441b7](https://redirect.github.com/faker-js/faker/commit/53441b77731f9d15bb7823de8050a18ecbbbe22a)) ##### Bug Fixes - **internet:** ensure domainWord always returns a valid value in all locales ([#​3253](https://redirect.github.com/faker-js/faker/issues/3253)) ([525fedc](https://redirect.github.com/faker-js/faker/commit/525fedc91bd02f53330cfb40fe228b148dcf562b)) - **locale:** add Isadora to female names in pt\_BR for consistency ([#​3282](https://redirect.github.com/faker-js/faker/issues/3282)) ([b390432](https://redirect.github.com/faker-js/faker/commit/b390432626811d2af32086b16151bc4c55634c60)) - **locale:** fix incorrect accents in it first\_name ([#​3281](https://redirect.github.com/faker-js/faker/issues/3281)) ([e0fb23e](https://redirect.github.com/faker-js/faker/commit/e0fb23ef81009f565676485d63b6fe97afd8a31e)) ### [`v9.2.0`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#920-2024-11-03) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v9.1.0...v9.2.0) ##### Features - **animal:** add petName method ([#​3196](https://redirect.github.com/faker-js/faker/issues/3196)) ([c02beea](https://redirect.github.com/faker-js/faker/commit/c02beeadd49e48656a0307451517e9751e3118c3)) - **number:** add romanNumeral method ([#​3070](https://redirect.github.com/faker-js/faker/issues/3070)) ([72937de](https://redirect.github.com/faker-js/faker/commit/72937de55c892c011846bc2b67dc0df61fbdf5a2)) ##### Changed Locales - **locale:** improve Spanish color names ([#​3230](https://redirect.github.com/faker-js/faker/issues/3230)) ([99d81be](https://redirect.github.com/faker-js/faker/commit/99d81bed28b36ab525340e32a7349799cbe88eca)) ### [`v9.1.0`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#910-2024-10-26) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v9.0.3...v9.1.0) ##### New Locales - **locale:** add books on pt\_br ([#​3218](https://redirect.github.com/faker-js/faker/issues/3218)) ([af1dbcd](https://redirect.github.com/faker-js/faker/commit/af1dbcdbf363a12c448834dff031a698c8925e2e)) - **locale:** add Swedish(sv) counties ([#​3154](https://redirect.github.com/faker-js/faker/issues/3154)) ([67569d9](https://redirect.github.com/faker-js/faker/commit/67569d93992e6388647118e9e9e319cfdd6721ed)) ##### Features - add book module ([#​2949](https://redirect.github.com/faker-js/faker/issues/2949)) ([2f93d9d](https://redirect.github.com/faker-js/faker/commit/2f93d9da383638b6d232ff8b3cae827ea4c80150)) - **commerce:** more varied product descriptions ([#​3174](https://redirect.github.com/faker-js/faker/issues/3174)) ([ba4ef9a](https://redirect.github.com/faker-js/faker/commit/ba4ef9a5a671ffc6ed10db7fed896dccda90dca1)) - **internet:** add jwt method ([#​2936](https://redirect.github.com/faker-js/faker/issues/2936)) ([e3858f2](https://redirect.github.com/faker-js/faker/commit/e3858f221bb3b6e1278933c0b8e0d98da6854e52)) - **internet:** improve ipv4 method ([#​2992](https://redirect.github.com/faker-js/faker/issues/2992)) ([a5a6c5b](https://redirect.github.com/faker-js/faker/commit/a5a6c5b4e1145b1e21e5d8e540bc6f55f97d3a84)) - **location:** add `continent` method ([#​3162](https://redirect.github.com/faker-js/faker/issues/3162)) ([4056ab0](https://redirect.github.com/faker-js/faker/commit/4056ab09c64be40d41562284ec64e7531fbaff41)) - **string:** adds support for generating ULID ([#​2524](https://redirect.github.com/faker-js/faker/issues/2524)) ([5b1c858](https://redirect.github.com/faker-js/faker/commit/5b1c8588f8a57be712e64434f7b17a8407a4f465)) ##### Changed Locales - **locale:** enhance en vehicle manufacturers ([#​3187](https://redirect.github.com/faker-js/faker/issues/3187)) ([858f8d0](https://redirect.github.com/faker-js/faker/commit/858f8d07b098418a7a2b7cb2e265eb9f4388ed3d)) - **locale:** modernise buzz- and catch-phrases ([#​2930](https://redirect.github.com/faker-js/faker/issues/2930)) ([247c86f](https://redirect.github.com/faker-js/faker/commit/247c86f5b40916957123cb3fa1bd4356d8fa7452)) - **locale:** remove inaccessible files ([#​3205](https://redirect.github.com/faker-js/faker/issues/3205)) ([89b695c](https://redirect.github.com/faker-js/faker/commit/89b695cbaf20206ebb4570d018af2fa99f720889)) - **locale:** trim excessive Croatian last names ([#​3204](https://redirect.github.com/faker-js/faker/issues/3204)) ([18e59aa](https://redirect.github.com/faker-js/faker/commit/18e59aa8805b3413b6f8058b1a00ff5bcbfbc935)) ##### Bug Fixes - **food:** use arrayElement instead of fake for adjective ([#​3178](https://redirect.github.com/faker-js/faker/issues/3178)) ([a8dfa2f](https://redirect.github.com/faker-js/faker/commit/a8dfa2fcde59a1ec9e5beb2e93c690a8ec532cdf)) - **location:** fix US ZIP code anomalies for zipCode({state}) ([#​3180](https://redirect.github.com/faker-js/faker/issues/3180)) ([df59724](https://redirect.github.com/faker-js/faker/commit/df597241003824279268c1dc9eae6c772c54760b)) - **location:** update valid ZIP ranges for FL and VA ([#​3167](https://redirect.github.com/faker-js/faker/issues/3167)) ([e271d4a](https://redirect.github.com/faker-js/faker/commit/e271d4a545dd48e57285019e4f412358c49cad0d)) ### [`v9.0.3`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#903-2024-09-26) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v9.0.2...v9.0.3) ##### Changed Locales - **locale:** update french legal entity types ([#​3142](https://redirect.github.com/faker-js/faker/issues/3142)) ([d6bceb6](https://redirect.github.com/faker-js/faker/commit/d6bceb662de6559446fedb11de53a632a525aba0)) ##### Bug Fixes - **image:** fix dataUri with type svg-base64 in browsers ([#​3144](https://redirect.github.com/faker-js/faker/issues/3144)) ([78b2a3a](https://redirect.github.com/faker-js/faker/commit/78b2a3a8b85679eeff27beccebcc404b0a5ff3cf)) ### [`v9.0.2`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#902-2024-09-23) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v9.0.1...v9.0.2) ##### Bug Fixes - **locale:** improve pt\_PT location and person data ([#​3020](https://redirect.github.com/faker-js/faker/issues/3020)) ([3e47ee7](https://redirect.github.com/faker-js/faker/commit/3e47ee7da671296e11ed2b219f85b06c9d05d677)) ### [`v9.0.1`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#901-2024-09-14) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v9.0.0...v9.0.1) ##### Bug Fixes - emit cts types ([#​3093](https://redirect.github.com/faker-js/faker/issues/3093)) ([53ef42c](https://redirect.github.com/faker-js/faker/commit/53ef42cc192996a0e09bba9d5f5f8a70a7932275)) ### [`v9.0.0`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#900-2024-09-02) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v8.4.1...v9.0.0) No noteworthy changes to [9.0.0-rc.1](https://redirect.github.com/faker-js/faker/blob/next/CHANGELOG.md#900-rc1-2024-08-19) For those upgrading from earlier versions, please refer to our [Migration Guide](https://v9.fakerjs.dev/guide/upgrading.html) for detailed instructions. ### [`v8.4.1`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#841-2024-02-06) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v8.4.0...v8.4.1) - JSDocs improvements ### [`v8.4.0`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#840-2024-01-24) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v8.3.1...v8.4.0) ##### Features - **helpers:** add support for complex intermediate types ([#​2550](https://redirect.github.com/faker-js/faker/issues/2550)) ([24482a3](https://redirect.github.com/faker-js/faker/commit/24482a30042eec5b553b30d60985e89fd69a8660)) - **number:** add parameter `fractionDigits` in float ([#​1855](https://redirect.github.com/faker-js/faker/issues/1855)) ([41d8778](https://redirect.github.com/faker-js/faker/commit/41d87789c7ff353acfd0f5ca88a99c0d1fd3b500)) - **person:** add job titles for fr ([#​2531](https://redirect.github.com/faker-js/faker/issues/2531)) ([ba28ab6](https://redirect.github.com/faker-js/faker/commit/ba28ab6e59009cceb5b691ddd212e09df22b586e)) ##### Bug Fixes - **finance:** correct VG IBAN format ([#​2552](https://redirect.github.com/faker-js/faker/issues/2552)) ([b8049d1](https://redirect.github.com/faker-js/faker/commit/b8049d171086bce7b46eb617c88f44cfdd019e00)) - **internet:** username method to return value that always includes… ([#​2506](https://redirect.github.com/faker-js/faker/issues/2506)) ([0ee1c67](https://redirect.github.com/faker-js/faker/commit/0ee1c6751ec97e10ca1436d2b100b4acb1ac90ec)) - **locale:** incomplete airline names in zh\_CN ([#​2558](https://redirect.github.com/faker-js/faker/issues/2558)) ([5525b55](https://redirect.github.com/faker-js/faker/commit/5525b55cc47fa97b55de52fccff7ab51633e639a)) - **number:** improve float generation for precisions of form 10^-n ([#​2581](https://redirect.github.com/faker-js/faker/issues/2581)) ([39c715d](https://redirect.github.com/faker-js/faker/commit/39c715d916d69e83795932260f1681df3241db91)) ##### [8.3.1](https://redirect.github.com/faker-js/faker/compare/v8.3.0...v8.3.1) (2023-11-14) ##### Bug Fixes - remove `[@internal](https://redirect.github.com/internal)` from module parent classes ([#​2548](https://redirect.github.com/faker-js/faker/issues/2548)) ([77f54ad](https://redirect.github.com/faker-js/faker/commit/77f54ad78f9d7952b3b315f72878267f18ed1e69)) ### [`v8.3.1`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#831-2023-11-14) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v8.3.0...v8.3.1) ### [`v8.3.0`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#830-2023-11-14) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v8.2.0...v8.3.0) ##### Features - **person:** use fake patterns for jobTitle ([#​2528](https://redirect.github.com/faker-js/faker/issues/2528)) ([b40ad45](https://redirect.github.com/faker-js/faker/commit/b40ad45ad3cca6769968a63264e6d925bf4b328a)) ##### Bug Fixes - **date:** ensures correct range for birthdate ([#​2535](https://redirect.github.com/faker-js/faker/issues/2535)) ([7ce8c28](https://redirect.github.com/faker-js/faker/commit/7ce8c285cb5b2d13e95a17be78ecbd52f3c7d9db)) - **finance:** maskedNumber has incorrect defaults ([#​2494](https://redirect.github.com/faker-js/faker/issues/2494)) ([e0ba50b](https://redirect.github.com/faker-js/faker/commit/e0ba50b37e438503ed1899bff35afc92b4f8f49c)) - **locale:** improve Swedish phone numbers format ([#​2520](https://redirect.github.com/faker-js/faker/issues/2520)) ([e4865df](https://redirect.github.com/faker-js/faker/commit/e4865df199359797397cc3c5455f3a1a9c179f93)) ##### Changed Locales - **locale:** remove fr\_CH data which is identical to fr ([#​2526](https://redirect.github.com/faker-js/faker/issues/2526)) ([fafcba4](https://redirect.github.com/faker-js/faker/commit/fafcba473f8a91eeb8230ebdc1ad5039b25091e1)) ##### New Locales - **locale:** add person to fr\_SN ([#​2537](https://redirect.github.com/faker-js/faker/issues/2537)) ([ef965da](https://redirect.github.com/faker-js/faker/commit/ef965da48a8089e6bb19bcf260bfcd8af1a43799)) - **locale:** add Senegal locale ([#​2525](https://redirect.github.com/faker-js/faker/issues/2525)) ([6df70bc](https://redirect.github.com/faker-js/faker/commit/6df70bce16500ab74a37f932f2e17a08f297430b)) - **locale:** add streets to location fr\_SN ([#​2536](https://redirect.github.com/faker-js/faker/issues/2536)) ([36fc517](https://redirect.github.com/faker-js/faker/commit/36fc517d17591c8ea1d5135d9a93c7591e3d1f74)) - **locale:** and location to fr\_SN ([#​2533](https://redirect.github.com/faker-js/faker/issues/2533)) ([f730125](https://redirect.github.com/faker-js/faker/commit/f730125ffb941fe936d6a18c775cbe3a99b312dc)) ### [`v8.2.0`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#820-2023-10-14) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v8.1.0...v8.2.0) ##### Features - support custom randomizer ([#​2284](https://redirect.github.com/faker-js/faker/issues/2284)) ([5410239](https://redirect.github.com/faker-js/faker/commit/5410239245b4a6fe8c1976f8aa33c970923f9f40)) ##### Bug Fixes - **docs:** revert filter code that breaks search in docs ([#​2425](https://redirect.github.com/faker-js/faker/issues/2425)) ([c498c09](https://redirect.github.com/faker-js/faker/commit/c498c091f488db287684690ab4ff109b1589523f)) - **locale:** Dutch phone number ([#​2400](https://redirect.github.com/faker-js/faker/issues/2400)) ([005369b](https://redirect.github.com/faker-js/faker/commit/005369b29c7ee290a870396ff0acc85e3f715e10)) ##### New Locales - **locale:** add airline database science commerce and vehicle for zh\_CN ([#​2395](https://redirect.github.com/faker-js/faker/issues/2395)) ([9c96c0a](https://redirect.github.com/faker-js/faker/commit/9c96c0a131e0609a21dc5ee110cc407e76852373)) - **locale:** add street\_name to `en_US`, `en_GB` and `en` ([#​2371](https://redirect.github.com/faker-js/faker/issues/2371)) ([491d319](https://redirect.github.com/faker-js/faker/commit/491d3191213e2ceaaee46dcc50ac25c3995ba2d5)) - **locale:** add unionpay credit card for zh\_CN ([#​2338](https://redirect.github.com/faker-js/faker/issues/2338)) ([74eeccc](https://redirect.github.com/faker-js/faker/commit/74eecccd3af702d8a1d8072f94032ccb54293cb1)) ### [`v8.1.0`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#810-2023-09-19) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v8.0.2...v8.1.0) ##### Features - **color:** migrate hu human colors ([#​2157](https://redirect.github.com/faker-js/faker/issues/2157)) ([19635a7](https://redirect.github.com/faker-js/faker/commit/19635a7ef3381a475185a2857b59f943dee9be54)) - **commerce:** add method for generating ISBN-10 and ISBN-13 ([#​2240](https://redirect.github.com/faker-js/faker/issues/2240)) ([cb4ef28](https://redirect.github.com/faker-js/faker/commit/cb4ef2846ad8d09cdc4ca5366b6057f9f6e38783)) - **image:** add image dataUri with base64 ([#​2273](https://redirect.github.com/faker-js/faker/issues/2273)) ([869b9b4](https://redirect.github.com/faker-js/faker/commit/869b9b49e77848f2ad9677e54b4ab6db6cf5c58b)) - **location:** add en\_IE postcodes ([#​2149](https://redirect.github.com/faker-js/faker/issues/2149)) ([e92c313](https://redirect.github.com/faker-js/faker/commit/e92c313970a9830f3328b20504313fc9ba2e61a5)) - **location:** add ne postcodes ([#​2148](https://redirect.github.com/faker-js/faker/issues/2148)) ([36d1d3a](https://redirect.github.com/faker-js/faker/commit/36d1d3a6260067708474d057281d71bf3f95daf1)) - **location:** add states for mk ([#​2271](https://redirect.github.com/faker-js/faker/issues/2271)) ([1b3e5eb](https://redirect.github.com/faker-js/faker/commit/1b3e5ebd8a6a6d70b50c1acae11d4b86c2858a2b)) - **location:** add states for pt\_PT ([#​2269](https://redirect.github.com/faker-js/faker/issues/2269)) ([a4631db](https://redirect.github.com/faker-js/faker/commit/a4631dbb82e157bf5b9e63b26de47df396b91f50)) - **location:** add states for sr\_RS\_latin ([#​2270](https://redirect.github.com/faker-js/faker/issues/2270)) ([1de471f](https://redirect.github.com/faker-js/faker/commit/1de471f83a52b2533bb95ea462c44289cb9ea497)) - **location:** es province should be county ([#​2156](https://redirect.github.com/faker-js/faker/issues/2156)) ([bbda1d7](https://redirect.github.com/faker-js/faker/commit/bbda1d7e2ce0b0bd33a3cc78458a73cd79e3eca0)) - **location:** fi addresses ([#​2146](https://redirect.github.com/faker-js/faker/issues/2146)) ([1da6785](https://redirect.github.com/faker-js/faker/commit/1da6785af373566ce6399e93ea0aca465e19e898)) - **location:** Support ISO 3166-1 numeric country codes ([#​2325](https://redirect.github.com/faker-js/faker/issues/2325)) ([82b779d](https://redirect.github.com/faker-js/faker/commit/82b779da5e87fddd7b5a5564b7228ac54b44d349)) - **location:** update en county list ([#​2238](https://redirect.github.com/faker-js/faker/issues/2238)) ([6bb4775](https://redirect.github.com/faker-js/faker/commit/6bb4775747288130c1bbca5fe02eccc549465682)) - **lorem:** seed AR lorem ([#​2147](https://redirect.github.com/faker-js/faker/issues/2147)) ([6137801](https://redirect.github.com/faker-js/faker/commit/6137801ebfe2ff51ca82d52fcb2a63085bd17bcd)) - **metadata:** add method to access metadata ([#​2143](https://redirect.github.com/faker-js/faker/issues/2143)) ([fd8cfe5](https://redirect.github.com/faker-js/faker/commit/fd8cfe53fd59b89f91a07327711faafdd821999e)) - split SimpleFaker class from Faker ([#​2369](https://redirect.github.com/faker-js/faker/issues/2369)) ([d6a4f8c](https://redirect.github.com/faker-js/faker/commit/d6a4f8c2ddf9e957e875bc3fab77e496104d1320)) ##### Bug Fixes - **helpers:** prevent uniqueArray from hanging ([#​2239](https://redirect.github.com/faker-js/faker/issues/2239)) ([3dece09](https://redirect.github.com/faker-js/faker/commit/3dece0904933f9632afabdacd0f2b5b32d8bde2a)) - **image:** dataUri is not random ([#​2316](https://redirect.github.com/faker-js/faker/issues/2316)) ([a7d25fa](https://redirect.github.com/faker-js/faker/commit/a7d25fa6224c686bca8b21cb7961910362008ffb)) - **locale:** invalid date definitions ([#​2293](https://redirect.github.com/faker-js/faker/issues/2293)) ([3cecae9](https://redirect.github.com/faker-js/faker/commit/3cecae9cd6787899a61bc91812e94478acb3adb9)) - **locale:** limited ja first names without passing sex ([#​2190](https://redirect.github.com/faker-js/faker/issues/2190)) ([5de8874](https://redirect.github.com/faker-js/faker/commit/5de8874a8a3cdf2d1529a7d42b1f39ab6e45efe5)) - **locale:** remove continent from ja countries ([#​2194](https://redirect.github.com/faker-js/faker/issues/2194)) ([cdd162a](https://redirect.github.com/faker-js/faker/commit/cdd162a6fed3588a0fd34dca8db46c078d4c7b22)) - **locale:** remove duplicated countries in `ja` locale ([#​2189](https://redirect.github.com/faker-js/faker/issues/2189)) ([785a38a](https://redirect.github.com/faker-js/faker/commit/785a38acc5fdc0414cc54a10e8cd9b8bee669852)) - **location:** avoid hyphenated surnames in city patterns ([#​2119](https://redirect.github.com/faker-js/faker/issues/2119)) ([7a4bb43](https://redirect.github.com/faker-js/faker/commit/7a4bb43f56c22578e63d02954586a001384d9af2)) - **location:** Czech postcode format ([#​2268](https://redirect.github.com/faker-js/faker/issues/2268)) ([37898ca](https://redirect.github.com/faker-js/faker/commit/37898ca78bae0a516a03c4ecd053bfab523df2ed)) - **location:** Dutch postal codes can never start with '0' ([#​2326](https://redirect.github.com/faker-js/faker/issues/2326)) ([f195e06](https://redirect.github.com/faker-js/faker/commit/f195e06905a8384965990e686440c3714976445c)) - **location:** Pad en\_US ZIP codes left to 5 characters if needed ([#​2278](https://redirect.github.com/faker-js/faker/issues/2278)) ([0ca1e44](https://redirect.github.com/faker-js/faker/commit/0ca1e442d6a882677fc73012fc481d48ca1905a5)) - remove unrelated from de\_CH country codes ([#​2304](https://redirect.github.com/faker-js/faker/issues/2304)) ([aa1bb13](https://redirect.github.com/faker-js/faker/commit/aa1bb131d874591e4d46671b1e82b23fc2a7ad74)) - **test:** fix imports for jsdocs example verification ([#​2281](https://redirect.github.com/faker-js/faker/issues/2281)) ([2fe1308](https://redirect.github.com/faker-js/faker/commit/2fe13089c96f6a2826e60c45fa1acf20dde06d41)) - **test:** typedoc signature test issues ([#​2280](https://redirect.github.com/faker-js/faker/issues/2280)) ([02fc7ca](https://redirect.github.com/faker-js/faker/commit/02fc7caf1cf757ae5901b8d37cd5d8d7ed123724)) ##### Changed Locales - **locale:** cs\_CZ state\_abbr not applicable ([#​2140](https://redirect.github.com/faker-js/faker/issues/2140)) ([e86f3b6](https://redirect.github.com/faker-js/faker/commit/e86f3b6b2619cc7fdf28213de0e6ff676a3e2d7e)) ##### New Locales - **locale:** add bio, animal, word, music for zh\_CN ([#​2332](https://redirect.github.com/faker-js/faker/issues/2332)) ([8e4ea67](https://redirect.github.com/faker-js/faker/commit/8e4ea6790df4b987d1a8c6d32d1eee6db924bed3)) - **locale:** add company name to zh\_CN ([#​2203](https://redirect.github.com/faker-js/faker/issues/2203)) ([c3b540f](https://redirect.github.com/faker-js/faker/commit/c3b540fa501ba4729350562f38872df35f23818c)) - **locale:** add da person category ([#​2331](https://redirect.github.com/faker-js/faker/issues/2331)) ([466b804](https://redirect.github.com/faker-js/faker/commit/466b8043577a14c54545a942c05ade343a9ca260)) - **locale:** add database for German (de) ([#​2226](https://redirect.github.com/faker-js/faker/issues/2226)) ([ee12c32](https://redirect.github.com/faker-js/faker/commit/ee12c32fced6cdf6fef2c5993af84825fd88606f)) - **locale:** add direction to ja ([#​2191](https://redirect.github.com/faker-js/faker/issues/2191)) ([2fa60de](https://redirect.github.com/faker-js/faker/commit/2fa60dec77551c055571ce3439f00c8898399d60)) - **locale:** add Dutch province abbreviations ([#​2232](https://redirect.github.com/faker-js/faker/issues/2232)) ([4a15bd0](https://redirect.github.com/faker-js/faker/commit/4a15bd0d4eea5e5f6a7d1e6be0c2bf9e59feb069)) - **locale:** add Esperanto ([#​2230](https://redirect.github.com/faker-js/faker/issues/2230)) ([d91057d](https://redirect.github.com/faker-js/faker/commit/d91057ddfd36b15af783ab6bcb1d679cf5202347)) - **locale:** add finance module for zh\_CN ([#​2370](https://redirect.github.com/faker-js/faker/issues/2370)) ([aea4c9b](https://redirect.github.com/faker-js/faker/commit/aea4c9bda8e75e928045bfca9e11e216a581ce05)) - **locale:** add GB subdivision codes ([#​2233](https://redirect.github.com/faker-js/faker/issues/2233)) ([5eec65f](https://redirect.github.com/faker-js/faker/commit/5eec65f7179b7db68efe7740695b37958b360212)) - **locale:** add hacker for zh\_CN ([#​2337](https://redirect.github.com/faker-js/faker/issues/2337)) ([9176fcb](https://redirect.github.com/faker-js/faker/commit/9176fcbaa74cf0a341374bb44340e410255e0917)) - **locale:** add minimal da locale, start with location ([#​2324](https://redirect.github.com/faker-js/faker/issues/2324)) ([c158b38](https://redirect.github.com/faker-js/faker/commit/c158b38b025b333c97cf174d516776b61015179f)) - **locale:** add person data for yo locale ([#​2363](https://redirect.github.com/faker-js/faker/issues/2363)) ([76886ad](https://redirect.github.com/faker-js/faker/commit/76886ad96d694268856de83747d7c754b6504050)) - **locale:** add states for Croatia (hr) ([#​2142](https://redirect.github.com/faker-js/faker/issues/2142)) ([8a6ce49](https://redirect.github.com/faker-js/faker/commit/8a6ce4978fada63f6364237e968f427e0a198135)) - **locale:** add states for Turkey (tr) ([#​2231](https://redirect.github.com/faker-js/faker/issues/2231)) ([2afa23f](https://redirect.github.com/faker-js/faker/commit/2afa23f32f4bb52aeecb6189282b37c6c48f7c84)) - **locale:** add states to vi locale and fix city name ([#​2128](https://redirect.github.com/faker-js/faker/issues/2128)) ([bc2aaab](https://redirect.github.com/faker-js/faker/commit/bc2aaab7637ea7a3e6e62e790cd4681ccaaccea0)) - **locale:** add word category for da ([#​2359](https://redirect.github.com/faker-js/faker/issues/2359)) ([8e5bc22](https://redirect.github.com/faker-js/faker/commit/8e5bc222c67cad38fd406823f5aade91a409e12a)) - **locale:** added commerce and company data for da ([#​2378](https://redirect.github.com/faker-js/faker/issues/2378)) ([604d52d](https://redirect.github.com/faker-js/faker/commit/604d52d9874db1763c185483ed182199f7a00f4f)) - **locale:** added word and music to Farsi ([#​2210](https://redirect.github.com/faker-js/faker/issues/2210)) ([7687511](https://redirect.github.com/faker-js/faker/commit/7687511bddf9c7b9721bb2203f86d64dfbd1a9c4)) - **locale:** fix wide month and add music for zh\_CN ([#​2380](https://redirect.github.com/faker-js/faker/issues/2380)) ([501602b](https://redirect.github.com/faker-js/faker/commit/501602b6b3ddcb100eea7e2441e7f20093b9e183)) - **locale:** improve persons and locations for zh\_CN ([#​2318](https://redirect.github.com/faker-js/faker/issues/2318)) ([87d3423](https://redirect.github.com/faker-js/faker/commit/87d3423960d326494d1710946f29fb3930d1a300)) - **locale:** improve zh\_TW ([#​2320](https://redirect.github.com/faker-js/faker/issues/2320)) ([c5dfe27](https://redirect.github.com/faker-js/faker/commit/c5dfe27acd13003962a5cd93f9632392fda41399)) - **locale:** support color and date for zh\_CN ([#​2223](https://redirect.github.com/faker-js/faker/issues/2223)) ([6736cbf](https://redirect.github.com/faker-js/faker/commit/6736cbf9aeeb02a3eb080f0f85c37f141f6924fd)) - **locale:** update Dutch locale (nl) ([#​2237](https://redirect.github.com/faker-js/faker/issues/2237)) ([12a511c](https://redirect.github.com/faker-js/faker/commit/12a511c9e4781929620dc2906f87661c5f58a480)) ##### [8.0.2](https://redirect.github.com/faker-js/faker/compare/v8.0.1...v8.0.2) (2023-05-27) ##### Bug Fixes - **git:** limit need for Intl to specific method ([#​2172](https://redirect.github.com/faker-js/faker/issues/2172)) ([a5e73f8](https://redirect.github.com/faker-js/faker/commit/a5e73f8a11baeefcf03f344cb5e4dde096a0b364)) - **locale:** en\_HK last\_name\_patterns should be last\_name\_pattern ([#​2154](https://redirect.github.com/faker-js/faker/issues/2154)) ([03cc391](https://redirect.github.com/faker-js/faker/commit/03cc39154886a0708e13ee2db239c001ce20aa6e)) - **locale:** ro\_MD city should be city\_pattern ([#​2155](https://redirect.github.com/faker-js/faker/issues/2155)) ([c173150](https://redirect.github.com/faker-js/faker/commit/c173150a96a95818b0c4fd6cb2d41daea7e9ad0a)) ### [`v8.0.2`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#802-2023-05-27) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v8.0.1...v8.0.2) ### [`v8.0.1`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#801-2023-05-15) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v8.0.0...v8.0.1) - **docs:** switch doc links to stable ([#​2152](https://redirect.github.com/faker-js/faker/pull/2152)) ([8f741bd](https://redirect.github.com/faker-js/faker/commit/8f741bd4bda455517fd048b83d76bd8e6d89d78e)) ### [`v8.0.0`](https://redirect.github.com/faker-js/faker/blob/HEAD/CHANGELOG.md#800-2023-05-11) [Compare Source](https://redirect.github.com/faker-js/faker/compare/v7.6.0...v8.0.0) ##### Bug Fixes - **docs:** fix faker v7 code example for locale migration ([#​2125](https://redirect.github.com/faker-js/faker/issues/2125)) ([b570461](https://redirect.github.com/faker-js/faker/commit/b57046190754b651842dba14170730f3f7ebd8b5)) - **locales:** add real cities for zu\_ZA and af\_ZA, update en\_ZA city list ([#​2141](https://redirect.github.com/faker-js/faker/issues/2141)) ([ee8c97c](https://redirect.github.com/faker-js/faker/commit/ee8c97cf6e80025707d5cf458981a14be06406ed))
--- ### Configuration 📅 **Schedule**: (in timezone Etc/UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://redirect.github.com/renovatebot/renovate). --------- Co-authored-by: tryghost-renovate[bot] <269725441+tryghost-renovate[bot]@users.noreply.github.com> Co-authored-by: Steve Larson <9larsons@gmail.com> --- ghost/admin/mirage/config/members.js | 6 +++--- ghost/admin/mirage/factories/member.js | 4 ++-- ghost/admin/mirage/factories/offer.js | 4 ++-- ghost/admin/package.json | 2 +- pnpm-lock.yaml | 28 ++++++++++---------------- pnpm-workspace.yaml | 2 +- 6 files changed, 20 insertions(+), 26 deletions(-) diff --git a/ghost/admin/mirage/config/members.js b/ghost/admin/mirage/config/members.js index 1a20914548d..e9cc46a5126 100644 --- a/ghost/admin/mirage/config/members.js +++ b/ghost/admin/mirage/config/members.js @@ -19,7 +19,7 @@ export function mockMembersStats(server) { server.get('/members/stats/count', withPermissionsCheck(ALLOWED_ROLES, function (db, {queryParams}) { let {days} = queryParams; - let firstSubscriberDays = faker.datatype.number({min: 30, max: 600}); + let firstSubscriberDays = faker.number.int({min: 30, max: 600}); if (days === 'all-time') { days = firstSubscriberDays; @@ -29,7 +29,7 @@ export function mockMembersStats(server) { let total = 0; if (firstSubscriberDays > days) { - total += faker.datatype.number({max: 1000}); + total += faker.number.int({max: 1000}); } // simulate sql GROUP BY where days with 0 subscribers are missing @@ -37,7 +37,7 @@ export function mockMembersStats(server) { let i = 0; while (i < days) { let date = moment().subtract(i, 'days').format('YYYY-MM-DD'); - let count = faker.datatype.number({min: 0, max: 30}); + let count = faker.number.int({min: 0, max: 30}); if (count !== 0) { dateCounts[date] = count; diff --git a/ghost/admin/mirage/factories/member.js b/ghost/admin/mirage/factories/member.js index b3828eff3b2..723310027b5 100644 --- a/ghost/admin/mirage/factories/member.js +++ b/ghost/admin/mirage/factories/member.js @@ -7,8 +7,8 @@ let randomDate = function randomDate(start = moment().subtract(30, 'days').toDat }; export default Factory.extend({ - name() { return `${faker.name.firstName()} ${faker.name.lastName()}`; }, - email: faker.internet.email, + name() { return `${faker.person.firstName()} ${faker.person.lastName()}`; }, + email() { return faker.internet.email(); }, status: 'free', createdAt() { return moment.utc(randomDate()).format('YYYY-MM-DD HH:mm:ss'); }, diff --git a/ghost/admin/mirage/factories/offer.js b/ghost/admin/mirage/factories/offer.js index fd4f51a3b1d..acf194b2448 100644 --- a/ghost/admin/mirage/factories/offer.js +++ b/ghost/admin/mirage/factories/offer.js @@ -7,8 +7,8 @@ let randomDate = function randomDate(start = moment().subtract(30, 'days').toDat }; export default Factory.extend({ - name() { return `${faker.name.firstName()} ${faker.name.lastName()}`; }, - amount() { return faker.datatype.number({min: 1, max: 10}); }, + name() { return `${faker.person.firstName()} ${faker.person.lastName()}`; }, + amount() { return faker.number.int({min: 1, max: 10}); }, displayTitle() { return faker.lorem.word(); }, code() { return faker.lorem.slug(); }, createdAt() { return randomDate(); }, diff --git a/ghost/admin/package.json b/ghost/admin/package.json index 65a5de402ee..068990f2e88 100644 --- a/ghost/admin/package.json +++ b/ghost/admin/package.json @@ -37,7 +37,7 @@ "@ember/test-helpers": "2.9.6", "@ember/test-waiters": "3.1.0", "@embroider/macros": "1.16.13", - "@faker-js/faker": "7.6.0", + "@faker-js/faker": "10.4.0", "@glimmer/component": "1.1.2", "@html-next/vertical-collection": "3.0.0", "@sentry/ember": "7.120.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index db8b5a3521b..8747bd9b7d8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -13,8 +13,8 @@ catalogs: specifier: 8.57.1 version: 8.57.1 '@faker-js/faker': - specifier: 9.9.0 - version: 9.9.0 + specifier: 10.4.0 + version: 10.4.0 '@playwright/test': specifier: 1.60.0 version: 1.60.0 @@ -1811,7 +1811,7 @@ importers: devDependencies: '@faker-js/faker': specifier: 'catalog:' - version: 9.9.0 + version: 10.4.0 '@testing-library/jest-dom': specifier: 'catalog:' version: 6.9.1 @@ -1877,7 +1877,7 @@ importers: version: 8.57.1 '@faker-js/faker': specifier: 'catalog:' - version: 9.9.0 + version: 10.4.0 '@playwright/test': specifier: 'catalog:' version: 1.60.0 @@ -1970,8 +1970,8 @@ importers: specifier: 1.16.13 version: 1.16.13 '@faker-js/faker': - specifier: 7.6.0 - version: 7.6.0 + specifier: 10.4.0 + version: 10.4.0 '@glimmer/component': specifier: 1.1.2 version: 1.1.2(@babel/core@7.29.7) @@ -2319,7 +2319,7 @@ importers: version: 3.2.1(encoding@0.1.13) '@faker-js/faker': specifier: 'catalog:' - version: 9.9.0 + version: 10.4.0 '@isaacs/ttlcache': specifier: 1.4.1 version: 1.4.1 @@ -4907,13 +4907,9 @@ packages: resolution: {integrity: sha512-ZwOY/SFqDph/1J4KfTTOKgGcy5xIrOSkK8b5KDHyoIg8AZ6+uEQ5l7SSNQskc4RxlLZGk+CBNOuRUGfkdPhKLA==} engines: {node: '>= 15'} - '@faker-js/faker@7.6.0': - resolution: {integrity: sha512-XK6BTq1NDMo9Xqw/YkYyGjSsg44fbNwYRx7QK2CuoQgyy+f1rrTDHoExVM5PsyXCtfl2vs2vVJ0MN0yN6LppRw==} - engines: {node: '>=14.0.0', npm: '>=6.0.0'} - - '@faker-js/faker@9.9.0': - resolution: {integrity: sha512-OEl393iCOoo/z8bMezRlJu+GlRGlsKbUAN7jKB6LhnKoqKve5DXRpalbItIIcwnCjs1k/FOPjFzcA6Qn+H+YbA==} - engines: {node: '>=18.0.0', npm: '>=9.0.0'} + '@faker-js/faker@10.4.0': + resolution: {integrity: sha512-sDBWI3yLy8EcDzgobvJTWq1MJYzAkQdpjXuPukga9wXonhpMRvd1Izuo2Qgwey2OiEoRIBr35RMU9HJRoOHzpw==} + engines: {node: ^20.19.0 || ^22.13.0 || ^23.5.0 || >=24.0.0, npm: '>=10'} '@fastify/otel@0.18.0': resolution: {integrity: sha512-3TASCATfw+ctICSb4ymrv7iCm0qJ0N9CarB+CZ7zIJ7KqNbwI5JjyDL1/sxoC0ccTO1Zyd1iQ+oqncPg5FJXaA==} @@ -24424,9 +24420,7 @@ snapshots: transitivePeerDependencies: - encoding - '@faker-js/faker@7.6.0': {} - - '@faker-js/faker@9.9.0': {} + '@faker-js/faker@10.4.0': {} '@fastify/otel@0.18.0(@opentelemetry/api@1.9.1)': dependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index e03dc0c9aa1..3c246759518 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -27,7 +27,7 @@ allowBuilds: catalog: '@ebay/nice-modal-react': 1.2.13 '@eslint/js': 8.57.1 - '@faker-js/faker': 9.9.0 + '@faker-js/faker': 10.4.0 '@playwright/test': 1.60.0 '@radix-ui/react-avatar': 1.1.11 '@radix-ui/react-checkbox': 1.3.3 From b32ff877b8313b870eeb80e042a97688c956c19d Mon Sep 17 00:00:00 2001 From: "tryghost-renovate[bot]" <269725441+tryghost-renovate[bot]@users.noreply.github.com> Date: Tue, 9 Jun 2026 17:18:14 +0000 Subject: [PATCH 03/14] Update CSS preprocessors (#28146) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [autoprefixer](https://redirect.github.com/postcss/autoprefixer) | [`10.4.21` → `10.5.0`](https://renovatebot.com/diffs/npm/autoprefixer/10.4.21/10.5.0) | ![age](https://developer.mend.io/api/mc/badges/age/npm/autoprefixer/10.5.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/autoprefixer/10.4.21/10.5.0?slim=true) | | [cssnano](https://redirect.github.com/cssnano/cssnano) | [`7.1.1` → `7.1.9`](https://renovatebot.com/diffs/npm/cssnano/7.1.1/7.1.9) | ![age](https://developer.mend.io/api/mc/badges/age/npm/cssnano/7.1.9?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/cssnano/7.1.1/7.1.9?slim=true) | | [postcss](https://postcss.org/) ([source](https://redirect.github.com/postcss/postcss)) | [`8.5.10` → `8.5.15`](https://renovatebot.com/diffs/npm/postcss/8.5.10/8.5.15) | ![age](https://developer.mend.io/api/mc/badges/age/npm/postcss/8.5.15?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/postcss/8.5.10/8.5.15?slim=true) | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/28155) for more information. --- ### Release Notes
postcss/autoprefixer (autoprefixer) ### [`v10.5.0`](https://redirect.github.com/postcss/autoprefixer/blob/HEAD/CHANGELOG.md#1050-Each-Endeavouring-All-Achieving) [Compare Source](https://redirect.github.com/postcss/autoprefixer/compare/10.4.27...10.5.0) - Added `mask-position-x` and `mask-position-y` support (by [@​toporek](https://redirect.github.com/toporek)). ### [`v10.4.27`](https://redirect.github.com/postcss/autoprefixer/blob/HEAD/CHANGELOG.md#10427) [Compare Source](https://redirect.github.com/postcss/autoprefixer/compare/10.4.26...10.4.27) - Removed development key from `package.json`. ### [`v10.4.26`](https://redirect.github.com/postcss/autoprefixer/blob/HEAD/CHANGELOG.md#10426) [Compare Source](https://redirect.github.com/postcss/autoprefixer/compare/10.4.25...10.4.26) - Reduced package size. ### [`v10.4.25`](https://redirect.github.com/postcss/autoprefixer/blob/HEAD/CHANGELOG.md#10425) [Compare Source](https://redirect.github.com/postcss/autoprefixer/compare/10.4.24...10.4.25) - Fixed broken gradients on CSS Custom Properties (by [@​serger777](https://redirect.github.com/serger777)). ### [`v10.4.24`](https://redirect.github.com/postcss/autoprefixer/blob/HEAD/CHANGELOG.md#10424) [Compare Source](https://redirect.github.com/postcss/autoprefixer/compare/10.4.23...10.4.24) - Made Autoprefixer a little faster (by [@​Cherry](https://redirect.github.com/Cherry)). ### [`v10.4.23`](https://redirect.github.com/postcss/autoprefixer/blob/HEAD/CHANGELOG.md#10423) [Compare Source](https://redirect.github.com/postcss/autoprefixer/compare/10.4.22...10.4.23) - Reduced dependencies (by [@​hyperz111](https://redirect.github.com/hyperz111)). ### [`v10.4.22`](https://redirect.github.com/postcss/autoprefixer/blob/HEAD/CHANGELOG.md#10422) [Compare Source](https://redirect.github.com/postcss/autoprefixer/compare/10.4.21...10.4.22) - Fixed `stretch` prefixes on new Can I Use database. - Updated `fraction.js`.
cssnano/cssnano (cssnano) ### [`v7.1.9`](https://redirect.github.com/cssnano/cssnano/releases/tag/cssnano%407.1.9): v7.1.9 [Compare Source](https://redirect.github.com/cssnano/cssnano/compare/cssnano@7.1.8...cssnano@7.1.9) #### Bug Fixes - Reject :is() fold for unknown pseudo-classes with arguments by [@​dkryaklin](https://redirect.github.com/dkryaklin) in [#​1791](https://redirect.github.com/cssnano/cssnano/pull/1791) **Full Changelog**: ### [`v7.1.8`](https://redirect.github.com/cssnano/cssnano/releases/tag/cssnano%407.1.8): v7.1.8 [Compare Source](https://redirect.github.com/cssnano/cssnano/compare/cssnano@7.1.7...cssnano@7.1.8) #### What's Changed - fix(postcss-minify-selectors): reject :is() fold for :nth-child(... of S) to preserve cascade by [@​dkryaklin](https://redirect.github.com/dkryaklin) in [#​1785](https://redirect.github.com/cssnano/cssnano/pull/1785) - Update postcss and [@​colordx/core](https://redirect.github.com/colordx/core) by [@​ludofischer](https://redirect.github.com/ludofischer) in [#​1786](https://redirect.github.com/cssnano/cssnano/pull/1786) **Full Changelog**: ### [`v7.1.7`](https://redirect.github.com/cssnano/cssnano/releases/tag/cssnano%407.1.7): v.7.1.7 [Compare Source](https://redirect.github.com/cssnano/cssnano/compare/cssnano@7.1.6...cssnano@7.1.7) This release is idnetical to the previous one, but is being published to ensure that the latest versions of `postcss-normalize-repeat-style` and `postcss-normalize-positions` are uploaded to the npm registry. ### [`v7.1.6`](https://redirect.github.com/cssnano/cssnano/releases/tag/cssnano%407.1.6): v7.1.6 [Compare Source](https://redirect.github.com/cssnano/cssnano/compare/cssnano@7.1.5...cssnano@7.1.6) #### New feature - feat(postcss-minify-selectors): fold selector lists into :is() ([#​1703](https://redirect.github.com/cssnano/cssnano/issues/1703)) by [@​dkryaklin](https://redirect.github.com/dkryaklin) in [#​1775](https://redirect.github.com/cssnano/cssnano/pull/1775) #### Bug fixes - fix: update colordx and autoprefixer - fix: update postcss peer dependency by [@​ludofischer](https://redirect.github.com/ludofischer) in [#​1779](https://redirect.github.com/cssnano/cssnano/pull/1779) Solves possible security issue **Full Changelog**: ### [`v7.1.5`](https://redirect.github.com/cssnano/cssnano/releases/tag/cssnano%407.1.5): v7.1.5 [Compare Source](https://redirect.github.com/cssnano/cssnano/compare/cssnano@7.1.4...cssnano@7.1.5) #### Bug Fixes - fix(postcss-reduce-idents): support counter-set property by [@​dkryaklin](https://redirect.github.com/dkryaklin) in [#​1765](https://redirect.github.com/cssnano/cssnano/pull/1765) - fix(postcss-convert-values): add transformCustomProperties option by [@​dkryaklin](https://redirect.github.com/dkryaklin) in [#​1769](https://redirect.github.com/cssnano/cssnano/pull/1769) - fix(postcss-colormin): add transformCustomProperties option by [@​dkryaklin](https://redirect.github.com/dkryaklin) in [#​1768](https://redirect.github.com/cssnano/cssnano/pull/1768) **Full Changelog**: ### [`v7.1.4`](https://redirect.github.com/cssnano/cssnano/releases/tag/cssnano%407.1.4): v7.1.4 [Compare Source](https://redirect.github.com/cssnano/cssnano/compare/cssnano@7.1.3...cssnano@7.1.4) #### Bug Fixes Update color conversion library to [@​colordx/core](https://redirect.github.com/colordx/core) to fix rounding errors in color conversions [#​1755](https://redirect.github.com/cssnano/cssnano/issues/1755) ### [`v7.1.3`](https://redirect.github.com/cssnano/cssnano/releases/tag/cssnano%407.1.3): v7.1.3 [Compare Source](https://redirect.github.com/cssnano/cssnano/compare/cssnano@7.1.2...cssnano@7.1.3) #### What's Changed - Optimize mergeRule selector merging with WeakMap caching by [@​Goodwine](https://redirect.github.com/Goodwine) in [#​1748](https://redirect.github.com/cssnano/cssnano/pull/1748) **Full Changelog**: ### [`v7.1.2`](https://redirect.github.com/cssnano/cssnano/releases/tag/cssnano%407.1.2): v7.1.2 [Compare Source](https://redirect.github.com/cssnano/cssnano/compare/cssnano@7.1.1...cssnano@7.1.2) #### What's Changed - fix: enhanced recognition of css comments by [@​Nirvana-Jie](https://redirect.github.com/Nirvana-Jie) in [#​1730](https://redirect.github.com/cssnano/cssnano/pull/1730) - chore: use npm trusted publishing by [@​ludofischer](https://redirect.github.com/ludofischer) in [#​1731](https://redirect.github.com/cssnano/cssnano/pull/1731) - fix: update browserslist by [@​ludofischer](https://redirect.github.com/ludofischer) in [#​1733](https://redirect.github.com/cssnano/cssnano/pull/1733) **Full Changelog**:
postcss/postcss (postcss) ### [`v8.5.15`](https://redirect.github.com/postcss/postcss/blob/HEAD/CHANGELOG.md#8515) [Compare Source](https://redirect.github.com/postcss/postcss/compare/8.5.14...8.5.15) - Fixed declaration parsing performance (by [@​homanp](https://redirect.github.com/homanp)). ### [`v8.5.14`](https://redirect.github.com/postcss/postcss/blob/HEAD/CHANGELOG.md#8514) [Compare Source](https://redirect.github.com/postcss/postcss/compare/8.5.13...8.5.14) - Fixed custom syntax regression (by [@​43081j](https://redirect.github.com/43081j)). ### [`v8.5.13`](https://redirect.github.com/postcss/postcss/blob/HEAD/CHANGELOG.md#8513) [Compare Source](https://redirect.github.com/postcss/postcss/compare/8.5.12...8.5.13) - Fixed `postcss-scss` commend regression. ### [`v8.5.12`](https://redirect.github.com/postcss/postcss/blob/HEAD/CHANGELOG.md#8512) [Compare Source](https://redirect.github.com/postcss/postcss/compare/8.5.11...8.5.12) - Fixed reading any file via user-generated CSS. - Added `opts.unsafeMap` to disable checks. ### [`v8.5.11`](https://redirect.github.com/postcss/postcss/blob/HEAD/CHANGELOG.md#8511) [Compare Source](https://redirect.github.com/postcss/postcss/compare/8.5.10...8.5.11) - Fixed nested brackets parsing performance (by [@​offset](https://redirect.github.com/offset)).
--- ### Configuration 📅 **Schedule**: (in timezone Etc/UTC) - Branch creation - Only on Sunday and Saturday (`* * * * 0,6`) - Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`) - Between 12:00 AM and 04:59 AM, Monday through Saturday (`* 0-4 * * 1-6`) - Automerge - Only on Sunday and Saturday (`* * * * 0,6`) - Between 11:00 PM and 11:59 PM, Monday through Friday (`* 23 * * 1-5`) - Between 12:00 AM and 04:59 AM, Monday through Saturday (`* 0-4 * * 1-6`) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Never, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://redirect.github.com/renovatebot/renovate). Co-authored-by: tryghost-renovate[bot] <269725441+tryghost-renovate[bot]@users.noreply.github.com> --- apps/admin-x-design-system/package.json | 2 +- apps/comments-ui/package.json | 2 +- apps/signup-form/package.json | 2 +- ghost/core/package.json | 2 +- pnpm-lock.yaml | 347 ++++++++++++------------ pnpm-workspace.yaml | 2 +- 6 files changed, 179 insertions(+), 178 deletions(-) diff --git a/apps/admin-x-design-system/package.json b/apps/admin-x-design-system/package.json index 59c43e18378..f446809cac0 100644 --- a/apps/admin-x-design-system/package.json +++ b/apps/admin-x-design-system/package.json @@ -40,7 +40,7 @@ "@types/validator": "catalog:", "@typescript-eslint/parser": "catalog:", "@vitejs/plugin-react": "catalog:", - "autoprefixer": "10.4.21", + "autoprefixer": "10.5.0", "c8": "catalog:", "chai": "catalog:", "eslint": "catalog:", diff --git a/apps/comments-ui/package.json b/apps/comments-ui/package.json index 6526a6b6d5a..88f929e7143 100644 --- a/apps/comments-ui/package.json +++ b/apps/comments-ui/package.json @@ -68,7 +68,7 @@ "@tryghost/nql": "catalog:", "@vitejs/plugin-react": "catalog:", "@vitest/coverage-v8": "catalog:", - "autoprefixer": "10.4.21", + "autoprefixer": "10.5.0", "bson-objectid": "catalog:", "concurrently": "catalog:", "eslint": "catalog:", diff --git a/apps/signup-form/package.json b/apps/signup-form/package.json index 66e5a3af2f4..f5f836e6e43 100644 --- a/apps/signup-form/package.json +++ b/apps/signup-form/package.json @@ -44,7 +44,7 @@ "@types/react": "catalog:", "@types/react-dom": "catalog:", "@vitejs/plugin-react": "catalog:", - "autoprefixer": "10.4.21", + "autoprefixer": "10.5.0", "concurrently": "catalog:", "eslint": "catalog:", "eslint-plugin-tailwindcss": "catalog:tailwind3", diff --git a/ghost/core/package.json b/ghost/core/package.json index 9eef5c5cec6..3184dbad124 100644 --- a/ghost/core/package.json +++ b/ghost/core/package.json @@ -278,7 +278,7 @@ "c8": "catalog:", "chai": "catalog:", "cli-progress": "3.12.0", - "cssnano": "7.1.1", + "cssnano": "7.1.9", "esbuild": "0.28.0", "eslint": "catalog:", "expect": "29.7.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8747bd9b7d8..6be195ea1d4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -223,8 +223,8 @@ catalogs: specifier: 2.0.0 version: 2.0.0 postcss: - specifier: 8.5.10 - version: 8.5.10 + specifier: 8.5.15 + version: 8.5.15 preact: specifier: ^10.29.2 version: 10.29.2 @@ -721,13 +721,13 @@ importers: version: 3.2.2(react@18.3.1) '@storybook/addon-docs': specifier: 'catalog:' - version: 10.3.5(@types/react@18.3.29)(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + version: 10.3.5(@types/react@18.3.29)(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) '@storybook/addon-links': specifier: 'catalog:' version: 10.3.5(react@18.3.1)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/react-vite': specifier: 'catalog:' - version: 10.3.5(esbuild@0.28.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + version: 10.3.5(esbuild@0.28.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) '@tailwindcss/postcss': specifier: 'catalog:' version: 4.2.2 @@ -756,8 +756,8 @@ importers: specifier: 'catalog:' version: 4.7.0(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) autoprefixer: - specifier: 10.4.21 - version: 10.4.21(postcss@8.5.10) + specifier: 10.5.0 + version: 10.5.0(postcss@8.5.15) c8: specifier: 'catalog:' version: 11.0.0 @@ -787,10 +787,10 @@ importers: version: 4.18.1 postcss: specifier: 'catalog:' - version: 8.5.10 + version: 8.5.15 postcss-import: specifier: 16.1.1 - version: 16.1.1(postcss@8.5.10) + version: 16.1.1(postcss@8.5.15) react: specifier: 'catalog:' version: 18.3.1 @@ -1189,8 +1189,8 @@ importers: specifier: 'catalog:' version: 4.1.7(vitest@4.1.7) autoprefixer: - specifier: 10.4.21 - version: 10.4.21(postcss@8.5.10) + specifier: 10.5.0 + version: 10.5.0(postcss@8.5.15) bson-objectid: specifier: 'catalog:' version: 2.0.4 @@ -1214,10 +1214,10 @@ importers: version: 2.30.1 postcss: specifier: 'catalog:' - version: 8.5.10 + version: 8.5.15 postcss-import: specifier: 16.1.1 - version: 16.1.1(postcss@8.5.10) + version: 16.1.1(postcss@8.5.15) sinon: specifier: 'catalog:' version: 22.0.0 @@ -1556,13 +1556,13 @@ importers: devDependencies: '@storybook/addon-docs': specifier: 'catalog:' - version: 10.3.5(@types/react@18.3.29)(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + version: 10.3.5(@types/react@18.3.29)(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) '@storybook/addon-links': specifier: 'catalog:' version: 10.3.5(react@18.3.1)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/react-vite': specifier: 'catalog:' - version: 10.3.5(esbuild@0.28.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + version: 10.3.5(esbuild@0.28.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) '@tailwindcss/postcss': specifier: 'catalog:' version: 4.2.2 @@ -1613,7 +1613,7 @@ importers: version: 29.1.1(@noble/hashes@1.8.0) postcss: specifier: 'catalog:' - version: 8.5.10 + version: 8.5.15 remark-gfm: specifier: 4.0.1 version: 4.0.1 @@ -1662,13 +1662,13 @@ importers: version: 1.60.0 '@storybook/addon-docs': specifier: 'catalog:' - version: 10.3.5(@types/react@18.3.29)(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + version: 10.3.5(@types/react@18.3.29)(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) '@storybook/addon-links': specifier: 'catalog:' version: 10.3.5(react@18.3.1)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) '@storybook/react-vite': specifier: 'catalog:' - version: 10.3.5(esbuild@0.28.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + version: 10.3.5(esbuild@0.28.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) '@tailwindcss/line-clamp': specifier: 0.4.4 version: 0.4.4(tailwindcss@3.4.18(tsx@4.21.0)(yaml@2.9.0)) @@ -1685,8 +1685,8 @@ importers: specifier: 'catalog:' version: 4.7.0(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) autoprefixer: - specifier: 10.4.21 - version: 10.4.21(postcss@8.5.10) + specifier: 10.5.0 + version: 10.5.0(postcss@8.5.15) concurrently: specifier: 'catalog:' version: 10.0.0 @@ -1701,10 +1701,10 @@ importers: version: 29.1.1(@noble/hashes@1.8.0) postcss: specifier: 'catalog:' - version: 8.5.10 + version: 8.5.15 postcss-import: specifier: 16.1.1 - version: 16.1.1(postcss@8.5.10) + version: 16.1.1(postcss@8.5.15) storybook: specifier: 'catalog:' version: 10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -2883,8 +2883,8 @@ importers: specifier: 3.12.0 version: 3.12.0 cssnano: - specifier: 7.1.1 - version: 7.1.1(postcss@8.5.10) + specifier: 7.1.9 + version: 7.1.9(postcss@8.5.15) esbuild: specifier: 0.28.0 version: 0.28.0 @@ -2929,10 +2929,10 @@ importers: version: 3.1.14 postcss: specifier: 'catalog:' - version: 8.5.10 + version: 8.5.15 postcss-cli: specifier: 11.0.1 - version: 11.0.1(jiti@2.7.0)(postcss@8.5.10)(tsx@4.21.0) + version: 11.0.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.21.0) qs: specifier: 6.15.2 version: 6.15.2 @@ -10164,6 +10164,13 @@ packages: peerDependencies: postcss: ^8.1.0 + autoprefixer@10.5.0: + resolution: {integrity: sha512-FMhOoZV4+qR6aTUALKX2rEqGG+oyATvwBt9IIzVR5rMa2HRWPkxf+P+PAJLD1I/H5/II+HuZcBJYEFBpq39ong==} + engines: {node: ^10 || ^12 || >=14} + hasBin: true + peerDependencies: + postcss: ^8.1.0 + autoprefixer@9.8.6: resolution: {integrity: sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==} hasBin: true @@ -12288,11 +12295,11 @@ packages: resolution: {integrity: sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==} engines: {node: '>=6.9.0'} - cssnano@7.1.1: - resolution: {integrity: sha512-fm4D8ti0dQmFPeF8DXSAA//btEmqCOgAc/9Oa3C1LW94h5usNrJEfrON7b4FkPZgnDEn6OUs5NdxiJZmAtGOpQ==} + cssnano@7.1.9: + resolution: {integrity: sha512-uPR75+5Dk/WJ/YSPR1/YDHdwMM9c5FsaARljfKWgeCKLKOtJ0we21xy/RcCjn53fZnD/f6yYEIZ8pu18+GnbNQ==} engines: {node: ^18.12.0 || ^20.9.0 || >=22.0} peerDependencies: - postcss: ^8.4.32 + postcss: ^8.5.13 csso@3.5.1: resolution: {integrity: sha512-vrqULLffYU1Q2tLdJvaCYbONStnfkfimRxXNaGjxMldI0C7JPBC4rB1RyjhfdZ4m1frm8pM9uRPKH3d2knZ8gg==} @@ -14333,6 +14340,9 @@ packages: fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + fraction.js@5.3.4: + resolution: {integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==} + fresh@0.5.2: resolution: {integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==} engines: {node: '>= 0.6'} @@ -18802,10 +18812,6 @@ packages: resolution: {integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==} engines: {node: '>=6.0.0'} - postcss@8.5.10: - resolution: {integrity: sha512-pMMHxBOZKFU6HgAZ4eyGnwXF/EvPGGqUr0MnZ5+99485wwW41kW91A4LOGxSHhgugZmSChL5AlElNdwlNgcnLQ==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.5.15: resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} engines: {node: ^10 || ^12 || >=14} @@ -27850,10 +27856,10 @@ snapshots: '@stdlib/utils-constructor-name': 0.2.3 '@stdlib/utils-global': 0.2.3 - '@storybook/addon-docs@10.3.5(@types/react@18.3.29)(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10))': + '@storybook/addon-docs@10.3.5(@types/react@18.3.29)(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: '@mdx-js/react': 3.1.1(@types/react@18.3.29)(react@18.3.1) - '@storybook/csf-plugin': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + '@storybook/csf-plugin': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) '@storybook/icons': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/react-dom-shim': 10.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) react: 18.3.1 @@ -27867,10 +27873,10 @@ snapshots: - vite - webpack - '@storybook/addon-docs@10.3.5(@types/react@18.3.29)(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10))': + '@storybook/addon-docs@10.3.5(@types/react@18.3.29)(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: '@mdx-js/react': 3.1.1(@types/react@18.3.29)(react@18.3.1) - '@storybook/csf-plugin': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + '@storybook/csf-plugin': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) '@storybook/icons': 2.0.2(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@storybook/react-dom-shim': 10.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)) react: 18.3.1 @@ -27891,9 +27897,9 @@ snapshots: optionalDependencies: react: 18.3.1 - '@storybook/builder-vite@10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10))': + '@storybook/builder-vite@10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: - '@storybook/csf-plugin': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + '@storybook/csf-plugin': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) storybook: 10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ts-dedent: 2.2.0 vite: 7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0) @@ -27902,9 +27908,9 @@ snapshots: - rollup - webpack - '@storybook/builder-vite@10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10))': + '@storybook/builder-vite@10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: - '@storybook/csf-plugin': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + '@storybook/csf-plugin': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) storybook: 10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) ts-dedent: 2.2.0 vite: 7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0) @@ -27913,7 +27919,7 @@ snapshots: - rollup - webpack - '@storybook/csf-plugin@10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10))': + '@storybook/csf-plugin@10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: storybook: 10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) unplugin: 2.3.11 @@ -27921,9 +27927,9 @@ snapshots: esbuild: 0.28.0 rollup: 4.60.4 vite: 7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0) - webpack: 5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10) + webpack: 5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15) - '@storybook/csf-plugin@10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10))': + '@storybook/csf-plugin@10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: storybook: 10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) unplugin: 2.3.11 @@ -27931,7 +27937,7 @@ snapshots: esbuild: 0.28.0 rollup: 4.60.4 vite: 7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0) - webpack: 5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10) + webpack: 5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15) '@storybook/global@5.0.0': {} @@ -27946,11 +27952,11 @@ snapshots: react-dom: 18.3.1(react@18.3.1) storybook: 10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/react-vite@10.3.5(esbuild@0.28.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10))': + '@storybook/react-vite@10.3.5(esbuild@0.28.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(typescript@5.9.3)(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) '@rollup/pluginutils': 5.3.0(rollup@4.60.4) - '@storybook/builder-vite': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + '@storybook/builder-vite': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@22.19.19)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) '@storybook/react': 10.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3) empathic: 2.0.1 magic-string: 0.30.21 @@ -27968,11 +27974,11 @@ snapshots: - typescript - webpack - '@storybook/react-vite@10.3.5(esbuild@0.28.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10))': + '@storybook/react-vite@10.3.5(esbuild@0.28.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3)(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15))': dependencies: '@joshwooding/vite-plugin-react-docgen-typescript': 0.7.0(typescript@5.9.3)(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0)) '@rollup/pluginutils': 5.3.0(rollup@4.60.4) - '@storybook/builder-vite': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + '@storybook/builder-vite': 10.3.5(esbuild@0.28.0)(rollup@4.60.4)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(vite@7.3.2(@types/node@25.9.1)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.1)(tsx@4.21.0)(yaml@2.9.0))(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) '@storybook/react': 10.3.5(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@10.3.5(@testing-library/dom@9.3.4)(prettier@3.8.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.9.3) empathic: 2.0.1 magic-string: 0.30.21 @@ -30859,22 +30865,21 @@ snapshots: audio-extensions@0.0.0: {} - autoprefixer@10.4.21(postcss@8.5.10): + autoprefixer@10.4.21(postcss@8.5.15): dependencies: browserslist: 4.28.2 caniuse-lite: 1.0.30001793 fraction.js: 4.3.7 normalize-range: 0.1.2 picocolors: 1.1.1 - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 - autoprefixer@10.4.21(postcss@8.5.15): + autoprefixer@10.5.0(postcss@8.5.15): dependencies: browserslist: 4.28.2 caniuse-lite: 1.0.30001793 - fraction.js: 4.3.7 - normalize-range: 0.1.2 + fraction.js: 5.3.4 picocolors: 1.1.1 postcss: 8.5.15 postcss-value-parser: 4.2.0 @@ -33439,9 +33444,9 @@ snapshots: postcss: 7.0.39 timsort: 0.3.0 - css-declaration-sorter@7.4.0(postcss@8.5.10): + css-declaration-sorter@7.4.0(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 css-has-pseudo@3.0.4(postcss@8.5.15): dependencies: @@ -33574,39 +33579,39 @@ snapshots: postcss-svgo: 4.0.3 postcss-unique-selectors: 4.0.1 - cssnano-preset-default@7.0.17(postcss@8.5.10): + cssnano-preset-default@7.0.17(postcss@8.5.15): dependencies: browserslist: 4.28.2 - css-declaration-sorter: 7.4.0(postcss@8.5.10) - cssnano-utils: 5.0.3(postcss@8.5.10) - postcss: 8.5.10 - postcss-calc: 10.1.1(postcss@8.5.10) - postcss-colormin: 7.0.10(postcss@8.5.10) - postcss-convert-values: 7.0.12(postcss@8.5.10) - postcss-discard-comments: 7.0.8(postcss@8.5.10) - postcss-discard-duplicates: 7.0.4(postcss@8.5.10) - postcss-discard-empty: 7.0.3(postcss@8.5.10) - postcss-discard-overridden: 7.0.3(postcss@8.5.10) - postcss-merge-longhand: 7.0.7(postcss@8.5.10) - postcss-merge-rules: 7.0.11(postcss@8.5.10) - postcss-minify-font-values: 7.0.3(postcss@8.5.10) - postcss-minify-gradients: 7.0.5(postcss@8.5.10) - postcss-minify-params: 7.0.9(postcss@8.5.10) - postcss-minify-selectors: 7.1.2(postcss@8.5.10) - postcss-normalize-charset: 7.0.3(postcss@8.5.10) - postcss-normalize-display-values: 7.0.3(postcss@8.5.10) - postcss-normalize-positions: 7.0.4(postcss@8.5.10) - postcss-normalize-repeat-style: 7.0.4(postcss@8.5.10) - postcss-normalize-string: 7.0.3(postcss@8.5.10) - postcss-normalize-timing-functions: 7.0.3(postcss@8.5.10) - postcss-normalize-unicode: 7.0.9(postcss@8.5.10) - postcss-normalize-url: 7.0.3(postcss@8.5.10) - postcss-normalize-whitespace: 7.0.3(postcss@8.5.10) - postcss-ordered-values: 7.0.4(postcss@8.5.10) - postcss-reduce-initial: 7.0.9(postcss@8.5.10) - postcss-reduce-transforms: 7.0.3(postcss@8.5.10) - postcss-svgo: 7.1.3(postcss@8.5.10) - postcss-unique-selectors: 7.0.7(postcss@8.5.10) + css-declaration-sorter: 7.4.0(postcss@8.5.15) + cssnano-utils: 5.0.3(postcss@8.5.15) + postcss: 8.5.15 + postcss-calc: 10.1.1(postcss@8.5.15) + postcss-colormin: 7.0.10(postcss@8.5.15) + postcss-convert-values: 7.0.12(postcss@8.5.15) + postcss-discard-comments: 7.0.8(postcss@8.5.15) + postcss-discard-duplicates: 7.0.4(postcss@8.5.15) + postcss-discard-empty: 7.0.3(postcss@8.5.15) + postcss-discard-overridden: 7.0.3(postcss@8.5.15) + postcss-merge-longhand: 7.0.7(postcss@8.5.15) + postcss-merge-rules: 7.0.11(postcss@8.5.15) + postcss-minify-font-values: 7.0.3(postcss@8.5.15) + postcss-minify-gradients: 7.0.5(postcss@8.5.15) + postcss-minify-params: 7.0.9(postcss@8.5.15) + postcss-minify-selectors: 7.1.2(postcss@8.5.15) + postcss-normalize-charset: 7.0.3(postcss@8.5.15) + postcss-normalize-display-values: 7.0.3(postcss@8.5.15) + postcss-normalize-positions: 7.0.4(postcss@8.5.15) + postcss-normalize-repeat-style: 7.0.4(postcss@8.5.15) + postcss-normalize-string: 7.0.3(postcss@8.5.15) + postcss-normalize-timing-functions: 7.0.3(postcss@8.5.15) + postcss-normalize-unicode: 7.0.9(postcss@8.5.15) + postcss-normalize-url: 7.0.3(postcss@8.5.15) + postcss-normalize-whitespace: 7.0.3(postcss@8.5.15) + postcss-ordered-values: 7.0.4(postcss@8.5.15) + postcss-reduce-initial: 7.0.9(postcss@8.5.15) + postcss-reduce-transforms: 7.0.3(postcss@8.5.15) + postcss-svgo: 7.1.3(postcss@8.5.15) + postcss-unique-selectors: 7.0.7(postcss@8.5.15) cssnano-util-get-arguments@4.0.0: {} @@ -33618,9 +33623,9 @@ snapshots: cssnano-util-same-parent@4.0.1: {} - cssnano-utils@5.0.3(postcss@8.5.10): + cssnano-utils@5.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 cssnano@4.1.10: dependencies: @@ -33629,11 +33634,11 @@ snapshots: is-resolvable: 1.1.0 postcss: 7.0.39 - cssnano@7.1.1(postcss@8.5.10): + cssnano@7.1.9(postcss@8.5.15): dependencies: - cssnano-preset-default: 7.0.17(postcss@8.5.10) + cssnano-preset-default: 7.0.17(postcss@8.5.15) lilconfig: 3.1.3 - postcss: 8.5.10 + postcss: 8.5.15 csso@3.5.1: dependencies: @@ -37075,6 +37080,8 @@ snapshots: fraction.js@4.3.7: {} + fraction.js@5.3.4: {} + fresh@0.5.2: {} fresh@2.0.0: {} @@ -42222,9 +42229,9 @@ snapshots: postcss: 8.5.15 postcss-selector-parser: 6.1.2 - postcss-calc@10.1.1(postcss@8.5.10): + postcss-calc@10.1.1(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-selector-parser: 7.1.1 postcss-value-parser: 4.2.0 @@ -42239,15 +42246,15 @@ snapshots: postcss: 8.5.15 postcss-value-parser: 4.2.0 - postcss-cli@11.0.1(jiti@2.7.0)(postcss@8.5.10)(tsx@4.21.0): + postcss-cli@11.0.1(jiti@2.7.0)(postcss@8.5.15)(tsx@4.21.0): dependencies: chokidar: 3.6.0 dependency-graph: 1.0.0 fs-extra: 11.3.5 picocolors: 1.1.1 - postcss: 8.5.10 - postcss-load-config: 5.1.0(jiti@2.7.0)(postcss@8.5.10)(tsx@4.21.0) - postcss-reporter: 7.1.0(postcss@8.5.10) + postcss: 8.5.15 + postcss-load-config: 5.1.0(jiti@2.7.0)(postcss@8.5.15)(tsx@4.21.0) + postcss-reporter: 7.1.0(postcss@8.5.15) pretty-hrtime: 1.0.3 read-cache: 1.0.0 slash: 5.1.0 @@ -42286,12 +42293,12 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-colormin@7.0.10(postcss@8.5.10): + postcss-colormin@7.0.10(postcss@8.5.15): dependencies: '@colordx/core': 5.4.3 browserslist: 4.28.2 caniuse-api: 3.0.0 - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-convert-values@4.0.1: @@ -42299,10 +42306,10 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-convert-values@7.0.12(postcss@8.5.10): + postcss-convert-values@7.0.12(postcss@8.5.15): dependencies: browserslist: 4.28.2 - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-custom-media@7.0.8: @@ -42338,34 +42345,34 @@ snapshots: dependencies: postcss: 7.0.39 - postcss-discard-comments@7.0.8(postcss@8.5.10): + postcss-discard-comments@7.0.8(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-selector-parser: 7.1.1 postcss-discard-duplicates@4.0.2: dependencies: postcss: 7.0.39 - postcss-discard-duplicates@7.0.4(postcss@8.5.10): + postcss-discard-duplicates@7.0.4(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-discard-empty@4.0.1: dependencies: postcss: 7.0.39 - postcss-discard-empty@7.0.3(postcss@8.5.10): + postcss-discard-empty@7.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-discard-overridden@4.0.1: dependencies: postcss: 7.0.39 - postcss-discard-overridden@7.0.3(postcss@8.5.10): + postcss-discard-overridden@7.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-double-position-gradients@3.1.2(postcss@8.5.15): dependencies: @@ -42415,9 +42422,9 @@ snapshots: read-cache: 1.0.0 resolve: 1.22.12 - postcss-import@16.1.1(postcss@8.5.10): + postcss-import@16.1.1(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 read-cache: 1.0.0 resolve: 1.22.12 @@ -42437,13 +42444,13 @@ snapshots: postcss: 8.5.15 postcss-value-parser: 4.2.0 - postcss-load-config@5.1.0(jiti@2.7.0)(postcss@8.5.10)(tsx@4.21.0): + postcss-load-config@5.1.0(jiti@2.7.0)(postcss@8.5.15)(tsx@4.21.0): dependencies: lilconfig: 3.1.3 yaml: 2.9.0 optionalDependencies: jiti: 2.7.0 - postcss: 8.5.10 + postcss: 8.5.15 tsx: 4.21.0 postcss-load-config@6.0.1(jiti@1.21.7)(postcss@8.5.15)(tsx@4.21.0)(yaml@2.9.0): @@ -42470,11 +42477,11 @@ snapshots: postcss-value-parser: 3.3.1 stylehacks: 4.0.3 - postcss-merge-longhand@7.0.7(postcss@8.5.10): + postcss-merge-longhand@7.0.7(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 - stylehacks: 7.0.11(postcss@8.5.10) + stylehacks: 7.0.11(postcss@8.5.15) postcss-merge-rules@4.0.3: dependencies: @@ -42485,12 +42492,12 @@ snapshots: postcss-selector-parser: 3.1.2 vendors: 1.0.4 - postcss-merge-rules@7.0.11(postcss@8.5.10): + postcss-merge-rules@7.0.11(postcss@8.5.15): dependencies: browserslist: 4.28.2 caniuse-api: 3.0.0 - cssnano-utils: 5.0.3(postcss@8.5.10) - postcss: 8.5.10 + cssnano-utils: 5.0.3(postcss@8.5.15) + postcss: 8.5.15 postcss-selector-parser: 7.1.1 postcss-minify-font-values@4.0.2: @@ -42498,9 +42505,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-minify-font-values@7.0.3(postcss@8.5.10): + postcss-minify-font-values@7.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-minify-gradients@4.0.2: @@ -42510,11 +42517,11 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-minify-gradients@7.0.5(postcss@8.5.10): + postcss-minify-gradients@7.0.5(postcss@8.5.15): dependencies: '@colordx/core': 5.4.3 - cssnano-utils: 5.0.3(postcss@8.5.10) - postcss: 8.5.10 + cssnano-utils: 5.0.3(postcss@8.5.15) + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-minify-params@4.0.2: @@ -42526,11 +42533,11 @@ snapshots: postcss-value-parser: 3.3.1 uniqs: 2.0.0 - postcss-minify-params@7.0.9(postcss@8.5.10): + postcss-minify-params@7.0.9(postcss@8.5.15): dependencies: browserslist: 4.28.2 - cssnano-utils: 5.0.3(postcss@8.5.10) - postcss: 8.5.10 + cssnano-utils: 5.0.3(postcss@8.5.15) + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-minify-selectors@4.0.2: @@ -42540,12 +42547,12 @@ snapshots: postcss: 7.0.39 postcss-selector-parser: 3.1.2 - postcss-minify-selectors@7.1.2(postcss@8.5.10): + postcss-minify-selectors@7.1.2(postcss@8.5.15): dependencies: browserslist: 4.28.2 caniuse-api: 3.0.0 cssesc: 3.0.0 - postcss: 8.5.10 + postcss: 8.5.15 postcss-selector-parser: 7.1.1 postcss-modules-extract-imports@3.1.0(postcss@8.5.15): @@ -42584,9 +42591,9 @@ snapshots: dependencies: postcss: 7.0.39 - postcss-normalize-charset@7.0.3(postcss@8.5.10): + postcss-normalize-charset@7.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-normalize-display-values@4.0.2: dependencies: @@ -42594,9 +42601,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-display-values@7.0.3(postcss@8.5.10): + postcss-normalize-display-values@7.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-normalize-positions@4.0.2: @@ -42606,9 +42613,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-positions@7.0.4(postcss@8.5.10): + postcss-normalize-positions@7.0.4(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-normalize-repeat-style@4.0.2: @@ -42618,9 +42625,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-repeat-style@7.0.4(postcss@8.5.10): + postcss-normalize-repeat-style@7.0.4(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-normalize-string@4.0.2: @@ -42629,9 +42636,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-string@7.0.3(postcss@8.5.10): + postcss-normalize-string@7.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-normalize-timing-functions@4.0.2: @@ -42640,9 +42647,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-timing-functions@7.0.3(postcss@8.5.10): + postcss-normalize-timing-functions@7.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-normalize-unicode@4.0.1: @@ -42651,10 +42658,10 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-unicode@7.0.9(postcss@8.5.10): + postcss-normalize-unicode@7.0.9(postcss@8.5.15): dependencies: browserslist: 4.28.2 - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-normalize-url@4.0.1: @@ -42664,9 +42671,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-url@7.0.3(postcss@8.5.10): + postcss-normalize-url@7.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-normalize-whitespace@4.0.2: @@ -42674,9 +42681,9 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-normalize-whitespace@7.0.3(postcss@8.5.10): + postcss-normalize-whitespace@7.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-opacity-percentage@1.1.3(postcss@8.5.15): @@ -42689,10 +42696,10 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-ordered-values@7.0.4(postcss@8.5.10): + postcss-ordered-values@7.0.4(postcss@8.5.15): dependencies: - cssnano-utils: 5.0.3(postcss@8.5.10) - postcss: 8.5.10 + cssnano-utils: 5.0.3(postcss@8.5.15) + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-overflow-shorthand@3.0.4(postcss@8.5.15): @@ -42774,11 +42781,11 @@ snapshots: has: 1.0.4 postcss: 7.0.39 - postcss-reduce-initial@7.0.9(postcss@8.5.10): + postcss-reduce-initial@7.0.9(postcss@8.5.15): dependencies: browserslist: 4.28.2 caniuse-api: 3.0.0 - postcss: 8.5.10 + postcss: 8.5.15 postcss-reduce-transforms@4.0.2: dependencies: @@ -42787,19 +42794,19 @@ snapshots: postcss: 7.0.39 postcss-value-parser: 3.3.1 - postcss-reduce-transforms@7.0.3(postcss@8.5.10): + postcss-reduce-transforms@7.0.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 postcss-replace-overflow-wrap@4.0.0(postcss@8.5.15): dependencies: postcss: 8.5.15 - postcss-reporter@7.1.0(postcss@8.5.10): + postcss-reporter@7.1.0(postcss@8.5.15): dependencies: picocolors: 1.1.1 - postcss: 8.5.10 + postcss: 8.5.15 thenby: 1.4.1 postcss-selector-not@6.0.1(postcss@8.5.15): @@ -42829,9 +42836,9 @@ snapshots: postcss-value-parser: 3.3.1 svgo: 1.3.2 - postcss-svgo@7.1.3(postcss@8.5.10): + postcss-svgo@7.1.3(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-value-parser: 4.2.0 svgo: 4.0.1 @@ -42841,9 +42848,9 @@ snapshots: postcss: 7.0.39 uniqs: 2.0.0 - postcss-unique-selectors@7.0.7(postcss@8.5.10): + postcss-unique-selectors@7.0.7(postcss@8.5.15): dependencies: - postcss: 8.5.10 + postcss: 8.5.15 postcss-selector-parser: 7.1.1 postcss-value-parser@3.3.1: {} @@ -42867,12 +42874,6 @@ snapshots: picocolors: 0.2.1 source-map: 0.6.1 - postcss@8.5.10: - dependencies: - nanoid: 3.3.12 - picocolors: 1.1.1 - source-map-js: 1.2.1 - postcss@8.5.15: dependencies: nanoid: 3.3.12 @@ -44956,10 +44957,10 @@ snapshots: postcss: 7.0.39 postcss-selector-parser: 3.1.2 - stylehacks@7.0.11(postcss@8.5.10): + stylehacks@7.0.11(postcss@8.5.15): dependencies: browserslist: 4.28.2 - postcss: 8.5.10 + postcss: 8.5.15 postcss-selector-parser: 7.1.1 stylis@4.2.0: {} @@ -45284,18 +45285,18 @@ snapshots: lightningcss: 1.32.0 postcss: 8.5.15 - terser-webpack-plugin@5.6.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)): + terser-webpack-plugin@5.6.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 terser: 5.46.1 - webpack: 5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10) + webpack: 5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15) optionalDependencies: '@swc/core': 1.15.40(@swc/helpers@0.5.21) esbuild: 0.28.0 lightningcss: 1.32.0 - postcss: 8.5.10 + postcss: 8.5.15 optional: true terser@4.8.1: @@ -46566,7 +46567,7 @@ snapshots: - postcss - uglify-js - webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10): + webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.9 @@ -46590,7 +46591,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.3 - terser-webpack-plugin: 5.6.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.10)) + terser-webpack-plugin: 5.6.0(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)(webpack@5.105.4(@swc/core@1.15.40(@swc/helpers@0.5.21))(esbuild@0.28.0)(lightningcss@1.32.0)(postcss@8.5.15)) watchpack: 2.5.1 webpack-sources: 3.5.0 transitivePeerDependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 3c246759518..681f8df6729 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -98,7 +98,7 @@ catalog: mocha: 11.7.6 msw: 2.14.6 node-html-markdown: 2.0.0 - postcss: 8.5.10 + postcss: 8.5.15 preact: ^10.29.2 react: 18.3.1 react-dom: 18.3.1 From c711882426553ca28fecac9e164a455a6eab0bfb Mon Sep 17 00:00:00 2001 From: Steve Larson <9larsons@gmail.com> Date: Tue, 9 Jun 2026 12:30:49 -0500 Subject: [PATCH 04/14] Bumped runtime-aligned @types/* packages (dockerode, nodemailer, sinon) (#28445) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Splits the three runtime-aligned type bumps out of the grouped major Renovate PR #28307 so they can land independently of the breaking ones. ### What's here These `@types/*` majors are brought in line with the runtime major **already installed**: | Package | @types | Installed runtime | |---|---|---| | `@types/dockerode` | 3 → **4.0.1** | dockerode 4.0.12 | | `@types/nodemailer` | 6 → **8.0.0** | nodemailer 8.0.8 | | `@types/sinon` | 17 → **21.0.1** | sinon 22.0.0 | All three are `devDependencies` (type-only, no runtime impact). ### What's intentionally NOT here The rest of #28307 pushes the types **ahead** of the installed runtime major and is held back until the corresponding runtime upgrades happen: - `@types/express` 5 (runtime Express 4) - `@types/react` / `@types/react-dom` 19 (runtime React 18) — **hard-fails the `@tryghost/shade` build** (`ReactElement.props`/`React.Children` are now `unknown`) - `@types/node` 24 (engine `^22.13.1`) - `@types/jest` 30 (jest 29) - `@types/supertest` 7 (supertest 6) ### Verification (local) - `ghost` `build:tsc` (nodemailer/sinon) — ✅ - `ghost` `lint` + `lint:types` (`tsc --noEmit`) — ✅ - `ghost` `test:unit` — ✅ 6732 passed - `@tryghost/e2e` `test:types` (dockerode) — ✅ - `@tryghost/e2e` `lint` — ✅ Once this merges, #28307 can be closed/reduced to the held-back set. --- e2e/package.json | 2 +- ghost/core/package.json | 4 ++-- pnpm-lock.yaml | 30 +++++++++++++++--------------- 3 files changed, 18 insertions(+), 18 deletions(-) diff --git a/e2e/package.json b/e2e/package.json index 438e207be64..ae809c001cb 100644 --- a/e2e/package.json +++ b/e2e/package.json @@ -33,7 +33,7 @@ "@playwright/test": "catalog:", "@tryghost/debug": "catalog:", "@tryghost/logging": "catalog:", - "@types/dockerode": "3.3.47", + "@types/dockerode": "4.0.1", "@types/express": "catalog:", "busboy": "1.6.0", "dockerode": "4.0.12", diff --git a/ghost/core/package.json b/ghost/core/package.json index 3184dbad124..1c86912174d 100644 --- a/ghost/core/package.json +++ b/ghost/core/package.json @@ -266,11 +266,11 @@ "@types/node": "catalog:", "@types/node-fetch": "2.6.13", "@types/node-jose": "1.1.13", - "@types/nodemailer": "6.4.23", + "@types/nodemailer": "8.0.0", "@types/on-headers": "1.0.4", "@types/papaparse": "5.5.2", "@types/sanitize-html": "catalog:", - "@types/sinon": "17.0.4", + "@types/sinon": "21.0.1", "@types/supertest": "6.0.3", "@typescript-eslint/parser": "catalog:", "@vitest/coverage-v8": "catalog:", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6be195ea1d4..6c6065ababa 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -1888,8 +1888,8 @@ importers: specifier: 4.2.1 version: 4.2.1 '@types/dockerode': - specifier: 3.3.47 - version: 3.3.47 + specifier: 4.0.1 + version: 4.0.1 '@types/express': specifier: 'catalog:' version: 4.17.25 @@ -2847,8 +2847,8 @@ importers: specifier: 1.1.13 version: 1.1.13 '@types/nodemailer': - specifier: 6.4.23 - version: 6.4.23 + specifier: 8.0.0 + version: 8.0.0 '@types/on-headers': specifier: 1.0.4 version: 1.0.4 @@ -2859,8 +2859,8 @@ importers: specifier: 'catalog:' version: 2.16.1 '@types/sinon': - specifier: 17.0.4 - version: 17.0.4 + specifier: 21.0.1 + version: 21.0.1 '@types/supertest': specifier: 6.0.3 version: 6.0.3 @@ -9026,8 +9026,8 @@ packages: '@types/docker-modem@3.0.6': resolution: {integrity: sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==} - '@types/dockerode@3.3.47': - resolution: {integrity: sha512-ShM1mz7rCjdssXt7Xz0u1/R2BJC7piWa3SJpUBiVjCf2A3XNn4cP6pUVaD8bLanpPVVn4IKzJuw3dOvkJ8IbYw==} + '@types/dockerode@4.0.1': + resolution: {integrity: sha512-cmUpB+dPN955PxBEuXE3f6lKO1hHiIGYJA46IVF3BJpNsZGvtBDcRnlrHYHtOH/B6vtDOyl2kZ2ShAu3mgc27Q==} '@types/doctrine@0.0.9': resolution: {integrity: sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==} @@ -9178,8 +9178,8 @@ packages: '@types/node@9.6.61': resolution: {integrity: sha512-/aKAdg5c8n468cYLy2eQrcR5k6chlbNwZNGUj3TboyPa2hcO2QAJcfymlqPzMiRj8B6nYKXjzQz36minFE0RwQ==} - '@types/nodemailer@6.4.23': - resolution: {integrity: sha512-aFV3/NsYFLSx9mbb5gtirBSXJnAlrusoKNuPbxsASWc7vrKLmIrTQRpdcxNcSFL3VW2A2XpeLEavwb2qMi6nlQ==} + '@types/nodemailer@8.0.0': + resolution: {integrity: sha512-fyf8jWULsCo0d0BuoQ75i6IeoHs47qcqxWc7yUdUcV0pOZGjUTTOvwdG1PRXUDqN/8A64yQdQdnA2pZgcdi+cA==} '@types/normalize-package-data@2.4.4': resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -9262,8 +9262,8 @@ packages: '@types/set-cookie-parser@2.4.10': resolution: {integrity: sha512-GGmQVGpQWUe5qglJozEjZV/5dyxbOOZ0LHe/lqyWssB88Y4svNfst0uqBVscdDeIKl5Jy5+aPSvy7mI9tYRguw==} - '@types/sinon@17.0.4': - resolution: {integrity: sha512-RHnIrhfPO3+tJT0s7cFaXGZvsL4bbR3/k7z3P312qMS4JaS2Tk+KiwiLx1S0rQ56ERj00u1/BtdyVd0FY+Pdew==} + '@types/sinon@21.0.1': + resolution: {integrity: sha512-5yoJSqLbjH8T9V2bksgRayuhpZy+723/z6wBOR+Soe4ZlXC0eW8Na71TeaZPUWDQvM7LYKa9UGFc6LRqxiR5fQ==} '@types/sinonjs__fake-timers@15.0.1': resolution: {integrity: sha512-Ko2tjWJq8oozHzHV+reuvS5KYIRAokHnGbDwGh/J64LntgpbuylF74ipEL24HCyRjf9FOlBiBHWBR1RlVKsI1w==} @@ -29358,7 +29358,7 @@ snapshots: '@types/node': 25.9.1 '@types/ssh2': 1.15.5 - '@types/dockerode@3.3.47': + '@types/dockerode@4.0.1': dependencies: '@types/docker-modem': 3.0.6 '@types/node': 25.9.1 @@ -29542,7 +29542,7 @@ snapshots: '@types/node@9.6.61': {} - '@types/nodemailer@6.4.23': + '@types/nodemailer@8.0.0': dependencies: '@types/node': 25.9.1 @@ -29637,7 +29637,7 @@ snapshots: dependencies: '@types/node': 25.9.1 - '@types/sinon@17.0.4': + '@types/sinon@21.0.1': dependencies: '@types/sinonjs__fake-timers': 15.0.1 From 7581df477e85f12f8060271bf83ff03ac8874399 Mon Sep 17 00:00:00 2001 From: Steve Larson <9larsons@gmail.com> Date: Tue, 9 Jun 2026 12:34:57 -0500 Subject: [PATCH 05/14] Grouped @types/* with their runtime package in Renovate (#28451) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refs #28307, #28445 Follow-up to the grouped major Renovate PR #28307, which tried to bump several `@types/*` packages **past the runtime major actually installed**. Type definitions for a different major than what runs are silently wrong at best (e.g. `@types/express` 5 describing APIs Express 4 doesn't have) and build-breaking at worst — `@types/react` 19 fails the `@tryghost/shade` build under React 18. ### Approach: pair types with their runtime, don't cap Rather than hand-maintained `allowedVersions` caps (which go stale and silently flip from *guard* to *blocker* the moment the runtime moves — exactly what happened when `supertest` went 6 → 7 mid-review), each `@types/*` is **grouped with the runtime package it describes** so a runtime major and its type-definition major travel in the same PR and land together: - **React** (`react`, `react-dom`, `@types/react`, `@types/react-dom`) - **Express**, **jest**, **supertest**, **dockerode**, **nodemailer**, **sinon** This is self-maintaining — no caps to remember to raise on each upgrade. The existing `major → dependencyDashboardApproval: true` rule remains the human backstop for anything that still slips through. ### Two exceptions - **`@types/node`** keeps a hard `allowedVersions: "<23"` cap — it tracks the Node.js engine (`engines: ^22.13.1`), not an npm dependency, so there's no package to pair it with. Raise it when the Node engine bumps. - **Unpaired `@types/*`** (no managed runtime peer) stay individual PRs rather than one mega "Types packages (major)" group, so one breaking type can't block the rest. --- .github/renovate.json5 | 102 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 102 insertions(+) diff --git a/.github/renovate.json5 b/.github/renovate.json5 index 842fa6b671b..70ce08f0ac2 100644 --- a/.github/renovate.json5 +++ b/.github/renovate.json5 @@ -191,6 +191,108 @@ "dependencyDashboardApproval": true }, + // Keep `@types/*` aligned with the runtime major they describe. Type defs + // for a different major than what actually runs are silently wrong at best + // (e.g. @types/express 5 vs Express 4) and build-breaking at worst + // (@types/react 19 fails the @tryghost/shade build under React 18) — this + // is what stalled the grouped "Update Types packages (major)" PR (#28307). + // Two mechanisms, with the major-dashboard-approval rule above as the human + // backstop for any types-ahead major that still slips through: + // + // 1. @types/node has no `node` npm package to pair with — it tracks the + // Node.js runtime declared in `engines`, not a dependency — so a hard + // version cap is the only lever. Raise it when we bump the Node engine. + { + "description": "Cap @types/node at the installed Node major (engines: ^22.13.1)", + "matchPackageNames": [ + "@types/node" + ], + "allowedVersions": "<23" + }, + + // 2. Every other @types/* is grouped WITH the runtime package it describes + // (rules below) so a runtime major and its type-definition major travel + // in the same PR and land together, instead of the types racing ahead. + // This is self-maintaining — no per-package caps to hand-raise on each + // upgrade (a stale cap silently flips from guard to blocker once the + // runtime moves, as happened with supertest 6 -> 7). + // + // Any @types/* with NO managed runtime peer is left as its own individual + // PR rather than lumped into one mega "Types packages (major)" PR (so one + // breaking type can't block the rest). Ordering matters: this ungroup + // default comes BEFORE the pairings so the pairings (later) win for paired + // packages, and the pairings come BEFORE the react17/eslint9/tailwind3 + // catalog rules below so those version-lane groups still win for their own + // depTypes (e.g. react@17 in the react17 catalog stays in its own PR). + { + "description": "Unpaired @types/* majors get their own PR, not one mega Types group", + "matchPackageNames": [ + "@types/**" + ], + "matchUpdateTypes": [ + "major" + ], + "groupName": null + }, + { + "description": "React runtime + its type defs bump together", + "groupName": "React", + "matchPackageNames": [ + "react", + "react-dom", + "@types/react", + "@types/react-dom" + ] + }, + { + "description": "Express runtime + its type defs bump together", + "groupName": "Express", + "matchPackageNames": [ + "express", + "@types/express" + ] + }, + { + "description": "jest runtime + its type defs bump together", + "groupName": "jest", + "matchPackageNames": [ + "jest", + "@types/jest" + ] + }, + { + "description": "supertest runtime + its type defs bump together", + "groupName": "supertest", + "matchPackageNames": [ + "supertest", + "@types/supertest" + ] + }, + { + "description": "dockerode runtime + its type defs bump together", + "groupName": "dockerode", + "matchPackageNames": [ + "dockerode", + "@types/dockerode" + ] + }, + { + "description": "nodemailer runtime + its type defs bump together", + "groupName": "nodemailer", + "matchPackageNames": [ + "nodemailer", + "@types/nodemailer" + ] + }, + { + "description": "sinon runtime + its type defs bump together", + "groupName": "sinon", + "matchPackageNames": [ + "sinon", + "@types/sinon" + ] + }, + // Group NQL packages separately from other TryGhost packages { "groupName": "NQL packages", From 08998481c66f945cdffee66b6bdfe7f454d0dbed Mon Sep 17 00:00:00 2001 From: "tryghost-renovate[bot]" <269725441+tryghost-renovate[bot]@users.noreply.github.com> Date: Tue, 9 Jun 2026 14:55:30 -0500 Subject: [PATCH 06/14] Update actions/checkout action to v6.0.3 (#28450) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [actions/checkout](https://redirect.github.com/actions/checkout) | action | patch | `v6.0.2` → `v6.0.3` | --- > [!WARNING] > Some dependencies could not be looked up. Check the [Dependency Dashboard](../issues/28155) for more information. --- ### Release Notes
actions/checkout (actions/checkout) ### [`v6.0.3`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v603) [Compare Source](https://redirect.github.com/actions/checkout/compare/v6.0.2...v6.0.3) - Fix checkout init for SHA-256 repositories by [@​yaananth](https://redirect.github.com/yaananth) in [#​2439](https://redirect.github.com/actions/checkout/pull/2439) - fix: expand merge commit SHA regex and add SHA-256 test cases by [@​yaananth](https://redirect.github.com/yaananth) in [#​2414](https://redirect.github.com/actions/checkout/pull/2414)
--- ### Configuration 📅 **Schedule**: (in timezone Etc/UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://redirect.github.com/renovatebot/renovate). Co-authored-by: tryghost-renovate[bot] <269725441+tryghost-renovate[bot]@users.noreply.github.com> --- .github/workflows/ci.yml | 40 ++++++++++----------- .github/workflows/copilot-setup-steps.yml | 2 +- .github/workflows/create-release-branch.yml | 4 +-- .github/workflows/devcontainer-build.yml | 2 +- .github/workflows/publish-tb-cli.yml | 2 +- .github/workflows/release.yml | 2 +- .github/workflows/translation-review.yml | 2 +- 7 files changed, 27 insertions(+), 27 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 985b05e32d8..2db8005a084 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -50,7 +50,7 @@ jobs: pull-requests: read steps: - name: Checkout current commit - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: ref: ${{ env.HEAD_COMMIT }} fetch-depth: 0 @@ -241,7 +241,7 @@ jobs: if: github.event_name == 'pull_request' steps: - name: Checkout PR head commit - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: ref: ${{ github.event.pull_request.head.sha }} fetch-depth: 0 @@ -262,7 +262,7 @@ jobs: if: github.event_name == 'pull_request' steps: - name: Checkout PR head commit - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: ref: ${{ github.event.pull_request.head.sha }} fetch-depth: 0 @@ -282,7 +282,7 @@ jobs: if: needs.job_setup.outputs.is_tag == 'true' || needs.job_setup.outputs.affected_projects_str != '' name: Lint steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: fetch-depth: 1000 - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 @@ -322,7 +322,7 @@ jobs: needs.job_setup.outputs.is_tag == 'true' || needs.job_setup.outputs.changed_i18n_apps == 'true' steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 with: @@ -348,7 +348,7 @@ jobs: CI: true COVERAGE: true steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 with: @@ -387,7 +387,7 @@ jobs: node: ${{ fromJSON(needs.job_setup.outputs.node_test_matrix) }} name: Unit tests (Node ${{ matrix.node }}) steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: fetch-depth: 1000 - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 @@ -493,7 +493,7 @@ jobs: NODE_ENV: ${{ matrix.env.NODE_ENV }} name: Acceptance tests (Node ${{ matrix.node }}, ${{ matrix.env.DB }}) steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 env: @@ -612,7 +612,7 @@ jobs: NODE_ENV: ${{ matrix.env.NODE_ENV }} name: Legacy tests (Node ${{ matrix.node }}, ${{ matrix.env.DB }}) steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: submodules: true - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 @@ -676,7 +676,7 @@ jobs: env: CI: true steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 env: @@ -731,7 +731,7 @@ jobs: ports: - 7181:7181 steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Install Tinybird CLI run: curl -fsSL https://tinybird.co/install.sh | sh - name: Build project @@ -827,7 +827,7 @@ jobs: packages: write steps: - name: Checkout repository - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: submodules: true @@ -1093,7 +1093,7 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 @@ -1140,7 +1140,7 @@ jobs: packages: write steps: - name: Checkout repository - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Download public app artifacts uses: actions/download-artifact@3e5f45b2cfb9172054b4087a40e8e0b5a5461e7c # v8 @@ -1312,7 +1312,7 @@ jobs: shardTotal: 2 steps: - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Setup Docker Registry Mirrors uses: ./.github/actions/setup-docker-registry-mirrors @@ -1409,7 +1409,7 @@ jobs: fail-fast: false steps: - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 - uses: actions/setup-node@48b55a011bda9f5d6aeb4c2d9c7362e8dae4041e # v6 @@ -1493,7 +1493,7 @@ jobs: ] runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Restore Admin coverage if: contains(needs.job_admin-tests.result, 'success') @@ -1596,7 +1596,7 @@ jobs: package_path: 'apps/admin-toolbar' steps: - name: Checkout code - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 - name: Set up Node.js @@ -1661,7 +1661,7 @@ jobs: cdn_paths: 'https://cdn.jsdelivr.net/ghost/admin-toolbar@~CURRENT_MINOR/umd/admin-toolbar.min.js' steps: - name: Checkout code - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - uses: pnpm/action-setup@0e279bb959325dab635dd2c09392533439d90093 # v6.0.8 - name: Set up Node.js @@ -1872,7 +1872,7 @@ jobs: env: GH_TOKEN: ${{ secrets.CANARY_DOCKER_BUILD }} steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: fetch-depth: 0 diff --git a/.github/workflows/copilot-setup-steps.yml b/.github/workflows/copilot-setup-steps.yml index 84d424ba9ea..b67799bd486 100644 --- a/.github/workflows/copilot-setup-steps.yml +++ b/.github/workflows/copilot-setup-steps.yml @@ -19,7 +19,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Install gh-aw extension uses: github/gh-aw/actions/setup-cli@ce1794953e0ec42adc41b6fca05e02ab49ee21c3 # v0.68.3 with: diff --git a/.github/workflows/create-release-branch.yml b/.github/workflows/create-release-branch.yml index 69a1e1ed8e6..f1bc90b6797 100644 --- a/.github/workflows/create-release-branch.yml +++ b/.github/workflows/create-release-branch.yml @@ -21,14 +21,14 @@ jobs: if: github.repository == 'TryGhost/Ghost' runs-on: ubuntu-latest steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 if: inputs.base-ref == 'latest' with: ref: main fetch-depth: 0 submodules: true - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 if: inputs.base-ref != 'latest' with: ref: ${{ inputs.base-ref }} diff --git a/.github/workflows/devcontainer-build.yml b/.github/workflows/devcontainer-build.yml index f73849e814e..5f8a5cedf7c 100644 --- a/.github/workflows/devcontainer-build.yml +++ b/.github/workflows/devcontainer-build.yml @@ -41,7 +41,7 @@ jobs: cancel-in-progress: true steps: - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Set up QEMU uses: docker/setup-qemu-action@06116385d9baf250c9f4dcb4858b16962ea869c3 # v4.1.0 diff --git a/.github/workflows/publish-tb-cli.yml b/.github/workflows/publish-tb-cli.yml index 16fa4dc598e..f2971fd990e 100644 --- a/.github/workflows/publish-tb-cli.yml +++ b/.github/workflows/publish-tb-cli.yml @@ -21,7 +21,7 @@ jobs: cancel-in-progress: true steps: - name: Checkout - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 - name: Set up Docker Buildx uses: docker/setup-buildx-action@d7f5e7f509e45cec5c76c4d5afdd7de93d0b3df5 # v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index fe041c71dec..df9db888848 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -42,7 +42,7 @@ jobs: with: ssh-private-key: ${{ secrets.DEPLOY_KEY }} - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + - uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: # Deploy key (via ssh-agent) is used for git push — it bypasses # branch protection and triggers downstream workflows (unlike GITHUB_TOKEN) diff --git a/.github/workflows/translation-review.yml b/.github/workflows/translation-review.yml index 99cf7d0dab7..e83ec9c0a3a 100644 --- a/.github/workflows/translation-review.yml +++ b/.github/workflows/translation-review.yml @@ -53,7 +53,7 @@ jobs: ) steps: - name: Checkout main (trusted ref — never the PR head) - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3 with: persist-credentials: false ref: main From e58ccf947193028b25b0bd52a8f2a6fe2874f767 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Tue, 9 Jun 2026 20:01:33 +0000 Subject: [PATCH 07/14] Added types to member welcome email helper (#28453) no ref --- .../core/server/services/member-welcome-emails/service.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/ghost/core/core/server/services/member-welcome-emails/service.js b/ghost/core/core/server/services/member-welcome-emails/service.js index 8d43691a009..ec2b07f91cb 100644 --- a/ghost/core/core/server/services/member-welcome-emails/service.js +++ b/ghost/core/core/server/services/member-welcome-emails/service.js @@ -21,6 +21,10 @@ const EMAIL_VALIDATION_TYPE_BY_FIELD = { sender_reply_to: 'replyTo' }; +/** + * @param {null | undefined | string} value + * @returns {string} + */ const trimValue = value => value?.trim() || ''; class MemberWelcomeEmailService { From 3cc0ff27e5191acd621bfc36abf167de385e4bd5 Mon Sep 17 00:00:00 2001 From: Evan Hahn Date: Tue, 9 Jun 2026 21:01:35 +0000 Subject: [PATCH 08/14] Fix `CacheManager.prototype.get` type (#28458) no ref The second argument was optional. This fixes a bunch of type errors. --- ghost/core/core/shared/settings-cache/cache-manager.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ghost/core/core/shared/settings-cache/cache-manager.js b/ghost/core/core/shared/settings-cache/cache-manager.js index f5fe8e0a7be..9f74f890ca9 100644 --- a/ghost/core/core/shared/settings-cache/cache-manager.js +++ b/ghost/core/core/shared/settings-cache/cache-manager.js @@ -179,7 +179,7 @@ class CacheManager { * In which case the full JSON version of the model will be resolved * * @param {string} key - * @param {object} options + * @param {object} [options] * @return {*} */ get(key, options) { From e36ba5398162eae92523155d59d5e8860f3ade15 Mon Sep 17 00:00:00 2001 From: Steve Larson <9larsons@gmail.com> Date: Tue, 9 Jun 2026 16:12:57 -0500 Subject: [PATCH 09/14] =?UTF-8?q?=F0=9F=8E=A8=20Improved=20E2E=20readiness?= =?UTF-8?q?=20checks=20(#28455)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit no ref - wait for Ghost through the host gateway Admin API setup endpoint instead of Docker health - validate the setup response shape so readiness proves gateway routing, Admin API, serializer, and DB access - keep Docker unhealthy/stopped checks as diagnostics while polling host readiness every 250ms There was a long delay between Docker readiness and the actual services being ready. This tightens up that feedback loop. --- .../service-managers/ghost-manager.ts | 41 ++++++++++++++----- 1 file changed, 30 insertions(+), 11 deletions(-) diff --git a/e2e/helpers/environment/service-managers/ghost-manager.ts b/e2e/helpers/environment/service-managers/ghost-manager.ts index c360b9f6096..d51dfe91ffd 100644 --- a/e2e/helpers/environment/service-managers/ghost-manager.ts +++ b/e2e/helpers/environment/service-managers/ghost-manager.ts @@ -21,6 +21,8 @@ import type {GhostConfig} from '@/helpers/playwright/fixture'; const debug = baseDebug('e2e:GhostManager'); type GhostEnvOverrides = GhostConfig | Record; +const READINESS_POLL_INTERVAL_MS = 250; + interface TinybirdConfigFile { workspaceId?: string; adminToken?: string; @@ -194,14 +196,13 @@ export class GhostManager { } /** - * Wait for Ghost container to become healthy. - * Uses Docker's built-in health check mechanism. + * Wait for Ghost to become reachable through the same gateway path used by tests. */ async waitForReady(timeoutMs: number = 120000): Promise { if (!this.ghostContainer) { throw new Error('Ghost container not initialized'); } - await this.waitForHealthy(this.ghostContainer, timeoutMs); + await this.waitForHostReadiness(this.ghostContainer, timeoutMs); } private async buildEnvWithSchedulerUrl( @@ -414,10 +415,7 @@ export class GhostManager { } } - /** - * Wait for a container to become healthy according to Docker's health check. - */ - private async waitForHealthy(container: Container, timeoutMs: number): Promise { + private async waitForHostReadiness(container: Container, timeoutMs: number): Promise { const startTime = Date.now(); while (Date.now() - startTime < timeoutMs) { @@ -425,8 +423,8 @@ export class GhostManager { const health = info.State.Health; const status = health?.Status; - if (status === 'healthy') { - debug('Container is healthy'); + if (info.State.Running && await this.probeHostReadiness()) { + debug('Host readiness probe passed'); return; } @@ -444,13 +442,34 @@ export class GhostManager { // Still starting - wait and check again await new Promise((r) => { - setTimeout(r, 1000); + setTimeout(r, READINESS_POLL_INTERVAL_MS); }); } // Timeout const logs = await container.logs({stdout: true, stderr: true, tail: 100}); logging.error(`Timeout waiting for container. Last logs:\n${logs.toString()}`); - throw new Error('Timeout waiting for Ghost to become healthy'); + throw new Error('Timeout waiting for Ghost to become ready'); + } + + private async probeHostReadiness(): Promise { + const controller = new AbortController(); + const timeout = setTimeout(() => controller.abort(), 500); + + try { + const response = await fetch(`http://localhost:${this.getGatewayPort()}/ghost/api/admin/authentication/setup`, { + method: 'GET', + headers: {Accept: 'application/json'}, + signal: controller.signal + }); + const body = await response.json().catch(() => null) as {setup?: Array<{status?: unknown}>} | null; + + return response.ok && Array.isArray(body?.setup) && typeof body.setup[0]?.status === 'boolean'; + } catch (error) { + debug('Host readiness probe failed:', error); + return false; + } finally { + clearTimeout(timeout); + } } } From cc13110492ba357dcc2ed027252495c047b75394 Mon Sep 17 00:00:00 2001 From: Steve Larson <9larsons@gmail.com> Date: Tue, 9 Jun 2026 16:15:00 -0500 Subject: [PATCH 10/14] Improved members list E2E isolation (#28456) no ref - remove broad per-test isolation from the members list E2E file - reset member state before each test via the Admin API bulk delete route - keep the existing assertions intact while allowing one per-file environment Because there's only one worker per file (we have `parallel: false`) we can - instead of per-test isolation - remove the members via API call and avoid needing to fully restore the db when what we really need to do is reset the members. Todo: This could be a factory or service reset rather than API call. I suspect we may use more of this pattern and I'll formalize that later. --- e2e/tests/admin/members/list.test.ts | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/e2e/tests/admin/members/list.test.ts b/e2e/tests/admin/members/list.test.ts index 3b57176378d..a9afb3728dc 100644 --- a/e2e/tests/admin/members/list.test.ts +++ b/e2e/tests/admin/members/list.test.ts @@ -1,14 +1,13 @@ import {MemberDetailsPage, MembersListPage} from '@/admin-pages'; import {MemberFactory, createMemberFactory} from '@/data-factory'; import {expect, test} from '@/helpers/playwright'; -import {usePerTestIsolation} from '@/helpers/playwright/isolation'; - -usePerTestIsolation(); test.describe('Ghost Admin - Members List', () => { let memberFactory: MemberFactory; test.beforeEach(async ({page}) => { + const response = await page.request.delete('/ghost/api/admin/members?all=true'); + expect(response.ok()).toBeTruthy(); memberFactory = createMemberFactory(page.request); }); From 7f18a46936ab81324d4aef4f11c59dc9eb170d9e Mon Sep 17 00:00:00 2001 From: Steve Larson <9larsons@gmail.com> Date: Tue, 9 Jun 2026 16:41:40 -0500 Subject: [PATCH 11/14] Improved members E2E cleanup (#28459) no ref - add `MembersService.deleteAll()` for targeted member cleanup in E2E tests - replace the direct members-list API cleanup with the service helper - remove per-test isolation from members bulk-actions and reset members before each test Because E2E files run with one worker per file, these member UI tests can reset the member rows they depend on instead of restoring the full database between every test. This keeps the cleanup explicit while avoiding raw Admin API calls in each test file. Todo: This still isn't ideal for test-writing. I am trying to optimize for speed right now and I'll circle back to clean up the devx. --- e2e/helpers/services/members/members-service.ts | 7 +++++++ e2e/tests/admin/members/bulk-actions.test.ts | 5 ++--- e2e/tests/admin/members/list.test.ts | 4 ++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/e2e/helpers/services/members/members-service.ts b/e2e/helpers/services/members/members-service.ts index ec5858c2f21..5afe2272b42 100644 --- a/e2e/helpers/services/members/members-service.ts +++ b/e2e/helpers/services/members/members-service.ts @@ -85,4 +85,11 @@ export class MembersService { } return data.members[0]; } + + async deleteAll(): Promise { + const response = await this.request.delete(`${this.adminEndpoint}/members?all=true`); + if (!response.ok()) { + throw new Error(`Failed to delete members: ${response.status()}`); + } + } } diff --git a/e2e/tests/admin/members/bulk-actions.test.ts b/e2e/tests/admin/members/bulk-actions.test.ts index f207b234dd5..d247421b7ff 100644 --- a/e2e/tests/admin/members/bulk-actions.test.ts +++ b/e2e/tests/admin/members/bulk-actions.test.ts @@ -1,14 +1,13 @@ import {MemberFactory, createMemberFactory} from '@/data-factory'; import {MembersListPage} from '@/admin-pages'; +import {MembersService} from '@/helpers/services/members'; import {expect, test} from '@/helpers/playwright'; -import {usePerTestIsolation} from '@/helpers/playwright/isolation'; - -usePerTestIsolation(); test.describe('Ghost Admin - Members Bulk Actions', () => { let memberFactory: MemberFactory; test.beforeEach(async ({page}) => { + await new MembersService(page.request).deleteAll(); memberFactory = createMemberFactory(page.request); }); diff --git a/e2e/tests/admin/members/list.test.ts b/e2e/tests/admin/members/list.test.ts index a9afb3728dc..2ba4e513520 100644 --- a/e2e/tests/admin/members/list.test.ts +++ b/e2e/tests/admin/members/list.test.ts @@ -1,13 +1,13 @@ import {MemberDetailsPage, MembersListPage} from '@/admin-pages'; import {MemberFactory, createMemberFactory} from '@/data-factory'; +import {MembersService} from '@/helpers/services/members'; import {expect, test} from '@/helpers/playwright'; test.describe('Ghost Admin - Members List', () => { let memberFactory: MemberFactory; test.beforeEach(async ({page}) => { - const response = await page.request.delete('/ghost/api/admin/members?all=true'); - expect(response.ok()).toBeTruthy(); + await new MembersService(page.request).deleteAll(); memberFactory = createMemberFactory(page.request); }); From 70776f0a9ab95f328efc4c22216123a82216180c Mon Sep 17 00:00:00 2001 From: Steve Larson <9larsons@gmail.com> Date: Tue, 9 Jun 2026 16:42:36 -0500 Subject: [PATCH 12/14] Improved force upgrade E2E isolation (#28460) ## Summary - remove broad per-test isolation from force-upgrade E2E tests - keep only the sign-out path in a per-test `describe` because it invalidates the authenticated session - allow the remaining force-upgrade tests to share the file-level environment Playwright supports `test.use()` at describe scope, and our fixture resolves isolation from the per-test option. The existing Stripe-enabled describe blocks use the same option scoping mechanism. ## Validation - pnpm --filter @tryghost/e2e test:types - pnpm --filter @tryghost/e2e exec eslint tests/admin/billing/force-upgrade.test.ts - git diff --check ## Local research signal - billing/force-upgrade on admin shard 1/10: 58.11s / 6 cycles -> 24.57s / 2 cycles --- e2e/tests/admin/billing/force-upgrade.test.ts | 23 ++++++++++--------- 1 file changed, 12 insertions(+), 11 deletions(-) diff --git a/e2e/tests/admin/billing/force-upgrade.test.ts b/e2e/tests/admin/billing/force-upgrade.test.ts index 3dadad8dd25..e4b3193a589 100644 --- a/e2e/tests/admin/billing/force-upgrade.test.ts +++ b/e2e/tests/admin/billing/force-upgrade.test.ts @@ -1,6 +1,5 @@ import {BillingPage, NAV_ITEMS, SidebarPage} from '@/helpers/pages'; import {expect, test} from '@/helpers/playwright'; -import {usePerTestIsolation} from '@/helpers/playwright/isolation'; const MOCK_BILLING_URL = 'https://billing.mock.test'; @@ -31,8 +30,6 @@ const FORCE_UPGRADE_BMA_HTML = ` `; -usePerTestIsolation(); - test.describe('Ghost Admin - Force Upgrade Mode', () => { test.use({ config: { @@ -99,16 +96,20 @@ test.describe('Ghost Admin - Force Upgrade Mode', () => { await expect(billingPage.billingIframe).toBeHidden(); }); - test('Sign out is accessible', async ({page}) => { - const sidebarPage = new SidebarPage(page); - const billingPage = new BillingPage(page); - await sidebarPage.goto(); + test.describe('signed-out navigation', () => { + test.use({isolation: 'per-test'}); - await billingPage.waitForBillingIframe(); - await sidebarPage.userDropdownTrigger.click(); - await sidebarPage.signOutLink.click(); + test('Sign out is accessible', async ({page}) => { + const sidebarPage = new SidebarPage(page); + const billingPage = new BillingPage(page); + await sidebarPage.goto(); + + await billingPage.waitForBillingIframe(); + await sidebarPage.userDropdownTrigger.click(); + await sidebarPage.signOutLink.click(); - await expect(page).toHaveURL(/signin/); + await expect(page).toHaveURL(/signin/); + }); }); test('Ember-handled tag detail route shows billing iframe', async ({page}) => { From 3eebfb420d167a89ed85a55e1d8ae0185011d9b2 Mon Sep 17 00:00:00 2001 From: Adithya Vardhan Date: Wed, 10 Jun 2026 03:21:54 +0530 Subject: [PATCH 13/14] =?UTF-8?q?=F0=9F=90=9B=20Updated=20Portal=20to=20sh?= =?UTF-8?q?ow=20message=20when=20no=20plans=20are=20available=20(#22512)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit closes https://github.com/TryGhost/Ghost/issues/21992 Adds description when plans are not available. Co-authored-by: Steve Larson <9larsons@gmail.com> --- apps/portal/package.json | 2 +- .../src/components/pages/account-plan-page.js | 25 +++++++++++++++++++ .../src/components/pages/signup-page.js | 2 +- .../pages/account-plan-page.test.js | 19 ++++++++++++++ ghost/i18n/locales/af/portal.json | 1 + ghost/i18n/locales/ar/portal.json | 1 + ghost/i18n/locales/bg/portal.json | 1 + ghost/i18n/locales/bn/portal.json | 1 + ghost/i18n/locales/bs/portal.json | 1 + ghost/i18n/locales/ca/portal.json | 1 + ghost/i18n/locales/context.json | 1 + ghost/i18n/locales/cs/portal.json | 1 + ghost/i18n/locales/da/portal.json | 1 + ghost/i18n/locales/de-CH/portal.json | 1 + ghost/i18n/locales/de/portal.json | 1 + ghost/i18n/locales/el/portal.json | 1 + ghost/i18n/locales/en/portal.json | 1 + ghost/i18n/locales/eo/portal.json | 1 + ghost/i18n/locales/es/portal.json | 1 + ghost/i18n/locales/et/portal.json | 1 + ghost/i18n/locales/eu/portal.json | 1 + ghost/i18n/locales/fa/portal.json | 1 + ghost/i18n/locales/fi/portal.json | 1 + ghost/i18n/locales/fr/portal.json | 1 + ghost/i18n/locales/gd/portal.json | 1 + ghost/i18n/locales/he/portal.json | 1 + ghost/i18n/locales/hi/portal.json | 1 + ghost/i18n/locales/hr/portal.json | 1 + ghost/i18n/locales/hu/portal.json | 1 + ghost/i18n/locales/id/portal.json | 1 + ghost/i18n/locales/is/portal.json | 1 + ghost/i18n/locales/it/portal.json | 9 ++++--- ghost/i18n/locales/ja/portal.json | 1 + ghost/i18n/locales/ko/portal.json | 1 + ghost/i18n/locales/kz/portal.json | 1 + ghost/i18n/locales/lt/portal.json | 1 + ghost/i18n/locales/lv/portal.json | 1 + ghost/i18n/locales/mk/portal.json | 1 + ghost/i18n/locales/mn/portal.json | 1 + ghost/i18n/locales/ms/portal.json | 1 + ghost/i18n/locales/nb/portal.json | 1 + ghost/i18n/locales/ne/portal.json | 1 + ghost/i18n/locales/nl/portal.json | 1 + ghost/i18n/locales/nn/portal.json | 1 + ghost/i18n/locales/pa/portal.json | 1 + ghost/i18n/locales/pl/portal.json | 1 + ghost/i18n/locales/pt-BR/portal.json | 1 + ghost/i18n/locales/pt/portal.json | 1 + ghost/i18n/locales/ro/portal.json | 1 + ghost/i18n/locales/ru/portal.json | 1 + ghost/i18n/locales/si/portal.json | 1 + ghost/i18n/locales/sk/portal.json | 1 + ghost/i18n/locales/sl/portal.json | 1 + ghost/i18n/locales/sq/portal.json | 1 + ghost/i18n/locales/sr-Cyrl/portal.json | 1 + ghost/i18n/locales/sr/portal.json | 1 + ghost/i18n/locales/sv/portal.json | 1 + ghost/i18n/locales/sw/portal.json | 1 + ghost/i18n/locales/ta/portal.json | 1 + ghost/i18n/locales/th/portal.json | 1 + ghost/i18n/locales/tr/portal.json | 1 + ghost/i18n/locales/uk/portal.json | 1 + ghost/i18n/locales/ur/portal.json | 1 + ghost/i18n/locales/uz/portal.json | 1 + ghost/i18n/locales/vi/portal.json | 1 + ghost/i18n/locales/zh-Hant/portal.json | 1 + ghost/i18n/locales/zh/portal.json | 1 + 67 files changed, 113 insertions(+), 6 deletions(-) diff --git a/apps/portal/package.json b/apps/portal/package.json index 3824692b22c..c08339200d6 100644 --- a/apps/portal/package.json +++ b/apps/portal/package.json @@ -1,6 +1,6 @@ { "name": "@tryghost/portal", - "version": "2.68.58", + "version": "2.68.59", "license": "MIT", "repository": "https://github.com/TryGhost/Ghost", "author": "Ghost Foundation", diff --git a/apps/portal/src/components/pages/account-plan-page.js b/apps/portal/src/components/pages/account-plan-page.js index 607832aa683..00f2050fc03 100644 --- a/apps/portal/src/components/pages/account-plan-page.js +++ b/apps/portal/src/components/pages/account-plan-page.js @@ -438,6 +438,23 @@ const UpgradePlanSection = ({ ); }; +// Shown when there are no paid plans to display (e.g. a member reaches the +// plans page via a theme button or deep link while the site has no paid tiers). +const NoPlansAvailableMessage = () => { + return ( +
+
+

+ {t('Sorry, no paid plans are available.')} +

+
+
+ ); +}; + const PlansContainer = ({ plans, selectedPlan, confirmationPlan, confirmationType, showConfirmation = false, pendingOffer, onPlanSelect, onPlanCheckout, onConfirm, onCancelSubscription, @@ -446,6 +463,14 @@ const PlansContainer = ({ const {member} = useContext(AppContext); // Plan upgrade flow for free, complimentary, or gift members. if (!isPaidMember({member}) || isComplimentaryMember({member}) || isGiftMember({member})) { + // No paid plans to choose from. This covers the deep-link / theme-button + // entry point (#/portal/account/plans), which cannot be gated in-app, + // where the body would otherwise render blank under the page header. + if (plans.length === 0) { + return ( + + ); + } return ( { expect(continueBtn).toHaveLength(1); }); + test('shows an informative message when no paid plans are available', () => { + // Reproduces the deep-link / theme-button entry point (#/portal/account/plans) + // on a site with members enabled but no paid plan configured. Without the + // empty state the body renders blank under the "Choose a plan" header. + const siteData = getSiteData({ + paidMembersEnabled: false, + products: getProductsData({numOfProducts: 0}) + }); + const {getByTestId, queryByTestId} = customSetup({site: siteData}); + + const message = getByTestId('no-plans-available-notification-text'); + expect(message).toBeInTheDocument(); + expect(message).toHaveTextContent('Sorry, no paid plans are available.'); + + // The plan selectors should not render in the empty state. + expect(queryByTestId('monthly-switch')).not.toBeInTheDocument(); + expect(queryByTestId('yearly-switch')).not.toBeInTheDocument(); + }); + test('can choose plan and continue', async () => { const siteData = getSiteData({ products: getProductsData({numOfProducts: 1}) diff --git a/ghost/i18n/locales/af/portal.json b/ghost/i18n/locales/af/portal.json index 0691e2467e9..0f300bbcad3 100644 --- a/ghost/i18n/locales/af/portal.json +++ b/ghost/i18n/locales/af/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Aanmelding fout: Ongeldige skakel", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Jammer, dit het nie gewerk nie.", "Spam complaints": "Spam klagtes", diff --git a/ghost/i18n/locales/ar/portal.json b/ghost/i18n/locales/ar/portal.json index 2f03e344088..7ac8195dd60 100644 --- a/ghost/i18n/locales/ar/portal.json +++ b/ghost/i18n/locales/ar/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "خطأ في التسجيل: الرابط غير صالح", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": ".حدث خطأ ما، يرجى المحاولة مرة أخرى لاحقًا", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": ".عذرًا، لا توجد توصيات متاحة حاليًا", "Sorry, that didn’t work.": ".عذرًا، لم ينجح ذلك", "Spam complaints": "شكاوى البريد المزعج", diff --git a/ghost/i18n/locales/bg/portal.json b/ghost/i18n/locales/bg/portal.json index de15f2a1c75..dce73f24929 100644 --- a/ghost/i18n/locales/bg/portal.json +++ b/ghost/i18n/locales/bg/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Грешка при регистрация: Невалиден линк", "Signups from this email domain are currently restricted.": "Регистрациите от този домейн в момента са ограничени.", "Something went wrong, please try again later.": "Нещо се обърка, опитайте отново.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "За жалост, в момента няма налични препоръки.", "Sorry, that didn’t work.": "Жалко, така не се получава.", "Spam complaints": "Оплаквания от спам", diff --git a/ghost/i18n/locales/bn/portal.json b/ghost/i18n/locales/bn/portal.json index ab889b90c52..4519f0ef0ec 100644 --- a/ghost/i18n/locales/bn/portal.json +++ b/ghost/i18n/locales/bn/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "সাইন আপ ত্রুটি: অবৈধ লিঙ্ক", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "দুঃখিত, এটি কাজ করেনি।", "Spam complaints": "স্প্যাম অভিযোগ", diff --git a/ghost/i18n/locales/bs/portal.json b/ghost/i18n/locales/bs/portal.json index 2403d18157c..eaf11f6aa10 100644 --- a/ghost/i18n/locales/bs/portal.json +++ b/ghost/i18n/locales/bs/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Greška pri prijavi: Neispravan link", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Žao nam je, to nije uspjelo.", "Spam complaints": "Pritužbe na spam", diff --git a/ghost/i18n/locales/ca/portal.json b/ghost/i18n/locales/ca/portal.json index 7b8a36223b6..9e81e425ebb 100644 --- a/ghost/i18n/locales/ca/portal.json +++ b/ghost/i18n/locales/ca/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Error de registre: Enllaç no vàlid", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Quelcom no ha funcionat. Si-us-plau, torna-ho a intentar més tard.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Ho sentim, no hi ha cap recomanació ara mateix.", "Sorry, that didn’t work.": "Em sap greu, però no ha funcionat.", "Spam complaints": "Queixes de correu brossa", diff --git a/ghost/i18n/locales/context.json b/ghost/i18n/locales/context.json index 5a58df2efc1..3c432b1208c 100644 --- a/ghost/i18n/locales/context.json +++ b/ghost/i18n/locales/context.json @@ -295,6 +295,7 @@ "Someone just replied to your comment on {postTitle}.": "Email text when informing user about reply to his comment on post", "Something went wrong, please try again later.": "Generic error message", "Something went wrong, please try again.": "Generic error message", + "Sorry, no paid plans are available.": "Shown on the Portal plans page when a member reaches it (e.g. via a theme button or deep link) but the site has no paid plans configured", "Sorry, no recommendations are available right now.": "Shown if a user visits the recommendations screen in portal when recommendations aren't available", "Sorry, that didn’t work.": "Title of a page when an error occured while submitting feedback", "Sort by": "Used for sorting comments, appears next to a dropdown with options (oldest, newest, best)", diff --git a/ghost/i18n/locales/cs/portal.json b/ghost/i18n/locales/cs/portal.json index fcf6cd85420..c29f4ee20de 100644 --- a/ghost/i18n/locales/cs/portal.json +++ b/ghost/i18n/locales/cs/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Chyba registrace: Neplatný odkaz", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Něco se pokazilo, zkuste to prosím později.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Omlouváme se, to nefungovalo.", "Spam complaints": "Stížnosti na spam", diff --git a/ghost/i18n/locales/da/portal.json b/ghost/i18n/locales/da/portal.json index d1e5ca031fa..459353b2fbc 100644 --- a/ghost/i18n/locales/da/portal.json +++ b/ghost/i18n/locales/da/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Tilmeldingsfejl: Ugyldigt link", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Noget gik galt, prøv venligst igen senere.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Beklager, der er ingen anbefalinger tilgængelige lige nu.", "Sorry, that didn’t work.": "Beklager, det virkede ikke.", "Spam complaints": "Spam klager", diff --git a/ghost/i18n/locales/de-CH/portal.json b/ghost/i18n/locales/de-CH/portal.json index eab24ba6730..d8bd6648bf3 100644 --- a/ghost/i18n/locales/de-CH/portal.json +++ b/ghost/i18n/locales/de-CH/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Fehler bei der Registrierung: Ungültiger Link.", "Signups from this email domain are currently restricted.": "Anmeldungen mit dieser E-Mail-Domain sind momentan nicht möglich.", "Something went wrong, please try again later.": "Etwas ist schief gelaufen, bitte versuchen Sie es später erneut.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Entschuldigen Sie, aktuell sind keine Empfehlungen verfügbar.", "Sorry, that didn’t work.": "Entschuldigen Sie, das hat leider nicht funktioniert.", "Spam complaints": "Spam-Beschwerden", diff --git a/ghost/i18n/locales/de/portal.json b/ghost/i18n/locales/de/portal.json index 8c379742107..3da15622bb9 100644 --- a/ghost/i18n/locales/de/portal.json +++ b/ghost/i18n/locales/de/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Fehler bei der Registrierung: Ungültiger Link", "Signups from this email domain are currently restricted.": "Registrierungen über diese E-Mail-Domain sind aktuell nicht möglich.", "Something went wrong, please try again later.": "Etwas ist schief gelaufen, bitte versuche es später noch einmal.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Entschuldige, aktuell sind keine Empfehlungen verfügbar.", "Sorry, that didn’t work.": "Entschuldige, das hat nicht funktioniert.", "Spam complaints": "Spam-Beschwerden", diff --git a/ghost/i18n/locales/el/portal.json b/ghost/i18n/locales/el/portal.json index da9b5593584..ce69af6ce66 100644 --- a/ghost/i18n/locales/el/portal.json +++ b/ghost/i18n/locales/el/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Σφάλμα εγγραφής: Μη έγκυρος σύνδεσμος", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Συγγνώμη, αυτό δεν λειτούργησε.", "Spam complaints": "Αναφορές ανεπιθύμητης αλληλογραφίας", diff --git a/ghost/i18n/locales/en/portal.json b/ghost/i18n/locales/en/portal.json index d9cb8fe0396..9fa66a2bda1 100644 --- a/ghost/i18n/locales/en/portal.json +++ b/ghost/i18n/locales/en/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "", "Spam complaints": "", diff --git a/ghost/i18n/locales/eo/portal.json b/ghost/i18n/locales/eo/portal.json index 53bd99db091..845ad2e2dec 100644 --- a/ghost/i18n/locales/eo/portal.json +++ b/ghost/i18n/locales/eo/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "", "Spam complaints": "", diff --git a/ghost/i18n/locales/es/portal.json b/ghost/i18n/locales/es/portal.json index 2fcedd3ad26..0bb67d07ff2 100644 --- a/ghost/i18n/locales/es/portal.json +++ b/ghost/i18n/locales/es/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Error de registro: Enlace no válido", "Signups from this email domain are currently restricted.": "Los registros asociados a este dominio de email están actualmente restringidos.", "Something went wrong, please try again later.": "Algo salió mal, inténtalo de nuevo.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Lo sentimos, no tenemos recomendaciones en este momento", "Sorry, that didn’t work.": "Lo siento, eso no funcionó.", "Spam complaints": "Quejas de spam", diff --git a/ghost/i18n/locales/et/portal.json b/ghost/i18n/locales/et/portal.json index 59f3085659e..a103d646aba 100644 --- a/ghost/i18n/locales/et/portal.json +++ b/ghost/i18n/locales/et/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Registreerimise viga: Vigane link", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Midagi läks valesti, palun proovige hiljem uuesti.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "", "Spam complaints": "Rämpsposti kaebused", diff --git a/ghost/i18n/locales/eu/portal.json b/ghost/i18n/locales/eu/portal.json index 66bb3cb5f9b..4fa8f5a4f01 100644 --- a/ghost/i18n/locales/eu/portal.json +++ b/ghost/i18n/locales/eu/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Errorea izen-ematean: Esteka baliogabea", "Signups from this email domain are currently restricted.": "ePosta hornitzaile honetako izen-emateak mugatuta daude.", "Something went wrong, please try again later.": "Zerbaitek huts egin du, saiatu berriro geroago.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Une honetan ez dago gomendiorik zuretzat.", "Sorry, that didn’t work.": "Kale egin du.", "Spam complaints": "ePosta baztergarritzat jota", diff --git a/ghost/i18n/locales/fa/portal.json b/ghost/i18n/locales/fa/portal.json index 3c4f1f4ae62..1691a7aef21 100644 --- a/ghost/i18n/locales/fa/portal.json +++ b/ghost/i18n/locales/fa/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "خطای ثبت نام: پیوند معتبر نیست", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "پوزش می\u200cخواهیم، آن کار انجام نشد.", "Spam complaints": "گزارش\u200cهای اسپم", diff --git a/ghost/i18n/locales/fi/portal.json b/ghost/i18n/locales/fi/portal.json index 9f2409317c3..2e4c6eb78b0 100644 --- a/ghost/i18n/locales/fi/portal.json +++ b/ghost/i18n/locales/fi/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Virhe rekisteröinnissä: Linkki ei toimi", "Signups from this email domain are currently restricted.": "Tätä sähköpostidomainia käyttävien henkilöiden rekisteröitymistä on tällä hetkellä rajoitettu.", "Something went wrong, please try again later.": "Jotain meni pieleen, ole hyvä ja yritä uudestaan myöhemmin.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Valitettavasti suositukset eivät ole juuri nyt käytettävissä.", "Sorry, that didn’t work.": "Anteeksi, tämä ei onnistunut", "Spam complaints": "Spam-valitukset", diff --git a/ghost/i18n/locales/fr/portal.json b/ghost/i18n/locales/fr/portal.json index 1097c32ff3f..5598d50acfa 100644 --- a/ghost/i18n/locales/fr/portal.json +++ b/ghost/i18n/locales/fr/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Erreur lors de l'inscription : le lien est invalide", "Signups from this email domain are currently restricted.": "Les inscriptions depuis ce domaine de messagerie sont actuellement restreintes.", "Something went wrong, please try again later.": "Quelque chose s'est mal passé, veuillez réessayer plus tard.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Désolé, aucune recommandation n'est disponible pour le moment.", "Sorry, that didn’t work.": "Désolé, cela n'a pas fonctionné.", "Spam complaints": "Plaintes contre le spam", diff --git a/ghost/i18n/locales/gd/portal.json b/ghost/i18n/locales/gd/portal.json index 3d3129568bf..70ace1808dc 100644 --- a/ghost/i18n/locales/gd/portal.json +++ b/ghost/i18n/locales/gd/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Mearachd: Ceangal mì-dhligheach", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Thachair mearachd, feuch a-rithist an ceann greis.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Duilich, cha do dh’obraich sin.", "Spam complaints": "Gearanan spama", diff --git a/ghost/i18n/locales/he/portal.json b/ghost/i18n/locales/he/portal.json index e2b1bacc335..b52985dd911 100644 --- a/ghost/i18n/locales/he/portal.json +++ b/ghost/i18n/locales/he/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "שגיאת הרשמה: לינק לא תקין", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "משהו השתבש, נסו שוב מאוחר יותר.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "מצטערים אך אין המלצות זמינות כעת.", "Sorry, that didn’t work.": "מצטערים, זה לא עבד", "Spam complaints": "תלונות ספאם", diff --git a/ghost/i18n/locales/hi/portal.json b/ghost/i18n/locales/hi/portal.json index 5c0fbcefa53..4f83d3e8716 100644 --- a/ghost/i18n/locales/hi/portal.json +++ b/ghost/i18n/locales/hi/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "साइनअप त्रुटि: अमान्य लिंक", "Signups from this email domain are currently restricted.": "इस ईमेल डोमेन से साइनअप वर्तमान में प्रतिबंधित हैं।", "Something went wrong, please try again later.": "कुछ गलत हो गया, कृपया बाद में पुनः प्रयास करें।", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "क्षमा करें, अभी कोई अनुशंसाएँ उपलब्ध नहीं हैं।", "Sorry, that didn’t work.": "क्षमा करें, वह काम नहीं किया।", "Spam complaints": "स्पैम शिकायतें", diff --git a/ghost/i18n/locales/hr/portal.json b/ghost/i18n/locales/hr/portal.json index f1304d0505b..d56e0c3ead6 100644 --- a/ghost/i18n/locales/hr/portal.json +++ b/ghost/i18n/locales/hr/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Greška prilikom prijave. Neispravan link", "Signups from this email domain are currently restricted.": "Registracija sa ovog email domena trenutno nije dopuštena.", "Something went wrong, please try again later.": "Nešto je pošlo po zlu, pokušajte ponovno kasnije.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Trenutno nema dostupnih preporuka.", "Sorry, that didn’t work.": "Žao nam je, to nije uspjelo.", "Spam complaints": "Pritužbe za neželjenu e-poštu", diff --git a/ghost/i18n/locales/hu/portal.json b/ghost/i18n/locales/hu/portal.json index 39d8bafddb9..7f19a40e809 100644 --- a/ghost/i18n/locales/hu/portal.json +++ b/ghost/i18n/locales/hu/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Regisztrációs hiba: érvénytelen link", "Signups from this email domain are currently restricted.": "Ehhez az e-mail szolgáltatóhoz tartozó regisztráció jelenleg nem engedélyezett.", "Something went wrong, please try again later.": "Valami nem sikerült. Kérjük, próbáld újra.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Sajnáljuk, de az ajánlott oldalak most nem elérhetőek.", "Sorry, that didn’t work.": "Sajnáljuk, ez nem működött.", "Spam complaints": "Spam panaszok", diff --git a/ghost/i18n/locales/id/portal.json b/ghost/i18n/locales/id/portal.json index fbbb78f7c93..40e1b281be4 100644 --- a/ghost/i18n/locales/id/portal.json +++ b/ghost/i18n/locales/id/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Kesalahan pendaftaran: Tautan tidak valid", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Terjadi kesalahan, silakan coba lagi nanti.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Maaf, itu tidak berhasil.", "Spam complaints": "Keluhan spam", diff --git a/ghost/i18n/locales/is/portal.json b/ghost/i18n/locales/is/portal.json index a5cb56095f3..94f305a5fe3 100644 --- a/ghost/i18n/locales/is/portal.json +++ b/ghost/i18n/locales/is/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Villa við nýskráningu: Ógildur hlekkur", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Þetta virkaði því miður ekki.", "Spam complaints": "Kvartanir um ruslpóst", diff --git a/ghost/i18n/locales/it/portal.json b/ghost/i18n/locales/it/portal.json index 158e656449a..945234b24fc 100644 --- a/ghost/i18n/locales/it/portal.json +++ b/ghost/i18n/locales/it/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Errore di accesso: link invalido", "Signups from this email domain are currently restricted.": "Le iscrizioni con questo dominio email sono attualmente limitate.", "Something went wrong, please try again later.": "Qualcosa è andato storto, riprova più tardi.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Ci dispiace, al momento non ci sono consigli disponibili.", "Sorry, that didn’t work.": "Ci dispiace, non ha funzionato.", "Spam complaints": "Reclami per spam", @@ -272,15 +273,15 @@ "X (Twitter)": "X (Twitter)", "year": "Anno", "Yearly": "Annuale", - "You already have an active subscription.": "Hai già un abbonamento attivo.", + "You already have an active subscription.": "Hai già un abbonamento attivo.", "You currently have a free membership, upgrade to a paid subscription for full access.": "Attualmente hai un piano gratuito, abbonati per ottenere l'accesso completo.", "You have been successfully resubscribed": "Reiscrizione effettuata con successo", - "You now have access to {tierName} until {expiryDate}. Enjoy!": "Ora hai accesso a {tierName} fino al {expiryDate}. Buon divertimento!", + "You now have access to {tierName} until {expiryDate}. Enjoy!": "Ora hai accesso a {tierName} fino al {expiryDate}. Buon divertimento!", "You're currently not receiving emails": "Al momento non ricevi nessuna email", "You're not receiving emails": "Non ricevi nessuna email", "You're not receiving emails because you either marked a recent message as spam, or because messages could not be delivered to your provided email address.": "Non ricevi email perché hai contrassegnato un messaggio recente come spam, o perché non è stato possibile recapitare i messaggi all'indirizzo email fornito.", - "You've been gifted a membership": "Hai ricevuto un abbonamento in regalo", - "You've been gifted a membership to {siteTitle}": "Hai ricevuto un abbonamento in regalo a {siteTitle}", + "You've been gifted a membership": "Hai ricevuto un abbonamento in regalo", + "You've been gifted a membership to {siteTitle}": "Hai ricevuto un abbonamento in regalo a {siteTitle}", "You've successfully signed in.": "Accesso effettuato.", "You've successfully subscribed to {siteTitle}": "Iscrizione effettuata a {siteTitle}", "Your account": "Il tuo account", diff --git a/ghost/i18n/locales/ja/portal.json b/ghost/i18n/locales/ja/portal.json index 91326cff944..c65a176155d 100644 --- a/ghost/i18n/locales/ja/portal.json +++ b/ghost/i18n/locales/ja/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "エラー: 無効なリンク", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "申し訳ありませんが、うまくいきませんでした。", "Spam complaints": "スパムに関する苦情", diff --git a/ghost/i18n/locales/ko/portal.json b/ghost/i18n/locales/ko/portal.json index 9840a372125..ca12b7be594 100644 --- a/ghost/i18n/locales/ko/portal.json +++ b/ghost/i18n/locales/ko/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "가입 오류: 잘못된 링크", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "문제가 발생했어요. 나중에 다시 시도해 주세요.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "죄송해요. 현재 추천할 만한 콘텐츠가 없어요.", "Sorry, that didn’t work.": "죄송해요. 작동하지 않았어요.", "Spam complaints": "스팸 신고", diff --git a/ghost/i18n/locales/kz/portal.json b/ghost/i18n/locales/kz/portal.json index 127d67b119a..bfc72e6d995 100644 --- a/ghost/i18n/locales/kz/portal.json +++ b/ghost/i18n/locales/kz/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Тіркелу қатесі: Жарамсыз сілтеме", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Өкінішті, бұдан ештеңе шықпады.", "Spam complaints": "Спам шағымдары", diff --git a/ghost/i18n/locales/lt/portal.json b/ghost/i18n/locales/lt/portal.json index 7415586de6b..13e664a45b6 100644 --- a/ghost/i18n/locales/lt/portal.json +++ b/ghost/i18n/locales/lt/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Registracijos klaida: negaliojanti nuoroda", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Atsiprašome, nepavyko.", "Spam complaints": "Skundai dėl šlamšto", diff --git a/ghost/i18n/locales/lv/portal.json b/ghost/i18n/locales/lv/portal.json index 6d8997f0d0b..15c059454e8 100644 --- a/ghost/i18n/locales/lv/portal.json +++ b/ghost/i18n/locales/lv/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Reģistrācijas kļūda: nederīga saite", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Radās problēma. Lūdzu, vēlāk mēģiniet vēlreiz.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Diemžēl pašlaik ieteikumi nav pieejami.", "Sorry, that didn’t work.": "Atvainojiet, tas nedarbojās.", "Spam complaints": "Surogātpasta sūdzības", diff --git a/ghost/i18n/locales/mk/portal.json b/ghost/i18n/locales/mk/portal.json index c2258daf3c6..abd0778cdc5 100644 --- a/ghost/i18n/locales/mk/portal.json +++ b/ghost/i18n/locales/mk/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Грешка при регистрација: Невалиден линк", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Се извинуваме, тоа не проработи.", "Spam complaints": "Поплаки за спам", diff --git a/ghost/i18n/locales/mn/portal.json b/ghost/i18n/locales/mn/portal.json index d4d2e738abb..bde0c0f76ad 100644 --- a/ghost/i18n/locales/mn/portal.json +++ b/ghost/i18n/locales/mn/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Бүртгүүлэх алдаа: Буруу холбоос", "Signups from this email domain are currently restricted.": "Энэхүү имэйл домэйнээс бүртгүүлэх нь хязгаарлагдсан байна.", "Something went wrong, please try again later.": "Ямар нэг алдаа гарлаа, дараа дахин оролдоно уу.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Уучлаарай, одоогоор санал болгох зүйл алга байна.", "Sorry, that didn’t work.": "Уучлаарай, амжилтгүй боллоо.", "Spam complaints": "Спамын гомдлууд", diff --git a/ghost/i18n/locales/ms/portal.json b/ghost/i18n/locales/ms/portal.json index a4674e72809..7e60fefff06 100644 --- a/ghost/i18n/locales/ms/portal.json +++ b/ghost/i18n/locales/ms/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Ralat daftar: Pautan tidak sah", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Maaf, itu tidak berfungsi.", "Spam complaints": "Aduan spam", diff --git a/ghost/i18n/locales/nb/portal.json b/ghost/i18n/locales/nb/portal.json index baf04242cda..c91fed06553 100644 --- a/ghost/i18n/locales/nb/portal.json +++ b/ghost/i18n/locales/nb/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Feil ved registrering: Ugyldig lenke", "Signups from this email domain are currently restricted.": "Registrering fra dette e-postdomenet er utilgjengelig for øyeblikket.", "Something went wrong, please try again later.": "Noe gikk galt. Prøv igjen senere.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Beklager, ingen anbefalinger er tilgjengelige for øyeblikket.", "Sorry, that didn’t work.": "Beklager, det fungerte ikke", "Spam complaints": "Søppelpostklager", diff --git a/ghost/i18n/locales/ne/portal.json b/ghost/i18n/locales/ne/portal.json index d9cb8fe0396..9fa66a2bda1 100644 --- a/ghost/i18n/locales/ne/portal.json +++ b/ghost/i18n/locales/ne/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "", "Spam complaints": "", diff --git a/ghost/i18n/locales/nl/portal.json b/ghost/i18n/locales/nl/portal.json index 0b2755de4d2..3e18a534b2d 100644 --- a/ghost/i18n/locales/nl/portal.json +++ b/ghost/i18n/locales/nl/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Registratiefout: Ongeldige link", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Er ging iets mis, probeer het later opnieuw.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Sorry, er zijn momenteel geen aanbevelingen beschikbaar.", "Sorry, that didn’t work.": "Sorry, dat werkte niet.", "Spam complaints": "Spamklachten", diff --git a/ghost/i18n/locales/nn/portal.json b/ghost/i18n/locales/nn/portal.json index b185abbda25..b56a69be3d0 100644 --- a/ghost/i18n/locales/nn/portal.json +++ b/ghost/i18n/locales/nn/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Registreringsfeil: Ugyldig lenke", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Beklagar, det verka ikkje.", "Spam complaints": "Spamklagar", diff --git a/ghost/i18n/locales/pa/portal.json b/ghost/i18n/locales/pa/portal.json index 4d4eaf71cc2..825463e1727 100644 --- a/ghost/i18n/locales/pa/portal.json +++ b/ghost/i18n/locales/pa/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "ਸਾਈਨ-ਅੱਪ ਗਲਤੀ: ਅਵੈਧ ਲਿੰਕ", "Signups from this email domain are currently restricted.": "ਇਸ ਈਮੇਲ ਡੋਮੇਨ ਤੋਂ ਸਾਈਨ-ਅੱਪ ਵਰਤਮਾਨ ਵਿੱਚ ਪ੍ਰਤਿਬੰਧਿਤ ਹਨ।", "Something went wrong, please try again later.": "ਕੁਝ ਗਲਤ ਹੋ ਗਿਆ, ਕਿਰਪਾ ਕਰਕੇ ਬਾਅਦ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "ਮਾਫ਼ ਕਰਨਾ, ਇਸ ਵੇਲੇ ਕੋਈ ਸਿਫ਼ਾਰਸ਼ਾਂ ਉਪਲਬਧ ਨਹੀਂ ਹਨ।", "Sorry, that didn’t work.": "ਮਾਫ਼ ਕਰਨਾ, ਉਹ ਕੰਮ ਨਹੀਂ ਹੋਇਆ।", "Spam complaints": "ਸਪੈਮ ਸ਼ਿਕਾਇਤਾਂ", diff --git a/ghost/i18n/locales/pl/portal.json b/ghost/i18n/locales/pl/portal.json index 6cecfe38d6d..e1b6a0198b9 100644 --- a/ghost/i18n/locales/pl/portal.json +++ b/ghost/i18n/locales/pl/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Błąd rejestracji: Nieprawidłowy link", "Signups from this email domain are currently restricted.": "Rejestracje z tej domeny email są obecnie ograniczone.", "Something went wrong, please try again later.": "Wystąpił błąd. Spróbuj ponownie później.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Przepraszamy, w tej chwili nie są dostępne żadne rekomendacje.", "Sorry, that didn’t work.": "Przepraszamy, to nie zadziałało.", "Spam complaints": "Skargi dotyczące spamu", diff --git a/ghost/i18n/locales/pt-BR/portal.json b/ghost/i18n/locales/pt-BR/portal.json index c86e22da5ff..56820160fb0 100644 --- a/ghost/i18n/locales/pt-BR/portal.json +++ b/ghost/i18n/locales/pt-BR/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Erro de inscrição: link inválido", "Signups from this email domain are currently restricted.": "As inscrições utilizando este domínio de e-mail estão restritas no momento.", "Something went wrong, please try again later.": "Algo deu errado, tente novamente mais tarde.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Desculpe, não há recomendações disponíveis no momento.", "Sorry, that didn’t work.": "Desculpe, isso não funcionou.", "Spam complaints": "Reclamações de spam", diff --git a/ghost/i18n/locales/pt/portal.json b/ghost/i18n/locales/pt/portal.json index ce1e0830ae5..d43859f393e 100644 --- a/ghost/i18n/locales/pt/portal.json +++ b/ghost/i18n/locales/pt/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Erro de inscrição: ligação inválida", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Temos um erro em mãos, tente por favor mais tarde.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Desculpe, mas isso não funcionou.", "Spam complaints": "Reclamações de spam", diff --git a/ghost/i18n/locales/ro/portal.json b/ghost/i18n/locales/ro/portal.json index e0d63254e3d..5ec2a966daa 100644 --- a/ghost/i18n/locales/ro/portal.json +++ b/ghost/i18n/locales/ro/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Eroare la înregistrare: Link invalid", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Ne pare rău, nu a funcționat.", "Spam complaints": "Reclamații spam", diff --git a/ghost/i18n/locales/ru/portal.json b/ghost/i18n/locales/ru/portal.json index 5ec7b4be967..e80b0f20153 100644 --- a/ghost/i18n/locales/ru/portal.json +++ b/ghost/i18n/locales/ru/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Ошибка регистрации: Неверная или просроченная ссылка", "Signups from this email domain are currently restricted.": "Регистрация почты с этого домена в настоящее время ограничена.", "Something went wrong, please try again later.": "Что-то пошло не так, попробуйте ещё раз позже.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Извините, на данный момент рекомендации недоступны.", "Sorry, that didn’t work.": "Извините, это не сработало.", "Spam complaints": "Жалобы на спам", diff --git a/ghost/i18n/locales/si/portal.json b/ghost/i18n/locales/si/portal.json index 6c23dcab61f..8031f615733 100644 --- a/ghost/i18n/locales/si/portal.json +++ b/ghost/i18n/locales/si/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Signup වීම අසාර්ථකයි: වැරදි link එකකි", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "සමාවෙන්න, නමුත් එය සාර්ථක වූයේ නැත.", "Spam complaints": "Spam සඳහා වන පැමිණිලි", diff --git a/ghost/i18n/locales/sk/portal.json b/ghost/i18n/locales/sk/portal.json index a55de59d25b..f765e8279dc 100644 --- a/ghost/i18n/locales/sk/portal.json +++ b/ghost/i18n/locales/sk/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Chyba registrácie: Neplatný odkaz", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Niečo sa pokazilo, skúste to prosím neskôr.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Prepáčte, momentálne nie sú dostupné žiadne odporúčania.", "Sorry, that didn’t work.": "Prepáčte, toto nezafungovalo.", "Spam complaints": "Sťažnosti na spam", diff --git a/ghost/i18n/locales/sl/portal.json b/ghost/i18n/locales/sl/portal.json index c88c18a4dca..1de299a9e06 100644 --- a/ghost/i18n/locales/sl/portal.json +++ b/ghost/i18n/locales/sl/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Napaka pri registraciji: Neveljavna povezava", "Signups from this email domain are currently restricted.": "Prijave iz te e-pošte so trenutno omejene.", "Something went wrong, please try again later.": "Nekaj je šlo narobe, poskusite ponovno kasneje.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Oprostite, trenutno ni priporočil.", "Sorry, that didn’t work.": "Oprostite, to ni uspelo.", "Spam complaints": "Pritožbe zaradi vsiljene pošte", diff --git a/ghost/i18n/locales/sq/portal.json b/ghost/i18n/locales/sq/portal.json index 9bf651a9f82..3930a408a95 100644 --- a/ghost/i18n/locales/sq/portal.json +++ b/ghost/i18n/locales/sq/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Gabim ne rregjistrim: Link i pavlefshem", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Na vjen keq, kjo nuk funksionoi.", "Spam complaints": "Ankesat për mesazhe të padëshiruara", diff --git a/ghost/i18n/locales/sr-Cyrl/portal.json b/ghost/i18n/locales/sr-Cyrl/portal.json index 23814aee0c4..b24209413a3 100644 --- a/ghost/i18n/locales/sr-Cyrl/portal.json +++ b/ghost/i18n/locales/sr-Cyrl/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Грешка при регистрацији: Невалидан линк", "Signups from this email domain are currently restricted.": "Регистрације са овог email домена су тренутно ограничене.", "Something went wrong, please try again later.": "Нешто је пошло наопако, молимо Вас покушајте касније.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Извините, али препоруке тренутно нису доступне.", "Sorry, that didn’t work.": "Извините, то није успело.", "Spam complaints": "Жалбе на нежељену пошту", diff --git a/ghost/i18n/locales/sr/portal.json b/ghost/i18n/locales/sr/portal.json index c5745400bd6..b6a1f7c475b 100644 --- a/ghost/i18n/locales/sr/portal.json +++ b/ghost/i18n/locales/sr/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Greška pri registraciji: Nevalidan link", "Signups from this email domain are currently restricted.": "Registracije sa ovog email domena su trenutno ograničene.", "Something went wrong, please try again later.": "Nešto je pošlo naopako, molimo Vas pokušajte kasnije.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Izvinite, ali preporuke trenutno nisu dostupne.", "Sorry, that didn’t work.": "Izvinite, to nije uspelo.", "Spam complaints": "Žalbe na neželjenu poštu", diff --git a/ghost/i18n/locales/sv/portal.json b/ghost/i18n/locales/sv/portal.json index 8be5f6446d1..7991160cf15 100644 --- a/ghost/i18n/locales/sv/portal.json +++ b/ghost/i18n/locales/sv/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Registreringsfel. Länken fungerade inte.", "Signups from this email domain are currently restricted.": "Registreringar från denna e-postdomän är för närvarande begränsade.", "Something went wrong, please try again later.": "Något gick fel, vänligen försök igen senare.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Ursäkta, inga rekommendationer finns tillgängliga just nu.", "Sorry, that didn’t work.": "Ursäkta, det fungerande inte.", "Spam complaints": "Skräppostrapporter", diff --git a/ghost/i18n/locales/sw/portal.json b/ghost/i18n/locales/sw/portal.json index 632f5f77a6b..f1cc25a3ed5 100644 --- a/ghost/i18n/locales/sw/portal.json +++ b/ghost/i18n/locales/sw/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Kosa la usajili: Kiungo batili", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Samahani, hiyo haikufanya kazi.", "Spam complaints": "Malalamiko ya Spam", diff --git a/ghost/i18n/locales/ta/portal.json b/ghost/i18n/locales/ta/portal.json index b099a3b19ab..ea17c36bd44 100644 --- a/ghost/i18n/locales/ta/portal.json +++ b/ghost/i18n/locales/ta/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "பதிவு பிழை: தவறான இணைப்பு", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "ஏதோ தவறு நடந்துவிட்டது, பிறகு மீண்டும் முயற்சிக்கவும்.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "மன்னிக்கவும், அது வேலை செய்யவில்லை.", "Spam complaints": "ஸ்பாம் புகார்கள்", diff --git a/ghost/i18n/locales/th/portal.json b/ghost/i18n/locales/th/portal.json index 0dda30d494b..1f57230bfca 100644 --- a/ghost/i18n/locales/th/portal.json +++ b/ghost/i18n/locales/th/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "มีข้อผิดพลาดในการสมัครใช้งาน: ลิงก์ไม่ถูกต้อง", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "ขออภัย, ไม่สามารถส่งได้", "Spam complaints": "การร้องเรียนเกี่ยวกับสแปม", diff --git a/ghost/i18n/locales/tr/portal.json b/ghost/i18n/locales/tr/portal.json index 2098f85a0f9..b226fc5d215 100644 --- a/ghost/i18n/locales/tr/portal.json +++ b/ghost/i18n/locales/tr/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Kayıt hatası: Geçersiz bağlantı", "Signups from this email domain are currently restricted.": "Bu e-posta alan adından kayıtlar şu anda kısıtlıdır.", "Something went wrong, please try again later.": "Bir şeyler ters gitti, lütfen daha sonra tekrar deneyin.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Üzgünüz, şu anda öneri bulunmamaktadır", "Sorry, that didn’t work.": "Üzgünüm, bu işe yaramadı.", "Spam complaints": "Spam şikayetleri", diff --git a/ghost/i18n/locales/uk/portal.json b/ghost/i18n/locales/uk/portal.json index db720a1718d..a6ecbd87a7c 100644 --- a/ghost/i18n/locales/uk/portal.json +++ b/ghost/i18n/locales/uk/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Помилка реєстрації: недійсне посилання", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "Щось пішло не так, спробуйте пізніше.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "Вибачте, це не спрацювало.", "Spam complaints": "Скарги на спам", diff --git a/ghost/i18n/locales/ur/portal.json b/ghost/i18n/locales/ur/portal.json index 3434df50bb1..190f581cd4d 100644 --- a/ghost/i18n/locales/ur/portal.json +++ b/ghost/i18n/locales/ur/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "سائن اپ خطا: غیر معتبر لنک", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "معاف کریں، یہ کام نہیں کیا گیا۔", "Spam complaints": "سپیم شکایتیں", diff --git a/ghost/i18n/locales/uz/portal.json b/ghost/i18n/locales/uz/portal.json index 98a8670ad4e..2589ded2051 100644 --- a/ghost/i18n/locales/uz/portal.json +++ b/ghost/i18n/locales/uz/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "", "Signups from this email domain are currently restricted.": "", "Something went wrong, please try again later.": "", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "", "Sorry, that didn’t work.": "", "Spam complaints": "", diff --git a/ghost/i18n/locales/vi/portal.json b/ghost/i18n/locales/vi/portal.json index bce68abbbd8..8f832b129ba 100644 --- a/ghost/i18n/locales/vi/portal.json +++ b/ghost/i18n/locales/vi/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "Lỗi đăng ký: Liên kết không hợp lệ", "Signups from this email domain are currently restricted.": "Tên miền email này đang bị hạn chế đăng ký.", "Something went wrong, please try again later.": "Xảy ra lỗi, hãy thử lại sau.", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "Rất tiếc, chưa có đề xuất nào vào lúc này.", "Sorry, that didn’t work.": "Rất tiếc, không dùng được.", "Spam complaints": "Than phiền", diff --git a/ghost/i18n/locales/zh-Hant/portal.json b/ghost/i18n/locales/zh-Hant/portal.json index fa97ea8a9b4..2de837761b7 100644 --- a/ghost/i18n/locales/zh-Hant/portal.json +++ b/ghost/i18n/locales/zh-Hant/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "註冊錯誤:連結無效", "Signups from this email domain are currently restricted.": "來自此電子郵件網域的註冊目前受到限制。", "Something went wrong, please try again later.": "伺服器錯誤,請稍後重試。", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "抱歉,目前沒有其他的推薦。", "Sorry, that didn’t work.": "抱歉,該操作無法完成。", "Spam complaints": "垃圾郵件", diff --git a/ghost/i18n/locales/zh/portal.json b/ghost/i18n/locales/zh/portal.json index b845fb043d6..d3dfbcb0290 100644 --- a/ghost/i18n/locales/zh/portal.json +++ b/ghost/i18n/locales/zh/portal.json @@ -204,6 +204,7 @@ "Signup error: Invalid link": "注册错误:链接无效", "Signups from this email domain are currently restricted.": "来自此电子邮件域名的新会员注册目前受限。", "Something went wrong, please try again later.": "出了点问题,请稍后再试。", + "Sorry, no paid plans are available.": "", "Sorry, no recommendations are available right now.": "抱歉,目前暂无推荐。", "Sorry, that didn’t work.": "抱歉,该操作无法完成。", "Spam complaints": "垃圾邮件", From ce37f00f87cfa0a0f4382fbb2bfa46cb443074b7 Mon Sep 17 00:00:00 2001 From: Ludovic Toinel Date: Tue, 9 Jun 2026 23:59:34 +0200 Subject: [PATCH 14/14] =?UTF-8?q?=F0=9F=90=9B=20Stopped=20injecting=20port?= =?UTF-8?q?al=20when=20portal.url=20is=20set=20to=20'false'=20in=20config?= =?UTF-8?q?=20file=20(#21936)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit no ref Co-authored-by: Ludovic Toinel Co-authored-by: Cathy Sarisky Co-authored-by: Steve Larson <9larsons@gmail.com> --- .../core/core/frontend/helpers/ghost_head.js | 26 ++++++++++--------- .../unit/frontend/helpers/ghost-head.test.js | 16 ++++++++++++ 2 files changed, 30 insertions(+), 12 deletions(-) diff --git a/ghost/core/core/frontend/helpers/ghost_head.js b/ghost/core/core/frontend/helpers/ghost_head.js index ffb3013c68d..c2b272c4dc1 100644 --- a/ghost/core/core/frontend/helpers/ghost_head.js +++ b/ghost/core/core/frontend/helpers/ghost_head.js @@ -57,19 +57,21 @@ function getMembersHelper(data, frontendKey, excludeList) { if (!excludeList.has('portal')) { const {scriptUrl} = getFrontendAppConfig('portal'); - const colorString = (_.has(data, 'site._preview') && data.site.accent_color) ? data.site.accent_color : ''; - const attributes = { - i18n: true, - ghost: urlUtils.getSiteUrl(), - key: frontendKey, - api: urlUtils.urlFor('api', {type: 'content'}, true), - locale: settingsCache.get('locale') || 'en' - }; - if (colorString) { - attributes['accent-color'] = colorString; + if (scriptUrl) { + const colorString = (_.has(data, 'site._preview') && data.site.accent_color) ? data.site.accent_color : ''; + const attributes = { + i18n: true, + ghost: urlUtils.getSiteUrl(), + key: frontendKey, + api: urlUtils.urlFor('api', {type: 'content'}, true), + locale: settingsCache.get('locale') || 'en' + }; + if (colorString) { + attributes['accent-color'] = colorString; + } + const dataAttributes = getDataAttributes(attributes); + membersHelper += ``; } - const dataAttributes = getDataAttributes(attributes); - membersHelper += ``; } if (!excludeList.has('cta_styles')) { membersHelper += (``); diff --git a/ghost/core/test/unit/frontend/helpers/ghost-head.test.js b/ghost/core/test/unit/frontend/helpers/ghost-head.test.js index 5c53d96a95b..9400a86b4ab 100644 --- a/ghost/core/test/unit/frontend/helpers/ghost-head.test.js +++ b/ghost/core/test/unit/frontend/helpers/ghost-head.test.js @@ -1271,6 +1271,22 @@ describe('{{ghost_head}} helper', function () { } })); }); + it('does not inject the portal script when portal url is disabled', async function () { + getStub.withArgs('members_enabled').returns(true); + getStub.withArgs('paid_members_enabled').returns(true); + configUtils.set({'portal:url': false}); + + const rendered = (await ghost_head(testUtils.createHbsResponse({ + locals: { + relativeUrl: '/', + context: ['home', 'index'], + safeVersion: '4.3' + } + }))).toString(); + + assert.doesNotMatch(rendered, /src="false"/); + assert.doesNotMatch(rendered, /data-ghost=/); + }); }); describe('search scripts', function () {