Skip to content

Latest commit

 

History

History
51 lines (37 loc) · 2.08 KB

File metadata and controls

51 lines (37 loc) · 2.08 KB

Contributing

Thanks for your interest in the project! This document describes the basic contribution rules.

Environment

  • Node.js >= 22 (CI runs on Node 22 and 24).
  • Yarn 1.22.x (Classic). Use this specific version — the lockfile is only compatible with Yarn Classic.
yarn install

Structure

  • packages/granularity — the published package.
  • apps/showcase — the showcase (deployed to GitHub Pages, not published to npm).
  • apps/playground* — local sandboxes.

Development workflow

  1. Create a feature branch from main.
  2. Make your changes and cover them with tests in packages/granularity/src/**/__tests__.
  3. Before opening a PR, run locally:
    yarn workspace @feugene/granularity lint
    yarn test:granularity
    yarn build:granularity
  4. Open a Pull Request against main. CI will run lint, test, and build for the package and the showcase.

Code style

  • ESLint: @antfu/eslint-config. Auto-fix: yarn workspace @feugene/granularity lint:fix.
  • TypeScript: types are emitted by vue-tsc during the build; no type errors are allowed.
  • Commits: Conventional Commits are recommended — this simplifies changelog generation.

Releases

  • The version is bumped in packages/granularity/package.json, and a vX.Y.Z tag is created on main.
  • Pushing the tag triggers the publish job 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.

License

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.