Commit Graph

28 Commits

Author SHA1 Message Date
apk 92576864e2 release: cpd-v5.3.0 2026-09-18 14:39:05 +02:00
apk 7d6b4050e2 release: cpd-v5.2.1
Claude-Session: https://claude.ai/code/session_01WztdFKZAwW9b51iJe9zhtV
2026-09-15 08:24:41 +02:00
apk b4cdcc250d release: cpd-v5.2.0
Claude-Session: https://claude.ai/code/session_01WztdFKZAwW9b51iJe9zhtV
2026-09-08 11:47:08 +02:00
apk 6b25b3a6b8 release: cpd-v5.1.2
First release from the v5-only master. Bumps jscpd to 5.1.2 and every
sub-crate (cpd-core 0.1.11, cpd-tokenizer 0.1.13, cpd-finder 0.1.14,
cpd-reporter 0.1.12) so the new crates.io metadata from #988 and the
Windows drive-path fix in cpd-finder are republished. Adds the 5.1.2
changelog section (linux-arm64-musl package, cargo-binstall, Docker
image, jscpd --version naming, pre-commit hook args, repository split)
and refreshes the version examples in docs/.

Pre-release checks: cargo fmt, clippy -D warnings, cargo test --locked
(22 suites), cargo check --all-targets --target x86_64-pc-windows-msvc,
release-notes extraction dry-run against rust/CHANGELOG.md.
2026-09-03 10:25:02 +02:00
apk d790c6c1d3 chore: make master v5-only
Everything belonging to the v4 TypeScript engine moves to the master-v4
branch: apps/, packages/, build-utils/, changesets, pnpm workspace, turbo,
the Node.js CI workflow and the ts-* release jobs. What remains is the
Rust workspace under rust/, the npm wrapper and platform packages, the
GitHub Action, Docker image, flake, skills, benchmark and fixtures/.

- rust.yml gains a smoke job that runs the release binary against
  fixtures/ (json, sarif, html) and asserts clones and reporters
- release.yml keeps only the Rust jobs; pnpm removed from every workflow;
  audit.yml keeps cargo audit + cargo deny; dependabot drops the root npm entry
- root package.json becomes a thin private package depending on the exact
  jscpd@5 version so the pre-commit hook keeps installing the binary;
  sync-version.mjs keeps it in step
- .pre-commit-hooks.yaml used v4-only flags that the v5 CLI rejects; fixed
- FORMATS.md is now generated from the Rust tokenizer (224 formats)
- README, docs, CONTRIBUTING, SECURITY, package and crate descriptions,
  benchmark and skills rewritten for v5 on its own terms: no v5-vs-v4 speed
  multipliers anywhere, a single "Looking for v4?" pointer to master-v4
2026-09-02 10:15:10 +02:00
apk b0c31a4042 chore: apply audit fixes across repo, crates, npm wrapper and pipelines
Rust / crates.io
- report the invoked binary name in --version/--help (jscpd vs cpd)
- add repository, documentation, keywords, categories to all crates
- exclude tests/ from the jscpd crate package; add cargo-binstall metadata
- expand the crates.io README and render it on docs.rs

npm
- add funding field to jscpd, cpd and jscpd@4 packages
- add jscpd-linux-arm64-musl platform package and clearer unsupported-platform error
- enable provenance for the v4 changeset publish

Pipelines
- rust.yml: windows-latest in the matrix, drop dead schedule guard
- release.yml: cosign-sign release assets, floating v5 tag, LICENSE in tarballs,
  invoke the new docker.yml (GHCR multi-arch image) after each release
- audit.yml: nightly cargo audit, cargo deny and pnpm audit
- Dockerfile: multi-stage image from release binaries (distroless), mcp target for Glama

Docs / community
- README: shields badges, single primary install per OS, GitHub Action snippet,
  link to jscpd.dev, v5.1 features, 15 reporters, 224 formats, 8 platforms
- docs: @v5 action tag, Docker usage, baseline section, current crate versions
- YAML issue forms with engine selector, config.yml, CODEOWNERS
- remove stale .github/CONTRIBUTING.md stub, custom.md, TODO.md; untrack rust/jscpd-report.json
- examples: mark as v4 API, add a Rust cpd-finder example
2026-09-02 09:57:06 +02:00
apk 9db945c399 release: cpd-v5.1.1
Republishes the jscpd npm wrapper with platform pins that match the
release. jscpd@5.1.0 shipped optionalDependencies pinned to the 5.0.16
binaries, so `npm i jscpd@5.1.0` resolved an engine one release behind
and `jscpd --version` printed `cpd 5.0.16` — every 5.1.0 fix, including
the Windows --baseline-from-ref fix, was absent for jscpd users. The cpd
package, the platform packages and the crates.io release were all correct;
only the wrapper's pins were stale.

