From 5f4f5f0bf07b3309b7e7a944157aac88442eea4c Mon Sep 17 00:00:00 2001 From: Anish Patel Date: Thu, 25 Jun 2026 10:48:52 -0700 Subject: [PATCH 1/6] chore: set packageManager to pnpm@11.9.0 --- app/package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/package.json b/app/package.json index 9caffdbf4..2eefa2c05 100644 --- a/app/package.json +++ b/app/package.json @@ -87,5 +87,6 @@ "onlyBuiltDependencies": [ "vue-demi" ] - } + }, + "packageManager": "pnpm@11.9.0" } \ No newline at end of file From 839171c593f4bb0af6d6113a509e26f61c729881 Mon Sep 17 00:00:00 2001 From: Anish Patel Date: Thu, 25 Jun 2026 15:40:15 -0700 Subject: [PATCH 2/6] ci: add test workflow for pnpm v11 upgrade [namerequest] --- .github/workflows/test-pnpm-v11.yml | 38 +++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 .github/workflows/test-pnpm-v11.yml diff --git a/.github/workflows/test-pnpm-v11.yml b/.github/workflows/test-pnpm-v11.yml new file mode 100644 index 000000000..9d6a7f9d2 --- /dev/null +++ b/.github/workflows/test-pnpm-v11.yml @@ -0,0 +1,38 @@ +name: Test pnpm v11 upgrade +on: + push: + branches: [feat/upgrade-pnpm-v11] + pull_request: + branches: [main] + paths: + - '.github/workflows/test-pnpm-v11.yml' + - 'package.json' + - 'pnpm-lock.yaml' + +jobs: + test-pnpm-v11: + runs-on: ubuntu-latest + defaults: + run: + working-directory: app + steps: + - uses: actions/checkout@v6 + + - uses: pnpm/action-setup@v6 + with: + version: latest-11 + + - uses: actions/setup-node@v6 + with: + node-version: 24 + cache: pnpm + cache-dependency-path: app/pnpm-lock.yaml + + - name: Install dependencies + run: pnpm install + + - name: Build + run: pnpm build + + - name: Report pnpm version + run: pnpm --version From db65197c8edd3b3514042e41182a1be54cb16076 Mon Sep 17 00:00:00 2001 From: Anish Patel Date: Tue, 30 Jun 2026 10:16:19 -0700 Subject: [PATCH 3/6] fix: pin pinia to ~2.0.35 for Vue 2 compatibility (pinia >=2.1 uses hasInjectionContext not available in vue-demi v2 mode) --- app/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/package.json b/app/package.json index 2eefa2c05..0125f22be 100644 --- a/app/package.json +++ b/app/package.json @@ -34,7 +34,7 @@ "http-status-codes": "^1.4.0", "launchdarkly-js-client-sdk": "^3.9.0", "lodash": "^4.17.21", - "pinia": "^2.0.35", + "pinia": "~2.0.35", "pinia-class": "^0.0.3", "qs": "^6.12.1", "quill": "^2.0.0", From 504b24e6697bedee643d7001a98df952c2913395 Mon Sep 17 00:00:00 2001 From: panish16 Date: Tue, 7 Jul 2026 12:30:34 -0700 Subject: [PATCH 4/6] fix: restore patch and build-script approvals dropped by pnpm v11 pnpm v11 stopped reading package.json's "pnpm" key, silently dropping the sbc-common-components patch and build-script approvals and causing a lockfile mismatch. Move both to pnpm-workspace.yaml and regenerate the lockfile (which also fixes a stale pinia resolution: package.json already pinned ~2.0.35 for Vue 2 compatibility, but the committed lockfile still resolved 2.3.1). --- app/package.json | 8 -------- app/pnpm-lock.yaml | 43 +++++++++++++++++++++-------------------- app/pnpm-workspace.yaml | 7 +++++++ 3 files changed, 29 insertions(+), 29 deletions(-) create mode 100644 app/pnpm-workspace.yaml diff --git a/app/package.json b/app/package.json index 0125f22be..3470bdac4 100644 --- a/app/package.json +++ b/app/package.json @@ -80,13 +80,5 @@ "vuex-class": "^0.3.2", "vuex-module-decorators": "^1.2.0" }, - "pnpm": { - "patchedDependencies": { - "sbc-common-components@3.0.15-c": "patches/sbc-common-components@3.0.15-c.patch" - }, - "onlyBuiltDependencies": [ - "vue-demi" - ] - }, "packageManager": "pnpm@11.9.0" } \ No newline at end of file diff --git a/app/pnpm-lock.yaml b/app/pnpm-lock.yaml index b9c5a53c8..506f87cf9 100644 --- a/app/pnpm-lock.yaml +++ b/app/pnpm-lock.yaml @@ -5,9 +5,7 @@ settings: excludeLinksFromLockfile: false patchedDependencies: - sbc-common-components@3.0.15-c: - hash: dbxsbs7nnq5sxpyu75cpekwise - path: patches/sbc-common-components@3.0.15-c.patch + sbc-common-components@3.0.15-c: 04ee617a4ac7ced8e6cfab349eeccdc740e5a5be3543ee92d05d0966a39046be importers: @@ -59,11 +57,11 @@ importers: specifier: ^4.17.21 version: 4.17.23 pinia: - specifier: ^2.0.35 - version: 2.3.1(typescript@4.5.5)(vue@2.7.16) + specifier: ~2.0.35 + version: 2.0.36(typescript@4.5.5)(vue@2.7.16) pinia-class: specifier: ^0.0.3 - version: 0.0.3(pinia@2.3.1(typescript@4.5.5)(vue@2.7.16))(vue-class-component@7.2.6(vue@2.7.16)) + version: 0.0.3(pinia@2.0.36(typescript@4.5.5)(vue@2.7.16))(vue-class-component@7.2.6(vue@2.7.16)) qs: specifier: ^6.12.1 version: 6.15.0 @@ -75,7 +73,7 @@ importers: version: 0.4.4 sbc-common-components: specifier: 3.0.15-c - version: 3.0.15-c(patch_hash=dbxsbs7nnq5sxpyu75cpekwise)(@types/node@20.19.35)(postcss@8.5.8)(sass@1.59.3) + version: 3.0.15-c(patch_hash=04ee617a4ac7ced8e6cfab349eeccdc740e5a5be3543ee92d05d0966a39046be)(@types/node@20.19.35)(postcss@8.5.8)(sass@1.59.3) tslib: specifier: ^2.8.1 version: 2.8.1 @@ -106,7 +104,7 @@ importers: version: 0.2.2(esbuild@0.18.20) '@pinia/testing': specifier: ^0.0.16 - version: 0.0.16(pinia@2.3.1(typescript@4.5.5)(vue@2.7.16))(vue@2.7.16) + version: 0.0.16(pinia@2.0.36(typescript@4.5.5)(vue@2.7.16))(vue@2.7.16) '@types/lodash': specifier: ^4.17.7 version: 4.17.24 @@ -718,6 +716,7 @@ packages: '@ungap/structured-clone@1.3.0': resolution: {integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==} + deprecated: Potential CWE-502 - Update to 1.3.1 or higher '@vitejs/plugin-vue2@2.3.4': resolution: {integrity: sha512-LgqtRRedJb1KdmgcllwGX0gtlPvOvtR6pITXmqxGwQhBZaAysg0Hd7wvj3sjCsj4+PENWsqS7O+ceYSOgJ+H9g==} @@ -2639,12 +2638,15 @@ packages: pinia: ^2.0.0 vue-class-component: ^7.0.0 - pinia@2.3.1: - resolution: {integrity: sha512-khUlZSwt9xXCaTbbxFYBKDc/bWAGWJjOgvxETwkTN7KRm66EeT1ZdZj6i2ceh9sP2Pzqsbc704r2yngBrxBVug==} + pinia@2.0.36: + resolution: {integrity: sha512-4UKApwjlmJH+VuHKgA+zQMddcCb3ezYnyewQ9NVrsDqZ/j9dMv5+rh+1r48whKNdpFkZAWVxhBp5ewYaYX9JcQ==} peerDependencies: + '@vue/composition-api': ^1.4.0 typescript: '>=4.4.4' - vue: ^2.7.0 || ^3.5.11 + vue: ^2.6.14 || ^3.2.0 peerDependenciesMeta: + '@vue/composition-api': + optional: true typescript: optional: true @@ -3313,11 +3315,12 @@ packages: uuid@3.4.0: resolution: {integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==} - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true uuid@8.3.2: resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true v8-compile-cache@2.4.0: @@ -3526,7 +3529,7 @@ packages: resolution: {integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==} vue-test-utils-helpers@https://codeload.github.com/bcgov/vue-test-utils-helpers/tar.gz/aeffe77a87b9a37dacf4b38d77bc1833db02a8a2: - resolution: {tarball: https://codeload.github.com/bcgov/vue-test-utils-helpers/tar.gz/aeffe77a87b9a37dacf4b38d77bc1833db02a8a2} + resolution: {gitHosted: true, integrity: sha512-8SQ8DpHzn++bTkDUxQcdl9QYfjXWDmj4kLzAd5Kk6Cn65kzAgjsbEh+BswbqTvhtF4/cSn8/b2bPbAzmdSlJ2A==, tarball: https://codeload.github.com/bcgov/vue-test-utils-helpers/tar.gz/aeffe77a87b9a37dacf4b38d77bc1833db02a8a2} version: 1.0.3 vue2-filters@0.7.2: @@ -4104,9 +4107,9 @@ snapshots: '@one-ini/wasm@0.1.1': {} - '@pinia/testing@0.0.16(pinia@2.3.1(typescript@4.5.5)(vue@2.7.16))(vue@2.7.16)': + '@pinia/testing@0.0.16(pinia@2.0.36(typescript@4.5.5)(vue@2.7.16))(vue@2.7.16)': dependencies: - pinia: 2.3.1(typescript@4.5.5)(vue@2.7.16) + pinia: 2.0.36(typescript@4.5.5)(vue@2.7.16) vue-demi: 0.14.10(vue@2.7.16) transitivePeerDependencies: - '@vue/composition-api' @@ -6450,20 +6453,18 @@ snapshots: pify@3.0.0: {} - pinia-class@0.0.3(pinia@2.3.1(typescript@4.5.5)(vue@2.7.16))(vue-class-component@7.2.6(vue@2.7.16)): + pinia-class@0.0.3(pinia@2.0.36(typescript@4.5.5)(vue@2.7.16))(vue-class-component@7.2.6(vue@2.7.16)): dependencies: - pinia: 2.3.1(typescript@4.5.5)(vue@2.7.16) + pinia: 2.0.36(typescript@4.5.5)(vue@2.7.16) vue-class-component: 7.2.6(vue@2.7.16) - pinia@2.3.1(typescript@4.5.5)(vue@2.7.16): + pinia@2.0.36(typescript@4.5.5)(vue@2.7.16): dependencies: '@vue/devtools-api': 6.6.4 vue: 2.7.16 vue-demi: 0.14.10(vue@2.7.16) optionalDependencies: typescript: 4.5.5 - transitivePeerDependencies: - - '@vue/composition-api' pkg-types@1.3.1: dependencies: @@ -6762,7 +6763,7 @@ snapshots: dependencies: xmlchars: 2.2.0 - sbc-common-components@3.0.15-c(patch_hash=dbxsbs7nnq5sxpyu75cpekwise)(@types/node@20.19.35)(postcss@8.5.8)(sass@1.59.3): + sbc-common-components@3.0.15-c(patch_hash=04ee617a4ac7ced8e6cfab349eeccdc740e5a5be3543ee92d05d0966a39046be)(@types/node@20.19.35)(postcss@8.5.8)(sass@1.59.3): dependencies: '@mdi/font': 4.9.95 axios: 0.21.4 diff --git a/app/pnpm-workspace.yaml b/app/pnpm-workspace.yaml new file mode 100644 index 000000000..bdf71d9b5 --- /dev/null +++ b/app/pnpm-workspace.yaml @@ -0,0 +1,7 @@ +allowBuilds: + core-js: true + esbuild: true + vue-demi: true + vuex-module-decorators: true +patchedDependencies: + sbc-common-components@3.0.15-c: patches/sbc-common-components@3.0.15-c.patch From 2f40c99a7831bbb10addb54ccf084af5de832023 Mon Sep 17 00:00:00 2001 From: panish16 Date: Tue, 7 Jul 2026 15:37:07 -0700 Subject: [PATCH 5/6] fix: declare empty packages list in pnpm-workspace.yaml for pnpm 9 compat The production linting-pnpm (24, 9) job still runs pnpm 9, which requires a non-missing "packages" field in any pnpm-workspace.yaml it finds ("ERROR packages field missing or empty"), even though this file exists purely for pnpm 11's allowBuilds/patchedDependencies settings. Declare packages: [] explicitly so both pnpm versions handle the file. --- app/pnpm-workspace.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/app/pnpm-workspace.yaml b/app/pnpm-workspace.yaml index bdf71d9b5..babd3caa7 100644 --- a/app/pnpm-workspace.yaml +++ b/app/pnpm-workspace.yaml @@ -1,3 +1,4 @@ +packages: [] allowBuilds: core-js: true esbuild: true From 443acd6526f8857489879a6362428e547bbf4330 Mon Sep 17 00:00:00 2001 From: panish16 Date: Wed, 8 Jul 2026 13:11:32 -0700 Subject: [PATCH 6/6] fix: pin pnpm_version explicitly to unblock pnpm 11 in production CI The shared bcregistry-sre/frontend-ci.yaml workflow defaults pnpm_version to "9" when unset, and pnpm/action-setup doesn't defer to packageManager for that bare default. Pin pnpm_version to 11.9.0 explicitly, matching packageManager, as a stopgap until bcgov/bcregistry-sre#369 lands. --- .github/workflows/ci.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index ca8b90507..68f63b5e1 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,3 +17,4 @@ jobs: app_name: "namerequest" working_directory: "./app" codecov_flag: "" + pnpm_version: 11.9.0