chore(brand): rename the product to ReplyPier

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
This commit is contained in:
WangShen007 committed 2026-10-26 00:51:03 +08:00
1 parent ff0a09f0e5
commit 54b949b392
1156 files changed
+7292 -7147

No files matched your search

+11 -11
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.
@@ -250,8 +250,8 @@ org content safe. Colors: only `--brand`/`--brand-ink` come from the server
.hc-footer-org .hc-name { font-size: 15px; }
.hc-powered { display: inline-flex; align-items: center; gap: 8px; text-decoration: none; padding: 7px 13px; border: 1px solid #ececf2; border-radius: 999px; font-size: 12.5px; color: #8a90a0; }
.hc-powered strong { display: inline-flex; align-items: center; gap: 6px; color: #1a1b25; font-weight: 600; }
.hc-cm-mark { width: 15px; height: 15px; border-radius: 5px 5px 5px 1px; background: #c9f24e; display: inline-flex; align-items: center; justify-content: center; gap: 1.5px; }
.hc-cm-mark i { width: 2px; height: 2px; border-radius: 50%; background: #0b0c10; }
.hc-rp-mark { width: 15px; height: 15px; border-radius: 5px 5px 5px 1px; background: #c9f24e; display: inline-flex; align-items: center; justify-content: center; gap: 1.5px; }
.hc-rp-mark i { width: 2px; height: 2px; border-radius: 50%; background: #0b0c10; }
/* progressive enhancement: only hide things once JS takes over */
.js .hc-tag { display: none; }
@@ -366,9 +366,9 @@ org content safe. Colors: only `--brand`/`--brand-ink` come from the server
{% endif %}
<span class="hc-name">{{ row.organization.name }}</span>
</div>
<a class="hc-powered" href="https://chattermate.chat" target="_blank" rel="noopener">
<a class="hc-powered" href="https://replypier.site" target="_blank" rel="noopener">
<span>Powered by</span>
<strong><span class="hc-cm-mark"><i></i><i></i><i></i></span> ChatterMate</strong>
<strong><span class="hc-rp-mark"><i></i><i></i><i></i></span> ReplyPier</strong>
</a>
</div>
</footer>
@@ -377,19 +377,19 @@ org content safe. Colors: only `--brand`/`--brand-ink` come from the server
<script type="application/ld+json">{{ json_ld | tojson }}</script>
{% endif %}
<!-- open the real embedded ChatterMate widget -->
<!-- open the real embedded ReplyPier widget -->
<script>
(function () {
// The widget script is async and builds its launcher (#chattermate-button)
// The widget script is async and builds its launcher (#replypier-button)
// a moment after load, so a click can land before it exists — poll briefly
// and click as soon as it appears instead of silently doing nothing.
function openChat() {
var tries = 0;
(function attempt() {
var btn = document.getElementById('chattermate-button');
var btn = document.getElementById('replypier-button');
if (btn) { btn.click(); return; }
if (tries++ < 40) { setTimeout(attempt, 150); return; } // ~6s
if (window.console) console.warn('[ChatterMate] chat widget is not available on this page.');
if (window.console) console.warn('[ReplyPier] chat widget is not available on this page.');
})();
}
[].slice.call(document.querySelectorAll('[data-chat]')).forEach(function (b) {
@@ -402,12 +402,12 @@ org content safe. Colors: only `--brand`/`--brand-ink` come from the server
{% if widget_id %}
<script>
window.chattermateId = {{ widget_id | tojson }};
window.replypierId = {{ widget_id | tojson }};
// Must be set, exactly like the dashboard's install snippet does: the loader
// otherwise falls back to the API URL baked in at build time (the vendor
// cloud), so a self-hosted help center would ask the wrong backend for its
// widget and the visitor would just see "Chat Unavailable".
window.chattermateBaseUrl = {{ widget_api_url | tojson }};
window.replypierBaseUrl = {{ widget_api_url | tojson }};
(function () {
var s = document.createElement('script');
s.src = {{ widget_script_url | tojson }};