Skip to content

chore: refresh workspace tooling and CI actions - #150

Open
mcansh wants to merge 26 commits into
devfrom
logan/package-tooling
Open

mcansh wants to merge 26 commits into
devfrom
logan/package-tooling

Conversation

@mcansh

@mcansh mcansh commented Oct 6, 2026 •

Copy link
Copy Markdown
Owner

Summary

Refresh the workspace to pnpm 12, TypeScript 7, Vitest 5, and tsdown 0.23, with updated pinned CI actions. Fix HTTP Helmet's Node and Vitest matcher types and await the temporary-files rejection assertion.

pnpm workspace → updated build/test tools → pinned CI actions

The workspace patterns include packages and examples rather than apps. Use explicit source extensions, native private fields, documented input validation, and a JSON value contract for response matchers.

Evidence

  • Before: CI coverage failed with an incompatible Vitest 3 coverage provider; package validation referenced declaration files that were not emitted.
    After: align coverage with Vitest 5 and declaration paths with tsdown output. The response matcher package retains its Vitest 3 peer contract and matching local coverage dependency.

  • Tooling-layer oxlint passes. Local package builds and strict frozen installation pass.

  • Full rebased stack: 19 test files, 181 passed cases and 19 expected failures. HIBP library/runtime typechecks and Node, Deno, Bun, and Workers contracts pass.

  • Coverage now reports instrumented source files after removing the redundant root test include pattern. The final pushed stack passes GitHub build/test workflows on Linux, macOS, and Windows, plus the HIBP runtime workflows.

  • Remaining external failure: Cloudflare Workers Builds is still failing. Its build-log API returns 403 with the existing local credential, so the deployment cause is unverified.

Merge Danger

Door: two-way

Revert this layer to restore the prior dependency and workflow versions.

Blast Radius: workspace

Major build/test upgrades, changed workspace discovery, and new action versions affect installation and CI across packages. Review the updated remote checks before merging.

Stack: #150 → #151 → #152 → #153. Merge from the bottom after checks pass.

Stack created with GitHub Stacks CLI

@mcansh
mcansh added this pull request to stack #154 October 6, 2026 20:17
@changeset-bot

changeset-bot Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 6a884db

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 4 packages
Name Type
@mcansh/create-temporary-files Patch
@mcansh/http-helmet Minor
@mcansh/url Patch
@mcansh/vitest-response-matchers Minor

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@coderabbitai

coderabbitai Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Too many files!

This PR contains 140 files, which is 40 over the limit of 100.

To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch.

Upgrade to a paid plan to raise the limit.

This review couldn't start because sufficient usage credits or metered capacity aren't available. Add credits or update usage-based reviews in the billing tab, then retry.

⚙️ Run configuration
  • Configuration used: Organization UI
  • Review profile: ASSERTIVE
  • Plan: Advanced
  • Run ID: afa20fc5-820d-4e8c-b96c-04b5f36ff23b
📥 Commits

Reviewing files that changed from the base of the PR and between 3d177ab and 6a884db.

