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.
+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 }};
+1 -1
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.