chore: settle product naming across app, widget and deployments

One word everywhere: ReplyPier in UI copy, package and image names, the
replypier.site domains (app/api/docs/help), REPLYPIER_* settings and the
--rp-* design tokens.

- public widget API is window.ReplyPier with replypierId / replypierBaseUrl /
  replypierConfig / replypierToken, loader at webclient/replypier.min.js;
  both bundles rebuilt from source
- NOTICE, llms.txt, CONTRIBUTING, HELP_CENTER_INFRA and the demo runtime
  config rewritten; the demo config ships no third-party keys
- migration adds the ReplyPier managed model value to the AI model enum
- local compose project, database, role, volume and Docker network carry the
  same name
This commit is contained in:
WangShen007 committed 2026-10-26 00:57:22 +08:00
1 parent ff0a09f0e5
commit 20fef2b9f3
1156 files changed
+7267 -7148

No files matched your search

+8 -8
View File
@@ -1,5 +1,5 @@
"""
Copyright 2024-2026 ChatterMate
Copyright 2024-2026 ReplyPier
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -40,8 +40,8 @@ from app.repositories.channels import ChannelAccountRepository
BASE = "/api/v1/channels/meta"
WEBHOOK = "/api/v1/webhooks/meta"
OUR_SECRET = "chattermate-app-secret"
OUR_APP_ID = "APP_CHATTERMATE"
OUR_SECRET = "replypier-app-secret"
OUR_APP_ID = "APP_REPLYPIER"
THEIR_SECRET = "customer-app-secret"
THEIR_APP_ID = "APP_THEIRS"
OVERRIDE_RELEASED = {"webhook_configuration": {"override_callback_uri": ""}}
@@ -133,7 +133,7 @@ class TestOwnAppWebhook:
@pytest.mark.parametrize("secret", [OUR_SECRET, "guess"])
def test_any_other_secret_is_refused(self, client, db, test_organization, secret):
"""ChatterMate's own secret included: this address answers to one app only."""
"""ReplyPier's own secret included: this address answers to one app only."""
account = _account(db, test_organization.id)
response, process, _ = _post(client, account.id, _wa_message(), secret)
assert response.status_code == 403
@@ -163,7 +163,7 @@ class TestOwnAppWebhook:
db.commit()
_account(db, other_org.id, external_id="PN-THEIRS") # same app id, other org
_account(db, test_organization.id, external_id="PN-OTHER-APP", app_id="APP_ELSE")
_account(db, test_organization.id, external_id="PN-SHARED", app_id=None) # via ChatterMate's app
_account(db, test_organization.id, external_id="PN-SHARED", app_id=None) # via ReplyPier's app
for number in ("PN-THEIRS", "PN-OTHER-APP", "PN-SHARED"):
response, process, status = _post(client, ours.id, _wa_message(number))
assert response.status_code == 200
@@ -208,7 +208,7 @@ class TestOwnAppWebhook:
"hub.mode": "subscribe", "hub.verify_token": token, "hub.challenge": "42"})
assert bad.status_code == 403
def test_no_handshake_for_an_account_from_chattermates_app(self, client, db, test_organization):
def test_no_handshake_for_an_account_from_replypiers_app(self, client, db, test_organization):
account = _account(db, test_organization.id, app_id=None)
response = client.get(f"{WEBHOOK}/{account.id}", params={
"hub.mode": "subscribe", "hub.verify_token": account.webhook_secret, "hub.challenge": "42"})
@@ -311,8 +311,8 @@ class TestConnect:
assert response.json()["webhook_url"] is None
assert APP_ID_SETTING not in (_stored(db)[0].settings or {})
def test_chattermates_own_app_needs_no_address(self, client, db):
"""A self-hoster's number in the app ChatterMate runs on already
def test_replypiers_own_app_needs_no_address(self, client, db):
"""A self-hoster's number in the app ReplyPier runs on already
reaches the shared address: nothing is stored or re-pointed."""
response, _, graph_post = _connect_whatsapp(client, app=(True, {"id": OUR_APP_ID}))
assert response.status_code == 200