Root cause in scripts/sync-version.mjs: the wrapper's version and its
platform pins were written behind one `version !== npmVersion` guard, so
once anything set version before the script ran, the guard read "already
up to date" and skipped the pins. Version and pins are now updated
independently, and the script ends by verifying that every npm version and
platform pin equals the release version, exiting non-zero otherwise.
release.yml runs this script, so the same mismatch now fails the release
rather than publishing. This is the 5.0.13 defect again — that fix covered
the cpd package but not the jscpd wrapper.

Sub-crates bumped for the code that changed since the published 5.1.0
(cpd-tokenizer 0.1.12, cpd-finder 0.1.13, cpd-reporter 0.1.11); cpd-core
is unchanged at 0.1.10. The only source delta is the clippy collapsible_if
rewrites unmasked by the MSRV correction, which are behaviour-preserving.

Pre-release verification: cargo fmt --check, clippy --workspace
--all-targets -D warnings, 847 tests, cargo +1.96 check at the declared
MSRV, and — per the Windows-only blind spot that blocked 5.0.15, 5.0.16
and 5.1.0 — cargo check --workspace --all-targets --target
x86_64-pc-windows-msvc, all clean. Release-notes extraction for 5.1.1
dry-run against rust/CHANGELOG.md returns the right section.
2026-08-31 17:29:08 +02:00
apk a2f4827b14 release: resume cpd-v5.1.0 with line-ending-agnostic fingerprints
Revert the 5.1.1 bump (its release run was cancelled before publishing
anything; crates.io already has 5.1.0 and npm has nothing newer than
5.0.16, so the registry-based detect resumes the 5.1.0 release on this
push) and fold the fingerprint fix into the 5.1.0 changelog section.

Claude-Session: https://claude.ai/code/session_01VvWzWfEK6oV4HTe6EoGkff
2026-08-30 12:22:40 +02:00
apk 892810a1a4 release: cpd-v5.1.1
Claude-Session: https://claude.ai/code/session_01VvWzWfEK6oV4HTe6EoGkff
2026-08-30 12:21:01 +02:00
apk 74ea908042 release: cpd-v5.1.0
Claude-Session: https://claude.ai/code/session_01VvWzWfEK6oV4HTe6EoGkff
2026-08-30 12:08:54 +02:00
Marvin Luchs b01910ddc2 feat: add support for Windows on ARM 2026-08-26 16:47:39 +02:00
apk 2b08d13a05 release: cpd-v5.0.16 2026-08-17 22:38:00 +02:00
apk 7a01672634 chore: pin GitHub 'Latest' badge to v5 releases, polish npm package page
- release.yml: mark the Rust v5 release --latest, the legacy TS v4 and
  cpd releases --latest=false so v4 tags never steal the Latest badge
