Contributions are welcome, but this extension touches authentication, browser permissions, and third-party APIs. Please keep changes focused and document user visible behavior carefully.
- Fork the repository on GitHub
- Clone your fork locally
- Create a feature branch from
main - Make your changes following the guidelines below
- Push to your fork
- Open a pull request against this repository's
mainbranch
CI runs automatically on pull requests from forks (lint, type-check, tests, build).
- Open an issue before making large changes or new integrations
- Read README.md, INSTALL.md, and TESTING.md
- If your change affects data flow, auth handling, permissions, or exports, update the relevant documentation in the same pull request
- Node.js 20 or later (enforced via
enginesinpackage.json)
npm install
npm run lint
npm run type-check
npm run test:unitUseful commands:
npm run dev: local PlanMyPeak target onlocalhost:3006npm run dev:prod: dev server against production targetsnpm run build:bundle: build without changing the version numbernpm run build: build and bump patch versionnpm run build:local: local-target build and patch version bumpnpm run test:e2e: Playwright extension tests
For routine development, prefer npm run build:bundle. The build and
build:local scripts run scripts/increment-version.cjs, which updates both
package.json and public/manifest.json.
- Build the extension with
npm run build:bundle. - Open
chrome://extensions. - Enable
Developer mode. - Click
Load unpacked. - Select
dist/.
- Keep TypeScript strict and avoid weakening types unless necessary
- Favor small, reviewable pull requests over large cross-cutting rewrites
- Keep new docs and UI copy consistent with the actual product name shown in the
manifest:
PlanMyPeak Importer - Do not commit generated artifacts such as
dist/,node_modules/, or ZIP packages
At minimum, run:
npm run lint
npm run type-check
npm run test:unit
npm run build:bundleAlso run the relevant manual checks from TESTING.md. If your change affects popup flows, auth capture, or export behavior, include manual verification notes in the pull request.
Run npm run test:e2e for Playwright-covered flows when you touch extension UI
or browser runtime behavior. Those tests require headed Chromium.
- Conventional commits are enforced through Commitlint
- Prettier runs on staged
ts,tsx,json, andmdfiles via lint-staged - Include a clear summary, testing notes, and screenshots when relevant
- Call out permission changes, storage changes, and external API changes
- Avoid mixing refactors, behavior changes, and release/version changes unless there is a strong reason
- Use GitHub issues for bugs, questions, and feature requests
- Redact tokens, API keys, and personal training data from reports
- For vulnerabilities or sensitive disclosures, follow SECURITY.md