Skip to content

chore: migrate from pnpm to bun#369

Merged
kodiakhq[bot] merged 12 commits into
mainfrom
switch-pnpm-to-bun
Apr 6, 2026
Merged

chore: migrate from pnpm to bun#369
kodiakhq[bot] merged 12 commits into
mainfrom
switch-pnpm-to-bun

Conversation

@mheob
Copy link
Copy Markdown
Owner

@mheob mheob commented Apr 6, 2026

Summary

  • Switch monorepo package manager from pnpm to Bun
  • Remove deprecated @mheob/eslint-config and @mheob/prettier-config packages
  • Add baseJsConfig to @mheob/oxlint-config for opt-in regexp plugin rules

Changes

  • Package manager: Replace pnpm workspaces + pnpm-lock.yaml with Bun workspaces + bun.lock; add bunfig.toml
  • CI/CD: Switch GitHub Actions from pnpm/action-setup + setup-node to oven-sh/setup-bun
  • Husky hooks: Replace pnpm exec with bunx; remove use-correct-pm check
  • Dependencies: Replace pnpm catalog: references with explicit versions in all package.json files
  • Removed packages: Delete packages/eslint-config and packages/prettier-config (superseded by oxlint/oxfmt)
  • Removed cursor rules: Remove .cursor/rules/ directory
  • oxlint-config: Extract regexp plugin rules from baseConfig into a new baseJsConfig that consumers can opt into
  • Docs: Update CLAUDE.md, CONTRIBUTING.md, README.md files, and Claude agent/skill configs

Motivation

Bun is significantly faster than pnpm for installs and script execution, and it natively supports workspaces without a separate workspace YAML file. The eslint-config and prettier-config packages have been superseded by the Rust-based oxlint-config and oxfmt-config packages which are already in use.

Breaking Changes

  • @mheob/eslint-config and @mheob/prettier-config are no longer published from this repository
  • baseConfig in @mheob/oxlint-config no longer includes regexp rules; use the new baseJsConfig instead

Summary by CodeRabbit

  • New Features

    • Added a JavaScript-focused lint config export (baseJsConfig) and a JS-specific config set.
  • Breaking Changes

    • Tooling and CI migrated from pnpm/Node scripts to Bun; repo scripts and workflows now expect Bun/Node ≥24.
    • Legacy ESLint/Prettier package surfaces removed—migrate to OXLint/OXFmt configs.
  • Documentation

    • Many READMEs and contribution docs updated with Bun commands, peer-dep instructions, and config usage examples.

mheob added 7 commits April 6, 2026 13:47
These packages have been replaced by oxlint-config and oxfmt-config,
which use the faster Rust-based toolchain (OXLint/OXFmt).

BREAKING CHANGE: @mheob/eslint-config and @mheob/prettier-config are
no longer published from this repository.
Switch the monorepo from pnpm workspaces to Bun workspaces. This includes:
- Replace pnpm-workspace.yaml with Bun's native workspace support in package.json
- Replace pnpm-lock.yaml with bun.lock
- Add bunfig.toml for Bun configuration
- Update GitHub Actions workflows to use oven-sh/setup-bun
- Update Husky hooks to use bunx instead of pnpm exec
- Remove pnpm-specific .npmrc settings
- Replace catalog: dependency references with explicit versions
Extract regexp plugin rules from the base config into a new baseJsConfig
that extends baseConfig. This allows consumers to opt into regexp linting
separately, as it requires the eslint-plugin-regexp JS plugin.

The new baseJsConfig is exported alongside the existing configs.
Update documentation, Claude agent configs, and skill definitions to
reflect the migration from pnpm to Bun as the package manager.
Also expand the oxfmt-config README with full usage documentation.
@changeset-bot
Copy link
Copy Markdown

changeset-bot Bot commented Apr 6, 2026

🦋 Changeset detected

Latest commit: 89d8824

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

This PR includes changesets to release 1 package
Name Type
@mheob/oxlint-config Patch

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
Copy link
Copy Markdown

coderabbitai Bot commented Apr 6, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 91248bdc-2594-4636-a1eb-041423c5fd1e

📥 Commits

Reviewing files that changed from the base of the PR and between 4b9a69b and 89d8824.

📒 Files selected for processing (1)
  • CLAUDE.md
✅ Files skipped from review due to trivial changes (1)
  • CLAUDE.md

Walkthrough

Migrates the monorepo from pnpm/ESLint/Prettier to Bun/OXLint/OXFmt, removes the @mheob/eslint-config and @mheob/prettier-config packages (source, CLI, types), adds baseJsConfig to @mheob/oxlint-config (moving regexp/jsonc/yml JS-plugin rules), and updates CI, hooks, workspaces, and documentation.

Changes

Cohort / File(s) Summary
Monorepo package-manager & CI
.github/workflows/check.yml, .github/workflows/release.yml, turbo.json, package.json, pnpm-workspace.yaml
Switched CI and tooling to Bun: setup actions, lockfile -> bun.lock, install/build/release commands updated, packageManager and workspaces added; removed pnpm-workspace.yaml.
Git hooks & scripts
.husky/commit-msg, .husky/pre-commit, .husky/pre-push, .gitignore, .npmrc, bunfig.toml
Replaced pnpm/pnpm exec usage with bunx/bun run, adjusted npmrc peer settings removal, added bunfig.toml peerDependencies install flag, minor .gitignore change.
Top-level docs & contributor guides
CLAUDE.md, CONTRIBUTING.md, .changeset/readme-oxlint-config.md, .claude/*
Updated docs/skills to reflect Bun, OXLint/OXFmt, changeset workflow, and package name/scope changes.
OXLint package edits
packages/oxlint-config/src/base-js.ts, packages/oxlint-config/src/base.ts, packages/oxlint-config/src/index.ts, packages/oxlint-config/README.md, packages/oxlint-config/package.json
Added baseJsConfig export with regexp/jsonc/yml JS-plugin rules; removed those rules from baseConfig; re-exported baseJsConfig; README and package metadata updated (peer deps, rule-name changes).
OXFmt package updates
packages/oxfmt-config/README.md, packages/oxfmt-config/package.json
Expanded README, updated scripts to Bun, and replaced catalog placeholders with explicit semver devDependencies.
Large removal: ESLint config package
packages/eslint-config/... (package.json, src/**, CHANGELOG.md, README.md, LICENSE, scripts)`
Removed almost entire @mheob/eslint-config package: manifest, source (configs, factory, cli, utils, types, globs), scripts, changelog, README, license, and build tooling.
Large removal: Prettier config package
packages/prettier-config/... (package.json, src/**, CHANGELOG.md, README.md, LICENSE, tsconfig)`
Removed entire @mheob/prettier-config package: manifest, source, docs, changelog, license, and tsconfig.
Internal package tweaks
packages/commitlint-config/package.json, packages/internal/package.json, packages/*/package.json
Replaced catalog:/workspace placeholders with explicit semver versions, updated scripts to Bun invocations, adjusted devDependencies (oxlint/oxfmt).
Cursor rules cleanup
.cursor/rules/*
Deleted many Cursor rule documents (TypeScript/ESLint guidance) across .cursor/rules/.
Workflows & misc
.github/workflows/claude-code-review.yml, various scripts
Removed Claude code-review workflow and other pnpm-era workflow/tooling artifacts.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested labels

Configuration changes, ci/cd, dependencies, 📦 deps, Review effort [1-5]: 3

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: migrating the monorepo tooling from pnpm to Bun, which is the primary focus across all changeset updates.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch switch-pnpm-to-bun

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 and usage tips.

@claude
Copy link
Copy Markdown

claude Bot commented Apr 6, 2026

PR Review: Migrate from pnpm to Bun

Great work on this migration! This is a well-executed package manager migration with thoughtful architecture improvements. Here's my detailed review:

✅ Strengths

Migration Quality

  • Complete and consistent: All references to pnpm have been thoroughly replaced with Bun (scripts, CI/CD, hooks, documentation)
  • Proper lockfile management: bun.lock added, pnpm-lock.yaml removed
  • CI/CD properly updated: GitHub Actions workflows correctly migrated to oven-sh/setup-bun@v2 with bun-version-file parameter
  • Version pinning: Using bun@1.3.11 via packageManager field - good for reproducibility

Architecture Improvements

  • Logical separation: The split of regexp/jsonc/yml rules from baseConfig into baseJsConfig is excellent design. This gives users opt-in control over JS plugin dependencies
  • Clean deprecation: Removing superseded @mheob/eslint-config and @mheob/prettier-config packages is the right move
  • Documentation updates: CLAUDE.md, CONTRIBUTING.md, and package READMEs comprehensively updated

Code Quality

  • Proper changeset: Includes a detailed changeset documenting the README improvements
  • Workspace configuration: Clean Bun workspace setup in root package.json
  • Husky hooks: Correctly updated to use bunx instead of pnpm exec

🔍 Potential Issues & Recommendations

1. GitHub Actions SHA Pinning Issue (Minor Security Concern)

Location: .github/workflows/check.yml:16 and .github/workflows/release.yml:30

uses: oven-sh/setup-bun@4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe # v2

Issue: The SHA 4bc047ad259df6fc24a6c9b0f9a0cb08cf17fbe is incomplete (39 chars instead of 40). This will fail workflow execution.

Fix: Use the complete SHA or the semantic version tag:

uses: oven-sh/setup-bun@v2  # or use complete 40-char SHA

2. Missing NPM Provenance Configuration (Best Practice)

Location: .github/workflows/release.yml

Suggestion: Consider adding provenance: true to the changesets action for supply chain security:

- name: Create Release Pull Request or Publish to npm
  uses: changesets/action@v1
  with:
    publish: bun run release
    provenance: true  # ← Add this

This leverages the id-token: write permission you already have and provides verifiable npm package provenance.

3. Bun Version Compatibility (Documentation)

Location: package.json:65 and bunfig.toml

You're using bun@1.3.11 but requiring node: ^24.0.0. While Bun doesn't strictly require Node, this could confuse contributors. Consider adding a note in CLAUDE.md or CONTRIBUTING.md about:

  • Why Node 24 is specified (possibly for CI runners or fallback scenarios)
  • Whether contributors need Node installed alongside Bun

4. Peer Dependencies Auto-Install (Potential Surprise)

Location: bunfig.toml:3

peerDependencies = true

This auto-installs peer dependencies, which is convenient but could surprise users expecting explicit installation. Consider documenting this behavior in CONTRIBUTING.md so contributors understand why peers are auto-installed.

5. Turbo Cache Strategy (Performance)

Question: Does Turborepo's caching work optimally with Bun's different node_modules structure compared to pnpm? You might want to verify that:

  • Remote cache hits are working as expected
  • Build artifacts are being cached correctly
  • No performance regressions in CI

6. Breaking Change Communication (Documentation)

The PR body clearly states the breaking changes, but consider:

  • Adding a BREAKING_CHANGES.md or migration guide if users need to update from the deprecated packages
  • Updating the main README to note that @mheob/eslint-config and @mheob/prettier-config are deprecated

🐛 Code-Specific Observations

oxlint-config Architecture

The refactor splitting base.ts rules into base-js.ts is excellent:

// base-js.ts properly extends baseConfig
export const baseJsConfig = defineConfig({
  extends: [baseConfig],  // ✅ Good composition
  jsPlugins: ['eslint-plugin-regexp'],
  // ... regexp rules
});

This allows users to avoid JS plugin dependencies if they only need native OXLint rules. Well done!

Husky Hooks

The pre-commit hook correctly skips in CI:

[ -n "$CI" ] && exit 0

This is good practice. However, consider if you want to run some basic checks in CI even if they're skipped locally (e.g., bun run lint is already in your CI workflow, so this is fine).


🎯 Performance Considerations

Bun Performance Benefits: You should see:

  • 60-80% faster bun install compared to pnpm
  • Faster script execution due to Bun's native runtime
  • Smaller disk footprint (Bun's content-addressable store is efficient)

Potential Concerns:

  • Bun is less mature than pnpm; watch for edge cases in workspace hoisting
  • Some tools may not be fully Bun-compatible yet (though your deps look fine)

🔒 Security Review

No security concerns identified

  • No secrets or credentials exposed
  • Proper use of secrets.* in workflows
  • SHA pinning attempted (though one needs fixing)
  • Appropriate permissions scoped in workflows

📋 Checklist Before Merge

  • Fix incomplete SHA in GitHub Actions (or switch to @v2 tags)
  • Consider adding npm provenance
  • Verify Turborepo cache still works optimally with Bun
  • Test the full release workflow in a staging environment if possible
  • Document peer dependency auto-install behavior

🎉 Overall Assessment

Verdict: ✅ Approve with minor fixes

This is a high-quality migration that's well-documented and thoughtfully executed. The only critical issue is the incomplete SHA in GitHub Actions, which will cause workflow failures. Once that's fixed, this is ready to merge.

The architectural improvements (splitting baseConfig from baseJsConfig) show good forward thinking and will improve the developer experience for users of this config library.

Estimated Risk: Low (after fixing the SHA issue)
Recommendation: Fix the SHA pinning, then merge confidently! 🚀


Review powered by Claude Code 🤖

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 3

Caution

Some comments are outside the diff and can’t be posted inline due to platform limitations.

⚠️ Outside diff range comments (4)
packages/oxlint-config/package.json (1)

11-11: ⚠️ Potential issue | 🟡 Minor

Incorrect homepage URL.

The homepage points to packages/oxfmt-config but should point to packages/oxlint-config for this package. It appears the URLs were swapped between the two packages.

🐛 Proposed fix
-	"homepage": "https://github.com/mheob/config/tree/main/packages/oxfmt-config",
+	"homepage": "https://github.com/mheob/config/tree/main/packages/oxlint-config",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/oxlint-config/package.json` at line 11, The package.json in this
package has an incorrect "homepage" value pointing to "packages/oxfmt-config";
update the "homepage" field in this package.json to the correct URL that ends
with "packages/oxlint-config" so the link reflects this package (edit the
"homepage" key in package.json).
packages/oxfmt-config/package.json (1)

11-11: ⚠️ Potential issue | 🟡 Minor

Incorrect homepage URL.

The homepage points to packages/oxlint-config but should point to packages/oxfmt-config for this package.

🐛 Proposed fix
-	"homepage": "https://github.com/mheob/config/tree/main/packages/oxlint-config",
+	"homepage": "https://github.com/mheob/config/tree/main/packages/oxfmt-config",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@packages/oxfmt-config/package.json` at line 11, The package.json "homepage"
field is pointing to the wrong package path; update the "homepage" value to use
the correct repository path for this package by changing the URL segment
"packages/oxlint-config" to "packages/oxfmt-config" so the homepage accurately
reflects this package (verify the "homepage" key in package.json and replace the
incorrect path).
.claude/skills/create-commit/SKILL.md (1)

5-5: ⚠️ Potential issue | 🟡 Minor

Update allowed-tools to use Bun instead of pnpm.

The allowed-tools still references Bash(pnpm changeset:*) but should be updated to Bash(bun changeset:*) or Bash(bunx changeset:*) to align with the migration to Bun.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/skills/create-commit/SKILL.md at line 5, Update the allowed-tools
entry by replacing the token Bash(pnpm changeset:*) with Bash(bun changeset:*)
or Bash(bunx changeset:*) so the allowed-tools list reflects the Bun migration;
specifically locate the allowed-tools line that currently contains "Bash(pnpm
changeset:*)" and swap it to the chosen Bun invocation (e.g., "Bash(bun
changeset:*)") ensuring the rest of the comma-separated entries remain
unchanged.
.claude/agents/git-versioning.md (1)

84-99: ⚠️ Potential issue | 🟡 Minor

Azure DevOps PR instructions are inconsistent with updated create-pr skill.

This section still references Azure DevOps (az CLI) for PR creation, but the .claude/skills/create-pr/SKILL.md was updated to use GitHub CLI (gh). Consider updating this section for consistency.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.claude/agents/git-versioning.md around lines 84 - 99, The Azure DevOps PR
section in git-versioning.md is out of sync with the updated create-pr skill;
replace references to the `az` CLI and "Azure DevOps" with the GitHub CLI (`gh`)
workflow described in .claude/skills/create-pr/SKILL.md, update the step list to
show using `gh` to create a draft PR, keep the required
title/description/template guidance (reference
@.azuredevops/pull_request_template.md if still used or switch to the repo's
GitHub PR template), and retain the Jira ticket extraction guidance (extract
NBP-XXXX from branch name) so the instructions in git-versioning.md match the
`create-pr` skill behavior and flags used by `gh`.
🧹 Nitpick comments (2)
.cspell.json (1)

12-13: Consider removing obsolete pnpm ignore paths.

Since the repository has migrated to Bun, the **/pnpm-lock.yaml and **/pnpm-workspace.yaml entries in ignorePaths are no longer needed and can be removed for cleanup.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In @.cspell.json around lines 12 - 13, Remove the obsolete pnpm ignore entries
from the cspell configuration: open .cspell.json and delete the
"**/pnpm-lock.yaml" and "**/pnpm-workspace.yaml" items from the ignorePaths
array so the file no longer lists pnpm-related paths (these entries are no
longer needed after migrating to Bun).
package.json (1)

23-23: Inconsistent command format: bun lint vs bun run lint.

For consistency with other scripts in this file and across the repository (which use bun run <script>), consider using bun run lint here.

📝 Suggested fix
-"version-packages": "changeset version && bun lint",
+"version-packages": "changeset version && bun run lint",
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@package.json` at line 23, The "version-packages" npm script currently uses
"bun lint" which is inconsistent with other scripts; update the script value for
"version-packages" (the package.json script key "version-packages") to use "bun
run lint" instead of "bun lint" so it matches the repository's standard command
format.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In @.claude/agents/git-versioning.md:
- Around line 110-112: The docs reference npm scripts that don't exist in
package.json: remove or update the doc lines mentioning `bun run typecheck` and
`bun run test`, or add the missing scripts to the root package.json;
specifically either delete/update the two bullets referencing `typecheck` and
`test` to only mention `bun run lint`, or add `"typecheck": "turbo run
typecheck"` and `"test": "turbo run test"` to the root package.json scripts
section so `bun run typecheck` and `bun run test` work as documented.

In `@CLAUDE.md`:
- Line 41: Update the typo in the markdown reference: replace "exlint.config.ts"
with "oxlint.config.ts" in the list entry (the README/CLAUDE.md line that
describes the Root OXLint config) so the filename matches the actual tooling
name.

