Thanks for your interest in contributing! This document explains how to propose changes and what we expect in pull requests.
- Use Conventional Commits:
feat:,dev:,test:,fx: - Include tests for any behavior change
- Run formatting and ensure CI is green
- Don’t introduce native browser dialogs; use the notification system
- Frontend lives in
packages/app(TypeScript modules bundled by Vite; legacy JS underpackages/app/jsis being removed). - API lives in
packages/api(Azure Functions). - Local run:
- API:
npm run -w packages/api start - Frontend (dev with hot reload):
npm run -w packages/app dev - Production build (optional):
npm run -w packages/app build
- API:
- E2E tests use Playwright and live under
src/frontend/tests. - Run all tests from the repository root:
npm test
- New features and bug fixes must include or update relevant tests.
- A guard test fails if native
alert/confirm/promptare used—stick to the in-app notifications API.
- Prettier is configured in
src/frontend. - Before committing:
cd src/frontend
npm run format
npm run format:check
- Keep changes focused and avoid reformatting unrelated files.
Use the following types to keep history clean and automatable:
feat:user-facing feature additions or changesdev:tooling, build, config, workflows, docs developmenttest:adding or updating testsfx:bug fixes (functional or visual)
Examples:
feat: add resume flow for batch scanningfx: fix strict locator in notifications spectest: add guard against native dialogsdev: configure pages workflow exclusions
Scope is optional but encouraged, e.g. feat(frontend): ... or fx(api): ....
- Fill in the PR template and link related issues.
- Ensure:
- All tests pass locally
- Formatting checks pass
- No generated artifacts or backups are committed (
results/,src/frontend/_backup_unused/,playwright-report/,node_modules/)
- Update docs (README/spec) when behavior or configuration changes.
- Keep PRs small and focused; favor multiple smaller PRs over one large change.
- Respond to feedback promptly; explain trade-offs when relevant.
- Do not commit secrets.
- Frontend must not store long-lived tokens; rely on the API for token exchange.
By contributing, you agree that your contributions will be licensed under the repository’s license.