7e2ad3b3e1
2891 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
7e2ad3b3e1
|
fix: handle potential null values in automation type retrieval (#163)
* fix: handle potential null values in automation type retrieval * fix: handle cases where custom attribute keys are not found, returning default values |
||
|
|
742d6d6195
|
feat: load images and audio files with retry (#160) | ||
|
|
1969596a8e
|
fix: correct locale formatting in heatmap component in reports page (#156) | ||
|
|
b03dfdb751
|
Chore/merge upstream 4.8.0 (#150)
* chore: Hide "Learn More" button in feature spotlight for self-hosted (#12675) * feat: single query for reporting event stats (#12664) This PR collapses multiple queries fetching stats from a single table to a single query ```sql SELECT user_id as user_id, COUNT(CASE WHEN name = 'conversation_resolved' THEN 1 END) as resolved_count, AVG(CASE WHEN name = 'conversation_resolved' THEN value END) as avg_resolution_time, AVG(CASE WHEN name = 'first_response' THEN value END) as avg_first_response_time, AVG(CASE WHEN name = 'reply_time' THEN value END) as avg_reply_time FROM "reporting_events" WHERE "reporting_events"."account_id" = <account_id> AND "reporting_events"."created_at" >= '2025-09-14 18:30:00' AND "reporting_events"."created_at" < '2025-10-14 18:29:59' GROUP BY "reporting_events"."user_id"; ``` ### Why this works? Here's why this optimization is faster based on PostgreSQL internals: - Single Table Scan vs Multiple Scans: Earlier we did 4 sequential scans (or 4 index scans) of the same data, with the same where clause, now in a single scan all 4 `CASE` expressions are evaluated in a single pass. - Shared Buffer Cache Efficiency: PostgreSQL's shared buffer cache stores recently accessed pages, with this, pages are loaded once and re-used for all aggregation, earlier with separate queries we were forced to re-read all from the disk each time - Reduced planning and network overhead (4 vs 1 query) ### How is it tested 1. The specs all pass without making any changes 2. Verified the reports side by side after generating from report seeder #### How to test Generate seed data using the following command ```bash ACCOUNT_ID=1 ENABLE_ACCOUNT_SEEDING=true bundle exec rake db:seed:reports_data ``` Once done download the reports, checkout to this branch and download the reports again and compare them * chore: Update translations (#12625) * chore: Migrate mailers from the worker to jobs (#12331) Previously, email replies were handled inside workers. There was no execution logs. This meant if emails silently failed (as reported by a customer), we had no way to trace where the issue happened, the only assumption was “no error = mail sent.” By moving email handling into jobs, we now have proper execution logs for each attempt. This makes it easier to debug delivery issues and would have better visibility when investigating customer reports. Fixes https://linear.app/chatwoot/issue/CW-5538/emails-are-not-sentdelivered-to-the-contact --------- Co-authored-by: Sojan Jose <sojan@pepalo.com> Co-authored-by: Shivam Mishra <scm.mymail@gmail.com> * chore(deps-dev): bump vite from 5.4.20 to 5.4.21 (#12700) Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 5.4.20 to 5.4.21. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/vitejs/vite/releases">vite's releases</a>.</em></p> <blockquote> <h2>v5.4.21</h2> <p>Please refer to <a href="https://github.com/vitejs/vite/blob/v5.4.21/packages/vite/CHANGELOG.md">CHANGELOG.md</a> for details.</p> </blockquote> </details> <details> <summary>Changelog</summary> <p><em>Sourced from <a href="https://github.com/vitejs/vite/blob/v5.4.21/packages/vite/CHANGELOG.md">vite's changelog</a>.</em></p> <blockquote> <h2><!-- raw HTML omitted -->5.4.21 (2025-10-20)<!-- raw HTML omitted --></h2> <ul> <li>fix(dev): trim trailing slash before <code>server.fs.deny</code> check (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/20968">#20968</a>) (<a href="https://github.com/vitejs/vite/tree/HEAD/packages/vite/issues/20970">#20970</a>) (<a href=" |
||
|
|
7f0748460e
|
feat: dashboard apps on sidebar (#146)
* feat: dashboard apps on sidebar * fix: handle dashboard app not found * chore: minor refactoring |
||
|
|
17149f3dca
|
fix(zapi): update promo banner button to type button (#142) | ||
|
|
16d7e68176
|
fix: fix zapi prop naming (#133) | ||
|
|
7a3544ba99
|
chore: remove zapi feature flag (#132) | ||
|
|
77692c89b6 | chore(zapi): update banner on create inbox screen | ||
|
|
c234023a4a
|
feat(zapi): handle contact messages and ignore notifications (#124)
* chore: skip notification messages * feat: contact card messages * fix: notification message handling * chore: reduce code duplication * fix: improve contact name handling in attachment * chore(zapi): promo banner with affiliate link (#126) * chore(zapi): promo banner with affiliate link * chore: remove useless comment * chore(zapi): add note about hardcoded affiliate link * feat: provider.event_received for raw provider events (#127) * chore(zapi): promo banner with affiliate link * chore: remove useless comment * feat: provider.event_received for raw provider events * feat: add provider_event_received handling in webhook listener * feat(baileys): use senderLid as contact identifier (#128) * chore(zapi): promo banner with affiliate link * chore: remove useless comment * feat: provider.event_received for raw provider events * feat(baileys): use senderLid as contact identifier * fix: simplify webhook_data method by removing unnecessary fields |
||
|
|
8ff5834ee8
|
fix(zapi): support for LID-only conversations (#123)
* fix: ignore action events * feat(zapi): allow updating instance ID * feat: handle `chatLid` field * test: break down handler specs into separate files * feat: update send_message method to use recipient_id logic for zapi provider * fix: use identifier instead of source_id for zapi * test: fix specs * feat: prioritize senderName over chatName for contact naming in received callback |
||
|
|
8d4a6b856a | Merge branch main into chore/merge-upstream-4.7.0 | ||
|
|
4fc80ba4ee
|
feat(zapi): Z-API integration (#115)
* feat(zapi): connect flow and UI updates * fix(zapi): re-add manage connection section * feat(zapi): reply * feat: send message * fix: qrcode job logic * test: qr code job specs * chore: concurrent index * chore: whatsapp model minor * test: message window service specs * chore: service refactor * test: zapi service * chore: zapi beta * chore: minor fixes * test: incoming message specs * chore: minor fixes * feat: handle status transitions * test: refactor spec * test: refactor spec * chore(z-api): use feature flag * chore: fix migration name |
||
|
|
f1f1ce644c
|
feat: Overview heatmap improvements (#12359)
This PR adds inbox filtering to the conversation traffic heatmap, allowing users to analyze patterns for specific inboxes. Additionally, it also adds a new resolution count heatmap that shows when support teams are most active in resolving conversations, using a green color to distinguish it from the blue conversation heatmap. The PR also reorganizes heatmap components into a cleaner structure with a shared `BaseHeatmapContainer` that handles common functionality like date range selection, inbox filtering, and data fetching. This makes it easy to add new heatmap metrics in the future - just create a wrapper component specifying the metric type and color scheme. <img width="1926" height="1670" alt="CleanShot 2025-10-13 at 14 01 35@2x" src="https://github.com/user-attachments/assets/67822a34-6170-4d19-9e11-7ad4ded5c388" /> <img width="1964" height="1634" alt="CleanShot 2025-10-13 at 14 03 00@2x" src="https://github.com/user-attachments/assets/e4613c08-64b8-4fa6-91d8-7510946dd75d" /> Unrelated change, the data seeder conversation resolution would not work correctly, we've fixed it. --------- Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> |
||
|
|
e7b01d80b3
|
chore: add script to throttle bulkreindex job creation and increase meta timeouts(#12626)
- scripts to throttle reindex job creation and monitor progress ``` RAILS_ENV=production POSTGRES_STATEMENT_TIMEOUT=6000s bundle exec rails runner script/bulk_reindex_messages.rb RAILS_ENV=production bundle exec rails runner script/monitor_reindex.rb ``` --------- Co-authored-by: Pranav <pranavrajs@gmail.com> |
||
|
|
cb65d615ea
|
chore: Add auto-refresh and self-hosted redirect logic to the billing page (#12615)
# Pull Request Template ## Description This PR includes billing page improvements with the following updates: ### Self-hosted Users * Automatically redirected to the dashboard when accessing the billing page. ### Cloud Users – No Billing Plan (First Visit) * Shows a loading spinner with the `Your billing account is being configured. Please refresh the page and try again.` message. * Automatically refreshes the page after 5 seconds to check for billing setup. ### Cloud Users – No Billing Plan (After Refresh) * Prevents infinite refresh loops using `sessionStorage` tracking. * Displays the standard `Your billing account is being configured. Please refresh the page and try again.` message without further refresh attempts. * Cleans up session flags for future visits. ### Cloud Users – With Billing Plan * Displays the existing billing page normally with no refresh or redirection logic. Fixes https://linear.app/chatwoot/issue/CW-5559/your-billing-page-is-being-set-up-message-on-billing-page-is-confusing ## Type of change - [x] New feature (non-breaking change which adds functionality) ## How Has This Been Tested? ### Loom video https://www.loom.com/share/d0ea13d6b90b4ab1acbc581b524f6382?sid=d3dd19f3-85aa-4127-9233-7eecb1be0884 ## 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 --------- Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> |
||
|
|
6829328182
|
fix(filters): correct null matching logic [CW-5741] (#12627)
This PR fixes a bug came from assuming the old null check only mattered for the `is_not_present` filter. The fix keeps `not_equal_to` working but lets each operator decide what to do with `null`. Presence filters look at a shared `isNullish` flag, text filters still rely on `contains`, and date filters skip conversations with no timestamp. The new spec covers the null-assignee scenario for both `equal_to` and `not_equal_to` so we don’t miss this again. |
||
|
|
6cc69f444b
|
chore: Include 11:59 PM slot in business hours display (#12610) | ||
|
|
978f4c431a
|
feat: Add relay state for SAML SSO (#12597)
Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> |
||
|
|
4b2ebb8877
|
chore: Update translations (#12598) | ||
|
|
c4c1f3eb63
|
chore: Adjust debounce timeouts for conversation stats fetch (#12609) | ||
|
|
3a71829b46
|
feat: Improve captain conversation handling (#12599)
Co-authored-by: Pranav <pranavrajs@gmail.com> |
||
|
|
9fb0dfa4a7
|
feat: Add UI for custom tools (#12585)
### Tools list <img width="2316" height="666" alt="CleanShot 2025-10-03 at 20 42 41@2x" src="https://github.com/user-attachments/assets/ccbffd16-804d-4eb8-9c64-2d1cfd407e4e" /> ### Tools form <img width="2294" height="2202" alt="CleanShot 2025-10-03 at 20 43 05@2x" src="https://github.com/user-attachments/assets/9f49aa09-75a1-4585-a09d-837ca64139b8" /> ## Response <img width="800" height="2144" alt="CleanShot 2025-10-03 at 20 45 56@2x" src="https://github.com/user-attachments/assets/b0c3c899-6050-4c51-baed-c8fbec5aae61" /> --------- Co-authored-by: Pranav <pranavrajs@gmail.com> Co-authored-by: Pranav <pranav@chatwoot.com> |
||
|
|
a8aefa0c73
|
chore: Add account health missing translations (#12596)
# Pull Request Template ## Description Please include a summary of the change and issue(s) fixed. Also, mention relevant motivation, context, and any dependencies that this change requires. Fixes # (issue) ## Type of change Please delete options that are not relevant. - [ ] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality not to work as expected) - [ ] This change requires a documentation update ## How Has This Been Tested? Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration. ## 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 |
||
|
|
b536f35fa7
|
chore: Update translations (#12580) | ||
|
|
0d721bc898
|
chore: UI improvement in auth screens (#12573)
# Pull Request Template ## Type of change ### Screenshots **Before** <img width="694" height="767" alt="image" src="https://github.com/user-attachments/assets/4a92816a-c13e-4750-88fc-b05fd6d05db6" /> <img width="395" height="690" alt="image" src="https://github.com/user-attachments/assets/eac0f15c-7c0f-4c20-942d-fbebdaec903e" /> <img width="506" height="753" alt="image" src="https://github.com/user-attachments/assets/b14bbf5a-5e0a-4ca5-91e2-dcc93b22ac26" /> **After** <img width="694" height="767" alt="image" src="https://github.com/user-attachments/assets/6984c8af-0e98-4688-bda4-fc5ceb3227ca" /> <img width="411" height="682" alt="image" src="https://github.com/user-attachments/assets/3b0f2c13-e4ea-4edc-9146-3c017d301a13" /> <img width="509" height="682" alt="image" src="https://github.com/user-attachments/assets/2090d3ed-36ef-4684-8185-3a0e6b1b0c15" /> ## Checklist: - [x] My code follows the style guidelines of this project - [x] 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 - [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 |
||
|
|
c29a08f0ca
|
chore: Update translations (#12555) | ||
|
|
66cfef9298
|
feat: Add WhatsApp health monitoring and self-service registration completion (#12556)
Fixes https://linear.app/chatwoot/issue/CW-5692/whatsapp-es-numbers-stuck-in-pending-due-to-premature-registration ### Problem Multiple customers reported that their WhatsApp numbers remain stuck in **Pending** in WhatsApp Manager even after successful onboarding. - Our system triggers a **registration call** (`/<PHONE_NUMBER_ID>/register`) as soon as the number is OTP verified. - In many cases, Meta hasn’t finished **display name review/provisioning**, so the call fails with: ``` code: 100, error_subcode: 2388001 error_user_title: "Cannot Create Certificate" error_user_msg: "Your display name could not be processed. Please edit your display name and try again." ``` - This leaves the number stuck in Pending, no messaging can start until we manually retry registration. - Some customers have reported being stuck in this state for **7+ days**. ### Root cause - We only check `code_verification_status = VERIFIED` before attempting registration. - We **don’t wait** for display name provisioning (`name_status` / `platform_type`) to be complete. - As a result, registration fails prematurely and the number never transitions out of Pending. ### Solution #### 1. Health Status Monitoring - Build a backend service to fetch **real-time health data** from Graph API: - `code_verification_status` - `name_status` / `display_name_status` - `platform_type` - `throughput.level` - `messaging_limit_tier` - `quality_rating` - Expose health data via API (`/api/v1/accounts/:account_id/inboxes/:id/health`). - Display this in the UI as an **Account Health tab** with clear badges and direct links to WhatsApp Manager. #### 2. Smarter Registration Logic - Update `WebhookSetupService` to include a **dual-condition check**: - Register if: 1. Phone is **not verified**, OR 2. Phone is **verified but provisioning incomplete** (`platform_type = NOT_APPLICABLE`, `throughput.level = NOT_APPLICABLE`). - Skip registration if number is already provisioned. - Retry registration automatically when stuck. - Provide a UI banner with complete registration button so customers can retry without manual support. ### Screenshot <img width="2292" height="1344" alt="CleanShot 2025-09-30 at 16 01 03@2x" src="https://github.com/user-attachments/assets/1c417d2a-b11c-475e-b092-3c5671ee59a7" /> --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> |
||
|
|
109aaa2341
|
fix: Display proper conversation ID with click-to-open in SLA reports (#12570) | ||
|
|
ecff66146a
|
fix: Rendering on email without html content (#12561)
<img width="983" height="579" alt="image" src="https://github.com/user-attachments/assets/2972e8d9-5145-4958-8f66-9e84bd9c8c4b" /> |
||
|
|
21366e1c3b
|
feat: allow quoted email thread in reply (#12545)
This PR adds the ability to include the thread history as a quoted text ## Preview https://github.com/user-attachments/assets/c96a85e5-8ac8-4021-86ca-57509b4eea9f |
||
|
|
406a470c81
|
feat: Log push notification error (#12543)
Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> |
||
|
|
487209574c
|
chore: Update translations (#12535) | ||
|
|
7f1671c083
|
feat: Form validation message for password input (#11705)
Fixes https://github.com/chatwoot/chatwoot/issues/10914 # Pull Request Template ## Description Please include a summary of the change and issue(s) fixed. Also, mention relevant motivation, context, and any dependencies that this change requires. Fixes # (issue) ## Type of change Please delete options that are not relevant. - [x] Bug fix (non-breaking change which fixes an issue) - [x] New feature (non-breaking change which adds functionality) - [] Breaking change (fix or feature that would cause existing functionality not to work as expected) - [ ] This change requires a documentation update ## How Has This Been Tested? Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration. ## Checklist: - [x ] 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 --------- Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Co-authored-by: iamsivin <iamsivin@gmail.com> |
||
|
|
b00261d7c2
|
feat: Add password visibility toggle to form input (#12524)
# Pull Request Template ## Description This PR adds a password visibility toggle to the auth form input component. ## Type of change - [x] New feature (non-breaking change which adds functionality) ## How Has This Been Tested? ### Screencast https://github.com/user-attachments/assets/17652e86-e823-46e6-a3ba-80af37c78906 ## Checklist: - [x] My code follows the style guidelines of this project - [x] 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 - [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 --------- Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> |
||
|
|
03d0688cc2
|
chore: Update translations (#12519)
Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> |
||
|
|
b75ea7a762
|
feat: Use resolved contacts as base relation for filtering (#12520)
This PR has two changes to speed up contact filtering ### Updated Base Relation Update the `base_relation` to use resolved contacts scope to improve perf when filtering conversations. This narrows the search space drastically, and what is usually a sequential scan becomes a index scan for that `account_id` ref: https://github.com/chatwoot/chatwoot/pull/9347 ref: https://github.com/chatwoot/chatwoot/pull/7175/ Result: https://explain.dalibo.com/plan/c8a8gb17f0275fgf#plan ## Selective filtering in Compose New Conversation We also cost of filtering in compose new conversation dialog by reducing the search space based on the search candidate. For instance, a search term that obviously can’t be a phone, we exclude that from the filter. Similarly we skip name lookups for email-shaped queries. Removing the phone number took the query times from 50 seconds to under 1 seconds ### Comparison 1. Only Email: https://explain.dalibo.com/plan/h91a6844a4438a6a 2. Email + Name: https://explain.dalibo.com/plan/beg3aah05ch9ade0 3. Email + Name + Phone: https://explain.dalibo.com/plan/c8a8gb17f0275fgf |
||
|
|
c3680d50bc
|
fix: Remove unnecessary scroll bars from filter dropdown (#12515) | ||
|
|
2ba4780bda
|
feat: Add UI to manage web widget allowed domains (#12495)
## Summary - add allowed domains controls in the web widget configuration page. <img width="1064" height="699" alt="Screenshot 2025-09-23 at 8 52 21 PM" src="https://github.com/user-attachments/assets/8afd60b6-c81d-4f52-9cbe-07e70ad003d2" /> fixes: https://linear.app/chatwoot/issue/CW-5661/add-the-options-for-configure-allowed-domains-for-web-widget --------- Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Co-authored-by: iamsivin <iamsivin@gmail.com> |
||
|
|
d3cd647e49
|
feat: SAML feedback changes [CW-5666] (#12511) | ||
|
|
9f14e6abb6
|
feat: Load reply-to messages dynamically when not present in message list (#10024)
# load reply to message ## Description When replayed message is more old, not show content ## Type of change Please delete options that are not relevant. - [X] New feature (non-breaking change which adds functionality) ## How Has This Been Tested? I run in my development and production envinronment with unoapi --------- Co-authored-by: iamsivin <iamsivin@gmail.com> Co-authored-by: Sivin Varghese <64252451+iamsivin@users.noreply.github.com> Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> |
||
|
|
79793a5435
|
chore: Update Guyana's country dial code from +595 to +592 (#12510)
# Pull Request Template ## Description This PR updates Guyana's country dial code from +595 to +592 Fixes https://github.com/chatwoot/chatwoot/issues/12501 , [CW-5669](https://linear.app/chatwoot/issue/CW-5669/incorrect-country-code) ## Type of change - [x] Bug fix (non-breaking change which fixes an issue) ## Checklist: - [x] My code follows the style guidelines of this project - [x] 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 - [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 |
||
|
|
e68522318b
|
feat: Enable lock to single thread settings for Telegram (#12367)
This PR implements the **"Lock to Single Conversation"** option for Telegram inboxes, bringing it to parity with WhatsApp, SMS, and other channels. - When **enabled**: resolved conversations can be reopened (single thread). - When **disabled**: new messages from a resolved conversation create a **new conversation**. - Added **agent name display** in outgoing Telegram messages (formatted as `Agent Name: message`). - Updated frontend to display agent name above messages in the dashboard (consistent with WhatsApp behavior). This fixes [#8046](https://github.com/chatwoot/chatwoot/issues/8046). ## Type of change Please delete options that are not relevant. - [ ] Bug fix (non-breaking change which fixes an issue) - [x] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality not to work as expected) - [ ] This change requires a documentation update ## How Has This Been Tested? - Unit tests added in `spec/services/telegram/incoming_message_service_spec.rb` - Scenarios covered: - Lock enabled → reopens resolved conversation - Lock disabled → creates new conversation if resolved - Lock disabled → appends to last open conversation - Manual tests: 1. Create a Telegram conversation 2. Mark it as resolved 3. Send a new message from same user 4. ✅ Expected: new conversation created (if lock disabled) ## Checklist: - [x] My code follows the style guidelines of this project - [x] 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 - [x] 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 ## Additional Documentation For full technical details of this implementation, please refer to: [TELEGRAM_LOCK_TO_SINGLE_CONVERSATION_IMPLEMENTATION_EN.md](./TELEGRAM_LOCK_TO_SINGLE_CONVERSATION_IMPLEMENTATION_EN.md) --------- Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> |
||
|
|
68c070bcd9
|
chore: Update translations (#12506) | ||
|
|
728956a734
|
fix: Inbox delete confirmation fails due to whitespace (#12498)
# Pull Request Template ## Description This PR fixes an issue where users are unable to delete an inbox because the delete confirmation button remains disabled. ### Cause Inboxes created with leading or trailing spaces in their names failed the confirmation check. During deletion, the confirmation modal compared the raw user input with the stored inbox name. Because whitespace was not normalized, the values did not match exactly, causing the delete button to remain inactive even when the correct name was entered. ### Solution The validation logic now trims whitespace from both the input and stored value before comparison. This ensures inbox names with accidental spaces are handled correctly, and the delete button works as expected in all cases. Fixes https://linear.app/chatwoot/issue/CW-5659/confirmation-button-greyed-out-randomly-when-deleting-inbox-from-inbox ## Type of change - [x] Bug fix (non-breaking change which fixes an issue) ## How Has This Been Tested? **Steps to Reproduce** 1. Create an inbox with leading or trailing whitespace in its name. 2. Save and complete the inbox creation process. 3. Go to the inbox list and try deleting the inbox by entering the name without the whitespace in the confirmation modal. 4. Now you can't able to delete the inbox. ## 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 |
||
|
|
d762829519
|
feat: Allow creating contact notes (#12494)
Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> |
||
|
|
2e108653ae
|
feat: allow SP initiated SAML (#12447)
Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> |
||
|
|
9a5a71b34f
|
feat: Update meta debounce max wait (#12493) | ||
|
|
df1f85a7f0
|
chore: Update translations (#12432)
Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> |
||
|
|
3655f4cedc
|
feat: Add superlong debounce condition for meta endpoint (#12486) |