Thanks for your interest in the project! This document describes the basic contribution rules.
- Node.js
>= 22(CI runs on Node22and24). - Yarn
1.22.x(Classic). Use this specific version — the lockfile is only compatible with Yarn Classic.
yarn installpackages/granularity— the published package.apps/showcase— the showcase (deployed to GitHub Pages, not published to npm).apps/playground*— local sandboxes.
- Create a feature branch from
main. - Make your changes and cover them with tests in
packages/granularity/src/**/__tests__. - Before opening a PR, run locally:
yarn workspace @feugene/granularity lint yarn test:granularity yarn build:granularity
- Open a Pull Request against
main. CI will runlint,test, andbuildfor the package and the showcase.
- ESLint:
@antfu/eslint-config. Auto-fix:yarn workspace @feugene/granularity lint:fix. - TypeScript: types are emitted by
vue-tscduring the build; no type errors are allowed. - Commits: Conventional Commits are recommended — this simplifies changelog generation.
- The version is bumped in
packages/granularity/package.json, and avX.Y.Ztag is created onmain. - Pushing the tag triggers the
publishjob in GitHub Actions: publishing to npm (with--provenance) and GitHub Packages. - Update the changelog of the package being released — for the core that is
packages/granularity/CHANGELOG.md— as part of the release PR. There is no changelog at the repository root: every package keeps its own.
By contributing code, you agree that it is released under the terms of LICENSE —
Apache License 2.0 with an Additional Ethical Use Clause. The clause adds a use restriction on
top of Apache-2.0, so the project is source-available rather than OSI-approved open source;
it binds contributions exactly as it binds the rest of the code.