Skip to content

Use pnpm for slim release tarball and add smoke tests - #113

Merged
heavyrubberslave merged 8 commits into
mainfrom
chore/slim-release-tarball
Oct 1, 2026
Merged

heavyrubberslave merged 8 commits into
mainfrom
chore/slim-release-tarball

Conversation

@heavyrubberslave

@heavyrubberslave heavyrubberslave commented Oct 1, 2026 •

Copy link
Copy Markdown
Member

Tests already run on every PR across all platforms (required check), so the release workflow no longer re-runs them.

After building, node_modules is reinstalled with pnpm using forceIgnoresPlatform, which installs production deps only and includes the native bindings of all platforms (e.g. @node-usb/*) without a hardcoded package list. Tarball node_modules shrinks from ~197M to ~87M.

Summary by CodeRabbit

  • Chores
    • Updated the release packaging process to configure production dependencies for supported platforms. This behind-the-scenes change does not add or remove user-facing features, and no changes to app behavior are noted.

Tests already run on every PR across all platforms (required check),
so the release workflow no longer re-runs them.

After building, node_modules is reinstalled with pnpm using
forceIgnoresPlatform, which installs production deps only and includes
the native bindings of all platforms (e.g. @node-usb/*) without a
hardcoded package list. Tarball node_modules shrinks from ~197M to ~87M.
@coderabbitai

coderabbitai Bot commented Oct 1, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 65dcb838-f2a1-46b8-a646-7196b1e6054b

📥 Commits

Reviewing files that changed from the base of the PR and between 61edc4f and e0b57dd.

📒 Files selected for processing (1)
  • .github/workflows/release.yml

Included review availability: This review used your included allowance. Your plan provides up to 1 included review per hour; 0 remain after this review.


📝 Walkthrough

Walkthrough

The release workflow removes the explicit USB platform binding installation. After integration tests, it sets up pnpm, imports the npm lockfile, and installs production dependencies before packaging.

Changes

Release workflow

Layer / File(s) Summary
Production dependency installation
.github/workflows/release.yml
The workflow removes explicit USB platform binding installs. After integration tests, it sets up pnpm, removes node_modules, imports the npm lockfile, and installs production dependencies with a frozen lockfile, forced platform-ignore handling, and a hoisted node linker.

Priority: ⬇️ Low

Estimated code review effort: 2 (Simple) | ~10 minutes

Change: Other

Merge Risk: ⚪ Minimal · up to e0b57

The production dependency replacement has no established blocking defect and is mergeable subject to normal release checks. The final archive layout and binding contents have not been independently verified.

Security Architecture Review

Security architecture risk: 🔵 Low · up to e0b57

The change does not visibly increase release permissions or expose new secrets. Risk is low, but the final dependency bundle’s cross-platform completeness and recovery behavior have not been fully verified.

Retained concerns
No architecture-level concerns identified.

Security review details

Security Blast Radius

  • inferred — A provisioning defect or compromised release dependency could affect consumers of the shared release archive across its supported platforms. The observed scope is the release job and distributed application bundle, not a demonstrated expansion of tenant, infrastructure or data-store authority.

Trust Boundaries and Controls

  • observed — The new pnpm setup action and package-manager installation become trusted inputs to the existing release pipeline. The configured pnpm version is a range, while dependency installation uses an imported frozen lockfile. Frozen resolution constrains dependency selection but does not attest archive contents or external action behavior.

Hardening Proposals

  • proposed — Before publication, verify that the archive is self-contained and includes the required platform bindings and usable production native modules. This would validate the dependency-tree transition without assuming that the earlier tests covered the packaged result.
  • proposed — Pin the newly introduced setup action to an immutable revision and select an exact validated pnpm version to reduce provisioning drift between releases.
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly identifies the main change: using pnpm to create a slim release tarball. It is concise and related to the workflow updates.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

- Split release workflow into build, smoke-test and release jobs
- Drop lint/tests from release (covered by test.yml on every PR)
- Smoke test starts the shipped tarball on all 5 CI platforms and
  checks GET /version returns the new tag
- Only create the tag/release after all smoke tests pass
- Generate release notes from merged PRs since the last release
- Skip dependency build scripts (they only target the build host) and
  strip node_modules/.bin symlinks from the tarball
Duplicating the 5-entry matrix in test.yml and release.yml is simpler
than an extra reusable workflow job (also for required PR checks).
@heavyrubberslave heavyrubberslave added the patch Creates a new patch/bugfix release if merged label Oct 1, 2026
@heavyrubberslave heavyrubberslave changed the title Slim release tarball to production deps via pnpm Use pnpm for slim release tarball and add smoke tests Oct 1, 2026
@heavyrubberslave
heavyrubberslave merged commit c2fb16b into main Oct 1, 2026
7 checks passed
@heavyrubberslave
heavyrubberslave deleted the chore/slim-release-tarball branch October 1, 2026 21:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

patch Creates a new patch/bugfix release if merged

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant