Skip to main content

Project

Contribute to c15t

Open an issue first

Search the issues and pull requests before you start, then open an issue for your change.

New features, large refactors and architecture changes carry the needs-approval label. Wait for a maintainer to remove it before you write code. Bug fixes, documentation, performance improvements, security fixes and tests can start right away.

Set up the repository

The repository uses Bun 1.3.11. Fork it and create your branch from canary, the default branch that pull requests target:

git clone https://github.com/your-username/c15t.git
cd c15t
git switch -c my-change
bun install

bun install also installs a Lefthook pre-commit hook that formats staged files with Oxfmt.

Run the checks

bun run build         # build every package with Turborepo
bun run test          # Vitest for packages your branch changed, and their dependents
bun run check-types   # TypeScript, after a build
bun run lint          # Oxlint
bun run fmt           # Oxfmt

Tests run with Vitest, not bun test. Browser tests for React, Next.js and TanStack Start need Chromium: run bunx playwright@1.58.2 install once. bun run test:full runs every package. For documentation changes, run bun run lint:docs and bun run fmt:docs.

Add or update tests with your change. For a bug fix, add a test that fails without the fix.

Open the pull request

Target canary. Fill in the pull request template, link the issue and add screenshots for UI changes. Write commit messages as Conventional Commits: feat:, fix:, docs:, chore:, refactor: or test:.

CI picks its checks from the files you changed: package builds, tests, type checks, linting, docs generation and, for runtime changes, browser and bundle checks. autofix.ci pushes formatting fixes to your branch, so pull before you add more commits.

Add a release note

Changes to published packages need a .tegami/*.md release note. Run RELEASE_BRANCH=v3 bun run tegami, replacing v3 with your pull request's target branch. Give explicit package bumps and a Markdown heading, and write the body as the changelog entry:

---
packages:
  '@c15t/core': patch
---

### Fix consent persistence

Keep saved preferences after reloading the page.

Do not edit package CHANGELOG.md files or the publish lock; Tegami generates them. The release.yml workflow runs CI, and Tegami opens a version pull request. Merging it publishes the packages and creates GitHub releases. main publishes stable releases, v3 publishes alphas and 2.0.0 publishes release candidates. Pushes to canary publish commit-specific snapshots under the canary npm tag without a version pull request. The release guide covers versioning rules and npm trusted publishing.

Edit the documentation

Edit the MDX source in docs/. Package README.md files, the docs/ folders inside packages and their AGENTS.md files are generated; change docs/**/*.mdx or the package's readme.json instead.

License

By contributing, you agree that your contributions are licensed under the Apache License, Version 2.0, the license c15t uses.