PhishLens uses main as the public stable branch and develop as the integration branch.
develop.develop.develop.develop to main through a release PR.main.Release Extension workflow publish the extension zip to GitHub Releases.See review-methodology.md for the full review flow.
pytest backend/tests
ruff check backend/app backend/tests ml demo
cd extension
npm run lint
npm run test
npm run build
npm audit --audit-level=high
npm run package
Docker validation:
docker compose build backend
docker compose up -d backend
curl http://localhost:8000/health
docker compose stop backend
npm run package writes the loadable Chrome extension zip to extension/release/.
The zip is a generated artifact and is not committed.
Release Extension runs on tags matching v*. It validates backend tests, extension checks, dependency audit, release metadata, and then attaches the generated phishlens-extension-v*.zip artifact to the GitHub Release.
The workflow does not publish to npm and does not require external announcement secrets.