In `@packages/commitlint-config/package.json`:
- Line 27: The package.json build script uses "bun build" which doesn't emit
.d.ts files, causing the declared "types": "dist/index.d.ts" to be missing;
update the "build" pipeline (the "build" script in package.json) to run bun
build first and then invoke the TypeScript compiler (tsc) in declaration-only
mode using the project's tsconfig.json (e.g., tsc --emitDeclarationOnly -p
tsconfig.json) so that dist/index.d.ts is generated; ensure tsconfig.json has
"declaration": true and its outDir matches the dist folder referenced by the
"types" field.

---

Outside diff comments:
In @.claude/agents/git-versioning.md:
- Around line 84-99: The Azure DevOps PR section in git-versioning.md is out of
sync with the updated create-pr skill; replace references to the `az` CLI and
"Azure DevOps" with the GitHub CLI (`gh`) workflow described in
.claude/skills/create-pr/SKILL.md, update the step list to show using `gh` to
create a draft PR, keep the required title/description/template guidance
(reference @.azuredevops/pull_request_template.md if still used or switch to the
repo's GitHub PR template), and retain the Jira ticket extraction guidance
(extract NBP-XXXX from branch name) so the instructions in git-versioning.md
match the `create-pr` skill behavior and flags used by `gh`.

In @.claude/skills/create-commit/SKILL.md:
- Line 5: Update the allowed-tools entry by replacing the token Bash(pnpm
changeset:*) with Bash(bun changeset:*) or Bash(bunx changeset:*) so the
allowed-tools list reflects the Bun migration; specifically locate the
allowed-tools line that currently contains "Bash(pnpm changeset:*)" and swap it
to the chosen Bun invocation (e.g., "Bash(bun changeset:*)") ensuring the rest
of the comma-separated entries remain unchanged.

In `@packages/oxfmt-config/package.json`:
- Line 11: The package.json "homepage" field is pointing to the wrong package
path; update the "homepage" value to use the correct repository path for this
package by changing the URL segment "packages/oxlint-config" to
"packages/oxfmt-config" so the homepage accurately reflects this package (verify
the "homepage" key in package.json and replace the incorrect path).

In `@packages/oxlint-config/package.json`:
- Line 11: The package.json in this package has an incorrect "homepage" value
pointing to "packages/oxfmt-config"; update the "homepage" field in this
package.json to the correct URL that ends with "packages/oxlint-config" so the
link reflects this package (edit the "homepage" key in package.json).

---

Nitpick comments:
In @.cspell.json:
- Around line 12-13: Remove the obsolete pnpm ignore entries from the cspell
configuration: open .cspell.json and delete the "**/pnpm-lock.yaml" and
"**/pnpm-workspace.yaml" items from the ignorePaths array so the file no longer
lists pnpm-related paths (these entries are no longer needed after migrating to
Bun).

In `@package.json`:
- Line 23: The "version-packages" npm script currently uses "bun lint" which is
inconsistent with other scripts; update the script value for "version-packages"
(the package.json script key "version-packages") to use "bun run lint" instead
of "bun lint" so it matches the repository's standard command format.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 540b57c9-41c0-4c4f-8f44-a818c45d5d73

📥 Commits

Reviewing files that changed from the base of the PR and between 7c013c2 and 0bb1db1.

⛔ Files ignored due to path filters (2)
  • bun.lock is excluded by !**/*.lock
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (108)
  • .changeset/readme-oxlint-config.md
  • .claude/agents/git-versioning.md
  • .claude/skills/create-commit/SKILL.md
  • .claude/skills/create-pr/SKILL.md
  • .cspell.json
  • .cursor/rules/any-inside-generic-functions.mdc
  • .cursor/rules/default-exports.mdc
  • .cursor/rules/default-typescript.mdc
  • .cursor/rules/discriminated-unions.mdc
  • .cursor/rules/enums.mdc
  • .cursor/rules/import-type.mdc
  • .cursor/rules/installing-libraries.mdc
  • .cursor/rules/interface-extends.mdc
  • .cursor/rules/jsdoc-comments.mdc
  • .cursor/rules/naming-conventions.mdc
  • .cursor/rules/no-unchecked-indexed-access.mdc
  • .cursor/rules/optional-properties.mdc
  • .cursor/rules/readonly-properties.mdc
  • .cursor/rules/return-types.mdc
  • .cursor/rules/throwing.mdc
  • .github/workflows/check.yml
  • .github/workflows/release.yml
  • .gitignore
  • .husky/commit-msg
  • .husky/pre-commit
  • .husky/pre-push
  • .npmrc
  • CLAUDE.md
  • CONTRIBUTING.md
  • bunfig.toml
  • package.json
  • packages/commitlint-config/package.json
  • packages/eslint-config/CHANGELOG.md
  • packages/eslint-config/LICENSE
  • packages/eslint-config/README.md
  • packages/eslint-config/bin/index.mjs
  • packages/eslint-config/package.json
  • packages/eslint-config/scripts/typegen.ts
  • packages/eslint-config/scripts/utils/pnpm-workspace.ts
  • packages/eslint-config/scripts/versiongen.ts
  • packages/eslint-config/src/cli.ts
  • packages/eslint-config/src/cli/constants.ts
  • packages/eslint-config/src/cli/index.ts
  • packages/eslint-config/src/cli/run.ts
  • packages/eslint-config/src/cli/stages/update-eslint-files.ts
  • packages/eslint-config/src/cli/stages/update-package-json.ts
  • packages/eslint-config/src/cli/stages/update-vscode-settings.ts
  • packages/eslint-config/src/cli/types.ts
  • packages/eslint-config/src/cli/utils.ts
  • packages/eslint-config/src/cli/versions-map.generated.ts
  • packages/eslint-config/src/config-presets.ts
  • packages/eslint-config/src/configs/astro.ts
  • packages/eslint-config/src/configs/command.ts
  • packages/eslint-config/src/configs/comments.ts
  • packages/eslint-config/src/configs/disables.ts
  • packages/eslint-config/src/configs/ignores.ts
  • packages/eslint-config/src/configs/imports.ts
  • packages/eslint-config/src/configs/index.ts
  • packages/eslint-config/src/configs/javascript.ts
  • packages/eslint-config/src/configs/jsdoc.ts
  • packages/eslint-config/src/configs/jsonc.ts
  • packages/eslint-config/src/configs/jsx.ts
  • packages/eslint-config/src/configs/markdown.ts
  • packages/eslint-config/src/configs/nextjs.ts
  • packages/eslint-config/src/configs/node.ts
  • packages/eslint-config/src/configs/perfectionist.ts
  • packages/eslint-config/src/configs/prettier.ts
  • packages/eslint-config/src/configs/react.ts
  • packages/eslint-config/src/configs/regexp.ts
  • packages/eslint-config/src/configs/sort.ts
  • packages/eslint-config/src/configs/stylistic.ts
  • packages/eslint-config/src/configs/svelte.ts
  • packages/eslint-config/src/configs/test.ts
  • packages/eslint-config/src/configs/toml.ts
  • packages/eslint-config/src/configs/typescript.ts
  • packages/eslint-config/src/configs/unicorn.ts
  • packages/eslint-config/src/configs/vue.ts
  • packages/eslint-config/src/configs/yaml.ts
  • packages/eslint-config/src/factory.ts
  • packages/eslint-config/src/globs.ts
  • packages/eslint-config/src/index.ts
  • packages/eslint-config/src/plugins.ts
  • packages/eslint-config/src/typegen.d.ts
  • packages/eslint-config/src/types.ts
  • packages/eslint-config/src/utils/array.ts
  • packages/eslint-config/src/utils/checks.ts
  • packages/eslint-config/src/utils/index.ts
  • packages/eslint-config/src/utils/linting.ts
  • packages/eslint-config/src/utils/package.ts
  • packages/eslint-config/src/utils/parser.ts
  • packages/eslint-config/tsconfig.json
  • packages/eslint-config/tsdown.config.ts
  • packages/internal/package.json
  • packages/oxfmt-config/README.md
  • packages/oxfmt-config/package.json
  • packages/oxlint-config/README.md
  • packages/oxlint-config/package.json
  • packages/oxlint-config/src/base-js.ts
  • packages/oxlint-config/src/base.ts
  • packages/oxlint-config/src/index.ts
  • packages/prettier-config/CHANGELOG.md
  • packages/prettier-config/LICENSE
  • packages/prettier-config/README.md
  • packages/prettier-config/package.json
  • packages/prettier-config/src/index.ts
  • packages/prettier-config/tsconfig.json
  • pnpm-workspace.yaml
  • turbo.json
💤 Files with no reviewable changes (84)
  • .cursor/rules/return-types.mdc
  • .npmrc
  • .cursor/rules/import-type.mdc
  • .cursor/rules/jsdoc-comments.mdc
  • .gitignore
  • .cursor/rules/any-inside-generic-functions.mdc
  • .cursor/rules/discriminated-unions.mdc
  • packages/eslint-config/src/utils/parser.ts
  • packages/eslint-config/src/utils/package.ts
  • .cursor/rules/throwing.mdc
  • packages/prettier-config/LICENSE
  • packages/eslint-config/tsconfig.json
  • pnpm-workspace.yaml
  • packages/prettier-config/CHANGELOG.md
  • packages/prettier-config/tsconfig.json
  • .cursor/rules/default-exports.mdc
  • packages/eslint-config/LICENSE
  • packages/eslint-config/src/cli/versions-map.generated.ts
  • .cursor/rules/optional-properties.mdc
  • packages/eslint-config/src/cli.ts
  • .cursor/rules/default-typescript.mdc
  • packages/eslint-config/CHANGELOG.md
  • .cursor/rules/no-unchecked-indexed-access.mdc
  • packages/eslint-config/scripts/utils/pnpm-workspace.ts
  • packages/eslint-config/src/utils/array.ts
  • packages/eslint-config/src/index.ts
  • packages/prettier-config/package.json
  • packages/eslint-config/src/utils/index.ts
  • packages/eslint-config/src/plugins.ts
  • packages/eslint-config/src/configs/regexp.ts
  • packages/eslint-config/src/configs/imports.ts
  • packages/prettier-config/README.md
  • packages/eslint-config/tsdown.config.ts
  • packages/eslint-config/src/configs/command.ts
  • .cursor/rules/installing-libraries.mdc
  • packages/eslint-config/bin/index.mjs
  • packages/eslint-config/src/cli/index.ts
  • .cursor/rules/interface-extends.mdc
  • .cursor/rules/readonly-properties.mdc
  • packages/eslint-config/src/configs/vue.ts
  • packages/eslint-config/src/configs/test.ts
  • packages/eslint-config/src/cli/types.ts
  • packages/eslint-config/src/configs/unicorn.ts
  • packages/oxlint-config/src/base.ts
  • packages/prettier-config/src/index.ts
  • packages/eslint-config/scripts/typegen.ts
  • packages/eslint-config/src/configs/toml.ts
  • .cursor/rules/naming-conventions.mdc
  • packages/eslint-config/src/configs/jsx.ts
  • packages/eslint-config/src/configs/ignores.ts
  • packages/eslint-config/src/utils/checks.ts
  • packages/eslint-config/src/configs/jsdoc.ts
  • packages/eslint-config/src/configs/perfectionist.ts
  • packages/eslint-config/src/configs/comments.ts
  • packages/eslint-config/package.json
  • packages/eslint-config/src/cli/utils.ts
  • packages/eslint-config/src/configs/jsonc.ts
  • packages/eslint-config/src/cli/stages/update-vscode-settings.ts
  • packages/eslint-config/src/configs/markdown.ts
  • packages/eslint-config/src/configs/stylistic.ts
  • packages/eslint-config/src/configs/sort.ts
  • packages/eslint-config/src/cli/stages/update-eslint-files.ts
  • packages/eslint-config/src/config-presets.ts
  • packages/eslint-config/src/configs/prettier.ts
  • packages/eslint-config/src/configs/yaml.ts
  • packages/eslint-config/src/configs/javascript.ts
  • packages/eslint-config/src/cli/constants.ts
  • packages/eslint-config/src/configs/node.ts
  • packages/eslint-config/src/configs/nextjs.ts
  • packages/eslint-config/src/configs/svelte.ts
  • packages/eslint-config/src/configs/astro.ts
  • packages/eslint-config/src/utils/linting.ts
  • packages/eslint-config/src/configs/react.ts
  • packages/eslint-config/src/configs/disables.ts
  • packages/eslint-config/src/types.ts
  • packages/eslint-config/src/cli/run.ts
  • packages/eslint-config/src/configs/index.ts
  • packages/eslint-config/src/globs.ts
  • packages/eslint-config/src/factory.ts
  • packages/eslint-config/scripts/versiongen.ts
  • packages/eslint-config/src/configs/typescript.ts
  • packages/eslint-config/README.md
  • packages/eslint-config/src/cli/stages/update-package-json.ts
  • .cursor/rules/enums.mdc

Comment thread .claude/agents/git-versioning.md
Comment thread CLAUDE.md Outdated
Comment thread packages/commitlint-config/package.json Outdated
mheob and others added 5 commits April 6, 2026 14:09
- Bump oven-sh/setup-bun commit hash to latest v2
- Remove the automated Claude Code Review workflow
- Bump cspell from v9 to v10
- Bump turbo to v2.9.4
- Remove ts-node (no longer needed with Bun's native TS support)
Use `bun run --bun` to ensure scripts run binaries through Bun's
runtime instead of Node.js, which improves startup time and
consistency across all packages.
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
@sonarqubecloud
Copy link
Copy Markdown

sonarqubecloud Bot commented Apr 6, 2026

Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

🧹 Nitpick comments (1)
package.json (1)

27-43: Please split dependency version bumps into a dedicated versioning PR/workflow.

Lines 27-43 bundle broad tooling version upgrades with the package-manager migration, which makes rollout and regression triage harder.

Based on learnings In the mheob/config repository, version bumps are handled through a separate workflow task, not directly in the PRs.

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@package.json` around lines 27 - 43, This PR mixes package-manager migration
with tool version bumps; revert the bumped versions in package.json for the
listed devDependencies (e.g. "@changesets/cli", "@commitlint/cli", "@mheob/*"
entries, "turbo", "typescript", "husky", "lint-staged", etc.) so the migration
commit only contains package-manager changes, then open a separate versioning
PR/workflow that updates those dependency versions via the established workflow
used in mheob/config; ensure the new PR references the dedicated versioning
automation and updates any related changelog/workflow files there.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@package.json`:
- Around line 64-68: The package.json currently sets packageManager to Bun which
violates the repo policy; update the packageManager field to "pnpm@10.24.0" and
replace any Bun-specific usages in package.json (e.g., scripts and workspace
entries that reference Bun or use bun-commands) with pnpm equivalents (adjust
script commands in the "scripts" section and any workspace/tooling entries so
they use pnpm CLI semantics), ensuring the "trustedDependencies" block remains
intact and all package.json references to Bun are removed or converted to
pnpm-compatible commands.

---

Nitpick comments:
In `@package.json`:
- Around line 27-43: This PR mixes package-manager migration with tool version
bumps; revert the bumped versions in package.json for the listed devDependencies
(e.g. "@changesets/cli", "@commitlint/cli", "@mheob/*" entries, "turbo",
"typescript", "husky", "lint-staged", etc.) so the migration commit only
contains package-manager changes, then open a separate versioning PR/workflow
that updates those dependency versions via the established workflow used in
mheob/config; ensure the new PR references the dedicated versioning automation
and updates any related changelog/workflow files there.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: b93bbc95-141d-475b-a676-eb8cf6ec6fdc

📥 Commits

Reviewing files that changed from the base of the PR and between 0bb1db1 and 4b9a69b.

⛔ Files ignored due to path filters (1)
  • bun.lock is excluded by !**/*.lock
📒 Files selected for processing (9)
  • .claude/skills/create-pr/SKILL.md
  • .github/workflows/check.yml
  • .github/workflows/claude-code-review.yml
  • .github/workflows/release.yml
  • package.json
  • packages/commitlint-config/package.json
  • packages/internal/package.json
  • packages/oxfmt-config/package.json
  • packages/oxlint-config/package.json
💤 Files with no reviewable changes (1)
  • .github/workflows/claude-code-review.yml
🚧 Files skipped from review as they are similar to previous changes (7)
  • .github/workflows/check.yml
  • .github/workflows/release.yml
  • .claude/skills/create-pr/SKILL.md
  • packages/internal/package.json
  • packages/oxlint-config/package.json
  • packages/oxfmt-config/package.json
  • packages/commitlint-config/package.json

Comment thread package.json
@kodiakhq kodiakhq Bot merged commit 936bccc into main Apr 6, 2026
7 checks passed
@kodiakhq kodiakhq Bot deleted the switch-pnpm-to-bun branch April 6, 2026 12:59
mheob pushed a commit that referenced this pull request Apr 6, 2026
This PR was opened by the [Changesets
release](https://github.com/changesets/action) GitHub action. When
you're ready to do a release, you can merge this and the packages will
be published to npm automatically. If you're not ready to do a release
yet, that's fine, whenever you add more changesets to main, this PR will
be updated.


# Releases
## @mheob/oxlint-config@1.0.1

### Patch Changes

- [#369](#369)
([@mheob](https://github.com/mheob)): docs: rewrite README to accurately
reflect the source code

- Document the previously missing `baseJsConfig` export and its JS
plugins (`regexp`, `jsonc`, `yml`)
- Fix `baseConfig` plugin table (remove plugins that belong to
`baseJsConfig`)
    -   Remove non-existent `toml` plugin section
    -   Correct `tailwindcss/` rule prefixes to `better-tailwindcss/`
    -   Add `react-hooks` to the `reactConfig` plugin table
    -   Add peer dependency install snippets for optional configs
    -   Replace all `ni` install commands with `bun add -D`
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