⛔ Files ignored due to path filters (1)
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (140)
  • .changeset/config.json
  • .changeset/create-temporary-files-runtime-compatibility.md
  • .changeset/http-helmet-runtime-compatibility.md
  • .changeset/url-runtime-compatibility.md
  • .changeset/vitest-response-matchers-runtime-compatibility.md
  • .github/workflows/autofix.yml
  • .github/workflows/cleanup-cache.yml
  • .github/workflows/pullfrog.yml
  • .github/workflows/release-experimental.yml
  • .github/workflows/release-preview.yml
  • .github/workflows/release.yml
  • .github/workflows/test-pr.yml
  • .github/workflows/test-push.yml
  • .github/workflows/test.yml
  • .gitignore
  • .node-version
  • apps/http-helmet/react-router-v7/app/entry.client.tsx
  • apps/http-helmet/react-router-v7/app/entry.server.tsx
  • apps/http-helmet/react-router-v7/app/root.tsx
  • apps/http-helmet/react-router-v7/app/routes.ts
  • apps/http-helmet/react-router-v7/app/routes/home.tsx
  • apps/http-helmet/react-router-v7/app/welcome/welcome.tsx
  • apps/http-helmet/react-router-v7/package.json
  • apps/http-helmet/react-router-v7/prettier.config.js
  • apps/http-helmet/react-router-v7/react-router.config.ts
  • apps/http-helmet/react-router-v7/tsconfig.json
  • apps/http-helmet/react-router-v7/vite.config.ts
  • apps/http-helmet/remix-classic-compiler/app/entry.server.tsx
  • apps/http-helmet/remix-classic-compiler/app/root.tsx
  • apps/http-helmet/remix-classic-compiler/app/routes/_index.tsx
  • apps/http-helmet/remix-classic-compiler/app/styles/app.css
  • apps/http-helmet/remix-classic-compiler/package.json
  • apps/http-helmet/remix-classic-compiler/remix.config.js
  • apps/http-helmet/remix-classic-compiler/tsconfig.json
  • apps/http-helmet/remix-vite/app/entry.client.tsx
  • apps/http-helmet/remix-vite/app/entry.server.tsx
  • apps/http-helmet/remix-vite/app/root.tsx
  • apps/http-helmet/remix-vite/app/routes/_index.tsx
  • apps/http-helmet/remix-vite/app/routes/page.$id.tsx
  • apps/http-helmet/remix-vite/package.json
  • apps/http-helmet/remix-vite/tsconfig.json
  • apps/http-helmet/remix-vite/vite.config.ts
  • oxfmt.config.ts
  • oxlint.config.ts
  • package.json
  • packages/create-temporary-files/README.md
  • packages/create-temporary-files/package.json
  • packages/create-temporary-files/src/index.ts
  • packages/create-temporary-files/src/lib.test.ts
  • packages/create-temporary-files/src/lib.ts
  • packages/create-temporary-files/tsconfig.json
  • packages/create-temporary-files/tsdown.config.ts
  • packages/create-temporary-files/vitest.config.ts
  • packages/http-helmet/CHANGELOG.md
  • packages/http-helmet/README.md
  • packages/http-helmet/THIRD-PARTY-NOTICES.md
  • packages/http-helmet/package.json
  • packages/http-helmet/src/helmet.ts
  • packages/http-helmet/src/index.spec.ts
  • packages/http-helmet/src/index.ts
  • packages/http-helmet/src/nonce.spec.ts
  • packages/http-helmet/src/react.spec.tsx
  • packages/http-helmet/src/react.tsx
  • packages/http-helmet/src/rules/content-security-policy.ts
  • packages/http-helmet/src/rules/permissions.spec.ts
  • packages/http-helmet/src/rules/permissions.ts
  • packages/http-helmet/src/rules/strict-transport-security.ts
  • packages/http-helmet/src/utils.ts
  • packages/http-helmet/src/validation.spec.ts
  • packages/http-helmet/tsconfig.json
  • packages/http-helmet/tsdown.config.ts
  • packages/http-helmet/vitest.config.ts
  • packages/http-helmet/vitest.setup.ts
  • packages/url/CHANGELOG.md
  • packages/url/README.md
  • packages/url/package.json
  • packages/url/src/index.ts
  • packages/url/src/lib/builder.spec.ts
  • packages/url/src/lib/builder.ts
  • packages/url/src/lib/url.spec.ts
  • packages/url/src/lib/url.ts
  • packages/url/tsconfig.json
  • packages/url/tsdown.config.ts
  • packages/url/vitest.config.ts
  • packages/vitest-response-matchers/README.md
  • packages/vitest-response-matchers/package.json
  • packages/vitest-response-matchers/src/client.ts
  • packages/vitest-response-matchers/src/index.ts
  • packages/vitest-response-matchers/src/matchers/index.ts
  • packages/vitest-response-matchers/src/matchers/matcher.ts
  • packages/vitest-response-matchers/src/matchers/to-have-body.ts
  • packages/vitest-response-matchers/src/matchers/to-have-cookies.ts
  • packages/vitest-response-matchers/src/matchers/to-have-header.ts
  • packages/vitest-response-matchers/src/matchers/to-have-json-body.ts
  • packages/vitest-response-matchers/src/matchers/to-have-status-text.ts
  • packages/vitest-response-matchers/src/matchers/to-have-status.ts
  • packages/vitest-response-matchers/src/matchers/to-have-strict-status-text.ts
  • packages/vitest-response-matchers/src/matchers/to-have-text-body.ts
  • packages/vitest-response-matchers/src/matchers/to-match-response.ts
  • packages/vitest-response-matchers/src/matchers/to-throw-response.ts
  • packages/vitest-response-matchers/src/matchers/validation.spec.ts
  • packages/vitest-response-matchers/tsdown.config.ts
  • packages/vitest-response-matchers/vitest.config.ts
  • pnpm-workspace.yaml
  • prettier.config.js
  • scripts/package-engines/README.md
  • scripts/package-engines/consumer-types.ts
  • scripts/package-engines/prepare.mjs
  • scripts/package-engines/registration.test.mjs
  • scripts/package-engines/runtime.test.mjs
  • scripts/package-engines/tsconfig.json
  • scripts/publish.js
  • scripts/release-packages.js
  • scripts/release.spec.mjs
  • scripts/remove-prerelease-changelogs.js
  • scripts/version.js
  • tools/oxlint/anti-slop/index.ts
  • tools/oxlint/anti-slop/rules/no-chained-type-assertions.ts
  • tools/oxlint/anti-slop/rules/no-conditional-empty-object-spread.ts
  • tools/oxlint/anti-slop/rules/no-known-value-widening.ts
  • tools/oxlint/anti-slop/rules/no-module-mocking.ts
  • tools/oxlint/anti-slop/rules/no-object-parameters.ts
  • tools/oxlint/anti-slop/rules/no-reflect-apply.ts
  • tools/oxlint/anti-slop/rules/no-reflect-get.ts
  • tools/oxlint/anti-slop/rules/no-runtime-typeof.ts
  • tools/oxlint/anti-slop/rules/no-shape-in-symbol-names.ts
  • tools/oxlint/anti-slop/rules/no-unknown-parameters.ts
  • tools/oxlint/anti-slop/rules/no-unknown-returns.ts
  • tools/oxlint/anti-slop/rules/no-unknown-type-aliases.ts
  • tools/oxlint/anti-slop/rules/no-unsafe-dictionary-type.ts
  • tools/oxlint/anti-slop/rules/no-widen-then-assert.ts
  • tools/oxlint/anti-slop/rules/require-safety-comment-for-type-assertion.ts
  • tools/oxlint/anti-slop/shared/dictionary-types.ts
  • tools/oxlint/anti-slop/shared/lexical-type-parameters.ts
  • tools/oxlint/anti-slop/shared/reflect-method.ts
  • tools/oxlint/canonical-header-names-plugin.ts
  • tools/oxlint/interface-pascal-case-plugin.ts
  • tools/oxlint/no-typescript-accessibility-plugin.ts
  • tools/oxlint/prefer-let-locals-plugin.ts
  • vitest.config.ts

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@mcansh mcansh changed the title logan/package tooling chore: refresh workspace tooling and CI actions Oct 6, 2026
@socket-security

socket-security Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Review the following changes in direct dependencies. Learn more about Socket for GitHub.

Diff Package Supply Chain
Security
Vulnerability Quality Maintenance License
Updatedhappy-dom@​20.0.10 ⏵ 20.14.566100 +2288 +195 +1100
Updated@​react-router/​serve@​7.9.5 ⏵ 8.4.0991006796 +1100
Updated@​react-router/​node@​7.9.5 ⏵ 8.4.010010069 -196 +1100
Updated@​remix-run/​serve@​2.17.2 ⏵ 2.17.51001007089 -2100
Updatedpkg-pr-new@​0.0.54 ⏵ 0.0.90100 +110070 -194100
Updated@​remix-run/​node@​2.17.2 ⏵ 2.17.5991007489100
Updated@​changesets/​cli@​2.29.7 ⏵ 3.0.399 +210074 -2595 +1100
Updated@​arethetypeswrong/​core@​0.18.2 ⏵ 0.18.5100 +110075 +190 +2100
Updated@​types/​react-dom@​19.2.2 ⏵ 19.3.0100 +110075 +190 -1100
Updated@​react-router/​dev@​7.9.5 ⏵ 8.4.09810075 -196 +1100
Updated@​remix-run/​react@​2.17.2 ⏵ 2.17.598 +1100 +1678 +189 -1100
Updatedreact-router@​7.9.5 ⏵ 8.4.0100 +6100 +707996 -1100
Updated@​types/​react@​19.2.2 ⏵ 19.3.0100 +110079 +191100
Updated@​remix-run/​dev@​2.17.2 ⏵ 2.17.594 +21007989 -1100
Updated@​vitest/​coverage-v8@​3.2.4 ⏵ 5.0.39910079 +899 +2100
Updatedvitest@​3.2.4 ⏵ 5.0.398 +1100 +7579 +199100
Updated@​types/​node@​24.6.0 ⏵ 26.6.4100 +110081 +196100
Updatedpublint@​0.3.15 ⏵ 0.3.25100 +110081 +192 +2100
Updatedvite@​7.2.2 ⏵ 8.3.399 +1100 +318298100
Updatedjsonfile@​6.2.0 ⏵ 6.2.1100 +1100100 +183100
Updatedtailwindcss@​4.1.17 ⏵ 4.3.3100 +110084 +197 -1100
Updatedreact@​19.2.0 ⏵ 19.3.0100 +110084 +197 +1100
Updated@​remix-run/​eslint-config@​2.17.2 ⏵ 2.17.5991008590 -4100
Updatedchalk@​5.6.2 ⏵ 6.0.1100100100 +185100
Updatedsemver@​7.7.3 ⏵ 7.8.5100 +1100100 +188100
Addedoxfmt@​0.72.0941008896100
Updatedvite-tsconfig-paths@​5.1.4 ⏵ 6.1.199100100 +188 +4100
Updatedtsdown@​0.12.9 ⏵ 0.23.09810088 +196 -1100
Addedtypescript@​7.0.29910089100100
Updated@​tailwindcss/​vite@​4.1.17 ⏵ 4.3.3100 +110089 +197 -1100
Updatedisbot@​5.1.31 ⏵ 5.2.2100 +110010090 -1100
Updated@​testing-library/​react@​16.3.0 ⏵ 16.3.310010010090100
See 9 more rows in the dashboard

