diff --git a/.changepacks/changepack_log_workspacePublish20260824.json b/.changepacks/changepack_log_workspacePublish20260824.json new file mode 100644 index 000000000..030354471 --- /dev/null +++ b/.changepacks/changepack_log_workspacePublish20260824.json @@ -0,0 +1,17 @@ +{ + "changes": { + "bindings/devup-ui-wasm/package.json": "Patch", + "packages/bun-plugin/package.json": "Patch", + "packages/components/package.json": "Patch", + "packages/eslint-plugin/package.json": "Patch", + "packages/next-plugin/package.json": "Patch", + "packages/plugin-utils/package.json": "Patch", + "packages/react/package.json": "Patch", + "packages/reset-css/package.json": "Patch", + "packages/rsbuild-plugin/package.json": "Patch", + "packages/vite-plugin/package.json": "Patch", + "packages/webpack-plugin/package.json": "Patch" + }, + "note": "Publish all npm packages with materialized workspace dependency versions", + "date": "2026-08-24T09:05:00.000Z" +} diff --git a/.changepacks/config.json b/.changepacks/config.json index e614c9a1c..4d78153de 100644 --- a/.changepacks/config.json +++ b/.changepacks/config.json @@ -3,9 +3,9 @@ "baseBranch": "main", "latestPackage": null, "publish": { - "node": "npm publish" + "node": "bun pm pack --quiet --filename .changepacks/publish.tgz && npm publish ../../.changepacks/publish.tgz" }, "publishDryRun": { - "node": "npm publish --dry-run" + "node": "bun pm pack --quiet --filename .changepacks/publish.tgz && npm publish ../../.changepacks/publish.tgz --dry-run" } } diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 4ad419e36..f55775097 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -183,6 +183,26 @@ jobs: - run: bun run build - name: Verify built package entry points run: bun run verify:dist + - name: Verify publish tarballs + shell: bash + run: | + set -euo pipefail + for manifest in bindings/*/package.json packages/*/package.json; do + package_dir="$(dirname "$manifest")" + pack_dir="$RUNNER_TEMP/publish-verify/${package_dir//\//-}" + mkdir -p "$pack_dir" + (cd "$package_dir" && bun pm pack --quiet --destination "$pack_dir") + tarballs=("$pack_dir"/*.tgz) + if [[ "${#tarballs[@]}" -ne 1 ]]; then + echo "Expected one tarball for $package_dir" >&2 + exit 1 + fi + packed_manifest="$(tar -xOf "${tarballs[0]}" package/package.json)" + if grep -q 'workspace:' <<< "$packed_manifest"; then + echo "Unresolved workspace dependency in $package_dir" >&2 + exit 1 + fi + done - run: | bun run lint # rust coverage issue @@ -269,9 +289,10 @@ jobs: # file `publish.yml`. npm matches that filename exactly, so renaming or # moving this file breaks publishing until the entries are updated. # - # The publish command itself is selected in .changepacks/config.json: - # changepacks defaults to `bun publish` because this repo has a bun.lock, - # and bun cannot do OIDC (oven-sh/bun#22423). + # The publish command itself is selected in .changepacks/config.json. + # Bun packs each workspace so dependency ranges are materialized, then + # npm publishes that tarball with OIDC (Bun cannot do OIDC itself: + # oven-sh/bun#22423). - uses: changepacks/action@main id: changepacks with: diff --git a/.gitignore b/.gitignore index 91eb10b39..eb80866ac 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,4 @@ playwright-report .omc .playwright-mcp .omo +/.changepacks/publish.tgz diff --git a/bun.lock b/bun.lock index 2a17f5b1f..13270b5f1 100644 --- a/bun.lock +++ b/bun.lock @@ -428,11 +428,11 @@ }, "bindings/devup-ui-wasm": { "name": "@devup-ui/wasm", - "version": "1.0.75", + "version": "1.0.77", }, "packages/bun-plugin": { "name": "@devup-ui/bun-plugin", - "version": "1.0.12", + "version": "1.0.14", "dependencies": { "@devup-ui/plugin-utils": "workspace:^", "@devup-ui/wasm": "workspace:^", @@ -447,7 +447,7 @@ }, "packages/components": { "name": "@devup-ui/components", - "version": "0.1.50", + "version": "0.1.52", "dependencies": { "@devup-ui/react": "workspace:^", "clsx": "^2.1", @@ -474,7 +474,7 @@ }, "packages/eslint-plugin": { "name": "@devup-ui/eslint-plugin", - "version": "1.0.16", + "version": "1.0.17", "dependencies": { "@typescript-eslint/utils": "^8.67", "typescript-eslint": "^8.67", @@ -490,7 +490,7 @@ }, "packages/next-plugin": { "name": "@devup-ui/next-plugin", - "version": "1.0.80", + "version": "1.0.82", "dependencies": { "@devup-ui/plugin-utils": "workspace:^", "@devup-ui/wasm": "workspace:^", @@ -508,14 +508,14 @@ }, "packages/plugin-utils": { "name": "@devup-ui/plugin-utils", - "version": "1.0.10", + "version": "1.0.12", "devDependencies": { "typescript": "^7.0", }, }, "packages/react": { "name": "@devup-ui/react", - "version": "1.0.37", + "version": "1.0.39", "dependencies": { "csstype-extra": "latest", "react": "^19.2", @@ -536,7 +536,7 @@ }, "packages/reset-css": { "name": "@devup-ui/reset-css", - "version": "1.0.24", + "version": "1.0.26", "dependencies": { "@devup-ui/react": "workspace:^", }, @@ -549,7 +549,7 @@ }, "packages/rsbuild-plugin": { "name": "@devup-ui/rsbuild-plugin", - "version": "1.0.58", + "version": "1.0.60", "dependencies": { "@devup-ui/plugin-utils": "workspace:^", "@devup-ui/wasm": "workspace:^", @@ -565,7 +565,7 @@ }, "packages/vite-plugin": { "name": "@devup-ui/vite-plugin", - "version": "1.0.64", + "version": "1.0.66", "dependencies": { "@devup-ui/plugin-utils": "workspace:^", "@devup-ui/wasm": "workspace:^", @@ -580,7 +580,7 @@ }, "packages/webpack-plugin": { "name": "@devup-ui/webpack-plugin", - "version": "1.0.63", + "version": "1.0.65", "dependencies": { "@devup-ui/plugin-utils": "workspace:^", "@devup-ui/wasm": "workspace:^",