Skip to content

Refresh workspace and GitHub Actions dependencies - #170

Open
niemyjski wants to merge 5 commits into
mainfrom
feature/dependency-refresh-2026-07
Open

Refresh workspace and GitHub Actions dependencies#170
niemyjski wants to merge 5 commits into
mainfrom
feature/dependency-refresh-2026-07

Conversation

@niemyjski

@niemyjski niemyjski commented Jul 12, 2026

Copy link
Copy Markdown
Member

Summary

  • refresh all seven SDK packages and every example workspace to the newest compatible releases allowed by the repository's 7-day cooling policy
  • upgrade the Expo sample to SDK 57 / React Native 0.86 and Next.js to 16.3, with compatibility holds documented below
  • update GitHub Actions to current, immutable commit SHAs; reduce permissions per job; replace the discarded node_modules cache with npm's cache; and remove the unpinned global version-replacement CLI
  • add a tested, repository-owned cross-platform build-version script and keep publishing behind successful Linux/macOS/Windows builds
  • harden the vanilla browser sample logger so HTML-like log text remains literal textarea content

Compatibility and cooling decisions

  • keep @react-native-async-storage/async-storage 2.2.0, React/ReactDOM 19.2.3, react-native-safe-area-context 5.7.0, and TypeScript 6 because the current Expo/React Native/Svelte toolchains do not support their latest majors or patches as a coherent set
  • keep the newest Expo SDK 57 patches that satisfy min-release-age=7; Expo's live compatibility map now asks for five patches published only 1-2 days ago, so expo install --check reports those intentional cooling holds while web export and browser runtime validation pass
  • narrowly exempt only @xmldom/xmldom from the cooling window to take today's security-only 0.8.14 and 0.9.11 releases
  • commit the deterministic Next 16.3 AGENTS.md / CLAUDE.md artifacts generated by the framework's default agentRules behavior, preventing recurring dirty worktrees

Security and supply chain

  • all seven publishable SDK production graphs: 0 vulnerabilities
  • full monorepo: npm reports 10 propagated high-severity graph entries, all rooted in one Expo/Metro-only transitive package, image-size@1.2.1; OSV resolves that to two high-severity infinite-loop advisories (GHSA-5p2g-fcmc-qvqq, GHSA-w3rx-r6r6-pgpr) with no fixed release (image-size through latest 2.0.2 is affected). npm's suggested Expo/React Native downgrade is incompatible, so this remains documented sample-tooling risk rather than a false clean claim.
  • 795 packages have verified registry signatures; 219 have verified attestations
  • all 875 remote lock entries resolve from registry.npmjs.org and include integrity hashes
  • no dependency-tree problems and no unreviewed install scripts
  • GitHub Actions are SHA-pinned with version comments, checkout credentials are not persisted, permissions are least-privilege per job, and zizmor --pedantic reports no findings (one documented GitHub Packages trusted-publishing exception)

Validation

  • npm ci
  • npm run build (all SDK packages plus browser, React, Vue, SvelteKit, and Next.js production builds)
  • npm test — 28 files / 348 tests
  • npm run lint
  • npm ls --all --json — no problems
  • npm pack --dry-run for all seven publishable SDK workspaces
  • npm audit --omit=dev for each publishable SDK workspace — 0 vulnerabilities
  • npm audit signatures
  • osv-scanner scan --lockfile=package-lock.json
  • npm install-scripts ls
  • uvx zizmor --pedantic .github/workflows/build.yml
  • Expo: web export passed; expo-doctor passed 19/20 checks, with only the five intentional cooling-policy patch holds above
  • rendered dogfood passed for vanilla browser, React, Vue, SvelteKit, Next.js 16.3, Expo web, and Express; representative log/error routes enqueued events and browser page-error lists stayed empty
  • the Exceptionless backend was not running locally, so sample delivery produced expected Failed to fetch diagnostics after events were constructed/enqueued

Review

The requested thermo-nuclear review completed against the exact final tree. It found and drove fixes for textarea state handling, cooling-policy bypass, dead CI caching, mutable action tags, Windows environment interpolation, and GitHub Packages registry ordering. Final verdict: GO.

Copilot AI review requested due to automatic review settings July 12, 2026 18:48

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Refreshes dependency versions across the Exceptionless.JavaScript monorepo (core SDK packages plus example apps) to align on current compatible tooling, reduce known vulnerabilities via overrides, and keep the build/test toolchain consistent across workspaces.