- rust/jscpd/README.md: use absolute GitHub URLs so links work on npmjs.com
- rust/jscpd/package.json: richer description and search keywords
2026-08-14 10:57:36 +02:00
apk b03abdad3e release: cpd-v5.0.15 2026-08-13 13:32:51 +02:00
apk 2a6a1a406a release: cpd-v5.0.14
Bump cpd/jscpd to 5.0.14 and changed sub-crates (cpd-core 0.1.7,
cpd-tokenizer 0.1.8, cpd-finder 0.1.9). Includes --cross-formats (#810)
and the prose-only markdown fix (#883).

sync-version.mjs now also syncs the cpd package optionalDependencies
(cpd@5.0.12 shipped pointing at the 5.0.11 binaries, which forced the
manual npm-only cpd@5.0.13) and its inter-crate dependency regex now
matches the actual Cargo.toml formatting (space before closing brace),
so dependency refs are bumped along with crate versions.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-27 11:49:23 +02:00
apk 64258a9af4 release: cpd-v5.0.12 2026-07-08 18:41:57 +02:00
Andrey Kucherenko ff1ae361fb fix(rust): rename cpd binary and npm platform packages to jscpd
Renames the compiled binary from cpd(.exe) to jscpd(.exe) and the
platform-specific optional-dependency npm packages from cpd-* to
jscpd-* to avoid collision with an antivirus-flagged executable name.

Fixes #826
2026-07-08 17:38:18 +02:00
apk 115f7fbbfd release: cpd-v5.0.11 2026-06-20 09:57:36 +02:00
apk c4cf41aa7e release: cpd-v5.0.10 2026-06-17 19:39:22 +02:00
apk dbe90b074d docs: update project URLs to jscpd.dev, add curl install, clean up badges
- Add curl install method (jscpd.dev/install.sh) to README Quick Start
- Remove unused badges (Ukraine, jscpd SVG, npm downloads, codecov,
  FOSSA, Open Collective, nodei.co) from README; keep npm version,
  license, CI, and NPM badge
- Remove Star History and GA tracker from README; restore NPM badge
- Add GA tracker to all sub-READMEs
- Set homepage to https://jscpd.dev in all package.json files
- Set homepage to https://jscpd.dev in all Cargo.toml files
2026-06-13 09:01:04 +02:00
apk dcef7432c4 release: cpd-v5.0.9 2026-06-13 07:52:55 +02:00
apk 2a7d19ddf0 release: cpd-v5.0.8 2026-06-12 08:16:58 +02:00
apk b75884d01b release: cpd-v5.0.7 2026-06-11 07:12:27 +02:00
apk 7d040b53d4 release: cpd-v5.0.6 2026-06-10 09:41:53 +02:00
apk fb8092f48a fix(ci): add setup-node with registry-url to publish-jscpd job
The publish-jscpd job was missing actions/setup-node with registry-url,
so NODE_AUTH_TOKEN was never written to .npmrc. npm publish failed with
ENEEDAUTH because it couldn't authenticate to the npm registry.

Also normalized repository.url in rust/package.json and
rust/jscpd/package.json to use git+https:// prefix (as npm pkg fix
recommends) to suppress the publish warning.
2026-06-09 07:27:57 +02:00
apk eda22522e1 release: cpd-v5.0.5 2026-06-09 07:08:49 +02:00
apk d21bb81e0e docs: reorganize documentation into docs/ folder, separate v4/v5 docs
- Split the overloaded README.md into focused docs:
  - docs/typescript.md: v4 (Node.js) CLI, reporters, API, config
  - docs/rust.md: v5 (Rust) CLI, reporters, blame, differences from v4
  - docs/ai-ready.md: AI reporter, agent skills, MCP server
  - docs/api.md: Programming APIs (TypeScript and Rust)
  - docs/packages.md: Monorepo package and crate overview
- Trim README.md to a concise entry point with links to docs/
- Slim down rust/README.md, rust/jscpd/README.md, rust/npm/README.md:
  remove duplicated content, link to docs/rust.md for details
- Fix factual errors verified against actual CLI output:
  - Format count: 223 (v5) and 224 (v4), not '225+'
  - Reporter output filenames: jscpd-report.* not cpd.*
  - --max-size: no default in v5 (not 512KB)
  - --formats-exts: same hyphenated form in both v4 and v5
  - --no-gitignore: same flag name in both v4 and v5
- Update rust/jscpd/package.json: add 'cpd' bin so jscpd@5
  installs both jscpd and cpd commands
- Update crate versions in rust/README.md to match source (0.1.3/0.1.4)
2026-06-08 12:57:38 +02:00
apk bacf67bb6d feat: add jscpd npm package (v5.x, Rust-based) and fix --exit-code to match v4 behavior
- Add rust/jscpd/ npm package: same Rust binary as cpd, published as
  'jscpd' on npm with version 5.x (matching cpd). Exposes 'jscpd'
  CLI command, depends on cpd-* platform packages.

- Fix --exit-code: changed from boolean to Option<i32> with
  default_missing_value=1, matching jscpd v4's --exitCode behavior.
  --exit-code (no value) exits 1 on clones; --exit-code 2 exits 2.
  --threshold and --exit-code are now independent (matching v4).

- Update CI: add publish-jscpd job after cpd with fixture verification
  gate (installs cpd, runs on ./fixtures, then publishes jscpd).

- Update publish-npm.sh: publish jscpd wrapper after cpd with
  fixture check in --all, --target, and default modes.

- Update sync-version.mjs: sync jscpd/package.json version alongside
  cpd's.

- Update README docs across cpd, jscpd, and npm packages to document
  v5.x as Rust-based and v4.x as TypeScript, and fix --exit-code docs.
2026-06-08 08:07:35 +02:00