fix(branding): hardcode title and meta description in dashboard layout

The dashboard layout (app/views/layouts/vueapp.html.erb) used
@global_config['INSTALLATION_NAME'] for both <title> and
<meta name='description'>. INSTALLATION_NAME is reset to 'Chatwoot' on
every Internal::ReconcilePlanConfigService run, so binding the head
metadata to that config produces 'Chatwoot' on the dashboard tab title
and search-engine snippets whenever the reconcile beats the brand
script.

The meta description also hardcoded Chatwoot marketing copy ('a customer
support solution that helps companies engage customers over Messenger,
Twitter, Telegram, WeChat, Whatsapp...') referencing INSTALLATION_NAME
twice — even with INSTALLATION_NAME='LeadChat' the rest of the blurb
read as Chatwoot's positioning, which doesn't match Lead Magnet's
positioning.

Replace both with hardcoded LeadChat-branded values, marker-comment
wrapped for upstream-merge tractability.
This commit is contained in:
netlas
2026-04-29 15:22:49 +03:00
parent aa1e199530
commit c28c7943ea
2 changed files with 11 additions and 4 deletions

View File

@@ -34,6 +34,7 @@ LeadChat is a white-label Chatwoot fork maintained on the `leadchat` branch. Cus
| `app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Email.vue` (3 separate blocks) | (1) import `MicrosoftShared.vue`; (2) `emailProviderList` entry for `microsoft_shared`; (3) router slot `<MicrosoftShared v-else-if="provider === 'microsoft_shared'"/>` | `<!-- === LeadChat: microsoft_shared === -->` and `// === LeadChat: microsoft_shared ===` |
| `app/javascript/dashboard/i18n/locale/en/inboxMgmt.json` | New keys: `INBOX_MGMT.ADD.MICROSOFT_SHARED.*` and `INBOX_MGMT.EMAIL_PROVIDERS.MICROSOFT_SHARED.*` | (no comment markers — JSON; flagged here in LEADCHAT.md instead) |
| `app/javascript/shared/components/Branding.vue` (template only) | Replace conditional "Powered by ..." footer link with the empty placeholder div that the original v-else already used. Removes branding from the website chat widget, survey screens, and any other component that mounts `<Branding/>`. Enterprise's `disable_branding` feature flag gets reset by `Internal::ReconcilePlanConfigService`, so a feature-flag approach is unreliable. | `<!-- === LeadChat: branding-removal === -->` |
| `app/views/layouts/vueapp.html.erb` (`<title>` + meta description) | Hardcode `<title>LeadChat</title>` and `<meta name="description">` so they don't render "Chatwoot" via `INSTALLATION_NAME`. The reconcile service resets `INSTALLATION_NAME` to "Chatwoot" on every run, so binding to that config value is unreliable. The original meta description also hardcoded Chatwoot's marketing copy ("customer support solution that helps companies engage customers over Messenger, Twitter, Telegram, WeChat, Whatsapp...") which we drop entirely. | `<%# === LeadChat: branding-removal === %>` |
### C. New top-level files (no upstream conflict potential)

View File

@@ -1,15 +1,21 @@
<!DOCTYPE html>
<html>
<head>
<title>
<%= @global_config['INSTALLATION_NAME'] %>
</title>
<%# === LeadChat: branding-removal (start) === %>
<%# Hardcoded title and meta description so they stay LeadChat-branded
regardless of INSTALLATION_NAME being reset to "Chatwoot" by the
upstream Internal::ReconcilePlanConfigService. Update the values
below if you want different copy. %>
<title>LeadChat</title>
<%# === LeadChat: branding-removal (end) === %>
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no, user-scalable=0"/>
<% if @global_config['DISPLAY_MANIFEST'] %>
<meta name="msapplication-TileColor" content="#01a0a5">
<meta name="msapplication-TileImage" content="/ms-icon-144x144.png">
<meta name="theme-color" content="#01a0a5">
<meta name="description" content="<%= @global_config['INSTALLATION_NAME'] %> is a customer support solution that helps companies engage customers over Messenger, Twitter, Telegram, WeChat, Whatsapp. Simply connect your channels and converse with your customers from a single place. Easily add new agents to your system and have them own and resolve conversations with customers. <%= @global_config['INSTALLATION_NAME'] %> also gives you real-time reports to measure your team's performance, canned responses to easily respond to frequently asked questions and private notes for agents to collaborate among themselves.">
<%# === LeadChat: branding-removal (start) === %>
<meta name="description" content="LeadChat — your customer conversations in one place.">
<%# === LeadChat: branding-removal (end) === %>
<% if ENV['IOS_APP_IDENTIFIER'].present? %>
<meta name="apple-itunes-app" content='app-id=<%= ENV['IOS_APP_IDENTIFIER'] %>'>
<% end %>