From a5858536905c61b7d9ee83ad82542b2c168df784 Mon Sep 17 00:00:00 2001 From: Vishnu Narayanan Date: Tue, 16 Jun 2026 19:40:24 +0530 Subject: [PATCH 01/64] chore: expose advanced_search flag in super_admin UI for self-hosted (#14750) ## Description Removes `chatwoot_internal: true` from the `advanced_search` feature flag so self-hosted enterprise userss can toggle it from the super_admin UI instead of going through a rails console. --- config/features.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/config/features.yml b/config/features.yml index 03105588b..c5bc8f608 100644 --- a/config/features.yml +++ b/config/features.yml @@ -200,7 +200,6 @@ display_name: Advanced Search enabled: false premium: true - chatwoot_internal: true - name: saml display_name: SAML enabled: false From 352f120c6a1f6480336f77fcd6427772f2e47c73 Mon Sep 17 00:00:00 2001 From: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Date: Tue, 16 Jun 2026 20:01:31 +0530 Subject: [PATCH 02/64] feat: add dedicated color tokens for voice call widget (#14745) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit # Pull Request Template ## Description This PR introduces dedicated color tokens for the floating voice call widget instead of reusing generic design tokens. This allows the widget to maintain a distinct dark-card appearance across both light and dark themes. Adds the following tokens and applies them to `CallCard`: * `--call-widget` * `--call-widget-border` * `--call-widget-text` * `--call-widget-sub-text` Fixes https://linear.app/chatwoot/issue/CW-7353/call-notification-window-theme-update-design ## Type of change - [x] New feature (non-breaking change which adds functionality) ## How Has This Been Tested? ### Screenshots **Light mode** Screenshot 2026-06-16 at 3 47 32 PM **Dark mode** Screenshot 2026-06-16 at 3 46 54 PM ## Checklist: - [x] My code follows the style guidelines of this project - [x] I have performed a self-review of my code - [x] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [x] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [x] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules --- .../dashboard/assets/scss/_next-colors.scss | 12 ++++++++++ .../components-next/call/CallCard.vue | 24 +++++++++---------- theme/colors.js | 5 ++++ 3 files changed, 29 insertions(+), 12 deletions(-) diff --git a/app/javascript/dashboard/assets/scss/_next-colors.scss b/app/javascript/dashboard/assets/scss/_next-colors.scss index 784edce6c..4a67e5182 100644 --- a/app/javascript/dashboard/assets/scss/_next-colors.scss +++ b/app/javascript/dashboard/assets/scss/_next-colors.scss @@ -145,6 +145,12 @@ --black-alpha-2: 0, 0, 0, 0.04; --border-blue: 39, 129, 246, 0.5; --white-alpha: 255, 255, 255, 0.8; + + // Voice call widget - light mode + --call-widget: 33, 34, 38, 0.95; + --call-widget-border: 255, 255, 255, 0.1; + --call-widget-text: 237, 238, 240, 1; + --call-widget-sub-text: 173, 177, 184, 1; } .dark { @@ -291,6 +297,12 @@ --border-blue: 39, 129, 246, 0.5; --border-container: 255, 255, 255, 0; --white-alpha: 255, 255, 255, 0.1; + + // Voice call widget - dark mode + --call-widget: 50, 53, 61, 1; + --call-widget-border: 255, 255, 255, 0.07; + --call-widget-text: 237, 238, 240, 1; + --call-widget-sub-text: 173, 177, 184, 1; } } // NEXT COLORS END diff --git a/app/javascript/dashboard/components-next/call/CallCard.vue b/app/javascript/dashboard/components-next/call/CallCard.vue index 55da3dacf..d041150c2 100644 --- a/app/javascript/dashboard/components-next/call/CallCard.vue +++ b/app/javascript/dashboard/components-next/call/CallCard.vue @@ -75,11 +75,11 @@ const channelIcon = computed(() => { diff --git a/app/javascript/dashboard/components-next/sidebar/SidebarGroupLeaf.vue b/app/javascript/dashboard/components-next/sidebar/SidebarGroupLeaf.vue index 1d23ad0ed..404bbe3f3 100644 --- a/app/javascript/dashboard/components-next/sidebar/SidebarGroupLeaf.vue +++ b/app/javascript/dashboard/components-next/sidebar/SidebarGroupLeaf.vue @@ -12,6 +12,7 @@ const props = defineProps({ active: { type: Boolean, default: false }, component: { type: Function, default: null }, badgeCount: { type: [Number, String], default: 0 }, + badgeTooltip: { type: String, default: '' }, hideTreeLine: { type: Boolean, default: false }, thinTreeLine: { type: Boolean, default: false }, }); @@ -52,14 +53,14 @@ const TREE_CONNECTOR = diff --git a/app/javascript/dashboard/components-next/sidebar/SidebarUnreadBadge.vue b/app/javascript/dashboard/components-next/sidebar/SidebarUnreadBadge.vue index 95d95236a..2a91bfcb4 100644 --- a/app/javascript/dashboard/components-next/sidebar/SidebarUnreadBadge.vue +++ b/app/javascript/dashboard/components-next/sidebar/SidebarUnreadBadge.vue @@ -3,6 +3,7 @@ import { computed } from 'vue'; const props = defineProps({ count: { type: [Number, String], default: 0 }, + tooltip: { type: String, default: '' }, }); const normalizedCount = computed(() => { @@ -18,6 +19,7 @@ const displayCount = computed(() => diff --git a/app/javascript/dashboard/components-next/sidebar/SidebarGroupLeaf.vue b/app/javascript/dashboard/components-next/sidebar/SidebarGroupLeaf.vue index 404bbe3f3..1d23ad0ed 100644 --- a/app/javascript/dashboard/components-next/sidebar/SidebarGroupLeaf.vue +++ b/app/javascript/dashboard/components-next/sidebar/SidebarGroupLeaf.vue @@ -12,7 +12,6 @@ const props = defineProps({ active: { type: Boolean, default: false }, component: { type: Function, default: null }, badgeCount: { type: [Number, String], default: 0 }, - badgeTooltip: { type: String, default: '' }, hideTreeLine: { type: Boolean, default: false }, thinTreeLine: { type: Boolean, default: false }, }); @@ -53,14 +52,14 @@ const TREE_CONNECTOR = diff --git a/app/javascript/dashboard/components-next/sidebar/SidebarUnreadBadge.vue b/app/javascript/dashboard/components-next/sidebar/SidebarUnreadBadge.vue index 2a91bfcb4..95d95236a 100644 --- a/app/javascript/dashboard/components-next/sidebar/SidebarUnreadBadge.vue +++ b/app/javascript/dashboard/components-next/sidebar/SidebarUnreadBadge.vue @@ -3,7 +3,6 @@ import { computed } from 'vue'; const props = defineProps({ count: { type: [Number, String], default: 0 }, - tooltip: { type: String, default: '' }, }); const normalizedCount = computed(() => { @@ -19,7 +18,6 @@ const displayCount = computed(() =>