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

+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.
@@ -1144,7 +1144,7 @@ class ShopifyService:
async def inject_widget_script(self, shop: ShopifyShop, script_tag: str) -> None:
"""
Creates a Shopify Script Tag to inject the ChatterMate widget using the scriptTagCreate GraphQL mutation.
Creates a Shopify Script Tag to inject the ReplyPier widget using the scriptTagCreate GraphQL mutation.
Args:
shop: The ShopifyShop object.
@@ -1158,12 +1158,12 @@ class ShopifyService:
# 1. Extract the script URL from the script_tag string
# The script_tag is in format:
# <script>/* ChatterMate Start */window.chattermateId='widget_id';</script><script src="script_url" async defer></script>
# <script>/* ReplyPier Start */window.replypierId='widget_id';</script><script src="script_url" async defer></script>
# We need to extract the script_url
import re
script_url_match = re.search(r'<script src=["\']([^"\']+)["\']', script_tag)
widget_id_match = re.search(r"window\.chattermateId=\'([^\']+)\'", script_tag)
widget_id_match = re.search(r"window\.replypierId=\'([^\']+)\'", script_tag)
if not script_url_match:
raise Exception("Could not extract script URL from the provided script tag.")
@@ -1193,7 +1193,7 @@ class ShopifyService:
script_edges = script_response["data"]["scriptTags"]["edges"]
for edge in script_edges:
if edge["node"]["src"] == script_url:
logger.info(f"ChatterMate script already installed at {script_url}. Skipping injection.")
logger.info(f"ReplyPier script already installed at {script_url}. Skipping injection.")
return
# 3. Create the script tag using scriptTagCreate mutation
@@ -1243,7 +1243,7 @@ class ShopifyService:
async def remove_widget_script(self, shop: ShopifyShop, widget_id: str) -> None:
"""
Removes the ChatterMate widget script tag using scriptTagDelete GraphQL mutation.
Removes the ReplyPier widget script tag using scriptTagDelete GraphQL mutation.
Args:
shop: The ShopifyShop object.
@@ -1280,11 +1280,11 @@ class ShopifyService:
src = edge["node"]["src"]
# Match any scripts from your domain and potentially containing the widget ID
# Adjust this condition based on your script URL structure
if "chattermate" in src.lower():
if "replypier" in src.lower():
widget_scripts.append(edge["node"]["id"])
if not widget_scripts:
logger.info(f"No ChatterMate script tags found for shop {shop.shop_domain}. Nothing to remove.")
logger.info(f"No ReplyPier script tags found for shop {shop.shop_domain}. Nothing to remove.")
return
# 3. Delete each matching script tag