5.68.8.20260827110549

  • [Feature] Add "Mark as Spam" tool to MCP server (#26102)
  • [Feature] Add Gemini as an AI provider for AI Agents and Answer Suggestion/Assistant (#25984)
  • [Feature] TicketAssistant: Anthropic support for answer assistant and answer suggestion (#25504)
  • [Feature] Introduce Svelte 5 frontend umbrella to progressively replace the GWT agent panel (#25324)
  • [Feature] Option to hide the AI Summary in tickets (#25169)
  • [Feature] Voice call recording transcription (speech-to-text) (#24154)
  • [Feature] Option to send automatic reply to tickets from WhatsApp channel (#20183)
  • [Feature] Prohibit Export to CSV with a custom role (#25489)
  • [Security] Security improvements (#26250)(#25902)(#25762)(#25759)(#21146)
  • [Improvement] Agent panel RPCs fire an unconditional la_users status UPDATE on every request (#26289)
  • [Improvement] Add TCP keepalive to event-router's aiohttp connector for long-running handler requests (#26274)
  • [Improvement] Cache language metadata reads (RegionalSettingsResolver / LanguageProvider::getByCode) (#26189)
  • [Improvement] visitor-tracker: crawler pattern list is stale, misses current AI-crawler generation (#25897)
  • [Improvement] Add agents and knowledgebases count to CRM-facing account-usage-stats endpoint (#25808)
  • [Improvement] Show device-type icons in the agent voice-status menu (#25758)
  • [Improvement] AI Agent Run Details dialog window design improvements (#25567)
  • [Improvement] Add Used and Remaining columns to the AI Budgets screen (#25541)
  • [Improvement] Add an 8 hour postpone preset (#25473)
  • [Improvement] Password-reset rate-limit decline should be an in-app event log (admin-visible), not an infra-layer WARN (#25314)
  • [Improvement] Add new GPT 5.6 models for OpenAI AI provider (#25298)
  • [Improvement] AI Agents: Indicate if an AI agent is actively used (last used / linked rules) or inactive (#25260)
  • [Improvement] API v4 docs: show full paths (with module segment) instead of relative ones (#25202)
  • [Improvement] Make Slack OAuth base URL configurable per environment (#24964)
  • [Improvement] Answer Suggestion: let the AI fetch ticket context via MCP instead of embedding it in the prompt (#24537)
  • [Improvement] Voice: Add Recording domain model for call recording segments (#24189)
  • [Improvement] Remove popup tooltip behavior from note in ticket timeline (#24005)
  • [Improvement] Implement new display model for email message (#21667)
  • [Improvement] Update WhatsApp integration to support WhatsApp usernames (#20741)
  • [Improvement] Add a support of button widget from FlowHunt to LA chat window (#20296)
  • [Fix] Fix misleading Display method label in "Display external info in ticket" (#26352)
  • [Fix] Corrected an MCP tool permission scope mismatch (#26194)
  • [Fix] WhatsApp inbound webhook request crashes when the sender's phone number isn't a valid international format (#26193)
  • [Fix] Fixed a performance issue when sending mail to large recipient lists (#26191)
  • [Fix] Fixed unnecessary write amplification in language version sync (#26178)
  • [Fix] Fixed a write-loop bug in language metadata synchronization (#26177)
  • [Fix] Contact widget grid fails with SQL syntax error when pagination window no longer fits the current result count (#26091)
  • [Fix] Duplicate is waiting in queue element (#26069)
  • [Fix] WhatsApp recipient picker lists non-E.164 phone contacts that ticket creation then rejects (#26068)
  • [Fix] WhatsApp (360dialog) inbound messages are silently dropped when the sender's phone number is missing from the message data (#26062)
  • [Fix] Customer portal ticket page returns HTTP 500 when the ticket's assigned agent has no AgentAllocator service record (#26061)
  • [Fix] Legacy numeric ticket codes rejected by strict TicketCode validation, breaks opening affected tickets in agent panel (#26037)
  • [Fix] System no longer shows the name of the agent to whom the incoming chat is ringing (#25977)
  • [Fix] Attachment download fails for WhatsApp media messages sent without a caption (#25969)
  • [Fix] QuGwtClientCodegenV4 emits primitive int getters for nullable: true integer schema properties (#25948)
  • [Fix] Agent's MCP integration availability without AI work feature (#25942)
  • [Fix] Added a missing authorization check in an MCP tool (#25885)
  • [Fix] get_next_list treats an explicit timestamp of 0 as omitted (#25879)
  • [Fix] visitor-tracker README documents env vars and routes that do not exist (#25878)
  • [Fix] visitor-tracker: crawler traffic inflates button impression counters (#25869)
  • [Fix] Fixed an access-control gap in an MCP tool (#25868)
  • [Fix] visitor-tracker: crawler detection never fires; missing Es-Cluster-Id header returns 500 (#25865)
  • [Fix] TicketQueue: NULL due_timestamp on legacy queue rows breaks loadNextTicketFromQueue (#25852)
  • [Fix] Unbuildable Facebook ticket fails TicketFallbackAuthorProvider and poisons its ReindexTicketsJob batch forever (no dead-letter) (#25826)
  • [Fix] Fixed a slow-query performance issue in chat lookup (#25825)
  • [Fix] Pop-out chat returns HTTP 500 when department is offline — PopoutChatController does not handle chat_unavailable response (#25815)
  • [Fix] UnexpectedValueException: "Failed to create HtmlText" — empty legacy email text makes ticket permanently unopenable (#25814)
  • [Fix] Chat didn't finished properly (#25804)
  • [Fix] Gpf_Auth_TwoFactor::getQrCodeImage() throws "already enabled" in prod — client re-requests QR after a verification-token error (#25795)
  • [Fix] IntelliJ shows "phpstan-modules.neon does not exist" warning on every project open (#25791)
  • [Fix] Background ticket-search job crashes repeatedly for a tenant due to a missing/deleted message record (#25776)
  • [Fix] The email template is loaded with a 12 seconds delay in tickets created from a chat button (#25767)
  • [Fix] CRM plugin - account user login should log in to custom domain if set (#25761)
  • [Fix] .gitattributes catch-all text eol=lf causes gradle-wrapper.jar and gradlew.bat to always show as modified (#25748)
  • [Fix] Missing tooltips for customer and ticket sections within the right side panel (#25730)
  • [Fix] AI Agent Run report doesn't render "Waiting" status (#25707)
  • [Fix] Finished chats in the Agent report shows only chats closed by the agent (#25704)
  • [Fix] Cannot create second agent in AppSumo Free account (#25696)
  • [Fix] Fixed an authentication regression in internal export tooling (#25691)
  • [Fix] Time Rules page shows "Data error" for a tenant with a corrupted rule order value (#25688)
  • [Fix] Material theme: "Add device" button missing right margin in Edit profile > Calls (#25687)
  • [Fix] Weekly scheduler period-edit popup has transparent background (#25686)
  • [Fix] Forward button fails on email tickets rendered via TicketMessage envelope ("The ticket does not contain forwarded message") (#25685)
  • [Fix] LiveAgent stopped notifying CRM about changes (#25684)
  • [Fix] Connecting Microsoft shared mailbox via OAuth as outgoing email account times out (~30s) when tenant has thousands of addresses (#25636)
  • [Fix] AI Agent Runs report shows two confusing near-duplicate columns "AI Agents" / "AI Agent" for the same single agent (#25565)
  • [Fix] Shopify plugin never checks HTTP status codes, so error responses are treated as empty data (#25538)
  • [Fix] Ticket history tab shows incorrect timestamps (#25526)
  • [Fix] Error about mandatory field not displayed for AI agent and Budget listbox fields in rule configuration (#25506)
  • [Fix] Zendesk agent import: consistent existing-agent resolution (#25495)
  • [Fix] Internal notes in chat tickets intermittently render with white background instead of yellow (#25387)
  • [Fix] HtmlQuoteParser::findGmailQuote() regex fails to match Gmail's "gmail_quote gmail_quote_container" class format (#25322)
  • [Fix] Contact-widget/KB preview 500s ("Failed to create preview copy") when a widget attribute references a deleted file link (#25319)
  • [Fix] Mass-delete of Facebook tickets aborts with "Failed to execute mass action." when the FB page is inactive (channel notify on delete not best-effort) (#25318)
  • [Fix] UnhandledException: "Text cannot be empty" — empty agent-to-agent chat message throws unhandled InvalidArgumentException (#25315)
  • [Fix] Agent panel shows "network outage" error during version upgrade instead of maintenance notification (#25305)
  • [Fix] Double arrow icon in listbox in Edit model and Edit chatbot dialog windows (#25304)
  • [Fix] Error: "Invalid role [] was created" logged at ERROR from client for empty role id (#25297)
  • [Fix] Bad design of `You've been inactive for a longer period of time…" warning message (#25277)
  • [Fix] Fixed a performance issue with large page-size requests on the contacts API (#25236)
  • [Fix] Inactivity time field description update (#25067)
  • [Fix] TicketTransferError on attended call transfer — TICKET_TRANSFER missing from CallParticipationVoter.PARTICIPATION_PRIVILEGES (#24638)
  • [Fix] Backend plugin engine lacks isConfigured() guard — extension point handlers invoked for unconfigured plugins (#24603)
  • [Fix] Inbound mail with a 4-byte (CJK) address: sender dropped / recipient skipped — choose a strategy (followup #23767) (#24483)
  • [Fix] WhatsApp: "Failed to process content message" when phone number exists without WhatsApp flag (#24099)
  • [Fix] 500 error when accessing deleted KB article in embedded KB widget view (#23760)
  • [Fix] Rename Running AI work state to Submitted (#23506)
  • [Fix] KnowledgeBasePreviewController logs ERROR for missing preview id on /preview type=css (#23338)
  • [Fix] Email reply fails with generic error when draft is deleted concurrently (#22846)
  • [Fix] ComputeUserSlotReportsHourlyTask fails with unique constraint on re-execution — not idempotent (#22692)
  • [Performance] Optimized a full-scan query in the ticket-purge unused-users task (#25250)
  • [Other] Refactorings and other fixes (#26247)(#26065)(#25957)(#25866)(#25829)(#25770)(#25702)(#25632)(#25609)(#25599)(#25576)(#25560)(#25370)(#25239)(#24564)(#23836)