chore: migrate to Rstack CLI - #295
Conversation
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
🟡 Changes recommended
There are a few workflow robustness issues to address (notably Node version pinning for Rstack’s engine constraints, and ensuring formatting/hook behavior matches the previous ignore/hook expectations).
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Migrates the repository’s dev workflow (tests, formatting, and Git hooks) from the standalone Rstest/Prettier/Husky/lint-staged setup to a unified Rstack CLI (rs) configuration, and updates CI to run on newer Node versions.
Changes:
- Replaced Rstest configs and test imports with Rstack test projects defined in
rstack.config.mts. - Switched formatting + staged-file checks from Prettier/lint-staged to
rs fmt/rs staged, and replaced Husky withrs hooks. - Updated CI and the pnpm setup action to align with the new Node/runtime expectations.
File summaries
| File | Description |
|---|---|
| skills-lock.json | Adds a lockfile for the rstack-cli-docs agent skill. |
| rstest.config.resolver.mjs | Removes old Rstest config (resolver project). |
| rstest.config.mjs | Removes old Rstest config (compat suite project). |
| rstack.config.mts | Adds Rstack config defining test projects, formatter options, and staged commands. |
| pnpm-lock.yaml | Updates lockfile for new toolchain dependencies (rstack and transitive updates). |
| package.json | Replaces test/format/hook scripts with rs equivalents and swaps devDependencies accordingly. |
| napi/tests/tsconfig-paths.test.mjs | Migrates tests from @rstest/core to rstack/test. |
| napi/tests/scoped-packages.test.mjs | Migrates tests from @rstest/core to rstack/test. |
| napi/tests/roots.test.mjs | Migrates tests from @rstest/core to rstack/test. |
| napi/tests/restrictions.test.mjs | Migrates tests from @rstest/core to rstack/test. |
| napi/tests/resolve.test.mjs | Migrates tests from @rstest/core to rstack/test. |
| napi/tests/options.test.mjs | Migrates tests from @rstest/core to rstack/test. |
| napi/tests/incorrect-description-file.test.mjs | Migrates tests from @rstest/core to rstack/test. |
| napi/tests/importsField.test.mjs | Migrates tests from @rstest/core to rstack/test. |
| napi/tests/extensions.test.mjs | Migrates tests from @rstest/core to rstack/test. |
| napi/tests/extension-alias.test.mjs | Migrates tests from @rstest/core to rstack/test. |
| napi/tests/exportsField.test.mjs | Migrates tests from @rstest/core to rstack/test. |
| napi/tests/browserField.test.mjs | Migrates tests from @rstest/core to rstack/test. |
| napi/resolver.wasi.cjs | Formatting-only change (semicolon) in committed generated output. |
| napi/index.js | Formatting-only change (semicolon) in committed generated output. |
| napi/test/resolver.test.mjs | Migrates resolver tests from @rstest/core to rstack/test. |
| lint-staged.config.mjs | Removes old lint-staged configuration (now handled by rs staged). |
| .vscode/settings.json | Sets Rstack VS Code formatter defaults for the workspace. |
| .vscode/extensions.json | Recommends the Rstack VS Code extension. |
| .rstack/hooks/pre-commit | Adds Rstack-managed pre-commit hook entrypoint. |
| .prettierrc.js | Removes Prettier config (formatting moved into rstack.config.mts). |
| .prettierignore | Removes Prettier ignore list (superseded by Rstack ignorePatterns). |
| .husky/pre-commit | Removes Husky hook script. |
| .github/workflows/ci.yml | Updates CI checks and Node matrix to match the new workflow. |
| .github/actions/pnpm/action.yml | Simplifies pnpm installation now that Node 20 is no longer in the matrix. |
| .agents/skills/rstack-cli-docs/SKILL.md | Adds agent skill documentation for consulting Rstack CLI docs. |
Review details
Files not reviewed (1)
- pnpm-lock.yaml: Generated file
Suppressed comments (1)
rstack.config.mts:42
- Same as above: prefer
nullas the explicit “no error” value in the error-first callback signature for externals.
callback(
undefined,
`node-commonjs ${path.resolve("napi/index.js")}`
);
- Files reviewed: 30/31 changed files
- Comments generated: 4
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Summary
Centralizes testing, formatting, and Git hooks with Rstack CLI 0.7.2, replacing the separate Rstest, Prettier, Husky, and lint-staged setups. The resolver and compatibility suites run as separate test projects, with Rust/TOML checks handled by
rs staged. CI moves to Node.js 22/24 to meet Rstack's runtime requirements.Related Links