Changes:

  • Bumps esbuild across all SDK packages and updates root allowScripts accordingly.
  • Updates framework/example dependencies (React, Vue, Vite, SvelteKit, Next.js, Expo/RN) and adds the missing @testing-library/dom dependency for the React example.
  • Adds root overrides to pin @react-native-async-storage/async-storage and patch vulnerable transitive dependencies (cookie, postcss, uuid).

Reviewed changes

Copilot reviewed 14 out of 15 changed files in this pull request and generated no comments.

Show a summary per file
File Description
package.json Updates shared dev deps (React/Vitest), updates allowScripts, and adds dependency overrides for security/compatibility pins.
packages/core/package.json Bumps esbuild used for bundling core package outputs.
packages/browser/package.json Bumps esbuild used for bundling browser package outputs.
packages/angularjs/package.json Bumps esbuild used for bundling AngularJS wrapper outputs.
packages/node/package.json Bumps esbuild and updates @types/node for Node package development/build.
packages/react/package.json Updates React type dependencies and bumps esbuild for the React wrapper bundle.
packages/react-native/package.json Pins AsyncStorage dev dependency for Expo/RN compatibility and updates React types.
packages/vue/package.json Bumps esbuild used for bundling Vue wrapper outputs.
example/browser/package.json Updates Vite for the browser sample app.
example/react/package.json Updates React/Vite tooling and adds @testing-library/dom to satisfy testing-library peer requirements.
example/vue/package.json Updates Vue/compiler and Vite for the Vue sample app.
example/svelte-kit/package.json Updates SvelteKit/Svelte/Vite/Vitest versions for the SvelteKit sample app.
example/nextjs/package.json Updates Next.js and aligns React versions for the Next.js sample app.
example/expo/package.json Upgrades Expo SDK and React Native version while keeping Expo-pinned React and AsyncStorage versions.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 19e8d457aa

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread package.json Outdated
@niemyjski

Copy link
Copy Markdown
Member Author

Dependency/security recheck (2026-07-31)

  • Updated official actions to their current releases: actions/checkout@v7, actions/setup-node@v7, actions/cache@v6, and actions/setup-dotnet@v6.
  • Refreshed the remaining compatible workspace updates, including Vite 8.2.0, Expo 57.0.9 / React Native 0.86.2, SvelteKit 2.70.2, and current React/Node type packages.
  • npm audit: 0 vulnerabilities across 908 dependencies.
  • OSV Scanner: no issues across 868 lockfile packages (14 local workspace entries are unscannable by design).
  • npm registry verification: 800 package signatures verified; 221 packages also have verified attestations.
  • Reconciled the 33 open Dependabot alerts shown for the default branch against this PR lockfile. Every vulnerable package resolves at or above its patched version here, including shell-quote@1.10.0, next@16.2.12, sharp@0.35.3, undici@7.29.0, postcss@8.5.23, and brace-expansion@5.0.8.

Validation passed:

  • clean npm 11 install
  • full monorepo build
  • 347 tests
  • ESLint + Prettier
  • Svelte diagnostics (0 errors / 0 warnings)
  • Expo Doctor (20/20)
  • Expo iOS and web production exports
  • Sharp native smoke test
  • live sample exercises for Browser, React, Vue, SvelteKit, Next.js, Expo web, and Express

The samples successfully rendered and queued their log/error events. Submission failures were expected because the local Exceptionless backend at ports 7110/7111 was not running.

@niemyjski niemyjski changed the title Refresh workspace dependencies Refresh workspace and GitHub Actions dependencies Aug 13, 2026

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 92e79b4c52

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

npm publish --workspaces --access public --tag "ci-${TAG_BRANCH}" || true
run: | # zizmor: ignore[use-trusted-publishing] GitHub Packages uses GITHUB_TOKEN.
TAG_BRANCH="${GITHUB_REF##*/}"
npm publish --workspaces --access public --tag "ci-${TAG_BRANCH}"

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Make branch package publishing idempotent

When this branch workflow is rerun for a commit whose packages were already published—especially after a partial publish—the deterministic MinVer output gives every workspace the same version again. The npm publish documentation states that publishing fails when the name/version combination already exists, so removing the previous error handling makes such reruns finish unsuccessfully even if only one workspace conflicts. Handle already-published versions explicitly while still surfacing genuine registry failures.

Useful? React with 👍 / 👎.

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.

2 participants