View full report

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Updated (UTC)
❌ Deployment failed
View logs
packages 6a884db Oct 07 2026, 11:44 PM

@mcansh
mcansh marked this pull request as ready for review October 6, 2026 20:28
Copilot AI balanced review requested due to automatic review settings October 6, 2026 20:28
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-07T23:47:30.315400Z 6a884db New commits
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

Coverage remains broken and the workspace configuration silently excludes all existing example apps.

Review effort: Balanced
Findings: 2 High severity

Open (2)
What changed in this PR

Refreshes workspace tooling, test types, CI actions, and an asynchronous rejection assertion.

Changes:

  • Upgrades pnpm, TypeScript, Vitest, tsdown, and CI actions.
  • Updates HTTP Helmet test typings and setup.
  • Correctly awaits temporary-file rejection testing.
File Description
pnpm-workspace.yaml Updates workspace and tooling configuration.
package.json Upgrades pnpm configuration.
packages/​http-helmet/​vitest.setup.ts Uses Vitest-specific DOM matchers.
packages/​http-helmet/​tsconfig.json Adds Node and matcher types.
packages/​create-temporary-files/​src/​lib.test.ts Awaits rejection assertion.
.github/​workflows/​test.yml Pins updated test actions.
.github/​workflows/​release.yml Pins updated release actions.
.github/​workflows/​release-preview.yml Pins preview workflow actions.
.github/​workflows/​release-experimental.yml Pins experimental release actions.
.github/​workflows/​cleanup-cache.yml Pins checkout action.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread pnpm-workspace.yaml Outdated
Comment thread pnpm-workspace.yaml Outdated

