5.67.7.20260723114941

  • [Security] Security improvements (#25269)
  • [Improvement] Extend get_kb_article MCP tool to support lookup by URL code (#25076)
  • [Improvement] Unify API v4 response timezone to UTC (#25294)
  • [Improvement] Danger-zone email/WhatsApp account confirm dialogs use a grey (secondary) confirm button instead of primary (#25129)
  • [Improvement] Render email-account "Read more" links as plain text links instead of button/link hybrid (#25128)
  • [Improvement] Make Piping URL copyable in incoming email piping integration (create + edit) (#25127)
  • [Improvement] Generalize the inline-image placeholder into a reusable reference mechanism (#25096)
  • [Improvement] Clarify and align the datetime contract for API v4 (docs, input parsing, response timezone) (#25094)
  • [Improvement] Distinguish Enable/Disable toggle buttons in Customer portal settings (#25039)
  • [Improvement] Long name is silently truncated when creating a new requester for a ticket (#25035)
  • [Improvement] Removing of all the actions during editing a rule after change of the main condition (Apply when…) (#23166)
  • [Improvement] Reorder rule actions and conditions (#20805)
  • [Fix] PurgeDeletedConversationsTask full-scans qu_la_conversations fleet-wide — regression of #22668's index fix at scale (#25519)
  • [Fix] UnableToApplyFilterError: TicketReviews report 500s on non-RFC-3339 date filter (CreatedAtFilter) (#25512)
  • [Fix] Redis Cluster test/dev docker stack announces IPs, breaking per-node commands (#25508)
  • [Fix] Error thrown when logging audit trail for an agent joining a transferred chat (#25422)
  • [Fix] Agents cannot log in to customer portal and password reset emails are not generated (#25414)
  • [Fix] add_note MCP tool always fails with "Not authorized to add note to this ticket" for AI agents (#25401)
  • [Fix] POST /api/v3/contacts returns silent HTTP 500 (~640/5h) with no application log — observability gap in legacy RestApi path (#25400)
  • [Fix] Agent report "Finished chats" count is doubled after Chat aggregate migration (#25399)
  • [Fix] GET /api/v3/chats returns HTTP 500 when status_date_started resolves to a raw Unix epoch for Ringing/Queue chats (#25330)
  • [Fix] GET /api/v3/tags/{id} always 500s — Class "La_Api_V3_tag" not found (#25329)
  • [Fix] UnhandledException: agent with empty (non-NULL) email crashes MysqlAgentReader::createAgentFromRow -> breaks agent load & ranking grid (#25317)
  • [Fix] TicketSummaryAiWorkflowProvider crashes with 500 when referenced FlowHunt AI provider has been deleted (#25313)
  • [Fix] Chat Buttons "Last display" hover tooltip shows future (#25306)
  • [Fix] AnswerAssistantConfiguration::isAnyAiProviderConfigured() always returns true — empty() on a Generator is always false (#25300)
  • [Fix] fix: Customer chat widget keeps rerouting after an agent takes the chat (#25295)
  • [Fix] MysqlCompatFieldRepository::deleteFieldInTicketWithCodeAndValue() drops its code filter (second where() overwrites the first) (#25271)
  • [Fix] FieldLoader::getFields() lacks the ticket-existence guard its siblings have -> misleading NotAuthorizedError (#25270)
  • [Fix] update_5.66.3 / create.sql out of sync + missing online-DDL guard for from_date index (#25256)
  • [Fix] Chat review/ranking never projected for UUID chats (wrong ItemId type in TicketItemReviewProjector) (#25232)
  • [Fix] Open in CRM option in the CRM plugin no longer works after update to Angular 21 (#25208)
  • [Fix] Asterisk 22 regression: callback calls stuck ringing in unbounded retry loop (stub channel reaped -> hold() 404 -> callStop loop) (#25205)
  • [Fix] Inbound email dropped: mb_convert_encoding() ValueError on unrecognized charset label in From/To header (#25185)
  • [Fix] Password-notification email fails with "Column: language has invalid value" when KB registered-user has NULL language (#25172)
  • [Fix] Error: Column: datedue has invalid datetime format in CSV ticket export (legacy zero-datetime values) (#25171)
  • [Fix] UnhandledMatchError in LegacyStatusSerializer::deserialize() crashes contact-widget grid for tenant u262625 (#25158)
  • [Fix] Ticket export to HTML 500s (UnhandledSwitchCaseException) for message-envelope groups [type=NT] (#25154)
  • [Fix] Viber customer notification fails with "missing mandatory field: size" when sending an image attachment (#25152)
  • [Fix] TokenFetcher::getAccessToken() passes null refresh token to RefreshTokenCrypto::decrypt(), causing FATAL TypeError (#25149)
  • [Fix] InconsistentDataException: Failed to create Call from row (Unknown call type: S) breaks ES ticket re-indexation (#25136)
  • [Fix] Excessive header icon in note ticket item added by rule inside call message group (#25133)
  • [Fix] "Generate new" button drops below API key input on SSO and API v1 config screens (#25131)
  • [Fix] Email account confirm dialogs: non-primary confirm button and alert-info banner loses its blue background (#25130)
  • [Fix] "Send" button lacks multi-click protection in some cases (#25108)
  • [Fix] Feedback button "Contact button" dropdown shows a blank, unselectable icon-only row (#25107)
  • [Fix] Reply editor is not auto-focused when opening Suggestion / Forum (and social-channel) tickets in the agent panel (#25104)
  • [Fix] KB Montana theme: "Login with Facebook" button misaligned due to .jumbotron .FacebookButton override (#25103)
  • [Fix] update_kb_article MCP tool breaks embedded image attachments (404) on body update (#25073)
  • [Fix] Column 'browser' cannot be null — missing null-guard in Lib_Track::upsertBrowserVisit() (#24962)
  • [Fix] RestApi_FieldValidityException escapes route catch blocks — client input errors return HTTP 500 instead of 400 (#24959)
  • [Fix] Ticket history query full-scans qu_la_message_groups (~21.3M rows, up to 205s, 0 rows) for tenant u122611 (#24677)
  • [Fix] Resolved ticket cannot be closed; auto-close cron loops forever spamming "automatically closed" messages (#24661)
  • [Fix] Agent avatar not shown in ticket thread messages — __BASE_URL__ placeholder not resolved (#24597)
  • [Fix] "Reopen Resolved Ticket" setting not enforced server-side in customer portal — customers can bypass it via direct RPC call (#24502)
  • [Fix] CloseResolvedConversations adds spurious "automatically closed" note every day for tickets that cannot actually be closed (#24397)
  • [Fix] Postpone ticket rule rejects zero-padded minutes value (e.g. "01") (#24290)
  • [Fix] GET /api/v3/tickets/{id}/messages returns 500 when a chat attachment has a null file name (#24212)
  • [Fix] Ticket displays wrong state in agent panel after being resolved or answered (#23764)
  • [Fix] Stuck chat: rc (running conversation) not cleared in DynamoDB after chat finish (#23759)
  • [Fix] Slow query in ComputeWorkTime::getUsersStatuses() scans up to 51M rows on large tenants (#23472)
  • [Fix] SubjectPersister throws when answer has no subject header message — breaks rule execution and ticket loading (#22705)
  • [Fix] Ticket is not purging after rule is applied (#19546)
  • [Performance] Time-rule engine MATCH(tags) AGAINST + anti-join scan is ~95% of slow queries on db-08-master-1 (tenant u72113_07ff) (#24976)
  • [Other] Refactorings and other fixes (#22599)(#25577)(#25543)(#25502)(#25499)(#25488)(#25486)(#25460)(#25457)(#25430)(#25410)(#25392)(#25325)(#25308)(#25289)(#25254)(#25219)(#25188)(#25167)(#25106)(#25083)(#24925)(#24918)(#23253)(#20964)