Skip to content

chore: upgrade packageManager to pnpm@11.9.0#504

Open
panish16 wants to merge 22 commits into
bcgov:mainfrom
panish16:feat/upgrade-pnpm-v11
Open

chore: upgrade packageManager to pnpm@11.9.0#504
panish16 wants to merge 22 commits into
bcgov:mainfrom
panish16:feat/upgrade-pnpm-v11

Conversation

@panish16

Copy link
Copy Markdown
Contributor

Sets packageManager to pnpm@11.9.0 in web/registry-home/package.json as part of the pnpm v11 upgrade (ticket #33875).

The Cloud Build CI trigger has already been updated to use pnpm@11.9.0.

@panish16 panish16 force-pushed the feat/upgrade-pnpm-v11 branch 2 times, most recently from 89e3682 to ffa3656 Compare June 25, 2026 17:50
panish16 and others added 10 commits June 30, 2026 17:02
…y pnpm v11

pnpm v11 stopped reading package.json's "pnpm" key, silently dropping
business-registry-dashboard's @nuxt/icon override (installing a buggy
version) and build-script approvals. Move both to pnpm-workspace.yaml,
with an explicit empty packages list since the production lint job's
older pnpm still requires that field to be present. Also fix the root
pnpm-workspace.yaml's allowBuilds map, which had literal placeholder
text ("set this to true or false") instead of real booleans, and a
stale onlyBuiltDependencies list left over from before pnpm v11's
config format change.
…/upgrade-pnpm-v11

# Conflicts:
#	web/business-registry-dashboard/package.json
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.
Under genuine pnpm v11 installs, the real Keycloak plugin now
initializes during Nuxt test-environment setup (previously masked
by broken/partial pnpm 9-10 installs), pushing component-mount
tests past the default 5000ms vitest timeout.
The layer's real Keycloak plugin (01.keycloak.client.ts) awaits
init() on every app boot, including mountSuspended() in tests. Its
SSO iframe check never resolves in the test environment, hanging
every component-mount test indefinitely. Previously masked by
broken pnpm 9/10 installs not actually wiring up this dependency.
Applies the pnpm v11 portion of PR bcgov#488 (closed,
unmerged) to these three apps, which were still pinned to pnpm
10.0.0/10.13.1. Also bumps actions/checkout, actions/setup-node,
pnpm/action-setup, and upload/download-artifact to their current
major versions in the e2e-tests and merge-reports jobs, matching
that PR. Excludes its unrelated @sbc-connect/nuxt-pay pkg.pr.new
preview-package swap, which is out of scope for this upgrade.
panish16 added 7 commits July 9, 2026 09:57
…lution

The extended layer (@daxiom/nuxt-core-layer-test) declares its own
@nuxt/ui@^2.20.0 dependency, correctly resolved in its own pnpm
scope. But Nuxt loads modules relative to the app's rootDir, which
climbed past this app's node_modules (no local @nuxt/ui) up to the
monorepo root's hoisted @nuxt/ui@4.7.1 (needed by the corps/
person-roles/registry-home apps, which use Nuxt UI v4). v4 requires
Nuxt >=4.1.0, so it silently disabled itself on this Nuxt 3 app,
breaking #components auto-imports (UIcon, UInput, etc.) used by
mountSuspended() in component tests, hanging them indefinitely.

Declaring @nuxt/ui directly in this app's own dependencies gives it
priority in Node's resolution before the hoisted v4 is ever reached,
without touching the other apps that genuinely need v4.
Instruments fetch and dumps active handles/requests on an 8s marker
to identify what's actually blocking mountSuspended(). Will be
removed once the root cause is confirmed.
# Conflicts:
#	.github/workflows/registry-home-ci.yaml
#	pnpm-workspace.yaml
The ^2.2.2 override was a workaround from before @nuxt/ui's own
module-resolution bug (fixed in bd56c02) was understood: @nuxt/ui
2.22.3 declares @nuxt/icon ^1.15.0 internally, so forcing 2.2.2+
created a live major-version mismatch between @nuxt/ui's internals
and the icon module it actually loads. Diagnostic instrumentation
in mountSuspended() traced the resulting test hangs to an infinite
recursive Vue render loop (renderComponentRoot -> patch ->
processComponent -> mountComponent -> ...), consistent with a
broken icon-resolution fallback. Removing the override lets it
resolve to 1.15.0, matching what @nuxt/ui actually expects.
@nuxt/icon's local bundle mode needs @iconify-json/mdi to fetch icon
SVG data at build time. The extended layer declares this dependency
in its own package.json, but pnpm's per-package resolution scope
doesn't make it visible to @nuxt/icon's own resolution context,
causing "Nuxt Icon could not fetch icon data" build failures.
Declaring it directly in this app's own dependencies (same pattern
as the earlier @nuxt/ui and pnpm-icon-override fixes) makes it
resolvable.
panish16 added 3 commits July 9, 2026 12:42
…ectly

Same fix as the @iconify-json/mdi one: @nuxt/ui's own default icons
(chevrons, close buttons, spinners) come from the heroicons set,
declared as @nuxt/ui's own dependency but not visible in this app's
resolution scope. This was the last icon set still failing to
fetch after the mdi fix.
This was an early ad-hoc validation workflow, added before the real
reusable-workflow CI was properly fixed to run on pnpm 11. It builds
each app in isolation without the full workspace context the
#business layer alias needs, causing a known false-positive build
failure for corps/person-roles unrelated to their actual CI (which
is fully green). No longer needed now that the real CI is verified
across all four apps.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant