The upstream project name is gone from code, assets, docs and build
output: brand strings, domains (replypier.site and its app/api/docs/help
subdomains), env prefixes, image and network names, the widget's public
JS API (window.ReplyPier, replypierId/BaseUrl/Config/Token), CSS tokens
(--rp-*), file and directory names, and the WordPress plugin package.
- widget loader is now webclient/replypier.min.js; both bundles rebuilt
from source (backend/assets/widget.{js,css}, frontend/public/webclient)
- NOTICE, llms.txt, CONTRIBUTING, HELP_CENTER_INFRA and config.dev.js
rewritten rather than string-swapped; the demo config no longer ships
the previous vendor's Firebase/Razorpay/Google keys
- new migration replypier_ai_model_001 adds REPLYPIER to the managed
AIModelType and rewrites pre-rename rows
- local compose project, database, role and volume renamed; LOCAL_DEPLOY
documents carrying the old local data over
2.7 KiB
Contributing to ReplyPier
Thanks for your interest in contributing! This document explains how to get your changes accepted.
License
The ReplyPier open-source core is licensed under the Apache License 2.0. By contributing, you agree that your contributions will be licensed under Apache-2.0.
Developer Certificate of Origin (DCO)
We use the Developer Certificate of Origin (DCO 1.1) instead of a CLA. It is a lightweight way for you to certify that you wrote, or otherwise have the right to submit, the code you are contributing.
Every commit must be signed off. Add a Signed-off-by trailer to each
commit message with:
git commit -s -m "your message"
This appends a line like:
Signed-off-by: Your Name <your.email@example.com>
The name and email must match your git config user.name and
user.email, and must be your real identity (no anonymous or pseudonymous
contributions).
The DCO app runs on every pull request and verifies that all commits are signed off. PRs with unsigned commits will fail the check.
Fixing commits that are not signed off
- Last commit:
git commit --amend -s --no-edit - A whole branch:
git rebase --signoff main
Then force-push your branch (git push --force-with-lease).
Tip: never forget -s
You can make sign-off the default for this repo with a git hook:
cat > .git/hooks/prepare-commit-msg <<'EOF'
#!/bin/sh
NAME=$(git config user.name)
EMAIL=$(git config user.email)
grep -qs "^Signed-off-by:" "$1" || printf "\nSigned-off-by: %s <%s>\n" "$NAME" "$EMAIL" >> "$1"
EOF
chmod +x .git/hooks/prepare-commit-msg
Development workflow
- Fork the repository and create a feature branch:
git checkout -b feature/amazing-feature - Make your changes. Follow the existing code style (PEP 8 for Python, type hints where practical; the project conventions for Vue/TypeScript on the frontend).
- Add or update tests for your change and make sure the suite passes. If it changes something a user does, add or update the end-to-end spec too (see e2e/AUTHORING.md).
- Commit with sign-off (
git commit -s). - Push and open a Pull Request, filling out the PR template.
License headers
New source files should carry the standard Apache-2.0 header. You can apply or refresh headers across the codebase by running:
python relicense_headers.py
This is idempotent — it only changes files whose header is missing or outdated.
Enterprise features
Advanced/enterprise capabilities live in separate, proprietary modules and are not covered by the Apache-2.0 license. Contributions in this repository apply to the open-source core only.