Skip to content

feat: npm workspaces, packable packages, and Changesets release CI#314

Open
maxnorm wants to merge 4 commits intoPerfect-Abstractions:mainfrom
maxnorm:feat/add-pkg
Open

feat: npm workspaces, packable packages, and Changesets release CI#314
maxnorm wants to merge 4 commits intoPerfect-Abstractions:mainfrom
maxnorm:feat/add-pkg

Conversation

@maxnorm
Copy link
Copy Markdown
Collaborator

@maxnorm maxnorm commented Mar 26, 2026

Summary

Changes Made

  • npm workspaces: Added a root compose-workspace with workspaces for src, cli, and website, plus a root package-lock.json and shared scripts (compose@ci, check, pack checks, Changesets helpers).
  • Library package: Added src/package.json for @perfect-abstractions/compose (Solidity files, changelog, readme, license in the published tarball via prepack / postpack).
  • CLI package: Renamed and aligned @perfect-abstractions/compose-cli (cli/package.json) with publishing metadata, pack:check / prepublishOnly, and a dedicated cli/LICENSE.md; aligned initial version with the library (0.0.1).
  • Changesets: Added .changeset/ config (including ignoring the docs workspace package) and root CHANGELOG.md; cli/CHANGELOG.md updated for the new versioning line.
  • Release automation: Added GitHub Actions for Release (quality gates + Changesets version PR), Publish (after successful Release on main, optional skip when pending changesets remain, npm provenance, tag/npm verification, GitHub Releases), and Changeset Required on PRs touching src/ or cli/ (with skip-changeset label escape hatch).
  • Documentation: Added RELEASING.md describing the two-package release model, contributor flow, and first-release checklist.
  • .gitignore: Consolidated ignores (e.g. root node_modules/), dropped obsolete docs/ paths, and ignored src/CHANGELOG.md as a temporary file during changeset version.
  • Website workspace: Bumped website/package.json / lockfile as needed for the monorepo layout.

Checklist

Before submitting this PR, please ensure:

  • Code follows the Solidity feature ban - No inheritance, constructors, modifiers, public/private variables, external library functions, using for directives, or selfdestruct

  • Code follows Design Principles - Readable, uses diamond storage, favors composition over inheritance

  • Code matches the codebase style - Consistent formatting, documentation, and patterns (e.g. ERC20Facet.sol)

  • Code is formatted with forge fmt

  • Existing tests pass - Run tests to be sure existing tests pass.

  • New tests are optional - If you don't provide tests for new functionality or changes then please create a new issue so this can be assigned to someone.

  • All tests pass - Run forge test and ensure everything works

  • Documentation updated - If applicable, update relevant documentation

Make sure to follow the contributing guidelines.

Additional Notes

@netlify
Copy link
Copy Markdown

netlify bot commented Mar 26, 2026

👷 Deploy request for compose-diamonds pending review.

Visit the deploys page to approve it

Name Link
🔨 Latest commit d5a1247

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 26, 2026

Coverage Report

Coverage

Metric Coverage Details
Lines 79% 1560/1981 lines
Functions 92% 445/483 functions
Branches 74% 161/217 branches

Last updated: Thu, 26 Mar 2026 22:58:32 GMT for commit d5a1247

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 26, 2026

Gas Report

No gas usage changes detected between main and feat/add-pkg.

All functions maintain the same gas costs. ✅

Last updated: Thu, 26 Mar 2026 22:59:04 GMT for commit d5a1247

@maxnorm maxnorm changed the title Feat/add pkg feat: npm workspaces, packable packages, and Changesets release CI Mar 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant