We're getting many customer reports saying "I'm not getting notifications." We can't always identify the root cause since there are multiple points of failure. Added a **Push Diagnostics** tool in Super Admin to help us investigate mobile/web push issues. Here's how it works: - Look up a user by email/ID → see all their registered subscriptions with device info (iOS/Android, brand, model), token freshness, and last-updated time - Send a customizable test push and read the raw FCM/web-push/relay response to see if the customer is receiving push notifications—if not, it will show proper errors. - Delete broken subscriptions so the mobile app re-registers on next launch <img width="3816" height="1974" alt="CleanShot 2026-04-20 at 12 56 56@2x" src="https://github.com/user-attachments/assets/08ecab6f-7ec3-44b3-a114-5e6eb8cf0879" /> Fixes https://linear.app/chatwoot/issue/CW-6892/push-diagnostics-tool --------- Co-authored-by: Muhsin <12408980+muhsin-k@users.noreply.github.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
57 lines
2.5 KiB
ERB
57 lines
2.5 KiB
ERB
<%#
|
|
# Navigation
|
|
|
|
This partial is used to display the navigation in Administrate.
|
|
By default, the navigation contains navigation links
|
|
for all resources in the admin dashboard,
|
|
as defined by the routes in the `admin/` namespace
|
|
%>
|
|
|
|
<%= vite_client_tag %>
|
|
<%= vite_javascript_tag 'superadmin_pages' %>
|
|
|
|
<%
|
|
sidebar_icons = {
|
|
accounts: 'icon-building-4-line',
|
|
users: 'icon-user-follow-line',
|
|
platform_apps: 'icon-apps-2-line',
|
|
agent_bots: 'icon-robot-line',
|
|
}
|
|
%>
|
|
|
|
<div class="border-slate-100 border-r w-56 flex-shrink-0 justify-between h-full flex flex-col" role="navigation">
|
|
<div>
|
|
<div class="flex mx-4 mb-4 border-slate-100 border-b py-6">
|
|
<%= link_to image_tag('/brand-assets/logo_thumbnail.svg', alt: 'Chatwoot Admin Dashboard', class: 'h-10'), super_admin_root_url %>
|
|
<div class="flex flex-col ml-3">
|
|
<div class="text-sm">Chatwoot <%= Chatwoot.config[:version] %></div>
|
|
<div class="text-xs text-slate-700 mt-0.5">Super Admin Console</div>
|
|
</div>
|
|
</div>
|
|
|
|
<ul class="my-4">
|
|
<%= render partial: "nav_item", locals: { icon: 'icon-grid-line', url: super_admin_root_url, label: 'Dashboard' } %>
|
|
<% Administrate::Namespace.new(namespace).resources.each do |resource| %>
|
|
<% next if ["account_users", "access_tokens", "installation_configs", "dashboard", "devise/sessions", "app_configs", "instance_statuses", "settings", "push_diagnostics"].include? resource.resource %>
|
|
<%= render partial: "nav_item", locals: {
|
|
icon: sidebar_icons[resource.resource.to_sym],
|
|
url: resource_index_route(resource),
|
|
label: display_resource_name(resource),
|
|
}
|
|
%>
|
|
|
|
<% end %>
|
|
<%= render 'settings_menu', open: settings_open? %>
|
|
</ul>
|
|
</div>
|
|
<div>
|
|
<ul class="my-4">
|
|
<%= render partial: "nav_item", locals: { icon: 'icon-mist-fill', url: sidekiq_web_url, label: 'Sidekiq Dashboard' } %>
|
|
<%= render partial: "nav_item", locals: { icon: 'icon-health-book-line', url: super_admin_instance_status_url, label: 'Instance Health' } %>
|
|
<%= render partial: "nav_item", locals: { icon: 'icon-mail-send-fill', url: super_admin_push_diagnostics_url, label: 'Push Diagnostics' } %>
|
|
<%= render partial: "nav_item", locals: { icon: 'icon-dashboard-line', url: '/', label: 'Agent Dashboard' } %>
|
|
<%= render partial: "nav_item", locals: { icon: 'icon-logout-circle-r-line', url: super_admin_logout_url, label: 'Logout' } %>
|
|
</ul>
|
|
</div>
|
|
</div>
|