From 86b89940fe771061563f7a3224b564eab2561d0b Mon Sep 17 00:00:00 2001 From: william garrity Date: Wed, 8 Jul 2026 20:43:57 -0400 Subject: [PATCH 1/4] fix(release): use Node 22 so npm@latest (v12) install succeeds The Release workflow failed on runs 160/161 at the 'Upgrade npm' step: npm@latest is now v12, which requires Node >=22 and refuses to install on the pinned Node 20 runner, aborting before the publish step. Bump the runner to Node 22 (LTS, satisfies npm 12's engine and clears the Node 20 deprecation warning) and drop the now-unnecessary manual npm upgrade steps (Node 22's bundled npm already supports --provenance OIDC). --- .github/workflows/release.yml | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index d8139758..227dca7b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -32,8 +32,8 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - # Pinned to 20 to match ci.yml. - node-version: '20' + # Node 22 LTS: npm@latest (>=12) dropped Node 20 support. + node-version: '22' check-latest: true cache: 'pnpm' registry-url: 'https://registry.npmjs.org' @@ -44,12 +44,6 @@ jobs: npm -v pnpm -v - - name: Upgrade npm - run: npm install -g npm@latest - - - name: Show npm version after upgrade - run: npm -v - - name: Install dependencies run: pnpm install --frozen-lockfile From d9cff3957b963c0b4256b4d87daab9b4b9dc3799 Mon Sep 17 00:00:00 2001 From: william garrity Date: Wed, 8 Jul 2026 20:57:07 -0400 Subject: [PATCH 2/4] fix(a11y): meet WCAG AA contrast on Messaging date separator DateSeparator used text-neutral-500 (#737373) on bg-neutral-100 (#f5f5f5), a 4.34:1 ratio that fails WCAG AA (4.5:1) and intermittently failed the MessageListWithTyping a11y smoke test. Bump light-mode text to neutral-600 (~7:1); dark-mode variant already passes. --- src/components/Messaging/MessageList.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Messaging/MessageList.tsx b/src/components/Messaging/MessageList.tsx index 30059919..5fd54c6f 100644 --- a/src/components/Messaging/MessageList.tsx +++ b/src/components/Messaging/MessageList.tsx @@ -220,7 +220,7 @@ function DateSeparator({ label, className }: DateSeparatorProps) { From 103437849469a11127f3e476a3b1f484f4542e88 Mon Sep 17 00:00:00 2001 From: william garrity Date: Wed, 8 Jul 2026 21:01:37 -0400 Subject: [PATCH 3/4] docs(release): clarify Node 22 is Maintenance LTS per review --- .github/workflows/release.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 227dca7b..dd421f8f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -32,7 +32,9 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - # Node 22 LTS: npm@latest (>=12) dropped Node 20 support. + # Node 22 (Maintenance LTS as of 2026): minimum supported by + # npm@latest (>=12), which dropped Node 20. Node 24 is Active LTS + # but 22 is a safe, supported floor for publishing. node-version: '22' check-latest: true cache: 'pnpm' From 6aed9bd2928ba74cfd5bc91094d71bf55e727b92 Mon Sep 17 00:00:00 2001 From: william garrity Date: Wed, 8 Jul 2026 21:11:21 -0400 Subject: [PATCH 4/4] docs(release): tie Node 22 rationale to runner support, not npm upgrade --- .github/workflows/release.yml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index dd421f8f..282fe1de 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -32,9 +32,10 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v4 with: - # Node 22 (Maintenance LTS as of 2026): minimum supported by - # npm@latest (>=12), which dropped Node 20. Node 24 is Active LTS - # but 22 is a safe, supported floor for publishing. + # Node 22 (Maintenance LTS as of 2026). Node 20 is deprecated on + # GitHub runners, so we run on a current supported LTS and use its + # bundled npm (already supports --provenance / OIDC publishing). + # 22 over 24 (Active LTS) as a conservative, supported floor. node-version: '22' check-latest: true cache: 'pnpm'