Avatar for the cornerstonejs user
cornerstonejs
codecs
BlogDocsChangelog

Performance History

Latest Results

fix(release): address review — ignoreChanges, lockfile drift, publish order Eight findings from review, all reproduced locally before fixing. Blocking: 1. lerna.json's command.publish.ignoreChanges was dropped. VersionCommand declares publish as an other-command config, so `lerna version` read it — which is why docs-only commits released nothing. version.mjs fell through to patch for any commit, so the docs commit already on main would have shipped eight versions whose changelogs read only "Version bump only for package". commitsSince now drops a commit whose every path matches the ignore globs. Verified: with only a README-touching commit outstanding, "Nothing to release"; a commit touching both a README and a source file still releases. 2. pnpm records each importer's specifier, so version.mjs rewriting dicom-codec's six sibling ranges stranded pnpm-lock.yaml and the next --frozen-lockfile install failed with ERR_PNPM_OUTDATED_LOCKFILE. yarn 1's lockfile had no workspace-local entries, so this was new. The release now runs `pnpm install --lockfile-only --ignore-scripts` and commits the lock. Verified by reproducing the failure and then the clean install. 3. libjpeg-turbo-12bit is the only package with no bench script, so a single-package bench scope made pnpm exit 1 with ERR_PNPM_RECURSIVE_RUN_NO_SCRIPT and fail the blocking gate; lerna exited 0. It now has an explicit no-op bench script. 4. The publish loop was alphabetical, so dicom-codec published third, carrying freshly-rewritten ranges on four siblings that had not been published yet. New tools/release/publish-order.mjs emits packages in dependency order. Should fix: 5. `read` returns non-zero at EOF, so under `set -e` the publish loop died at the first private manifest and its `continue` guard was unreachable. The helper emits one stream of complete lines, so there is no such edge. 6. libjpeg-turbo-12bit has no vitest config, so the release's test gate never touches it; combined with if-no-files-found: ignore, a dropped artifact could publish a package with an empty dist. The helper refuses to emit a package that ships dist/ but has none. 7. tools/release/ was absent from TOOLCHAIN_PATHS, so version.mjs would first execute during a live release. It is now a toolchain path, and pr-checks runs both scripts as a dry-run step (the test job now checks out full history and tags for it). 8. The lockfile's settings block records only autoInstallPeers and excludeLinksFromLockfile, so changing nodeLinker/allowBuilds/ linkWorkspacePackages left it byte-identical and CI would restore a cache built against the old layout. All five cache keys now hash pnpm-workspace.yaml too.
ci/pnpm-trusted-publishing
6 hours ago
fix(release): address review — ignoreChanges, lockfile drift, publish order Eight findings from review, all reproduced locally before fixing. Blocking: 1. lerna.json's command.publish.ignoreChanges was dropped. VersionCommand declares publish as an other-command config, so `lerna version` read it — which is why docs-only commits released nothing. version.mjs fell through to patch for any commit, so the docs commit already on main would have shipped eight versions whose changelogs read only "Version bump only for package". commitsSince now drops a commit whose every path matches the ignore globs. Verified: with only a README-touching commit outstanding, "Nothing to release"; a commit touching both a README and a source file still releases. 2. pnpm records each importer's specifier, so version.mjs rewriting dicom-codec's six sibling ranges stranded pnpm-lock.yaml and the next --frozen-lockfile install failed with ERR_PNPM_OUTDATED_LOCKFILE. yarn 1's lockfile had no workspace-local entries, so this was new. The release now runs `pnpm install --lockfile-only --ignore-scripts` and commits the lock. Verified by reproducing the failure and then the clean install. 3. libjpeg-turbo-12bit is the only package with no bench script, so a single-package bench scope made pnpm exit 1 with ERR_PNPM_RECURSIVE_RUN_NO_SCRIPT and fail the blocking gate; lerna exited 0. It now has an explicit no-op bench script. 4. The publish loop was alphabetical, so dicom-codec published third, carrying freshly-rewritten ranges on four siblings that had not been published yet. New tools/release/publish-order.mjs emits packages in dependency order. Should fix: 5. `read` returns non-zero at EOF, so under `set -e` the publish loop died at the first private manifest and its `continue` guard was unreachable. The helper emits one stream of complete lines, so there is no such edge. 6. libjpeg-turbo-12bit has no vitest config, so the release's test gate never touches it; combined with if-no-files-found: ignore, a dropped artifact could publish a package with an empty dist. The helper refuses to emit a package that ships dist/ but has none. 7. tools/release/ was absent from TOOLCHAIN_PATHS, so version.mjs would first execute during a live release. It is now a toolchain path, and pr-checks runs both scripts as a dry-run step (the test job now checks out full history and tags for it). 8. The lockfile's settings block records only autoInstallPeers and excludeLinksFromLockfile, so changing nodeLinker/allowBuilds/ linkWorkspacePackages left it byte-identical and CI would restore a cache built against the old layout. All five cache keys now hash pnpm-workspace.yaml too.
ci/pnpm-trusted-publishing
7 hours ago
ci: replace lerna + yarn + CircleCI with pnpm and npm trusted publishing The release was carried by two long-lived personal credentials: an NPM_TOKEN in CircleCI, and a maintainer's personal SSH key, which was the only reason `lerna version` could push the version commit past main's branch protection. Both are now gone. - pnpm replaces yarn + lerna as the workspace driver. lerna.json and yarn.lock are deleted, pnpm-workspace.yaml pins the flat (hoisted) node_modules layout the packages were built against, and `lerna run --scope` becomes `pnpm --filter` throughout pr-checks.yml and bench.yml. - tools/release/version.mjs replaces `lerna version`, reproducing the same independent conventional-commit bumps, per-package tags, dependent range cascade and CHANGELOG format. It only mutates files and emits a plan; all git writes live in the workflow, so `--dry-run` is a safe local preview. - .github/workflows/release.yml replaces the CircleCI NPM_PUBLISH job. npm auth is OIDC trusted publishing (short-lived, scoped to this workflow file); git auth is the built-in GITHUB_TOKEN. Every step is idempotent, so a re-run after a partial failure finishes rather than double-publishes. - Trusted publishing forces provenance generation, which requires each package.json's repository.url to match this repo. Only openjphjs was correct; charls pointed at chafey/charls-js, openjpeg at https://localhost, and five packages had no repository field at all. tools/release/README.md documents the flow and the two one-time setup scripts (npm trusted publishers, and migrating main to a ruleset so the Actions bot can push the version commit).
ci/pnpm-trusted-publishing
7 hours ago
ci: replace lerna + yarn + CircleCI with pnpm and npm trusted publishing The release was carried by two long-lived personal credentials: an NPM_TOKEN in CircleCI, and a maintainer's personal SSH key, which was the only reason `lerna version` could push the version commit past main's branch protection. Both are now gone. - pnpm replaces yarn + lerna as the workspace driver. lerna.json and yarn.lock are deleted, pnpm-workspace.yaml pins the flat (hoisted) node_modules layout the packages were built against, and `lerna run --scope` becomes `pnpm --filter` throughout pr-checks.yml and bench.yml. - tools/release/version.mjs replaces `lerna version`, reproducing the same independent conventional-commit bumps, per-package tags, dependent range cascade and CHANGELOG format. It only mutates files and emits a plan; all git writes live in the workflow, so `--dry-run` is a safe local preview. - .github/workflows/release.yml replaces the CircleCI NPM_PUBLISH job. npm auth is OIDC trusted publishing (short-lived, scoped to this workflow file); git auth is the built-in GITHUB_TOKEN. Every step is idempotent, so a re-run after a partial failure finishes rather than double-publishes. - Trusted publishing forces provenance generation, which requires each package.json's repository.url to match this repo. Only openjphjs was correct; charls pointed at chafey/charls-js, openjpeg at https://localhost, and five packages had no repository field at all. tools/release/README.md documents the flow and the two one-time setup scripts (npm trusted publishers, and migrating main to a ruleset so the Actions bot can push the version commit).
ci/pnpm-trusted-publishing
8 hours ago

Latest Branches

CodSpeed Performance Gauge
-25%
ci: replace lerna + yarn + CircleCI with pnpm and npm trusted publishing#87
7 hours ago
c6044e0
ci/pnpm-trusted-publishing
CodSpeed Performance Gauge
-17%
docs: clarify package descriptions#86
23 hours ago
c92af26
agent/refresh-codec-readmes
CodSpeed Performance Gauge
+8%
24 hours ago
8648101
fix/csp-safe-embind
© 2026 CodSpeed Technology
Home Terms Privacy Docs