5.65.10.20260615080911

  • [Security] Security improvements (#24496)(#23753)(#23555)(#23491)(#23193)(#23146)(#23094)(#23063)(#23061)(#23032)(#23021)(#22983)(#22950)(#22707)(#22675)(#22661)(#22621)(#22595)(#22594)(#22593)(#22587)(#22317)(#22315)(#22314)(#22311)(#22309)(#22308)(#22303)(#22302)(#22301)(#22300)(#22299)(#22298)(#22292)(#22290)(#22287)
  • [Feature] Update asterisk-la log analyzer to use in-line tenant ID (#23403)
  • [Feature] Add MCP API for ticket fields (definitions, values read/write) (#23200)
  • [Feature] Add OAuth 2.1 authentication to MCP server for claude.ai custom connector integration (#22828)
  • [Feature] Add get_ticket_notes MCP tool for reading notes on a ticket (#22627)
  • [Feature] Add add_note MCP tool for creating notes on tickets (#22612)
  • [Feature] Add MCP auth tokens for human agents (#22560)
  • [Feature] AI ticket summary (#21515)
  • [Feature] Internal API v4 endpoint for account usage stats (#20982)
  • [Feature] Option to add photo for chatbot (#20217)
  • [Improvement] Fix stuck un-endable chats (#19377): 3-PR legacy plan — recoverability, prevention, reaper (#24279)
  • [Improvement] Keyboard shortcuts for Answer Assistant: open from Reply box and "Use in answer" (#24195)
  • [Improvement] Improve get_ticket_messages MCP tool — include notes and add type filter (#24119)
  • [Improvement] Change width for the text area of the daily gamification badge (#24114)
  • [Improvement] Improve UX around setting agent timezone on login (#24067)
  • [Improvement] Apply browser timezone on first agent-panel login (#24049)
  • [Improvement] Tighten authorization on Asterisk-only V3 call endpoints (move from call.write to call.process) (#23894)
  • [Improvement] Upgrade Facebook Graph API version in SSO OAuth flow from v19.0 to v20.0+ (#23868)
  • [Improvement] Get rid of the "load quoted text" endpoint by trimming legacy quoted-text on load (#23803)
  • [Improvement] Document max PR size (800 LOC) and stacked PR workflow (#23673)
  • [Improvement] Refactor Gpf_Tasks_Runner to PSR-4 / DDD (#23627)
  • [Improvement] Refactor Gpf_Recurrence_* subsystem to PSR-4 domain enum in CronTaskRunner (#23624)
  • [Improvement] Prefer CRAM-MD5 over DIGEST-MD5 in IMAP and POP3 SASL auth method priority (#23614)
  • [Improvement] Add a Slack notification variable to show Assigned Agent's name (#23560)
  • [Improvement] Style the Execution Details screen from AI work executions (#23540)
  • [Improvement] Open ticket after clicking the ticket code in AI work executions (#23539)
  • [Improvement] Add OPcache Prometheus metrics endpoint and harden Apache module configuration (#23489)
  • [Improvement] Shopify plugin: update API version (#23459)
  • [Improvement] asterisk-la: include tenant ID on per-call log lines (#23401)
  • [Improvement] feat: Authorize ticket field value reads/writes in TicketField module API (#23293)
  • [Improvement] Route rdkafka producer errors through the application logger instead of container stderr (#23265)
  • [Improvement] Hide MCP Integration in agent edit under AiWork feature flag (#23262)
  • [Improvement] Harden ChatWidgetGateway RPCs: replace RpcUnrestricted with RpcRestricted('ticket', 'visitor_own') (#23153)
  • [Improvement] Rename options of change rules execution rule action (#23086)
  • [Improvement] Adjust the text description of the Default phone number setting (#22968)
  • [Improvement] Send reset password email when customer tries to register again with existing email (#22958)
  • [Improvement] Internal chat window tabs should work similarly as ticket tabs (#22831)
  • [Improvement] Include tenant subscription ID in GA4 tracking user_id field (#22766)
  • [Improvement] Add missing index on statuschanged column in qu_la_conversations (#22698)
  • [Improvement] Write a note - Display Required Field Indicator for Empty Notes (#22649)
  • [Improvement] Agent login endpoint leaks account existence via timing side-channel (#22622)
  • [Improvement] Add Secure Flag to closedBubbleButtons Cookies for PCI DSS Compliance (#22584)
  • [Improvement] FlowHunt ChatBot: treat 402 Payment Required as permanent error to stop futile API calls (#22549)
  • [Improvement] Invalid automation rule conditions are silently skipped instead of breaking the rule (#22495)
  • [Improvement] Update Python version in Asterisk-LA (#22466)
  • [Improvement] Display form field code instead of database field ID (#22353)
  • [Improvement] Mass action Delete custom field values removes only one field when the same custom field is present multiple times in a ticket (#22223)
  • [Improvement] Add drag and drop reordering for contact form fields (#22213)
  • [Improvement] Colors of the News notification pop-up panel (#22179)
  • [Improvement] Missing top margin of News notification pop-up panel (#22178)
  • [Improvement] Disable Reply action button when Telegram bot is disabled (#21976)
  • [Improvement] Add eye icon toggle to reveal password on Login form (#21818)
  • [Improvement] Add show/hide password toggle to Set New Password screen (#21817)
  • [Improvement] Introduce configurable refresh rates for Active call and Chat overview (#21742)
  • [Improvement] Implement new display model for whatsapp message. (#21631)
  • [Improvement] Replace checkbox to keep ticket state when transferring ticket with button (#21605)
  • [Improvement] Remove timezone-offset from LA (#21384)
  • [Improvement] Better design for Modal dialog notification (#21215)
  • [Improvement] Dark blue theme - different background on the messages in WhatsApp tickets (#20903)
  • [Improvement] Support rich text format (Markdown-to-HTML rendering) for chatbot messages (#20446)
  • [Improvement] Add support for managed Let's Encrypt certificate for custom domain (#20342)
  • [Improvement] Change the next action in expired WhatsApp tickets from 'Transfer' to 'Send a notification' (#20180)
  • [Improvement] New API endpoint to retrieve the history of all users participating in ticket conversations (#19380)
  • [Improvement] Not possible to search for contact widgets based on their IDs (#23581)
  • [Fix] MissedChatHandler lost the ticket-INIT condition — missed chat on existing ticket can delete/reopen it (#24557)
  • [Fix] MysqlAppliedTimeRulesRepository::markAsApplied() returns always-true execute() result — idempotency guard is a no-op under concurrency (#24530)
  • [Fix] The panel loads indefinitely after making changes in the agent profile (#24512)
  • [Fix] Error One or more provided filter fields are not supported from call to agents API (#24503)
  • [Fix] WhatsApp ticket history not loading in agent panel — scroll pagination broken when any message fails to render (#24450)
  • [Fix] asterisk-la: call_ring timeout re-enters callStop(), duplicates stub channelId (409), drops the requested callback (#24384)
  • [Fix] Slow Email Template Loading on Ticket Reply (#24329)
  • [Fix] Contact form checkbox field renders raw serialized data as label when stored in legacy Gpf_Data_RecordSet format (#24320)
  • [Fix] Facebook login for KnowledgeBase visitors completes but the visitor is not logged in (#24311)
  • [Fix] AI provider rename does not show validation error for duplicate or unchanged name (#24289)
  • [Fix] Rule with postpone action calculates wrong end date when ticket is already postponed (#24276)
  • [Fix] Chat widget shows "not authorized" error toast for visitors using inline/mobile chat link on Instagram (#24271)
  • [Fix] Facebook conversation import job crashes when batch callback returns a conversation with no "messages" edge (#24229)
  • [Fix] GET /api/v3/tickets/history times out at scale — INNER JOIN to qu_la_conversations degenerates on cold buffer pool (corrects #24074) (#24213)
  • [Fix] ERROR NoteMessageCreateError from pre-existing AddNote rules with empty content (regression of #21167) (#24202)
  • [Fix] APIv3: 403 Forbidden response when creating ticket via api (POST/tickets) where body contains custom_fields (existing ticket field definitions) (#24198)
  • [Fix] Warning: Attempt to read property "value" on null in KB preview CSS render (theme_css.tpl) (#24191)
  • [Fix] Replying to ticket fails with "Something went wrong" when an expired draft occupies the primary key slot (#24190)
  • [Fix] API v3 endpoints for agent_phone and extensions fail with "Class not found" due to lowercase v3 typo in x-handler descriptor (#24152)
  • [Fix] GitHub plugin: unhandled errors in webhook remove()/create() loops corrupt stored settings and leak orphaned webhooks (#24143)
  • [Fix] Timezone selector renders empty when stored value is a legacy IANA alias (#24130)
  • [Fix] search_tickets MCP tool: output status field returns raw single-character codes instead of human-readable values defined in input schema (#24112)
  • [Fix] OAuth authorization flow broken in SSO-only mode (MCP connector) (#24105)
  • [Fix] Remaining bugs with LiveAgent CRM plugin after update to 5.62 (#24091)
  • [Fix] Email address is duplicated when it starts with a number followed by a hyphen (#24043)
  • [Fix] Mailto link breaks when email address contains numbers separated by dots (#24038)
  • [Fix] The quoted text is always included in email replies even when the Include the last message and its quoted text option is disabled (#24013)
  • [Fix] PluginTicketFieldCreator::createValue swallows exception, logs bare "Failed to add field." (15,805/24h) (#23936)
  • [Fix] PluginsNoteImporter logs "Failed to import note due to missing content." at error level (657 hits/24h, single tenant) (#23933)
  • [Fix] Backend omits avatarUrl from ticket message author JSON, default avatar shown (#23925)
  • [Fix] MysqlItemReviewRepository::save() throws UnexpectedValueException when invalidating an already-invalid review (#23919)
  • [Fix] Zendesk plugin: Undefined property stdClass::$page in Config::getProgressText() during mid-import status reads (#23908)
  • [Fix] POST /api/v3/contacts returns 500 due to database deadlock when reassigning ticket participants during contact update (#23904)
  • [Fix] PHP OOM (256MB) in HTMLPurifier during MailReply/createAnswer and loadReplyTemplate (#23900)
  • [Fix] Lower log level of "Field definition with code already exists." from warning to debug in PluginTicketFieldCreator (#23892)
  • [Fix] Missing bottom panel with buttons in WA ticket (#23886)
  • [Fix] Cron sleep-mode gate broken since 2021: DEFAULT-pool tasks run during postponed-cron windows (#23864)
  • [Fix] Sort by computed columns (CONCAT, IFNULL) returns 500 in Bans, Calls, TimeReports, Extensions API endpoints (#23863)
  • [Fix] [Voice] Incoming calls fail with HTTP 403 — NotAuthorizedError thrown by FieldLoader during IVR context substitution (#23857)
  • [Fix] Ticket management actions are hidden when the ticket's channel is no longer available (#23807)
  • [Fix] La_TimeRules_TimeRuleTask::getTimeColumnValue() crashes with fatal return-type error when conversation date column is NULL (#23806)
  • [Fix] Canned messages created with legacy data format not visible in Configuration page (#23797)
  • [Fix] DeleteRecordings time rule floods errors for non-parseable recording URLs instead of skipping them (#23784)
  • [Fix] MysqlCustomRoleRepository::getAll fatals with "Illegal mix of collations" on LIKE (custom-roles grid search) (#23776)
  • [Fix] Saved filters grid fatals with "Illegal mix of collations" on LIKE via legacy Gpf SelectIterator (/api/v3/filters) (#23775)
  • [Fix] Bans grid fatals with "Illegal mix of collations" on LIKE via legacy Gpf SelectIterator (/api/v3/bans) (#23774)
  • [Fix] MysqlLanguageRepository::getAll fatals with "Illegal mix of collations" on LIKE (languages grid search) (#23773)
  • [Fix] ContactWidgetRepository::getContactWidgetsByCursor fatals with "Illegal mix of collations" on LIKE (contact-widgets grid search) (#23772)
  • [Fix] MysqlOutboxReadProjection::getEmails fatals with "Illegal mix of collations" on LIKE (#23771)
  • [Fix] MysqlPredefinedAnswerRepository::executePaginatedQuery fatals with "Illegal mix of collations" on LIKE (#23769)
  • [Fix] MysqlAgentReader::findByUsername fatals with "Illegal mix of collations" during inbound mail processing (#23767)
  • [Fix] Missing content of "Getting started" section (#23758)
  • [Fix] UnexpectedValueException: Message content not found for answer — dangling DynamoDB pointer (#23726)
  • [Fix] UnexpectedValueException in ZBatesonHeadersParser::trimHeaderName() drops forwarded mail for non-UTF-8 mbox envelope lines (#23713)
  • [Fix] Memory leak on session expiry — tab grows to 8-15 GB due to unreleased MediaStreamTrack (#23699)
  • [Fix] Use backend-provided author directly in Instant/Note/WhatsApp ticket items instead of UserCache (#23684)
  • [Fix] Rule "transfer ticket" action fires on in-progress call ticket and drops call to queue (#23592)
  • [Fix] Saving changes to the badge's details throws an error (#23590)
  • [Fix] LiveAgent.addTicketField no longer prefills the field with field definition code (#23580)
  • [Fix] GET /api/v3/agents/{id} returns 500 for bot/integration agents with NULL authid (#23552)
  • [Fix] Zendesk import job: TypeError when custom field value is null in PluginTicketFieldCreator::addTicketFieldValue() (#23550)
  • [Fix] Stack-overflow recursion in UserSignatureFormPanel.asWidget() (#23533)
  • [Fix] String correction (#23531)
  • [Fix] [BUG] Rules screen very slow after update to v5.63 — scroll and filtering affected (#23530)
  • [Fix] La_Rpc_User::load denies visitors access to conversation participants' display data (#23522)
  • [Fix] AI Work executions "Started" column always empty due to wrong method call in ExecutionsTableDefinition (#23508)
  • [Fix] MCP protocol should be Streamable HTTP (#23503)
  • [Fix] ForwardEmail action constructor accesses uninitialized typed property — "Unable to execute rule." on every non-default sender (#23501)
  • [Fix] Rule condition 'Message Group Type' broken after TicketMessageEnvelope refactor — Note option lost, Ticket message option never matches (#23490)
  • [Fix] Transfer note not committed and transfer event missing when a rule fires immediately after ticket transfer (#23465)
  • [Fix] CSV ticket export crashes with "Column: roleid has invalid value" when ticket owner has no account record (#23451)
  • [Fix] Incoming calls fail with "Undefined array key binding_uri" for legacy SIP trunks (#23435)
  • [Fix] Archiving a ticket field definition fails with "too many rows are affected" when duplicate qu_g_formfields rows exist (#23430)
  • [Fix] Mass action "Purge" fails when ticket is not in DELETED or SPAM state (#23428)
  • [Fix] FlowHuntAnswerSuggestionGenerator crashes with unhandled exception on FlowHunt 402 Payment Required (#23417)
  • [Fix] AgentsGrid::addFullTextSearch crashes with MySQL error 1267 when search value contains emoji (#23416)
  • [Fix] Ticket split aborts when source ticket has a stale list-field value (#23387)
  • [Fix] Error: Unable to unassign ticket from deleted agent when deleted agent has terminated tickets (#23386)
  • [Fix] TooManyRows on UserSignature::getUserDepartmentSignature — duplicate (userid, departmentid) rows in qu_la_user_signatures (#23375)
  • [Fix] Gpf_Rpc_Params::getString throws on non-string C/M parameters at chat/contact.php dispatcher (#23371)
  • [Fix] La_Rpc_SessionHandler::getSessionInfo throws on language > 32 chars (chat/contact.php) (#23369)
  • [Fix] GpfRpcRequestParser::detectResponseType throws on FormResponse > 1 char (chat/contact.php) (#23367)
  • [Fix] Warning: Undefined array key "uploadWidget" in HttpFileContentCreator::fromMultipartFormData on chat upload (#23366)
  • [Fix] Canned messages are not always inserted into the text (#23364)
  • [Fix] Pre and code blocks in chatbot messages are not formatted in agent panel (#23363)
  • [Fix] asterisk-la: uncaught KeyError on agentDevices after push notification failure (CRITICAL) (#23359)
  • [Fix] Facebook reply over 2000 chars fails with misleading "authentication error" — message dropped silently (#23346)
  • [Fix] asterisk-la: Unhandled 409 Conflict on voicemail bridge record (CRITICAL, breaks call thread) (#23340)
  • [Fix] Warning: Undefined array key "profile" in Dialog360MessageCallback::getNameFromContact() (#23337)
  • [Fix] Inverted BETWEEN bounds in DynamoDbTicketMessageRepository when cursor passes dateTimeRange.to (#23336)
  • [Fix] Error - Failed to convert date time (#23321)
  • [Fix] downloadTemplatesTranslations.php writes to wrong path - Crowdin mail-template sync silently no-op since July 2025 (#23318)
  • [Fix] MysqlFieldDefinitionRowProvider fatals with "Illegal mix of collations" (#23314)
  • [Fix] ContactFieldsRepository fatals with "Illegal mix of collations" (#23313)
  • [Fix] Bug: GET /api/v3/agents/{id} returns 500 when agent has no browser phone configured (#23309)
  • [Fix] Contacts 'Created' filter not working (except custom date) (#23298)
  • [Fix] Orphaned chat message group on agent-offline → offline-form fallback (#23273)
  • [Fix] KB portal crashes with No privileges defined for role R for registered customers using remember-me token (#23270)
  • [Fix] Facebook ad-originated Messenger conversations never appear in LiveAgent (#23259)
  • [Fix] Microsoft 365 IMAP: "User is authenticated but not connected" treated as permanent auth failure instead of transient error (#23248)
  • [Fix] Missing required field: message crash in Facebook Comment processor — incomplete fix from #22113 (#23232)
  • [Fix] fix: TicketsGrid::getFirstUniqueField crashes with TypeError when contact has null phones/emails (#23223)
  • [Fix] Ticket cannot be opened when it contains a message authored by a deleted agent (#23189)
  • [Fix] Rename MCP Tokens to MCP Access Tokens (#23187)
  • [Fix] Emails not fetching — task postponed 24h with no auto-recovery and no UI indication (#23173)
  • [Fix] Chat: duplicate La_Rpc_Chat::cancelConnect RPC triggers "Chat already ended" RejectCommand (#23170)
  • [Fix] Create button in time rules (#23163)
  • [Fix] Missing icons in agent profile dialog menu items (#23160)
  • [Fix] LiveChat migration: agent import loop aborts on first error, leaving remaining agents unprocessed (#23159)
  • [Fix] Voice TrunkRegistrationCheckerTask fails — trunk endpoint config missing "transport" key (#23135)
  • [Fix] Ticket message body renders empty for Instant envelope with "fields" section (#23132)
  • [Fix] GpfException: Unable to connect to LDAP service with given admin credentials (ldap_bind Invalid credentials) (#23127)
  • [Fix] Intercom_Migrate_Contacts aborts with TypeError when a company has null name (#23126)
  • [Fix] Useless space in front of rule names in notes added by a rule in active chat (#23125)
  • [Fix] After a second transfer of the same call, the call is failing/hung up (#23121)
  • [Fix] Ticket field definition: editing checkbox field with description >1024 chars silently fails with no user feedback (#23120)
  • [Fix] Migration plugins send resolved email notifications to customers on imported closed tickets (#23119)
  • [Fix] fix: DynamoDB running conversation not cleared on call finish causes infinite auto-close rule loop (#23111)
  • [Fix] Dev-local FPM runs on 128M memory_limit — reinstall / DI rebuild hits OOM (#23078)
  • [Fix] fix(chat): track.js throws "getRunningChatPreset is not a function" causing chat session to drop on page navigation (#23077)
  • [Fix] UnhandledException in FlowHuntAnswerSuggestionGenerator due to stale FlowHunt session (#23074)
  • [Fix] Improvement: Keep Getting Started screen accessible from top menu like open tickets (#23057)
  • [Fix] fix: POST /api/v3/canned_messages returns HTTP 500 when keywords field is omitted (#23054)
  • [Fix] ChatStarter::createCustomerIdFromTicketAuthor passes contactId instead of userId to Chat CustomerId (#23025)
  • [Fix] La_Rpc_User::loadUsers() missing IDs array limit and user type validation (#22984)
  • [Fix] Instagram comment processing crashes on missing text field (#22977)
  • [Fix] API v3 GET /tickets returns HTTP 500 instead of 400 when _sortField is empty (#22957)
  • [Fix] System notes created by rule during chat initiation are added at the end of the conversation instead of the beginning (#22938)
  • [Fix] 360dialog template sync logs ERROR when customer's WhatsApp number is blocked due to unpaid provider invoice (#22936)
  • [Fix] RepositoryException receives string SQLSTATE code instead of int, causing TypeError (#22931)
  • [Fix] Editor stuck on loading when files over limit are inserted into tickets via Drag&Drop (#22926)
  • [Fix] Agent reply fails with generic error when attachment temp file expires (#22920)
  • [Fix] The color of the listboxes in the "Online scenario" and "Offline scenario" sections of the chat button (#22919)
  • [Fix] Ticket merge crashes when participant has orphaned contact_unique_fieldid (#22913)
  • [Fix] WooCommerce plugin logs errors from expected failure paths and silently hides when permissions change (#22906)
  • [Fix] Pipedrive plugin crashes on array_unique with stdClass objects (#22900)
  • [Fix] Non-numeric articleId in KB attachment route causes uncaught TypeError 500s (#22881)
  • [Fix] APIv1: POST - Create new message in conversation "Failed to add note to ticket" when Ticket code or public URL code is used (#22862)
  • [Fix] Missing "Copy" text on button in contact widget Integration section (#22855)
  • [Fix] WooCommerce integration dumps full Cloudflare HTML into logs and UI error (#22847)
  • [Fix] Contact form fields missing from quoted text when forwarding initial message (#22832)
  • [Fix] Built-in email: disabling "Process unrecognized forwarded emails" also blocks direct emails (#22824)
  • [Fix] LiveAgent tab can utilize 100% CPU in some cases and freeze for minutes (#22821)
  • [Fix] 500 internal server error on the expired password reset link (#22771)
  • [Fix] asterisk-la: CRITICAL crash 'NoneType' object has no attribute 'id' in CallThread.__registerEvent (#22769)
  • [Fix] asterisk-la: bridge.removeChannel() raises unhandled 422 on channel-already-left race (#22767)
  • [Fix] asterisk-la: sounds.py treats any stderr output as fatal even when exit code is 0 (BOM warning aborts IVR sound) (#22765)
  • [Fix] Received instant message has wrong styles during rendering (#22750)
  • [Fix] Condition ticket tags contain all of doesn't work in time rules (#22739)
  • [Fix] GpfException: Row does not exist bubbles up from La_Rpc_User::load when user is missing (#22733)
  • [Fix] Dialog360CallbackController emits PHP warnings for coexistence webhook events (#22730)
  • [Fix] MobileApp setNotificationToken is RpcUnrestricted but requires agent identity — crashes on expired session (#22716)
  • [Fix] Variables are not working in rule action "Add note" (#22709)
  • [Fix] TypeError in La_VisitorUserDetails::parse() when userDetails is null (#22708)
  • [Fix] Facebook comment processing fails when page lacks like_count permission — hardcoded field request breaks event import (#22706)
  • [Fix] Rule condition deserialization fails on invalid ticket field JSON — "Invalid multi value JSON" / "Invalid postal address JSON" (#22700)
  • [Fix] AnswerSlaHandler logs normal business scenario at ERROR level — customer sends multiple messages before agent answers (#22694)
  • [Fix] Nicereply review sync fails when visitor contact has no IP address (#22681)
  • [Fix] Prechat form ticket fields missing from first chat message when "Let visitor choose department" is enabled (#22664)
  • [Fix] Cannot change ticket owner when current owner is an agent — "Contact id is not set" (#22658)
  • [Fix] Note with big_text content section is not rendered in ticket UI (#22651)
  • [Fix] WhatsApp 360dialog error 132012 "Parameter format does not match" not mapped to user-friendly message (#22648)
  • [Fix] Missing separator in SetSlaLevel error message — SLA level ID concatenated with error text (#22645)
  • [Fix] WhatsApp template sync rejects valid provider templates due to consecutive spaces validation (#22643)
  • [Fix] Desktop notifications do not display chat message content - only "…" shown (#22633)
  • [Fix] fix: AttachmentsDeserializer crashes on malformed legacy attachment data (#22631)
  • [Fix] Ticket field definition's code not shown on edit (#22613)
  • [Fix] Saving contact widget overwrites local field code with its numeric ID (#22609)
  • [Fix] DeleteKbEntryChilds task fails on category type entries — assertLegacyType rejects TYPE_CATEGORY (#22602)
  • [Fix] QueueReportTask stuck in infinite retry loop with invalid department ID in params (#22601)
  • [Fix] ApnsClient does not handle "Unregistered" device tokens — keeps sending to invalid devices (#22600)
  • [Fix] UnexpectedValueException in MysqlEmailMessageProjection — message_groups row type mismatch (#22586)
  • [Fix] WhatsApp template sync fails when provider returns duplicate language translations (#22585)
  • [Fix] OOM in Agent Ranking CSV export: unbounded query loads all rows into memory (#22581)
  • [Fix] OOM in Method.php: print_r serializes full WhatsApp message group on exception (#22579)
  • [Fix] Application goes to Ticketbox-page after reload from Configuration-*- page (#22561)
  • [Fix] PreChatFormFieldExtractor::getFileIds() crashes on malformed file field — ErrorException escapes catch (#22555)
  • [Fix] OpenAI model listing crashes with unhandled exception when API key is deactivated (#22554)
  • [Fix] RolePrivilegesPresenter calls bind() on every data refresh, causing "already binded" error (#22552)
  • [Fix] WhatsApp Dialog360: unhandled ProviderRestClientError on payment-blocked account drops all media messages (#22546)
  • [Fix] Twitter integration should deactivate account and notify admin on CreditsDepleted error (#22545)
  • [Fix] Rule action "Add Field Value" fails with INVALID_VALUE for list field — value not in available options (#22543)
  • [Fix] Broken images in knowledge base articles (#22541)
  • [Fix] Error: Invalid column name CONCAT(c in GET /api/v3/companies (#22535)
  • [Fix] Tag search crashes AgentEventBus when tag name contains regex metacharacters (#22519)
  • [Fix] ScheduleDeviceDepartmentStatus job crashes with Gpf_DbEngine_NoRowException for deleted devices (#22471)
  • [Fix] WhatsApp Twilio webhook throws UnexpectedDataFromProvider for unregistered numbers (#22467)
  • [Fix] Rule action "Add Field Value" logs WARN and silently skips when referenced custom field has been deleted (#22465)
  • [Fix] Google OAuth connector not disabled when Google account is deleted (#22454)
  • [Fix] Rule action "Add Field Value" silently fails — StringValue max size exceeded when applying ticket field (#22443)
  • [Fix] TrunkRegistrationCheckerTask fails hourly — Failed to deactivate expired trunk for 9 tenants (#22442)
  • [Fix] La_Task_DeleteDrafts crashes daily — Invalid ticket id from Redis draft file links (#22441)
  • [Fix] WhatsApp messages failing to store in DynamoDB — ConditionalCheckFailedException for all message types (#22439)
  • [Fix] Error: Row XXXX does not exist when trying to start a chat from the chat button (#22407)
  • [Fix] Giphy integration fails to upload GIFs - error "Upload failed with error: No files found!" (#22405)
  • [Fix] LDAP authentication and configuration doesn't work (#22394)
  • [Fix] Error: Syntax error when filtering contacts by group via API (#22346)
  • [Fix] Wrong date and time in the Ticket history when a ticket is marked as spam (#22265)
  • [Fix] Chart Y-axis ignores custom decimal separator from regional settings (#22248)
  • [Fix] Remove unnecessary ERROR log when WhatsApp message has empty sender name (#22242)
  • [Fix] Chat gets queued instead of ringing to available agent with free slots (#22198)
  • [Fix] White Scheduler´s tab in the Dark blue theme (#22177)
  • [Fix] Button's (Schedule new plan) bottom shadow out of view (#22175)
  • [Fix] Ticket subject condition in SLA rules causes it not to work (#22172)
  • [Fix] Missing top padding for buttons in Schedule new plan panel (#22163)
  • [Fix] Error: Unable to construct token id. Token id must be 10 characters long in GET /api/v3/api/info/v1 (#22106)
  • [Fix] Blind transfer failed on Asterisk 22 (#22075)
  • [Fix] Bugs with LiveAgent CRM plugin after update to 5.62 (#22015)
  • [Fix] Do not refresh ticket fields section after auto-saving field value (#21638)
  • [Fix] Json serialization failed: Malformed UTF-8 characters cause "Data error" when loading records with non-ASCII text (#21479)
  • [Fix] Useless "Complete transfer" button in internal call (#21453)
  • [Fix] Chatbot predefined message about not available agents is added after every chatbot reply (#21426)
  • [Fix] Incoming call widget freezes in "Opening call" after clicking on "Answer" (#21249)
  • [Fix] Shopify integration no longer works for new customers (#20925)
  • [Fix] Github plugin is not reopening tickets (#20686)
  • [Fix] Offline notification does not work on some systems (#20488)
  • [Fix] Chatbot hangs on infinite typing loop when connected flow encounters an error (#20447)
  • [Fix] Contact form with form field with missing definition cannot be submitted (#19730)
  • [Fix] Unable to execute rule. Rule execution environment not set (#20395)
  • [Fix] Fatal error "Invalid directory from request" (#19714)
  • [Fix] Chat button doubled after editing another one in the list (#19416)
  • [Fix] Records in the contact suggestion popup can get scattered (#23521)
  • [Fix] Do not disconnect Nicereply integration when a rating cannot be submitted (#19575)
  • [Fix] Error: array_key_exists(): Argument #2 ($array) must be of type array, string given in La_Model_Ivr->loadTransferOptions() (#20129)
  • [Fix] Unexpected Welcome message behavior in chat widget with a chatbot (#22825)
  • [Fix] Changing the ticket owner in one specific ticket results in a change of owner in other tickets that have the same owner (#19777)
  • [Fix] Error: Status code has to be an integer between 100 and 599. A status code of 0 was given in Nyholm\Psr7\Response->withStatus() (#19547)
  • [Fix] Not all chat messages sent by an agent reach customers (#19433)
  • [Fix] Not possible to resize "transfer to" and "assign to" fields anymore (#19563)
  • [Fix] Time rule executed when it shouldn't have after tag added (#19441)
  • [Fix] Update search tooltip / hint to reflect that we use simple query for ES search (#21736)
  • [Fix] Call tickets are not found by phone (#21853)
  • [Performance] bug: Slow POST /api/v3/calls/{id}/_ring for tenant u274022 (avg 6–13s, max 24s) (#23777)
  • [Performance] UserSlotReport stats query scans 533K rows every 18 seconds — suboptimal index on conversation_users_history (#22669)
  • [Performance] PurgeDeletedConversations query takes 17.5s — missing index on (rstatus, datedeleted) (#22668)
  • [Performance] Calls history SQL takes ~30s on large accounts due to non-sargable joins and sort (#22269)
  • [Other] Refactorings and other fixes (#24614)(#24517)(#24490)(#24416)(#24413)(#24392)(#24371)(#24362)(#24327)(#24321)(#24260)(#24160)(#24116)(#24071)(#24064)(#24058)(#24017)(#23986)(#23970)(#23891)(#23872)(#23765)(#23705)(#23669)(#23516)(#23437)(#23291)(#23255)(#22997)(#22876)(#22874)(#22865)(#22770)(#22768)(#22684)(#22656)(#22620)(#22550)(#22532)(#22469)(#22461)(#22426)(#22389)(#22368)(#22271)(#22214)(#22208)(#21986)(#21982)(#21775)(#21662)(#21491)(#21439)(#21438)(#21334)(#21924)(#24262)(#24129)