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

@@ -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.
@@ -26,7 +26,7 @@ from app.knowledge.failure_advice import FAILURE_ADVICE, FailureCause, plain_rea
def test_identifies_honestly_by_name():
assert "ChatterMateBot" in CRAWLER_USER_AGENT
assert "ReplyPierBot" in CRAWLER_USER_AGENT
assert "Chrome/" not in CRAWLER_USER_AGENT # the stale fake that WordPress.com refuses
@@ -43,7 +43,7 @@ def test_browser_fallback_uses_the_shared_identity():
def test_a_refusal_reads_as_a_refusal():
url = "https://chattermate.chat"
url = "https://replypier.site"
reason = plain_reason(FAILURE_ADVICE[FailureCause.BOT_BLOCKED].format(url=url), url)
assert reason.startswith("This site refused our crawler.")
assert "challenge page" not in reason