Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
- run: pnpm typecheck
- run: pnpm lint
- run: pnpm format:check
- run: pnpm test
- run: pnpm test:coverage
- run: pnpm build
- run: pnpm pack:smoke

Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
node_modules/
dist/
coverage/
.vitest/
.clawpatch/runs/
.clawpatch/findings/
.clawpatch/patches/
Expand Down
4 changes: 3 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,16 @@ User documentation is in `docs/`; the static website assets are in `website/`.

## Build, Test, and Development Commands

Use pnpm with Node 22 or newer.
Use pnpm with Node 22.x (22.12+), 24.x, or 26+ for Vitest 5 development. The published
CLI continues to support Node 22 or newer.

- `pnpm build`: clean and compile the package with `tsconfig.build.json`.
- `pnpm typecheck`: run TypeScript checks without emitting files.
- `pnpm lint`: run Oxlint using `oxlint.json`.
- `pnpm format`: rewrite files with Oxfmt.
- `pnpm format:check`: verify formatting without writing changes.
- `pnpm test`: run the Vitest suite.
- `pnpm test:coverage`: run the full suite with V8 coverage reports in `coverage/`.
- `pnpm test src/mapper.test.ts`: run one focused test file.

For local CLI checks, build first, then run `node dist/cli.js <command>`.
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

## 0.8.1 - Unreleased

- Completed Vitest 5 tooling with matching V8 coverage, a full-suite CI coverage run, ignored report artifacts, and documented development Node requirements while retaining Node 22/24/26 CI and the CLI's Node 22 floor.
- Updated Nano ID to 3.3.19, Magic String to 1.3.1, and Obug to 2.2.1 within the 48-hour dependency release-age policy.
- Fixed nested-project repairs to ignore their own state and sibling changes, fingerprint project-relative source paths, and record both sides of renames.
- Preserved observed source edits in failed patch attempts when a provider writes files before exiting with an error.
Expand Down
7 changes: 6 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,11 +92,16 @@ pnpm typecheck
pnpm lint
pnpm format:check
pnpm test
pnpm test:coverage
pnpm build
pnpm pack:smoke
```

Use Node.js 22 or newer and the pnpm version declared in `package.json`.
Use Node.js 22.x (22.12+), 24.x, or 26+ and the pnpm version declared in `package.json`
for development with Vitest 5. CI tests Node.js 22, 24, and 26; the published CLI
continues to support Node.js 22 or newer. `pnpm test:coverage` runs the full suite
with V8 coverage, prints a text report, and writes JSON summary and HTML reports
to `coverage/`.

## License

Expand Down
8 changes: 7 additions & 1 deletion docs/spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -109,11 +109,17 @@ Provider restrictions vary; [Safety](safety.md) describes their limits.

## Development and verification

Use Node.js 22 or newer and the pnpm version pinned in `package.json`. Source is
Use Node.js 22.x (22.12+), 24.x, or 26+ for Vitest 5 and the pnpm version pinned in
`package.json`. The published CLI still supports Node.js 22 or newer. Source is
strict ESM TypeScript, checked with TypeScript and Oxlint and formatted with
Oxfmt. Tests live beside their modules and use Vitest; mapper behavior is grouped
by language and framework.

`pnpm test:coverage` runs the full suite with the matching Vitest 5 V8 provider,
covering production TypeScript under `src/`, including files not imported by
tests. Coverage prints a text report and writes JSON summary and HTML reports to
`coverage/`; the Node.js 26 CI job runs coverage as well.

Run the commands in [README development](../README.md#development) before
submitting changes. `pnpm pack:smoke` builds and installs a local package, then
runs its CLI against a synthetic mixed-language project. It does not publish.
Expand Down
2 changes: 2 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
"format:check": "oxfmt --check .",
"website:smoke": "node scripts/website-smoke.mjs",
"test": "vitest run",
"test:coverage": "vitest run --coverage",
"pack:smoke": "node scripts/package-smoke.mjs",
"check:changed": "pnpm run test",
"test:changed": "pnpm run test",
Expand All @@ -42,6 +43,7 @@
"devDependencies": {
"@types/node": "^22.20.2",
"@types/proper-lockfile": "^4.1.4",
"@vitest/coverage-v8": "^5.0.0",
"oxfmt": "^0.67.0",
"oxlint": "^1.82.0",
"typescript": "^7.0.2",
Expand Down
103 changes: 101 additions & 2 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions vitest.config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,11 @@ export default defineConfig({
include: ["src/**/*.test.ts"],
restoreMocks: true,
testTimeout: 30_000,
coverage: {
provider: "v8",
include: ["src/**/*.ts"],
exclude: ["src/**/*.test.ts", "src/test-helpers.ts"],
reporter: ["text", "json-summary", "html"],
},
},
});
Loading