This guide explains how to contribute changes that are easy to review, test, and include in release notes.
- Create a branch from
main. - Run local checks (see below) before pushing.
- Implement your change with focused commits.
- Open a pull request.
- The template for the notes is in
.github/pull_request_template.md. - Apply at least one release label.
- Wait for CI checks to pass.
- If they fail, push updates to the PR to fix them before they can be merged.
- Keep PRs scoped and readable.
- Prefer clear PR titles (they are shown in generated release notes).
- Keep PR body to
## Release Notesbullets only (using.github/pull_request_template.md).
- PRs to
main: run test suite without Playwright E2E. - Push to
main: run test suite without Playwright E2E, then build/publishlatestDocker image. - Published release: run full suite including Playwright E2E before stable Docker build.
Try testing the code you changed first:
pnpm -s vitest run src/tests/ai.unit.test.js src/tests/ai.routes.test.jsIf the scoped tests pass, run the global tests:
pnpm testIf your change affects LLM connectivity, you can optionally run a live provider connectivity check.
Note: only runs when relevant API keys are present in local .env.
RUN_LLM_SMOKE=true pnpm -s vitest run src/tests/llm.smoke.test.js- Update docs when behavior or setup changes.
- Keep edited markdown compliant with
.markdownlint.json.
pnpm -s dlx markdownlint-cli docs/technical/contributing.md