5.64.6.20260518164718
- [Feature] AI Agent Work Distributor for Tickets (#19702)
- [Feature] Add
add_noteMCP tool for creating notes on tickets (#22612) - [Feature] Add OAuth 2.1 authentication to MCP server for claude.ai custom connector integration (#22828)
- [Improvement] Change the next action in expired WhatsApp tickets from 'Transfer' to 'Send a notification' (#20180)
- [Improvement] Add support for managed Let's Encrypt certificate for custom domain (#20342)
- [Improvement] php 8.5 compatibility of used libraries (#20963)
- [Improvement] Better design for Modal dialog notification (#21215)
- [Improvement] Remove timezone-offset from LA (#21384)
- [Improvement] Introduce configurable refresh rates for Active call and Chat overview (#21742)
- [Improvement] Add show/hide password toggle to Set New Password screen (#21817)
- [Improvement] Add eye icon toggle to reveal password on Login form (#21818)
- [Improvement] Disable Reply action button when Telegram bot is disabled (#21976)
- [Improvement] Missing top margin of News notification pop-up panel (#22178)
- [Improvement] Colors of the News notification pop-up panel (#22179)
- [Improvement] Add drag and drop reordering for contact form fields (#22213)
- [Improvement] FlowHunt ChatBot: treat 402 Payment Required as permanent error to stop futile API calls (#22549)
- [Improvement] Add Secure Flag to
closedBubbleButtonsCookies for PCI DSS Compliance (#22584) - [Improvement] Add Claude triage VoIP logs (#22687)
- [Improvement] Add missing index on statuschanged column in qu_la_conversations (#22698)
- [Improvement] asterisk-la: Stale push notification device token not cleaned up after 404 (#22755)
- [Improvement] asterisk-la: Missing IVR sound file (404) produces cryptic errors with no tenant notification (#22758)
- [Improvement] Internal chat window tabs should work similarly as ticket tabs (#22831)
- [Improvement] Send reset password email when customer tries to register again with existing email (#22958)
- [Improvement] Adjust the text description of the
Default phone numbersetting (#22968) - [Improvement] Rename options of change rules execution rule action (#23086)
- [Improvement] Harden ChatWidgetGateway RPCs: replace RpcUnrestricted with RpcRestricted('ticket', 'visitor_own') (#23153)
- [Improvement] Add IPv6 reserved-range test coverage in ReservedAddressFilterTest (#23373)
- [Improvement] asterisk-la: include tenant ID on per-call log lines (#23401)
- [Improvement] Prefer CRAM-MD5 over DIGEST-MD5 in IMAP and POP3 SASL auth method priority (#23614)
- [Security] Security improvement (#22292)(#22300)(#22302)(#22308)(#22309)(#22317)(#22427)(#22661)(#23293)(#23421)(#23666)
- [Fix] Chat button doubled after editing another one in the list (#19416)
- [Fix] Fatal error "Invalid directory from request" (#19714)
- [Fix] Error:
array_key_exists(): Argument #2 ($array) must be of type array, string givenin La_Model_Ivr->loadTransferOptions() (#20129) - [Fix]
SlackNotInstalledExceptionin La_Features_Slack_Api->__construct() (#20386) - [Fix] Unable to execute rule. Rule execution environment not set (#20395)
- [Fix]
La_Model_Numberrefactoring (#20732) - [Fix] Discrepancy between data displayed in the
Tag reporttab and exported data from the same report (#20873) - [Fix] Fix permissions in RpcTicketFieldEditor (#21021)
- [Fix] Incoming call widget freezes in "Opening call" after clicking on "Answer" (#21249)
- [Fix] Useless "Complete transfer" button in internal call (#21453)
- [Fix] Separate variable declarations from email sending logic in Gpf_Mail_Template (#21775)
- [Fix] Inconsistent data in
Tag reportstable (#21899) - [Fix] Extract invitation rule lifecycle into InvitationRuleManager (#21927)
- [Fix] Refactor WebRtc calls (#21982)
- [Fix] Replace legacy trunk creation (#21986)
- [Fix] Blind transfer failed on Asterisk 22 (#22075)
- [Fix] Ticket subject condition in SLA rules causes it not to work (#22172)
- [Fix] Button's (Schedule new plan) bottom shadow out of view (#22175)
- [Fix] Extract LDAP UID persistence from
La_Features_Ldap_AgentsTableand removeLa_Model_User_Agentdependency (#22208) - [Fix] Replace La_Model_Contact::getEmailFields method (#22214)
- [Fix] Chart Y-axis ignores custom decimal separator from regional settings (#22248)
- [Fix] Remove email/phone recordset methods from La_Model_Contact (#22271)
- [Fix] Replace contact custom field methods in La_Model_Contact (#22368)
- [Fix] Replace legacy ChatService with ChatFinder in AddChatMessage rule action (#22389)
- [Fix] WhatsApp messages failing to store in DynamoDB — ConditionalCheckFailedException for all message types (#22439)
- [Fix] TrunkRegistrationCheckerTask fails hourly — Failed to deactivate expired trunk for 9 tenants (#22442)
- [Fix] Rule action "Add Field Value" silently fails — StringValue max size exceeded when applying ticket field (#22443)
- [Fix] Replace legacy Gpf_Net_Http with Symfony HttpClient (#22461)
- [Fix] Remove legacy Gpf_Common_UrlUtils class (#22469)
- [Fix] ScheduleDeviceDepartmentStatus job crashes with Gpf_DbEngine_NoRowException for deleted devices (#22471)
- [Fix] Replace La_Model_Contact static read operations in Qu\La namespace with modern repository calls (#22524)
- [Fix] Rule action "Add Field Value" fails with INVALID_VALUE for list field — value not in available options (#22543)
- [Fix] Twitter integration should deactivate account and notify admin on CreditsDepleted error (#22545)
- [Fix] WhatsApp Dialog360: unhandled ProviderRestClientError on payment-blocked account drops all media messages (#22546)
- [Fix] OpenAI model listing crashes with unhandled exception when API key is deactivated (#22554)
- [Fix] Application goes to Ticketbox-page after reload from Configuration-*- page (#22561)
- [Fix] OOM in Agent Ranking CSV export: unbounded query loads all rows into memory (#22581)
- [Fix] ApnsClient does not handle "Unregistered" device tokens — keeps sending to invalid devices (#22600)
- [Fix] QueueReportTask stuck in infinite retry loop with invalid department ID in params (#22601)
- [Fix] DeleteKbEntryChilds task fails on category type entries — assertLegacyType rejects TYPE_CATEGORY (#22602)
- [Fix] Ticket field definition's code not shown on edit (#22613)
- [Fix] fix: AttachmentsDeserializer crashes on malformed legacy attachment data (#22631)
- [Fix] Desktop notifications do not display chat message content - only "…" shown (#22633)
- [Fix] Department copy fails with generic error when parent has email template with subject > 1024 chars (#22644)
- [Fix] Missing separator in SetSlaLevel error message — SLA level ID concatenated with error text (#22645)
- [Fix] WhatsApp 360dialog error 132012 "Parameter format does not match" not mapped to user-friendly message (#22648)
- [Fix] Nicereply review sync fails when visitor contact has no IP address (#22681)
- [Fix] Customer portal registration endpoint leaks email existence and allows unsolicited email sending (#22707)
- [Fix] ThemeProvider crashes on null theme value when saving agent profile — missing null check (#22715)
- [Fix] Agents are unable to view draft notes created by other agents/initiators (#22729)
- [Fix] Dialog360CallbackController emits PHP warnings for coexistence webhook events (#22730)
- [Fix] asterisk-la: Infinite recursion crash when offline IVR contains ring step that keeps returning ServiceOffline (O) (#22744)
- [Fix] Received instant message has wrong styles during rendering (#22750)
- [Fix] asterisk-la: Asterisk 500 Internal Server Error on channel.answer() — root cause unknown (#22757)
- [Fix] asterisk-la: sounds.py treats any stderr output as fatal even when exit code is 0 (BOM warning aborts IVR sound) (#22765)
- [Fix] asterisk-la: bridge.removeChannel() raises unhandled 422 on channel-already-left race (#22767)
- [Fix] asterisk-la: CRITICAL crash 'NoneType' object has no attribute 'id' in CallThread.__registerEvent (#22769)
- [Fix] Unexpected Welcome message behavior in chat widget with a chatbot (#22825)
- [Fix] Missing "Copy" text on button in contact widget Integration section (#22855)
- [Fix] Upgrade symfony/* components from ^6 to ^7 (#22876)
- [Fix] Non-numeric articleId in KB attachment route causes uncaught TypeError 500s (#22881)
- [Fix] Pipedrive plugin crashes on array_unique with stdClass objects (#22900)
- [Fix] feat: Add missing index on statuschanged in qu_la_conversations (#22914)
- [Fix] The color of the listboxes in the "Online scenario" and "Offline scenario" sections of the chat button (#22919)
- [Fix] Agent reply fails with generic error when attachment temp file expires (#22920)
- [Fix] Editor stuck on loading when files over limit are inserted into tickets via Drag&Drop (#22926)
- [Fix] RepositoryException receives string SQLSTATE code instead of int, causing TypeError (#22931)
- [Fix] fix: Stop TemplateSynchronizationLongTask zombie-loop on UnexpectedValueException (#22932)
- [Fix] 360dialog template sync logs ERROR when customer's WhatsApp number is blocked due to unpaid provider invoice (#22936)
- [Fix] Undefined array key warning in BeezDeskController for missing username parameter (#22955)
- [Fix] API v3 GET /tickets returns HTTP 500 instead of 400 when _sortField is empty (#22957)
- [Fix] Not possible to connect Shopify to LA app (#22985)
- [Fix] Investigate redundant joinCustomerToSolveTicket call and missing error handling (#22997)
- [Fix] fix: DynamoDB running conversation not cleared on call finish causes infinite auto-close rule loop (#23111)
- [Fix] Ticket field definition: editing checkbox field with description >1024 chars silently fails with no user feedback (#23120)
- [Fix] After a second transfer of the same call, the call is failing/hung up (#23121)
- [Fix] Useless space in front of rule names in notes added by a rule in active chat (#23125)
- [Fix] GpfException: Unable to connect to LDAP service with given admin credentials (ldap_bind Invalid credentials) (#23127)
- [Fix] Create button in time rules (#23163)
- [Fix] Chat: duplicate La_Rpc_Chat::cancelConnect RPC triggers "Chat already ended" RejectCommand (#23170)
- [Fix] KB CSS render: undefined color variables when theme_
attribute section is partially populated (#23197) - [Fix] fix: TicketsGrid::getFirstUniqueField crashes with TypeError when contact has null phones/emails (#23223)
- [Fix] Microsoft 365 IMAP: "User is authenticated but not connected" treated as permanent auth failure instead of transient error (#23248)
- [Fix] KB portal crashes with
No privileges defined for role Rfor registered customers using remember-me token (#23270) - [Fix] ProcessAgentNotifications fatals on getTicketCode() for sr/pt-BR/fr agent locales (#23305)
- [Fix] ContactFieldsRepository fatals with "Illegal mix of collations" (#23313)
- [Fix] MysqlFieldDefinitionRowProvider fatals with "Illegal mix of collations" (#23314)
- [Fix] downloadTemplatesTranslations.php writes to wrong path - Crowdin mail-template sync silently no-op since July 2025 (#23318)
- [Fix] Error - Failed to convert date time (#23321)
- [Fix] Inverted BETWEEN bounds in DynamoDbTicketMessageRepository when cursor passes dateTimeRange.to (#23336)
- [Fix] Warning: Undefined array key "profile" in Dialog360MessageCallback::getNameFromContact() (#23337)
- [Fix] Facebook reply over 2000 chars fails with misleading "authentication error" — message dropped silently (#23346)
- [Fix] fix: Stop disconnecting Nicereply on per-rating failures (#23349)
- [Fix] Warning: Undefined array key "uploadWidget" in HttpFileContentCreator::fromMultipartFormData on chat upload (#23366)
- [Fix] GpfRpcRequestParser::detectResponseType throws on FormResponse > 1 char (chat/contact.php) (#23367)
- [Fix] La_Rpc_SessionHandler::getSessionInfo throws on language > 32 chars (chat/contact.php) (#23369)
- [Fix] Gpf_Rpc_Params::getString throws on non-string C/M parameters at chat/contact.php dispatcher (#23371)
- [Fix] Error:
Unable to unassign ticket from deleted agentwhen deleted agent has terminated tickets (#23386) - [Fix] FlowHuntAnswerSuggestionGenerator crashes with unhandled exception on FlowHunt 402 Payment Required (#23417)
- [Fix] CSV ticket export crashes with "Column: roleid has invalid value" when ticket owner has no account record (#23451)
- [Fix] Transfer note not committed and transfer event missing when a rule fires immediately after ticket transfer (#23465)
- [Fix] Records in the contact suggestion popup can get scattered (#23521)
- [Fix] La_Rpc_User::load denies visitors access to conversation participants' display data (#23522)
- [Fix] String correction (#23531)
- [Fix] UnexpectedValueException: Message content not found for answer — dangling DynamoDB pointer (#23726)
- [Fix] Canned messages created with legacy data format not visible in Configuration page (#23797)
- [Other] Refactorings and other fixes (#13963)(#20384)(#21858)(#22015)(#22225)(#22426)(#22472)(#22473)(#22474)(#22475)(#22498)(#22532)(#22539)(#22582)(#22656)(#22670)(#22671)(#22684)(#22772)(#22773)(#22775)(#22776)(#22777)(#22778)(#22807)(#22809)(#22841)(#22865)(#22911)(#22929)(#22969)(#22970)(#23078)(#23147)(#23198)(#23265)(#23276)(#23335)(#23360)(#23389)(#23422)(#23438)(#23456)(#23464)(#23545)(#23650)(#23652)(#23670)(#23673)(#23892)