@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: 4fb69b38d6

ℹ️ 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 pnpm-lock.yaml
Comment thread pnpm-workspace.yaml
Comment thread pnpm-workspace.yaml Outdated
Comment thread pnpm-lock.yaml
Comment thread .github/workflows/release.yml

@pullfrog pullfrog 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.

Review: request changes — two fixes needed

What checks out: all 6 pinned action SHAs resolve to their claimed tags (checkout v7.0.1, setup-node v7.0.0, pnpm/action-setup v6.1.0, changesets/action v2.1.2, release-comment-action v0.5.1, codecov-action v7.1.1). allowBuilds is the correct pnpm v11+ replacement for onlyBuiltDependencies, and dropping rolldown from the allow-list is safe (its package has no install/postinstall scripts). The exact CI command pnpm install --recursive --frozen-lockfile --strict-peer-dependencies was run against this branch's lockfile: exit 0 — the packages/hibp importer (for #152) does not trip frozen mode, and strict peers pass (the coverage-v8/vitest mismatch is runtime-only, as documented in the PR body).

1. Blocking: changesets/action v1 → v2 breaks the release workflow

.github/workflows/release.yml bumps the action but keeps the v1-era inputs. Verified against v2.1.2 source:

  • v2 calls validateChangesetsCliVersion() at startup; root declares @changesets/cli: "^2.29.5" → the action fails immediately with "This version of the Changesets action is designed to work with Changesets CLI v3. Changesets CLI v2 is not supported; use Changesets action v1 instead." — on every run, before doing anything.
  • Even with CLI v3, v2 hard-throws via throwOnRenamedInputs() for all five inputs used here: version → version-script, commit → commit-message, title → pr-title, publish → publish-script, createGithubReleases → create-github-releases.
  • None of the stacked follow-ups (#151 exports, #152 HIBP, #153 TypeDoc) addresses this, so the next push to a release* branch fails.

Suggestion: keep a pinned v1 SHA for this layer and move the v2 bump to a dedicated changesets-v3 migration (CLI bump + input renames), or do that migration in this PR.

2. Needs decision: workspace glob silently drops apps/

packages: changes apps/**/* → examples/*, but there is no examples/ directory. The three apps (example-react-router-7, example-remix-classic-compiler, example-remix-vite) are no longer workspace members: their deps are gone from the lockfile, pnpm won't link them, and build:apps (--filter "./apps/**") now silently no-ops — verified: "No projects matched the filters", exit 0, so CI won't catch it. The new glob matches the stale npm workspaces field this same diff deletes from package.json, so it looks copied from there. Either keep apps/**/* (or apps/*) or delete/migrate the apps.

Non-blocking notes

  • test.yml:78 still uses unpinned codecov/test-results-action@v1 while everything else got SHAs (line outside this diff).
  • Nit: adding "node" to types in http-helmet/tsconfig.json exposes Node globals to the published lib's src/ — probably only wanted for tests/setup.
  • Pre-existing (untouched, FYI): the comment job in release.yml:79 is gated on github.repository == 'mcansh/http-helmet', which is never true in this repo; root dev/dev:vite filter example-app/example-vite-app, which match no package names.
  • Good changes: the awaited .rejects in lib.test.ts now actually asserts; the jest-dom/vitest setup simplification is correct; the remaining SHA pinning all verifies.

Known/documented and not re-litigated: @vitest/coverage-v8@^3.2.4 vs vitest@^5.0.3 catalog mismatch (stack #150 → #151 → #152 → #153).

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using big-pickle (free) | 𝕏

Comment thread .github/workflows/release.yml
Comment thread pnpm-workspace.yaml Outdated
Comment thread packages/http-helmet/tsconfig.json

@pullfrog pullfrog 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.

Follow-up review: 3283c00 (oxlint/oxfmt migration) + 4cdc82f (remove semis)

Covers only the two new commits; my previous review (changesets v2 release break, examples/* workspace glob, test-results-action pin, tsconfig node types) stands unchanged.

Verified on a fresh install of this head:

  • pnpm install --frozen-lockfile --strict-peer-dependencies → exit 0 (lockfile/catalog in sync, including the new oxfmt/oxlint/@oxlint/plugins/oxlint-tsgolint entries)
  • vitest run → exit 0, 127 tests / 0 failures (the semicolon removal breaks nothing)
  • oxfmt --check → exit 0, clean
  • oxlint config + all five jsPlugins load and run without crashing

Blocking: pnpm lint fails on the repo this PR ships

pnpm lint (oxlint --fix) exits 1 with 46 errors, and the count is identical after a --fix run — none of them are auto-fixable:

  • 16 × import/extensions — the config's own import/extensions: ["error", "always"] flags this repo's own extensionless relative imports (e.g. packages/vitest-response-matchers/src/index.ts:3)
  • 14 × anti-slop/no-runtime-typeof, 2 × no-object-parameters, 1 × require-safety-comment-for-type-assertion, 1 × no-unknown-parameters, 1 × no-known-value-widening — the new anti-slop rules flag existing package sources (e.g. packages/url/src/lib/url.ts:26, packages/vitest-response-matchers/src/matchers/*)
  • 5 × remix-typescript/no-typescript-accessibility
  • 6 × typescript/tsconfig-error — invalid tsconfigs in apps/http-helmet/* (the apps already orphaned by this stack's workspace glob)

CI never runs lint/format (pre-existing), so CI stays green — but on a clean checkout pnpm lint and therefore pnpm validate are red. Before this ships, either fix the flagged code, tune the rules/overrides (e.g. import/extensions consistency, rule scope), or scope the lint run so the shipped gate passes. Two related nits: a lint script containing --fix mutates sources under a name CI gates usually treat as read-only (consider lint + lint:fix), and the import/extensions-style rules disagree with the codebase as formatted.

Minor / nits

  • Root package.json declares oxfmt and oxlint in both dependencies and devDependencies — please dedupe (devDependencies is the conventional home for tooling).
  • .prettierignore is still present even though prettier (config, plugins, format script) was fully removed.

Known/documented and not re-raised: coverage-v8/vitest mismatch, changesets action inputs, apps workspace question.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using big-pickle (free) | 𝕏

Comment thread package.json
Comment thread package.json Outdated
]
"devDependencies": {
"@oxlint/plugins": "catalog:",
"oxfmt": "catalog:",

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

oxfmt and oxlint are declared here in devDependencies and in dependencies (new lines 33-34). Please keep one — devDependencies is the conventional home for tooling.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

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

Confirmed still present on 56565a7: oxfmt and oxlint each appear in both dependencies and devDependencies. A cleanup is warranted: retain the devDependencies entries and remove the duplicate dependencies entries, then synchronize the lockfile. Leaving this thread unresolved; no code changes made during this comment triage.

mcansh added 5 commits October 6, 2026 16:52
Select Node ambient types explicitly and remove deprecated baseUrl settings while retaining relative path aliases. Wrap the streaming abort callback for the timer API.

Signed-off-by: Logan McAnsh <logan@mcan.sh>
Use explicit TypeScript paths for package entry points and direct test imports to satisfy the import extension rule.

Signed-off-by: Logan McAnsh <logan@mcan.sh>
Replace TypeScript private modifiers with native private fields. Document the tagged-template boundary check so invalid ordinary calls still receive the existing error.

Signed-off-by: Logan McAnsh <logan@mcan.sh>
Keep runtime checks at public policy and header boundaries with documented lint exceptions. Type the internal header predicate, simplify undefined filtering, and explain the CSP key assertion.

Signed-off-by: Logan McAnsh <logan@mcan.sh>
Use a JSON value contract in the matcher and Vitest augmentation. Report invalid responses through actual values, simplify undefined checks, and handle callbacks that return without throwing.

Cover JSON primitives and arrays plus the non-throwing callback path. Validation: all 133 test cases, package typechecks, and oxlint pass.

Signed-off-by: Logan McAnsh <logan@mcan.sh>

@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: 748a5c56aa

ℹ️ 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 packages/vitest-response-matchers/package.json Outdated
mcansh added 2 commits October 6, 2026 16:58
Match the workspace coverage plugin to Vitest 5 while keeping the response matcher package on its existing Vitest 3 peer contract. Point ESM package types at the declarations emitted by tsdown.

Signed-off-by: Logan McAnsh <logan@mcan.sh>
Remove the redundant root include pattern, which Vitest 5 used to exclude all source files from coverage. Package project configurations still collect all 200 test cases; coverage now contains instrumented source files.

Signed-off-by: Logan McAnsh <logan@mcan.sh>
@codecov

codecov Bot commented Oct 6, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 100.00%. Comparing base (3d177ab) to head (6a884db).
✅ All tests successful. No failed tests found.

Additional details and impacted files
@@             Coverage Diff             @@
##              dev      #150      +/-   ##
===========================================
+ Coverage   94.23%   100.00%   +5.76%     
===========================================
  Files          19        19              
  Lines         902       326     -576     
  Branches      224        82     -142     
===========================================
- Hits          850       326     -524     
+ Misses         52         0      -52     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@mcansh
mcansh marked this pull request as ready for review October 6, 2026 23:39

@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: 6d74f7d01a

ℹ️ 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 packages/url/package.json Outdated
Signed-off-by: Logan McAnsh <logan@mcan.sh>

@pullfrog pullfrog 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.

Important

Key issues need addressing before merge.

Reviewed changes

Reviewed the tooling refresh upgrading pnpm, TypeScript, Vitest, tsdown, and migrating to oxlint/oxfmt with pinned CI actions. The changes are well-structured overall, but several issues from prior automated reviews remain unresolved.

Substantive changes:

  • CI/workflows: Pinned GitHub Actions to specific SHAs; however, changesets/action was bumped to v2 while still using v1-era inputs (see inline comment).
  • Tooling migration: Switched from Prettier to oxlint/oxfmt with new configs; pnpm lint (oxlint --fix) fails with ~46 auto-unfixable errors (import/extensions, anti-slop rules, tsconfig issues).
  • Workspace config: pnpm-workspace.yaml changes apps/**/* to examples/* but there is no examples/ directory, dropping the existing apps from the workspace (see inline comment).
  • Package updates: Added source fields, explicit .ts extensions, refined http-helmet contracts, improved vitest-response-matchers types; tests look correct.

⚠️ Important

Blocking/needs fixing:

  1. changesets/action@v2.1.2 with v1 inputs/CLI mismatch — v2 requires Changesets CLI v3 and renamed inputs (version-script, commit-message, etc.). With @changesets/cli@^2.29.5, this will fail at startup. Either pin back to v1 SHA or complete the CLI v3 + input migration.
  2. Workspace glob drops apps — apps/**/* → examples/* removes example-react-router-7, example-remix-classic-compiler, example-remix-vite from the workspace; build:apps filter will no-op. Keep apps/**/* or delete/migrate the apps.
  3. Lint gate failures — pnpm lint exits with errors (import/extensions policy, anti-slop rules, app tsconfigs). Tune rules/overrides or scope lint so the repo's lint target passes.

Non-blocking nits:

  • Root package.json has oxfmt/oxlint duplicated in dependencies and devDependencies.
  • http-helmet/tsconfig.json adds "node" types to the lib tsconfig (may only be needed for tests).
  • .prettierignore remains even though Prettier is removed.
  • Consider pinning codecov/test-results-action@v1 for consistency.

Pullfrog  | Fix all ➔ | Fix 👍s ➔ | View workflow run | Using big-pickle (free) | 𝕏

Comment thread .github/workflows/release.yml
Comment thread pnpm-workspace.yaml Outdated
@mcansh
mcansh removed this pull request from stack #154 October 7, 2026 00:02
@mcansh
mcansh changed the base branch from main to dev October 7, 2026 00:03
@mcansh
mcansh added this pull request to stack #156 October 7, 2026 00:03
fix: apps

fix: apps

Signed-off-by: Logan McAnsh <logan@mcan.sh>
@mcansh
mcansh force-pushed the logan/package-tooling branch 2 times, most recently from a29dbe3 to f499a15 Compare October 7, 2026 00:29
@mcansh
mcansh force-pushed the logan/package-tooling branch from 65ea303 to 0405c28 Compare October 7, 2026 00:34
@pkg-pr-new

pkg-pr-new Bot commented Oct 7, 2026 •

Copy link
Copy Markdown
More templates

npm i https://pkg.pr.new/mcansh/packages/@mcansh/create-temporary-files@150
npm i https://pkg.pr.new/mcansh/packages/@mcansh/http-helmet@150
npm i https://pkg.pr.new/mcansh/packages/@mcansh/url@150
npm i https://pkg.pr.new/mcansh/packages/@mcansh/vitest-response-matchers@150

commit: 6a884db

@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: 09282b0b08

ℹ️ 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 packages/vitest-response-matchers/src/client.ts

mcansh commented Oct 7, 2026

Copy link
Copy Markdown
Owner Author

Review-comment triage against 56565a7 is complete: all 19 inline threads now have an explanation, including the five previously resolved without a reply. Seventeen threads are resolved; two remain open for actual changes:

  • Remove duplicate root oxfmt/oxlint dependencies, retaining devDependencies.
  • Remove or align the pnpm 10.12.1 packageManager pins in url, create-temporary-files, and vitest-response-matchers.

For the additional notes in the review summaries: keeping .prettierignore is harmless now that no script invokes Prettier; deleting it is optional housekeeping. Pinning codecov/test-results-action@v1 would improve consistency, but is optional and does not prevent this tooling refresh from working. The pre-existing release comment job's mcansh/http-helmet repository condition and stale root dev/dev:vite filters still warrant separate fixes if those paths are intended to work; they are unchanged by this PR and do not reopen the resolved release/setup or workspace-build findings.

Current verification: non-mutating oxlint and pnpm 12.9.1 frozen/offline lockfile validation pass; all nine current workspace test-matrix jobs pass. The current build job fails at the React Router example's missing AppLoadContext export, which skips the packed-package runtime/type checks. Workers Builds is also failing. Those checks remain outstanding; resolving the addressed review threads does not mean the PR is ready to merge. No source changes were made for this triage.

@mcansh
mcansh force-pushed the logan/package-tooling branch from 5772bee to d57f279 Compare October 7, 2026 23:42
@mcansh
mcansh force-pushed the logan/package-tooling branch from d1bd8d7 to 6a884db Compare October 7, 2026 23:43
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