From f84e95ed6cba83062e8f323468d4dc7a3d0ac884 Mon Sep 17 00:00:00 2001 From: Vinay Keerthi <11478411+stonecharioteer@users.noreply.github.com> Date: Wed, 21 Jan 2026 13:44:15 +0530 Subject: [PATCH 001/322] fix: use safe DOM manipulation for article heading permalinks (#13239) --- app/javascript/portal/portalHelpers.js | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/app/javascript/portal/portalHelpers.js b/app/javascript/portal/portalHelpers.js index 1fdc51276..18a54c58e 100644 --- a/app/javascript/portal/portalHelpers.js +++ b/app/javascript/portal/portalHelpers.js @@ -14,13 +14,22 @@ export const getHeadingsfromTheArticle = () => { const rows = []; const articleElement = document.getElementById('cw-article-content'); articleElement.querySelectorAll('h1, h2, h3').forEach(element => { - const slug = slugifyWithCounter(element.innerText); + const headingText = element.innerText; + const slug = slugifyWithCounter(headingText); element.id = slug; element.className = 'scroll-mt-24 heading'; - element.innerHTML += ``; + + const permalink = document.createElement('a'); + permalink.className = 'permalink text-slate-600 ml-3'; + permalink.href = `#${slug}`; + permalink.title = headingText; + permalink.dataset.turbolinks = 'false'; + permalink.textContent = '#'; + element.appendChild(permalink); + rows.push({ slug, - title: element.innerText, + title: headingText, tag: element.tagName.toLowerCase(), }); }); From cc5ec833dceba893349f259984ffb886ee330c36 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Wed, 21 Jan 2026 15:11:41 +0530 Subject: [PATCH 002/322] feat: check if label suggestion is enabled in hooks (#13331) --- .../widgets/conversation/MessagesView.vue | 16 +++- .../composables/spec/useCaptain.spec.js | 29 ------- .../dashboard/composables/useCaptain.js | 33 -------- .../composables/useLabelSuggestions.js | 80 +++++++++++++++++++ 4 files changed, 92 insertions(+), 66 deletions(-) create mode 100644 app/javascript/dashboard/composables/useLabelSuggestions.js diff --git a/app/javascript/dashboard/components/widgets/conversation/MessagesView.vue b/app/javascript/dashboard/components/widgets/conversation/MessagesView.vue index 0ec1139a6..710ab2888 100644 --- a/app/javascript/dashboard/components/widgets/conversation/MessagesView.vue +++ b/app/javascript/dashboard/components/widgets/conversation/MessagesView.vue @@ -2,7 +2,7 @@ import { ref, provide } from 'vue'; // composable import { useKeyboardEvents } from 'dashboard/composables/useKeyboardEvents'; -import { useCaptain } from 'dashboard/composables/useCaptain'; +import { useLabelSuggestions } from 'dashboard/composables/useLabelSuggestions'; import { useSnakeCase } from 'dashboard/composables/useTransformKeys'; // components @@ -59,7 +59,11 @@ export default { useKeyboardEvents(keyboardEvents); - const { captainTasksEnabled, getLabelSuggestions } = useCaptain(); + const { + captainTasksEnabled, + isLabelSuggestionFeatureEnabled, + getLabelSuggestions, + } = useLabelSuggestions(); provide('contextMenuElementTarget', conversationPanelRef); @@ -67,6 +71,7 @@ export default { isPopOutReplyBox, captainTasksEnabled, getLabelSuggestions, + isLabelSuggestionFeatureEnabled, conversationPanelRef, }; }, @@ -94,7 +99,10 @@ export default { }, shouldShowLabelSuggestions() { return ( - this.isOpen && this.captainTasksEnabled && !this.messageSentSinceOpened + this.isOpen && + this.captainTasksEnabled && + this.isLabelSuggestionFeatureEnabled && + !this.messageSentSinceOpened ); }, inboxId() { @@ -282,7 +290,7 @@ export default { const existingLabels = this.currentChat?.labels || []; if (existingLabels.length > 0) return; - if (!this.captainTasksEnabled) { + if (!this.captainTasksEnabled || !this.isLabelSuggestionFeatureEnabled) { return; } diff --git a/app/javascript/dashboard/composables/spec/useCaptain.spec.js b/app/javascript/dashboard/composables/spec/useCaptain.spec.js index c5fad7a00..33fa0ce08 100644 --- a/app/javascript/dashboard/composables/spec/useCaptain.spec.js +++ b/app/javascript/dashboard/composables/spec/useCaptain.spec.js @@ -76,18 +76,6 @@ describe('useCaptain', () => { }); }); - it('gets label suggestions', async () => { - TasksAPI.labelSuggestion.mockResolvedValue({ - data: { message: 'label1, label2' }, - }); - - const { getLabelSuggestions } = useCaptain(); - const result = await getLabelSuggestions(); - - expect(TasksAPI.labelSuggestion).toHaveBeenCalledWith('123'); - expect(result).toEqual(['label1', 'label2']); - }); - it('rewrites content', async () => { TasksAPI.rewrite.mockResolvedValue({ data: { message: 'Rewritten content', follow_up_context: { id: 'ctx1' } }, @@ -193,21 +181,4 @@ describe('useCaptain', () => { await processEvent('improve', 'content', {}); expect(TasksAPI.rewrite).toHaveBeenCalled(); }); - - it('returns empty array when no conversation ID for label suggestions', async () => { - useMapGetter.mockImplementation(getter => { - const mockValues = { - 'accounts/getUIFlags': { isFetchingLimits: false }, - getSelectedChat: { id: null }, - 'draftMessages/getReplyEditorMode': 'reply', - }; - return { value: mockValues[getter] }; - }); - - const { getLabelSuggestions } = useCaptain(); - const result = await getLabelSuggestions(); - - expect(result).toEqual([]); - expect(TasksAPI.labelSuggestion).not.toHaveBeenCalled(); - }); }); diff --git a/app/javascript/dashboard/composables/useCaptain.js b/app/javascript/dashboard/composables/useCaptain.js index a109cb5c1..507f35864 100644 --- a/app/javascript/dashboard/composables/useCaptain.js +++ b/app/javascript/dashboard/composables/useCaptain.js @@ -13,20 +13,6 @@ import { FEATURE_FLAGS } from 'dashboard/featureFlags'; import { OPEN_AI_EVENTS } from 'dashboard/helper/AnalyticsHelper/events'; import TasksAPI from 'dashboard/api/captain/tasks'; -/** - * Cleans and normalizes a list of labels. - * @param {string} labels - A comma-separated string of labels. - * @returns {string[]} An array of cleaned and unique labels. - */ -const cleanLabels = labels => { - return labels - .toLowerCase() - .split(',') - .filter(label => label.trim()) - .map(label => label.trim()) - .filter((label, index, self) => self.indexOf(label) === index); -}; - export function useCaptain() { const store = useStore(); const { t } = useI18n(); @@ -183,24 +169,6 @@ export function useCaptain() { } }; - /** - * Gets label suggestions for the current conversation. - * @returns {Promise} An array of suggested labels. - */ - const getLabelSuggestions = async () => { - if (!conversationId.value) return []; - - try { - const result = await TasksAPI.labelSuggestion(conversationId.value); - const { - data: { message: labels }, - } = result; - return cleanLabels(labels); - } catch { - return []; - } - }; - /** * Sends a follow-up message to refine a previous AI task result. * @param {Object} options - The follow-up options. @@ -264,7 +232,6 @@ export function useCaptain() { rewriteContent, summarizeConversation, getReplySuggestion, - getLabelSuggestions, followUp, processEvent, diff --git a/app/javascript/dashboard/composables/useLabelSuggestions.js b/app/javascript/dashboard/composables/useLabelSuggestions.js new file mode 100644 index 000000000..479d1f2fb --- /dev/null +++ b/app/javascript/dashboard/composables/useLabelSuggestions.js @@ -0,0 +1,80 @@ +import { computed, onMounted } from 'vue'; +import { useMapGetter, useStore } from 'dashboard/composables/store'; +import { useAccount } from 'dashboard/composables/useAccount'; +import { FEATURE_FLAGS } from 'dashboard/featureFlags'; +import TasksAPI from 'dashboard/api/captain/tasks'; + +/** + * Cleans and normalizes a list of labels. + * @param {string} labels - A comma-separated string of labels. + * @returns {string[]} An array of cleaned and unique labels. + */ +const cleanLabels = labels => { + return labels + .toLowerCase() + .split(',') + .filter(label => label.trim()) + .map(label => label.trim()) + .filter((label, index, self) => self.indexOf(label) === index); +}; + +export function useLabelSuggestions() { + const store = useStore(); + const { isCloudFeatureEnabled } = useAccount(); + const appIntegrations = useMapGetter('integrations/getAppIntegrations'); + const currentChat = useMapGetter('getSelectedChat'); + const conversationId = computed(() => currentChat.value?.id); + + const captainTasksEnabled = computed(() => { + return isCloudFeatureEnabled(FEATURE_FLAGS.CAPTAIN_TASKS); + }); + + const aiIntegration = computed( + () => + appIntegrations.value.find( + integration => integration.id === 'openai' && !!integration.hooks.length + )?.hooks[0] + ); + + const isLabelSuggestionFeatureEnabled = computed(() => { + if (aiIntegration.value) { + const { settings = {} } = aiIntegration.value || {}; + return !!settings.label_suggestion; + } + return false; + }); + + const fetchIntegrationsIfRequired = async () => { + if (!appIntegrations.value.length) { + await store.dispatch('integrations/get'); + } + }; + + /** + * Gets label suggestions for the current conversation. + * @returns {Promise} An array of suggested labels. + */ + const getLabelSuggestions = async () => { + if (!conversationId.value) return []; + + try { + const result = await TasksAPI.labelSuggestion(conversationId.value); + const { + data: { message: labels }, + } = result; + return cleanLabels(labels); + } catch { + return []; + } + }; + + onMounted(() => { + fetchIntegrationsIfRequired(); + }); + + return { + captainTasksEnabled, + isLabelSuggestionFeatureEnabled, + getLabelSuggestions, + }; +} From 70d09fcc66ee8f6799aedad25d21d4642ae4943f Mon Sep 17 00:00:00 2001 From: Aakash Bakhle <48802744+aakashb95@users.noreply.github.com> Date: Wed, 21 Jan 2026 15:52:41 +0530 Subject: [PATCH 003/322] fix: make llm aware about signatures in editor replies (#13332) Fixes signatures being generated on top of existing signature in draft for improve, tone change and grammar --- .../openai/openai_prompts/fix_spelling_grammar.liquid | 3 ++- lib/integrations/openai/openai_prompts/improve.liquid | 1 + lib/integrations/openai/openai_prompts/tone_rewrite.liquid | 3 ++- 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/integrations/openai/openai_prompts/fix_spelling_grammar.liquid b/lib/integrations/openai/openai_prompts/fix_spelling_grammar.liquid index 520487357..2a0e8c6d2 100644 --- a/lib/integrations/openai/openai_prompts/fix_spelling_grammar.liquid +++ b/lib/integrations/openai/openai_prompts/fix_spelling_grammar.liquid @@ -10,8 +10,9 @@ Important guidelines: - Ensure the output remains appropriate for customer support Super Important: -- If the message has some markdown formatting, keep the formatting as it is. +- If the message has some markdown formatting, keep the formatting as it is. - Block quotes (lines starting with >) contain quoted text from the customer's previous message. Preserve this quoted text exactly as written (do not modify the customer's words inside the block quote), but DO improve the agent's reply that follows the block quote. - Ensure the output is in the user's original language +- If the message contains a signature block (text after a `--` line), preserve the signature exactly as written without any modification. Do not add a signature if one is not already present. Output only the corrected message, with no preamble, tags, or explanation. diff --git a/lib/integrations/openai/openai_prompts/improve.liquid b/lib/integrations/openai/openai_prompts/improve.liquid index 7e3d35e82..8730d1b0f 100644 --- a/lib/integrations/openai/openai_prompts/improve.liquid +++ b/lib/integrations/openai/openai_prompts/improve.liquid @@ -38,6 +38,7 @@ Do NOT use the context to fill in gaps or add information the agent didn't inclu - Keep the improved message at a similar length to the draft (brief stays brief) - Preserve any markdown formatting - Block quotes (lines starting with `>`) contain quoted customer text—keep this unchanged, only improve the agent's reply +- If the message contains a signature block (text after a `--` line), preserve the signature exactly as written without any modification. Do not add a signature if one is not already present. - Output in the same language as the draft - Output only the improved message, no commentary diff --git a/lib/integrations/openai/openai_prompts/tone_rewrite.liquid b/lib/integrations/openai/openai_prompts/tone_rewrite.liquid index c140a93df..6b62617f0 100644 --- a/lib/integrations/openai/openai_prompts/tone_rewrite.liquid +++ b/lib/integrations/openai/openai_prompts/tone_rewrite.liquid @@ -28,8 +28,9 @@ Important guidelines: - Do not remove critical details or instructions Super Important: -- If the message has some markdown formatting, keep the formatting as it is. +- If the message has some markdown formatting, keep the formatting as it is. - Block quotes (lines starting with >) contain quoted text from the customer's previous message. Preserve this quoted text exactly as written (do not modify the customer's words inside the block quote), but DO improve the agent's reply that follows the block quote. - Ensure the output is in the user's original language +- If the message contains a signature block (text after a `--` line), preserve the signature exactly as written without any modification. Do not add a signature if one is not already present. Output only the rewritten message without any preamble, tags or explanation. From 9e97cc0cdd9d9b383ed574cdbbc1cd49522bcdd6 Mon Sep 17 00:00:00 2001 From: Pranav Date: Thu, 22 Jan 2026 02:14:40 -0800 Subject: [PATCH 004/322] fix(whatsapp): Preserve ordered list numbering in messages (#13339) - Fix ordered lists being sent as unordered lists in WhatsApp integrations - The WhatsApp markdown renderer was converting all lists to bullet points (-), ignoring numbered list formatting - Added ordered list support by tracking list_type and list_item_number from CommonMarker AST metadata Before: Input: "1. First\n2. Second\n3. Third" Output: "- First\n- Second\n- Third" After: Input: "1. First\n2. Second\n3. Third" Output: "1. First\n2. Second\n3. Third" --- .../markdown_renderers/whats_app_renderer.rb | 16 +++++- .../markdown_renderer_service_spec.rb | 52 +++++++++++++++---- 2 files changed, 57 insertions(+), 11 deletions(-) diff --git a/app/services/messages/markdown_renderers/whats_app_renderer.rb b/app/services/messages/markdown_renderers/whats_app_renderer.rb index 8f98218cf..3b4517b4b 100644 --- a/app/services/messages/markdown_renderers/whats_app_renderer.rb +++ b/app/services/messages/markdown_renderers/whats_app_renderer.rb @@ -1,4 +1,9 @@ class Messages::MarkdownRenderers::WhatsAppRenderer < Messages::MarkdownRenderers::BaseMarkdownRenderer + def initialize + super + @list_item_number = 0 + end + def strong(_node) out('*', :children, '*') end @@ -15,13 +20,20 @@ class Messages::MarkdownRenderers::WhatsAppRenderer < Messages::MarkdownRenderer out(node.url) end - def list(_node) + def list(node) + @list_type = node.list_type + @list_item_number = @list_type == :ordered_list ? node.list_start : 0 out(:children) cr end def list_item(_node) - out('- ', :children) + if @list_type == :ordered_list + out("#{@list_item_number}. ", :children) + @list_item_number += 1 + else + out('- ', :children) + end cr end diff --git a/spec/services/messages/markdown_renderer_service_spec.rb b/spec/services/messages/markdown_renderer_service_spec.rb index e43b0d6d0..8bad763b4 100644 --- a/spec/services/messages/markdown_renderer_service_spec.rb +++ b/spec/services/messages/markdown_renderer_service_spec.rb @@ -53,12 +53,28 @@ RSpec.describe Messages::MarkdownRendererService, type: :service do expect(result.strip).to eq('*bold _italic_*') end - it 'converts bullet lists' do - content = "- item 1\n- item 2" + it 'preserves unordered list with dash markers' do + content = "- item 1\n- item 2\n- item 3" result = described_class.new(content, channel_type).render - expect(result.strip).to include('- item 1') - expect(result.strip).to include('- item 2') - expect(result).to include("- item 1\n- item 2") + expect(result).to include('- item 1') + expect(result).to include('- item 2') + expect(result).to include('- item 3') + end + + it 'converts asterisk unordered lists to dash markers' do + content = "* item 1\n* item 2\n* item 3" + result = described_class.new(content, channel_type).render + expect(result).to include('- item 1') + expect(result).to include('- item 2') + expect(result).to include('- item 3') + end + + it 'preserves ordered list markers with numbering' do + content = "1. first step\n2. second step\n3. third step" + result = described_class.new(content, channel_type).render + expect(result).to include('1. first step') + expect(result).to include('2. second step') + expect(result).to include('3. third step') end it 'preserves newlines in plain text without list markers' do @@ -432,6 +448,24 @@ RSpec.describe Messages::MarkdownRendererService, type: :service do expect(result).to include("Line 1\nLine 2\nLine 3") end + it 'preserves ordered list markers with numbering in Twilio WhatsApp' do + content = "1. first step\n2. second step\n3. third step" + channel = instance_double(Channel::TwilioSms, whatsapp?: true) + result = described_class.new(content, channel_type, channel).render + expect(result).to include('1. first step') + expect(result).to include('2. second step') + expect(result).to include('3. third step') + end + + it 'preserves unordered list markers in Twilio WhatsApp' do + content = "- item 1\n- item 2\n- item 3" + channel = instance_double(Channel::TwilioSms, whatsapp?: true) + result = described_class.new(content, channel_type, channel).render + expect(result).to include('- item 1') + expect(result).to include('- item 2') + expect(result).to include('- item 3') + end + it 'backwards compatible when channel is not provided' do content = '**bold** _italic_' result = described_class.new(content, channel_type).render @@ -483,12 +517,12 @@ RSpec.describe Messages::MarkdownRendererService, type: :service do context 'when testing all formatting types' do let(:channel_type) { 'Channel::Whatsapp' } - it 'handles ordered lists' do + it 'handles ordered lists with proper numbering' do content = "1. first\n2. second\n3. third" result = described_class.new(content, channel_type).render - expect(result).to include('first') - expect(result).to include('second') - expect(result).to include('third') + expect(result).to include('1. first') + expect(result).to include('2. second') + expect(result).to include('3. third') end end From 1f5fdd71999ee73f9f7b4436852f5d611bbd5276 Mon Sep 17 00:00:00 2001 From: Muhsin Keloth Date: Thu, 22 Jan 2026 15:59:24 +0400 Subject: [PATCH 005/322] fix: Add Portuguese (Brazil) to CSAT template language options (#13343) Added Portuguese (Brazil) (`pt_BR`) to the CSAT template language dropdown --- .../widgets/conversation/advancedFilterItems/languages.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/app/javascript/dashboard/components/widgets/conversation/advancedFilterItems/languages.js b/app/javascript/dashboard/components/widgets/conversation/advancedFilterItems/languages.js index c1dcfa790..ffe61edd1 100644 --- a/app/javascript/dashboard/components/widgets/conversation/advancedFilterItems/languages.js +++ b/app/javascript/dashboard/components/widgets/conversation/advancedFilterItems/languages.js @@ -515,6 +515,10 @@ const languages = [ name: 'Portuguese', id: 'pt', }, + { + name: 'Portuguese (Brazil)', + id: 'pt_BR', + }, { name: 'Punjabi', id: 'pa', From 964d2f85445fa9af35e68c6a03c87f8895b4590b Mon Sep 17 00:00:00 2001 From: Vishnu Narayanan Date: Thu, 22 Jan 2026 17:59:38 +0530 Subject: [PATCH 006/322] perf: use account.contacts directly in search to reduce DB load (#12956) - Use resolved contacts instead of accounts.contacts for search --------- Co-authored-by: Muhsin Keloth Co-authored-by: Pranav --- .../api/v1/accounts/contacts_controller.rb | 5 ++--- .../api/v1/accounts/contacts_controller_spec.rb | 12 ------------ 2 files changed, 2 insertions(+), 15 deletions(-) diff --git a/app/controllers/api/v1/accounts/contacts_controller.rb b/app/controllers/api/v1/accounts/contacts_controller.rb index e6270c807..86e21d9fd 100644 --- a/app/controllers/api/v1/accounts/contacts_controller.rb +++ b/app/controllers/api/v1/accounts/contacts_controller.rb @@ -24,9 +24,8 @@ class Api::V1::Accounts::ContactsController < Api::V1::Accounts::BaseController def search render json: { error: 'Specify search string with parameter q' }, status: :unprocessable_entity if params[:q].blank? && return - contacts = resolved_contacts.where( - 'name ILIKE :search OR email ILIKE :search OR phone_number ILIKE :search OR contacts.identifier LIKE :search - OR contacts.additional_attributes->>\'company_name\' ILIKE :search', + contacts = Current.account.contacts.where( + 'name ILIKE :search OR email ILIKE :search OR phone_number ILIKE :search OR contacts.identifier LIKE :search', search: "%#{params[:q].strip}%" ) @contacts = fetch_contacts(contacts) diff --git a/spec/controllers/api/v1/accounts/contacts_controller_spec.rb b/spec/controllers/api/v1/accounts/contacts_controller_spec.rb index 5beae6850..8bdc86bb4 100644 --- a/spec/controllers/api/v1/accounts/contacts_controller_spec.rb +++ b/spec/controllers/api/v1/accounts/contacts_controller_spec.rb @@ -357,18 +357,6 @@ RSpec.describe 'Contacts API', type: :request do expect(response.body).not_to include(contact1.email) end - it 'searches contacts using company name' do - contact2.update(additional_attributes: { company_name: 'acme.inc' }) - get "/api/v1/accounts/#{account.id}/contacts/search", - params: { q: 'acme.inc' }, - headers: admin.create_new_auth_token, - as: :json - - expect(response).to have_http_status(:success) - expect(response.body).to include(contact2.email) - expect(response.body).not_to include(contact1.email) - end - it 'matches the resolved contact respecting the identifier character casing' do contact_normal = create(:contact, name: 'testcontact', account: account, identifier: 'testidentifer') contact_special = create(:contact, name: 'testcontact', account: account, identifier: 'TestIdentifier') From 75f75ce7869c877916b1349e4874dd76c7094ab5 Mon Sep 17 00:00:00 2001 From: Tanmay Deep Sharma <32020192+tds-1@users.noreply.github.com> Date: Thu, 22 Jan 2026 18:29:49 +0530 Subject: [PATCH 007/322] fix: sanitize integer fields to prevent Elasticsearch mapping errors (#13276) ## Linear task: https://linear.app/chatwoot/issue/CW-6318/searchkickimporterror-type-=-mapper-parsing-exception-reason-=-failed ## Description Fixes Elasticsearch `mapper_parsing_exception` errors that occur when `campaign_id` contain non-numeric string values ## Type of change - [x] Bug fix (non-breaking change which fixes an issue) ## How Has This Been Tested? - Unit tests - use a local OpenSearch 3.4.0 cluster to verify actual indexing behavior. ## Checklist: - [ ] My code follows the style guidelines of this project - [ ] I have performed a self-review of my code - [ ] I have commented on my code, particularly in hard-to-understand areas - [ ] I have made corresponding changes to the documentation - [ ] My changes generate no new warnings - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] New and existing unit tests pass locally with my changes - [ ] Any dependent changes have been merged and published in downstream modules --- > [!NOTE] > Removes `campaign_id` from the message search index payload to simplify `additional_attributes`, keeping only `automation_rule_id`. > > - `Messages::SearchDataPresenter#additional_attributes_data` now returns only `automation_rule_id` > - Specs updated to stop asserting `campaign_id` and continue validating `automation_rule_id` and email subject handling > > Written by [Cursor Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit 5a9c8eb794a044e3f258b644f67a6731de9e904c. This will update automatically on new commits. Configure [here](https://cursor.com/dashboard?tab=bugbot). --- app/presenters/messages/search_data_presenter.rb | 1 - spec/presenters/messages/search_data_presenter_spec.rb | 5 ----- 2 files changed, 6 deletions(-) diff --git a/app/presenters/messages/search_data_presenter.rb b/app/presenters/messages/search_data_presenter.rb index 7d0638add..7a6260686 100644 --- a/app/presenters/messages/search_data_presenter.rb +++ b/app/presenters/messages/search_data_presenter.rb @@ -51,7 +51,6 @@ class Messages::SearchDataPresenter < SimpleDelegator def additional_attributes_data { - campaign_id: additional_attributes&.dig('campaign_id'), automation_rule_id: content_attributes&.dig('automation_rule_id') } end diff --git a/spec/presenters/messages/search_data_presenter_spec.rb b/spec/presenters/messages/search_data_presenter_spec.rb index 0bbe1a812..7b3d4acb9 100644 --- a/spec/presenters/messages/search_data_presenter_spec.rb +++ b/spec/presenters/messages/search_data_presenter_spec.rb @@ -61,15 +61,10 @@ RSpec.describe Messages::SearchDataPresenter do context 'with campaign and automation data' do before do message.update( - additional_attributes: { 'campaign_id' => '123' }, content_attributes: { 'automation_rule_id' => '456' } ) end - it 'includes campaign_id' do - expect(presenter.search_data[:additional_attributes][:campaign_id]).to eq('123') - end - it 'includes automation_rule_id' do expect(presenter.search_data[:additional_attributes][:automation_rule_id]).to eq('456') end From 8eb6fd1bff511eaa36100ef653d633e8ec8ac670 Mon Sep 17 00:00:00 2001 From: Shivam Mishra Date: Thu, 22 Jan 2026 18:38:04 +0530 Subject: [PATCH 008/322] feat: track copilot events (#13342) --- .../widgets/conversation/ReplyBox.vue | 2 +- .../conversation/LabelSuggestion.vue | 6 +- .../composables/spec/useCaptain.spec.js | 16 +-- .../dashboard/composables/useCaptain.js | 23 +--- .../dashboard/composables/useCopilotReply.js | 122 +++++++++++++++++- .../helper/AnalyticsHelper/events.js | 38 +++--- 6 files changed, 146 insertions(+), 61 deletions(-) diff --git a/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue b/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue index 7467c2fa8..e9d2f6d08 100644 --- a/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue +++ b/app/javascript/dashboard/components/widgets/conversation/ReplyBox.vue @@ -1271,7 +1271,7 @@ export default { key="copilot-bottom-panel" :is-generating-content="copilot.isButtonDisabled.value" @submit="onSubmitCopilotReply" - @cancel="copilot.toggleEditor" + @cancel="copilot.reset" /> { return actual; }); vi.mock('dashboard/helper/AnalyticsHelper/events', () => ({ - OPEN_AI_EVENTS: { - TEST_EVENT: 'open_ai_test_event', + CAPTAIN_EVENTS: { + TEST_EVENT: 'captain_test_event', }, })); @@ -65,17 +64,6 @@ describe('useCaptain', () => { expect(draftMessage.value).toBe('Draft message'); }); - it('records analytics correctly', async () => { - const { recordAnalytics } = useCaptain(); - - await recordAnalytics('TEST_EVENT', { data: 'test' }); - - expect(analyticsHelper.track).toHaveBeenCalledWith('open_ai_test_event', { - type: 'TEST_EVENT', - data: 'test', - }); - }); - it('rewrites content', async () => { TasksAPI.rewrite.mockResolvedValue({ data: { message: 'Rewritten content', follow_up_context: { id: 'ctx1' } }, diff --git a/app/javascript/dashboard/composables/useCaptain.js b/app/javascript/dashboard/composables/useCaptain.js index 507f35864..f7c72e04f 100644 --- a/app/javascript/dashboard/composables/useCaptain.js +++ b/app/javascript/dashboard/composables/useCaptain.js @@ -7,10 +7,9 @@ import { import { useAccount } from 'dashboard/composables/useAccount'; import { useConfig } from 'dashboard/composables/useConfig'; import { useCamelCase } from 'dashboard/composables/useTransformKeys'; -import { useAlert, useTrack } from 'dashboard/composables'; +import { useAlert } from 'dashboard/composables'; import { useI18n } from 'vue-i18n'; import { FEATURE_FLAGS } from 'dashboard/featureFlags'; -import { OPEN_AI_EVENTS } from 'dashboard/helper/AnalyticsHelper/events'; import TasksAPI from 'dashboard/api/captain/tasks'; export function useCaptain() { @@ -79,23 +78,6 @@ export function useCaptain() { useAlert(errorMessage); }; - // === Analytics === - /** - * Records analytics for AI-related events. - * @param {string} type - The type of event. - * @param {Object} payload - Additional data for the event. - * @returns {Promise} - */ - const recordAnalytics = async (type, payload) => { - const event = OPEN_AI_EVENTS[type.toUpperCase()]; - if (event) { - useTrack(event, { - type, - ...payload, - }); - } - }; - // === Task Methods === /** * Rewrites content with a specific operation. @@ -234,8 +216,5 @@ export function useCaptain() { getReplySuggestion, followUp, processEvent, - - // Analytics - recordAnalytics, }; } diff --git a/app/javascript/dashboard/composables/useCopilotReply.js b/app/javascript/dashboard/composables/useCopilotReply.js index 83b541700..492bcb43e 100644 --- a/app/javascript/dashboard/composables/useCopilotReply.js +++ b/app/javascript/dashboard/composables/useCopilotReply.js @@ -1,6 +1,56 @@ import { ref, computed } from 'vue'; import { useCaptain } from 'dashboard/composables/useCaptain'; import { useUISettings } from 'dashboard/composables/useUISettings'; +import { useTrack } from 'dashboard/composables'; +import { CAPTAIN_EVENTS } from 'dashboard/helper/AnalyticsHelper/events'; + +// Actions that map to REWRITE events (with operation attribute) +const REWRITE_ACTIONS = [ + 'improve', + 'fix_spelling_grammar', + 'casual', + 'professional', + 'expand', + 'shorten', + 'rephrase', + 'make_friendly', + 'make_formal', + 'simplify', +]; + +/** + * Gets the event key suffix based on action type. + * @param {string} action - The action type + * @returns {string} The event key prefix (REWRITE, SUMMARIZE, or REPLY_SUGGESTION) + */ +function getEventPrefix(action) { + if (action === 'summarize') return 'SUMMARIZE'; + if (action === 'reply_suggestion') return 'REPLY_SUGGESTION'; + return 'REWRITE'; +} + +/** + * Builds the analytics payload based on action type. + * @param {string} action - The action type + * @param {number} conversationId - The conversation ID + * @param {number} [followUpCount] - Optional follow-up count + * @returns {Object} The payload object + */ +function buildPayload(action, conversationId, followUpCount = undefined) { + const payload = { conversationId }; + + // Add operation for rewrite actions + if (REWRITE_ACTIONS.includes(action)) { + payload.operation = action; + } + + // Add followUpCount if provided + if (followUpCount !== undefined) { + payload.followUpCount = followUpCount; + } + + return payload; +} /** * Composable for managing Copilot reply generation state and actions. @@ -9,7 +59,7 @@ import { useUISettings } from 'dashboard/composables/useUISettings'; * @returns {Object} Copilot reply state and methods */ export function useCopilotReply() { - const { processEvent, followUp } = useCaptain(); + const { processEvent, followUp, currentChat } = useCaptain(); const { updateUISettings } = useUISettings(); const showEditor = ref(false); @@ -19,6 +69,13 @@ export function useCopilotReply() { const followUpContext = ref(null); const abortController = ref(null); + // Tracking state + const currentAction = ref(null); + const followUpCount = ref(0); + const trackedConversationId = ref(null); + + const conversationId = computed(() => currentChat.value?.id); + const isActive = computed(() => showEditor.value || isGenerating.value); const isButtonDisabled = computed( () => isGenerating.value || !isContentReady.value @@ -29,8 +86,22 @@ export function useCopilotReply() { /** * Resets all copilot editor state and cancels any ongoing generation. + * @param {boolean} [trackDismiss=true] - Whether to track dismiss event */ - function reset() { + function reset(trackDismiss = true) { + // Track dismiss event if there was content and we're not accepting + if (trackDismiss && generatedContent.value && currentAction.value) { + const eventKey = `${getEventPrefix(currentAction.value)}_DISMISSED`; + useTrack( + CAPTAIN_EVENTS[eventKey], + buildPayload( + currentAction.value, + trackedConversationId.value, + followUpCount.value + ) + ); + } + if (abortController.value) { abortController.value.abort(); abortController.value = null; @@ -40,6 +111,9 @@ export function useCopilotReply() { isContentReady.value = false; generatedContent.value = ''; followUpContext.value = null; + currentAction.value = null; + followUpCount.value = 0; + trackedConversationId.value = null; } /** @@ -70,11 +144,14 @@ export function useCopilotReply() { return; } - // Reset and start new generation - reset(); + // Reset without tracking dismiss (starting new action) + reset(false); abortController.value = new AbortController(); isGenerating.value = true; isContentReady.value = false; + currentAction.value = action; + followUpCount.value = 0; + trackedConversationId.value = conversationId.value; try { const { message: content, followUpContext: newContext } = @@ -85,7 +162,15 @@ export function useCopilotReply() { if (!abortController.value?.signal.aborted) { generatedContent.value = content; followUpContext.value = newContext; - if (content) showEditor.value = true; + if (content) { + showEditor.value = true; + // Track "Used" event on successful generation + const eventKey = `${getEventPrefix(action)}_USED`; + useTrack( + CAPTAIN_EVENTS[eventKey], + buildPayload(action, trackedConversationId.value) + ); + } isGenerating.value = false; } } catch { @@ -106,6 +191,12 @@ export function useCopilotReply() { isGenerating.value = true; isContentReady.value = false; + // Track follow-up sent event + useTrack(CAPTAIN_EVENTS.FOLLOW_UP_SENT, { + conversationId: trackedConversationId.value, + }); + followUpCount.value += 1; + try { const { message: content, followUpContext: updatedContext } = await followUp({ @@ -137,7 +228,28 @@ export function useCopilotReply() { */ function accept() { const content = generatedContent.value; + + // Track "Applied" event + if (currentAction.value) { + const eventKey = `${getEventPrefix(currentAction.value)}_APPLIED`; + useTrack( + CAPTAIN_EVENTS[eventKey], + buildPayload( + currentAction.value, + trackedConversationId.value, + followUpCount.value + ) + ); + } + + // Reset state without tracking dismiss showEditor.value = false; + generatedContent.value = ''; + followUpContext.value = null; + currentAction.value = null; + followUpCount.value = 0; + trackedConversationId.value = null; + return content; } diff --git a/app/javascript/dashboard/helper/AnalyticsHelper/events.js b/app/javascript/dashboard/helper/AnalyticsHelper/events.js index 8e28473d9..0b6e85d77 100644 --- a/app/javascript/dashboard/helper/AnalyticsHelper/events.js +++ b/app/javascript/dashboard/helper/AnalyticsHelper/events.js @@ -84,22 +84,28 @@ export const PORTALS_EVENTS = Object.freeze({ PREVIEW_ARTICLE: 'Previewed article', }); -export const OPEN_AI_EVENTS = Object.freeze({ - SUMMARIZE: 'OpenAI: Used summarize', - REPLY_SUGGESTION: 'OpenAI: Used reply suggestion', - REPHRASE: 'OpenAI: Used rephrase', - IMPROVE: 'OpenAI: Used improve', - FIX_SPELLING_AND_GRAMMAR: 'OpenAI: Used fix spelling and grammar', - SHORTEN: 'OpenAI: Used shorten', - EXPAND: 'OpenAI: Used expand', - MAKE_FRIENDLY: 'OpenAI: Used make friendly', - MAKE_FORMAL: 'OpenAI: Used make formal', - SIMPLIFY: 'OpenAI: Used simplify', - APPLY_LABEL_SUGGESTION: 'OpenAI: Apply label from suggestion', - DISMISS_LABEL_SUGGESTION: 'OpenAI: Dismiss label suggestions', - ADDED_AI_INTEGRATION_VIA_CTA_BUTTON: - 'OpenAI: Added AI integration via CTA button', - DISMISS_AI_SUGGESTION: 'OpenAI: Dismiss AI suggestions', +export const CAPTAIN_EVENTS = Object.freeze({ + // Rewrite events (with operation attribute in payload) + REWRITE_USED: 'Captain: Rewrite used', + REWRITE_APPLIED: 'Captain: Rewrite applied', + REWRITE_DISMISSED: 'Captain: Rewrite dismissed', + + // Summarize events + SUMMARIZE_USED: 'Captain: Summarize used', + SUMMARIZE_APPLIED: 'Captain: Summarize applied', + SUMMARIZE_DISMISSED: 'Captain: Summarize dismissed', + + // Reply suggestion events + REPLY_SUGGESTION_USED: 'Captain: Reply suggestion used', + REPLY_SUGGESTION_APPLIED: 'Captain: Reply suggestion applied', + REPLY_SUGGESTION_DISMISSED: 'Captain: Reply suggestion dismissed', + + // Follow-up events + FOLLOW_UP_SENT: 'Captain: Follow-up sent', + + // Label suggestions + LABEL_SUGGESTION_APPLIED: 'Captain: Label suggestion applied', + LABEL_SUGGESTION_DISMISSED: 'Captain: Label suggestion dismissed', }); export const COPILOT_EVENTS = Object.freeze({ From 747d4513878e5ec2cae47189e1d73812847293cb Mon Sep 17 00:00:00 2001 From: Pranav Date: Thu, 22 Jan 2026 18:47:42 -0800 Subject: [PATCH 009/322] chore: Improve signup flow, reduce the number of inputs (#13350) - Improved design for the Chatwoot sign up page --- .../assets/images/auth/signup-bg.jpg | Bin 0 -> 132940 bytes app/javascript/dashboard/constants/globals.js | 3 +- .../dashboard/i18n/locale/en/signup.json | 1 + app/javascript/v3/api/auth.js | 10 +- app/javascript/v3/helpers/AuthHelper.js | 15 + .../v3/helpers/specs/AuthHelper.spec.js | 39 +- app/javascript/v3/views/auth/signup/Index.vue | 103 ++--- .../auth/signup/components/Signup/Form.vue | 417 ++++++------------ .../Signup/PasswordRequirements.vue | 69 +++ .../signup/components/Testimonials/Index.vue | 90 ++-- .../Testimonials/TestimonialCard.vue | 63 ++- public/brand-assets/logo.svg | 20 +- public/brand-assets/logo_dark.svg | 16 +- 13 files changed, 398 insertions(+), 448 deletions(-) create mode 100644 app/javascript/dashboard/assets/images/auth/signup-bg.jpg create mode 100644 app/javascript/v3/views/auth/signup/components/Signup/PasswordRequirements.vue diff --git a/app/javascript/dashboard/assets/images/auth/signup-bg.jpg b/app/javascript/dashboard/assets/images/auth/signup-bg.jpg new file mode 100644 index 0000000000000000000000000000000000000000..884a57922bec23089ac8e4af2a6477078aa74d8e GIT binary patch literal 132940 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%0Amie9+ke9=RlIjh-TOT?~GcvbyxIpb5%bgjF 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 { try { + const { fullName, accountName } = getCredentialsFromEmail(creds.email); const response = await wootAPI.post('api/v1/accounts.json', { - account_name: creds.accountName.trim(), - user_full_name: creds.fullName.trim(), + account_name: accountName, + user_full_name: fullName, email: creds.email, password: creds.password, h_captcha_client_response: creds.hCaptchaClientResponse, diff --git a/app/javascript/v3/helpers/AuthHelper.js b/app/javascript/v3/helpers/AuthHelper.js index 70df55331..c2afec985 100644 --- a/app/javascript/v3/helpers/AuthHelper.js +++ b/app/javascript/v3/helpers/AuthHelper.js @@ -22,6 +22,21 @@ const getSSOAccountPath = ({ ssoAccountId, user }) => { return accountPath; }; +const capitalize = str => + str + .split(/[._-]+/) + .map(word => word.charAt(0).toUpperCase() + word.slice(1)) + .join(' '); + +export const getCredentialsFromEmail = email => { + const [localPart, domain] = email.split('@'); + const namePart = localPart.split('+')[0]; + return { + fullName: capitalize(namePart), + accountName: capitalize(domain.split('.')[0]), + }; +}; + export const getLoginRedirectURL = ({ ssoAccountId, ssoConversationId, diff --git a/app/javascript/v3/helpers/specs/AuthHelper.spec.js b/app/javascript/v3/helpers/specs/AuthHelper.spec.js index 2bf3ba450..b422d8530 100644 --- a/app/javascript/v3/helpers/specs/AuthHelper.spec.js +++ b/app/javascript/v3/helpers/specs/AuthHelper.spec.js @@ -1,4 +1,4 @@ -import { getLoginRedirectURL } from '../AuthHelper'; +import { getLoginRedirectURL, getCredentialsFromEmail } from '../AuthHelper'; describe('#URL Helpers', () => { describe('getLoginRedirectURL', () => { @@ -40,4 +40,41 @@ describe('#URL Helpers', () => { expect(getLoginRedirectURL('7500', null)).toBe('/app/'); }); }); + + describe('getCredentialsFromEmail', () => { + it('should capitalize fullName and accountName from a standard email', () => { + expect(getCredentialsFromEmail('john@company.com')).toEqual({ + fullName: 'John', + accountName: 'Company', + }); + }); + + it('should handle subdomains by using the first part of the domain', () => { + expect(getCredentialsFromEmail('jane@mail.example.org')).toEqual({ + fullName: 'Jane', + accountName: 'Mail', + }); + }); + + it('should split by dots and capitalize each word', () => { + expect(getCredentialsFromEmail('john.doe@acme.co')).toEqual({ + fullName: 'John Doe', + accountName: 'Acme', + }); + }); + + it('should omit everything after + in the local part', () => { + expect(getCredentialsFromEmail('user+tag@startup.io')).toEqual({ + fullName: 'User', + accountName: 'Startup', + }); + }); + + it('should split by underscores and hyphens', () => { + expect(getCredentialsFromEmail('first_last@my-company.com')).toEqual({ + fullName: 'First Last', + accountName: 'My Company', + }); + }); + }); }); diff --git a/app/javascript/v3/views/auth/signup/Index.vue b/app/javascript/v3/views/auth/signup/Index.vue index 86baff55c..57ec0b20c 100644 --- a/app/javascript/v3/views/auth/signup/Index.vue +++ b/app/javascript/v3/views/auth/signup/Index.vue @@ -1,83 +1,84 @@ -