> For the complete documentation index, see [llms.txt](https://docs.maiagent.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.maiagent.ai/release-note/en/readme.md).

# Changelog

MaiAgent platform updates and new feature release notes

## v2026.09.15 <a href="#v2026-09-15" id="v2026-09-15"></a>

***

### ✨ New Features

* **AI Assistant Template Library**: Administrators can preview, clone, and ask questions about templates in the library, then quickly create new AI assistants tailored to their organization's needs. The page also shows each template's model and whether it is available to the organization.
* **Long-Term Memory for AI Assistants**: Enable persistent memory for AI assistants so they can extract useful facts from conversations and reuse them in subsequent interactions. The management interface shows memory sources, filters sensitive personal data, and isolates memories between contacts.
* **Conversation Quick Menu**: Configure a persistent quick menu in an AI assistant's input bar, using icons and action items to guide users into common workflows.
* **MaiGPT Conversation Folders**: Create folders in the Work sidebar to organize conversations, making it easy to find content by task or project even as the number of conversations grows.
* **Azure Blob Storage File Storage**: On-premises and enterprise deployments can use Azure Blob Storage. The administration console and Web Chat upload files directly using the presigned upload method.
* **Quoted Replies in LINE Groups**: Replying to or quoting an AI assistant's message in a LINE group now invokes that assistant and preserves the quoted-message relationship in the response, without requiring an additional mention.

### 🚀 Core Performance Improvements

* **Faster Viewing of Large Knowledge Base Files**: File content now loads by page, and editing a single paragraph updates only that content instead of downloading the entire file again.
* **More Reliable AI Assistant Configuration Saves**: When saving an AI assistant with many accumulated conversations, tool-related synchronization now skips unchanged data and runs in the background, reducing long waits and timeouts.

### 😊 User Experience and Interface Improvements

* **Clearer Team Reply Attribution**: When multiple member AI assistants collaborate on an answer, message headers in Web Chat, conversation testing, and the management interface show the member assistant that generated the reply.
* **Knowledge Base Label Filters**: Configure default label conditions at the AI assistant level using intuitive "include any," "include all," and "exclude" combinations to filter retrievable content. When the knowledge base has no labels, the interface clearly explains the next available action.
* **Full Knowledge Base Retrieval Range**: Administrators can choose not to truncate knowledge base candidates by count before ranking, allowing tools that require the full retrieval range to obtain data according to the AI assistant's settings. The interface also displays the parameters actually used.
* **Redesigned Quick Replies and Suggestion Buttons**: Suggested options now appear as floating buttons above the input bar or compact buttons below messages. Selecting a suggestion sends only the button text without attaching unsent files or clearing the draft.
* **Expanded AgentOps Execution Record Filters**: Team execution traces can be filtered by conversation and member. Scheduled executions are also included in the records with clearly labeled sources, and dataset lists show separate counts for single-turn and multi-turn tests.
* **Live Recording Limit Notifications**: Users now receive a clear notice when a recording approaches three hours. At the limit, the room closes normally instead of being marked as failed. The browser also sends a notification when recording is interrupted and explains why fallback is unavailable.

### 🔐 Security and Governance Enhancements

* **Secure Keycloak Credential Forwarding**: Administrators can choose whether a conversation platform forwards visitors' Keycloak credentials to MCP or API tools, allowing backend services to use the original user's identity and permissions only when explicitly enabled.
* **Stronger Knowledge Base File Access Controls**: Queries for knowledge base content using file conditions now always validate the current organization and file permissions. Files that do not exist or belong to another organization do not leak information.
* **Immediate OAuth Credential Revocation**: After a user signs out or revokes a refresh token, the revoked credential is no longer temporarily usable because of caching, reducing the risk of delayed account access termination.

### 🛠️ Bug Fixes

* **Fixed Temporary Retrieval Unavailability When Editing Knowledge Base Files**: When saving pages from PDFs or other documents, the new index is created before the old one is removed. At least one version remains available during rebuilding, and a single save no longer processes the entire file multiple times.
* **Fixed Web Chat Message Queuing and Interruption States**: Users can queue the next message while the AI is replying and press Esc to interrupt. The interface now unlocks immediately and correctly clears the in-progress state even when stopped before the first response segment appears or when a tool ends because of an error or cancellation.
* **Fixed the Hybrid-Mode Fallback for Non-Streaming Replies**: When hybrid reply mode falls back to a general answer because no template content is found, it now uses the delivery method of the current request. Non-streaming calls no longer fall back to a generic error message because the connection was not initialized.
* **Fixed AI Assistant Weekday Calculation Errors**: When system-time responses are enabled, the current time provided to the AI assistant now includes the correct weekday directly, so the model no longer has to derive it from the date.
* **Fixed Broken Quick Menu Icons**: After a custom quick menu icon is uploaded, the system stores its media location and generates a valid authorized URL when it is retrieved, allowing it to display correctly in private media storage environments.
* **Fixed Missing Knowledge Base Images in LINE and Other Channels**: Image syntax containing image titles in knowledge base answers is now correctly recognized and sent through external channels such as LINE.
* **Fixed the scope of attachments automatically provided to the code execution tool**: The code execution tool now automatically receives attachments uploaded throughout the current conversation instead of checking only the current message. Image attachments can also be processed by visual parsing, while unsupported types are clearly rejected before entering subsequent processing.
* **Fixed duplicate FAQ Excel imports and stalled failures**: The interface now prevents another FAQ import from starting while an import is already running for the same knowledge base. If batch processing fails permanently, the job is marked as failed instead of remaining in progress indefinitely.
* **Fixed Text to SQL connection interruptions and table-name limitations**: Queries now retry after temporary connection interruptions and correctly record the retry count. MSSQL tables and tables with schema-qualified names can also be listed, inspected, and queried.
* **Fixed server errors caused by overly long shared-conversation titles**: Saving a shared-conversation title that exceeds the length limit now returns a manageable input error instead of displaying a server error.

## v2026.09.10 <a href="#v2026-09-10" id="v2026-09-10"></a>

***

### 🚀 Core performance optimization

* **Large AI assistant setting storage acceleration**: For an AI assistant with a large number of dialogue records, when saving settings such as character commands, the response time is shortened from more than 20 seconds to about 0.3\~0.6 seconds; the tool status will be updated in the background within a few seconds.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Users who manage AI assistants that have a large number of conversation records may wait more than 20 seconds and time out when saving general settings.
* Problem: All existing conversations are checked every time you save, even if the tool settings have not changed
* Fix: The check is skipped when the tool has not changed, and the background processing is performed when there is a change; the backtest of 8,001 conversations can be saved in about 0.3 to 0.6 seconds

**Associated PR:** - maiagent-django #7943: [hotfix: skip and offload conversation tool-mask sync on chatbot save](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7943)

**Review status:** ⚠️ Performance optimization requires verification data

### 😊 User experience and interface optimization

* **"Back to Latest" navigation improvements for long answers**: When looking up to earlier content in a MaiGPT or Work conversation, a "Back to Latest" button will be displayed on the screen. Click to return to the latest question; when reading down the current long answer, there will no longer be a prompt that the direction does not match.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Users reading long answers in MaiGPT or Work conversations
* Problem: The unified layout lacks a navigation to return to the latest questions, and when you read down the answers, you may see buttons with inconsistent directions.
* Fix: Restore the unified layout button and decide whether to display it depending on whether the user is above or below the latest question

**Associated PR:**

* maiagent-admin-vue #3351: [hotfix: show return to latest pill under unified layout (MaiGPT/Work, #3193 regression)](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3351)
* maiagent-admin-vue #3359: [hotfix: only show return to latest pill when scrolled above the latest question (follows #3351)](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3359)

**Review Status:** ✅ No special review required

### 🔐 Security and governance enhancements

* **Anonymous Web Chat conversation data protection enhancement**: Anonymous conversation responses in public Web Chat have been reduced to the data required for interface operation, and visitor network locations, conversation platform operation statistics, and AI model and tool settings will no longer be transmitted; the management functions of logged-in members will not be affected.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Organizations offering public Web Chat with anonymous visitors
* Problem: When creating or reading a conversation anonymously, the response contains network location, operational statistics and AI setting information that are not required for the guest interface.
* Fix: Anonymous responses are reduced from 47 types of data to 9 types of data necessary for the interface, and the management responses used by members remain unchanged.

**Associated PR:** - maiagent-django #7963: [fix(chat): serve the trimmed guest payload on anonymous conversation create/retrieve](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7963) - maiagent-django #7967: [test(chat): add caller\_organization\_id to the guest serializer allowlist test](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7967)

**Review Status:** ⚠️ API has permission control

### 🛠️ Bug fixes

* **Fixed Gemini Assistant's inability to use tools**: AI assistants connected to Gemini models through compatible services can now use bound tools normally; tool conditions or multiple rounds of execution no longer cause answer interruptions.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Teams using compatible services to connect Gemini models and enable tools for AI assistants
* Problem: When the tool settings contain some restrictions, or the tool requires multiple rounds of processing, Gemini may reject the request and interrupt the response.
* Fix: Adjust tool description format sent to Gemini and retain verification information required for subsequent rounds

**Associated PR:**

* maiagent-django #7930: [hotfix: Gemini cannot use tool](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7930)when using OpenAI compatible relay

**Review Status:** ⚠️ Third-party service integration

* **Fixed Web Chat quick reply duplicate display**: The quick reply option will be correctly displayed below the message, and there will no longer be an unrecognizable "Tool Response" card in the message bubble.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Visitors using the quick reply option in Web Chat
* Problem: In addition to being displayed below the message, quick replies may also be repeatedly displayed as unknown content in the message bubble.
* Fix: Keep the quick reply option bar below the message and stop repeated processing in the message bubble

**Associated PR:** - maiagent-vue #1583: [fix(webchat): skip quick\_reply items in the in-bubble block pipeline \[hotfix\]](https://github.com/Playma-Co-Ltd/maiagent-vue/pull/1583)

**Review Status:** ✅ No special review required

* **Fixed the mis-displayed permission error on the API key page**: When an organization that has not enabled AI Gateway enters the API key management page, a permission error window unrelated to the current operation will no longer appear, and the key list can still be used normally.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Owners who do not have AI Gateway enabled but need to manage their organization's API key
* Problem: Although the key list can be loaded normally, the page will still pop up an error window without operation permission due to preloading other functions.
* Fix: Treat the permission response when AI Gateway is not enabled as a normal downgrade, and no longer display the error window blocking the operation.

**Associated PR:** - maiagent-admin-vue #3375: [hotfix: stop the 403 error modal on the API-key page for orgs without AI Gateway](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3375)

**Review Status:** ⚠️ API has permission control

* **Fixed Gemini Assistant multi-tool answer interruption**: AI assistants connected to Gemini models through compatible services can now use two or more tools in the same question and complete the answer, and will no longer display that the system cannot process it after the tool has obtained the data.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Users who use the Gemini model and let the AI ​​assistant query multiple data in the same question
* Problem: When the assistant uses two or more tools at the same time, even if the tools have successfully obtained the data, subsequent answers may still be interrupted.
* Fix: Adjust the transmission method of multiple tool results and retain necessary verification information, so that the assistant can compile the results and answer normally

**Associated PR:** - maiagent-django #7994: [fix(rag): unroll parallel Gemini tool calls into single-call turns for OpenAI relays](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7994)

**Review Status:** ⚠️ Third-party service integration

## v2026.09.08 <a href="#v2026-09-08" id="v2026-09-08"></a>

***

### 🛠️ Bug fixes

* **Fixed AI replies with internal judgment text**: Quality check results are no longer mixed into the conversation content, and users will only see the replies that the AI ​​assistant was originally supposed to provide.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Users of AI assistants with reply quality checking enabled
* Issue: Internal inspection results may be attached to official reply
* Fix: Explicitly isolate internal judgment output from user responses

**Associated PR:** - maiagent-django #7866: [fix(hooks): stop the llm.run judge verdict leaking into agent replies](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7866)

**Review Status:** ✅ No special review required

## v2026.09.07 <a href="#v2026-09-07" id="v2026-09-07"></a>

***

### ✨ New feature release

* **AI Gateway Monitoring and Key Management**: Organization managers can customize the query start and end time on the AI ​​Gateway dashboard, and view the number of requests, Token usage, backup trigger times and costs based on API keys. 1. Each model column can be expanded to see which keys drove the usage during the period, and the source can be directly identified when the usage surges; 2. The activation status, number of requests per minute and token limit can be set locally for a single key, as well as the list of models that are allowed to call. The creation and revocation of the key are still completed on the organization settings page; 3. A new access diagnosis is added, and the checkpoints for the key's passing and failure are listed step by step; 4. The model node on the backup rule page is marked with the model manufacturer and managed cloud badges.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Organization managers using AI Gateway
* Problem: The dashboard cannot trace usage sources based on API keys, and there are no set entries for key limits and model whitelists. There is no way to diagnose when access is denied.
* Fix: Added custom time interval, key usage table and model column expansion details, key management window, access diagnostic window, and vendor/hosted dual badges on the backup rules page

**Associated PR:** - maiagent-admin-vue #3147: [feat(ai-gateway): Gateway Monitor — usage by API key, key governance, access diagnostics, fallback brand badges](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3147)

**Review Status:** ⚠️ Access Control

* **Self-built model sampling parameters support detection**: When editing a self-built model in AI Gateway, the screen will list whether the three sampling parameters of temperature, Top-P, and Top-K are supported by the model, and display the detection time and determination source; if the result is inconsistent with the actual situation, you can click "Re-Detect" to retest immediately. After the new model is saved, it will be automatically detected in the background. Administrators no longer have to check one by one because the new model rejects non-default parameters.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Organization managers who mount self-built models on AI Gateway
* Problem: The new model will reject non-default sampling parameters. Administrators cannot see which parameters the model supports, nor can they proactively re-detect them.
* Fix: A new request parameter support section is added to the self-built model editing window, which displays the item-by-item determination, detection time and source, and provides a re-detection button.

**Associated PR:** - maiagent-admin-vue #3146: [feat(ai-gateway): show and re-probe request param support on custom models](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3146)

**Review Status:** ⚠️ Third Party Integration

* **Self-service setting of organization model calling permissions**: Organization owners can switch available models on and off within the scope of MaiAgent authorization on the "Organization Settings → Model Calling Permissions" page. The page lists models according to cloud/local groups, with manufacturer icons and brand tags, and can be searched and filtered; models that have not yet been activated are marked with a dotted line and cannot be activated; when closing a model that is still being used by the AI ​​assistant, a confirmation will pop up first to avoid accidentally closing the model and affecting the online assistant.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Organization owners who need to adjust the scope of models available within their organization
* Problem: The models available to the organization can only be set by the MaiAgent side, and the organization itself cannot self-switch it within the scope of authorization.
* Fix: Added a new model call permission page, including deployment grouping, manufacturer icon, brand label, search filter, unactivated prompt and confirmation process for closing the model in use.

**Associated PR:**

* maiagent-admin-vue #2952: [feat(organizations): Organization "Model Call Permission" page (Phase 1 · AC-11\~16)](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/2952)

**Review Status:** ⚠️ Access Control

* **Added Gemini 3.1 Pro image recognition**: When building a knowledge base, Gemini 3.1 Pro Preview (via Vertex AI) can be used as the parser for document image recognition (OCR). The entire PDF is sent for recognition at one time, supporting up to 50MB or 1,000 pages. In case of failure, it will automatically resend every 50 pages; providing another option in terms of speed and cost. The default parser remains unchanged and can be switched in the parser list if needed.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Users who use document image recognition (OCR) to build knowledge bases
* Problem: There is only one supply path for image recognition, and there are no alternatives in terms of speed and cost.
* Fix: Added Vertex AI supplier and Gemini image recognition parser, sent the whole copy, downgraded in batches if failed, billing is dynamically billed according to the supplier

**Associated PR:** - maiagent-django #7637: [feat: add Gemini 3.1 Pro Preview as Vision Parser (Vertex AI)](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7637)

**Review Status:** ⚠️ Third Party Integration

* **Return to real person Webhook back to AI event notification**: Enterprise customers who connect to external customer service systems through Webhook, in addition to the original real person creation event, the specialist will also receive the "return to AI" event when the conversation is returned to AI. The content field, signature and retry mechanism are the same as the existing events, and the receiving end only needs to be diverted according to the event name. The conversation data of the message webhook also adds processing status, progress status, automatic reply switch and assigned specialist. Accordingly, the external system can only process the messages in the live service and return the reply to the correct customer service.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Enterprise customers who use Webhooks to connect to external customer service or operating systems
* Problem: The external system receives the start of the real-person transfer, but cannot receive the end signal. The message notification also lacks the conversation processing status, and cannot only take over the real-person mode conversation.
* Fix: Added back to AI events, and added status, progress, auto-reply and assigned specialist fields to the message webhook's conversation data

**Associated PR:** - maiagent-django #7667: [feat(chat): handoff.returned\_to\_ai webhook event + handoff state in message webhooks](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7667)

**Review Status:** ⚠️ Third Party Integration

* **Usage statistics and reply details display cache savings**: Organization managers can see the cache writing, cache reading and cache hit rate in the six-dimensional ranking list and trend chart on the usage statistics page. A new "Cache Savings" column is added to the Credit consumption card; in the Credit consumption panel of the AI ​​reply quality control details, the credit saved by the cache for the reply will also be displayed one by one. The savings amount is only displayed when there are actual savings, and the entire column is hidden when it is rounded to zero or reversed; the content exported by Credit audit remains unchanged, and the entry remark does not include the derived savings value.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Organization managers who view organizational usage statistics and AI reply quality control details, and are concerned about the cost of AI usage
* Problem: The cache has absorbed most of the input tokens, but the usage statistics only show input/output. A single reply cannot show how much has been saved, and the customer has no idea of ​​the savings.
* Fix: The cache column and hit rate are added to the ranking list and trend chart, the cache saving column is added to the Credit card and the Credit panel of a single reply, and only positive values ​​are displayed.

**Associated PR:** - maiagent-admin-vue #2926: [feat: display prompt cache usage in usage statistics page](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/2926) - maiagent-admin-vue #3102: [feat: show prompt cache saved credits on record detail credit panel](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3102)

**Review Status:** ⚠️ Billing related

* **AI Assistant Cross-Conversation Search Settings**: Added the "Cross-Conversation Search" switch and the lookback days field (1 to 365 days, default is 90 days, default is off) in the "Conversation Memory Settings" section of the AI ​​Assistant advanced settings. After turning it on, the assistant can also check other conversations with the same user within a specified number of days when searching for messages and reading context. It is suitable for customer service or personal assistant situations that need to continue the previous conversation. This setting is independent of vector memory and can be used in any combination.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Organizations that need to allow AI assistants to remember other previous conversations with the same user
* Problem: The assistant's message search and context reading are limited to the current conversation and cannot continue the user's past conversation context.
* Fix: Advanced settings have added a cross-conversation search switch and a lookback number of days. The number of days field will be displayed only when it is turned on, and the five-language copywriting is complete.

**Associated PR:** - maiagent-admin-vue #3113: [feat: add cross-conversation search settings to bot advanced settings](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3113)

**Review Status:** ✅ No special review required

* **Automatic retry for temporary errors in tool calls**: If the AI ​​assistant encounters temporary errors such as connection interruption, connection reset, or timeout when calling the tool, the platform will automatically retry up to 3 times (intervals of 1, 2, and 4 seconds). It no longer depends on whether the model retries on its own. In actual cases, for the same set of database queries, some models will directly reply that they cannot query when encountering an error. Scope of application: 1. MCP tools are limited to those whose names are of the reading type (query, list, search type), and writing types do not retry to avoid repeated executions; 2. API tools follow the existing retry mechanism and record the number of times truthfully; 3. A new "number of retries" column is added to the tool execution record to facilitate administrator interpretation. Credit will only be deducted once after the final success, and retry will not be billed again.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: All users who use AI assistant to perform tool queries (such as database queries, external system connection)
* Problem: Whether the tool retries when it encounters a temporary connection error depends entirely on the model behavior. The same query may fail directly after changing the model.
* Fix: Platform layer temporary error classifier and exponential backoff retries, applicable to read MCP tools and API tools, execution records record the number of retries, and Credit is only deducted once

**Associated PR:** - maiagent-django #6953: [feat(tools): platform-level auto-retry for transient tool-call errors (retryCount)](https://github.com/Playma-Co-Ltd/maiagent-django/pull/6953)

**Review Status:** ⚠️ First implementation

* **AI Assistant Monitoring Conversation Record Details Page**: AgentOps's AI Assistant Monitoring has added an independent conversation record details page. Administrators can click from the list to enter: 1. Display basic information, identification code (can be copied with one click), execution step timeline and statistics area (processing time, Token, word count, Credit, quality score), and supports exporting JSON, Markdown, Excel; 2. Provides navigation to the previous/next transaction, and the URL can be shared directly with colleagues, automatically switching to the corresponding organization when opened; 3. When returning to the list from the details page, the filter conditions, page numbers, and number of transactions per page will be restored, and new searches will return to page 1.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Operation and management personnel who use AI assistant to monitor and view conversation record details, browse through the list, and enter and exit the details page
* Problem: The details were originally a pop-up window and the link could not be shared; after changing to a separate page, the timeline and statistical area running version appeared, and the filtering and page numbers were reset to zero when returning to the list.
* Repair: Add details page, front and back pen navigation and deep links; list columns can be clicked; filter and page number persistence and correct initial loading race condition; correct timeline and statistics area layout **Associated PR:**
  * maiagent-admin-vue #2859: [feat(agent-ops): add monitoring record detail page with deep linking](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/2859)
* maiagent-admin-vue #3089: [fix(agent-ops): Modify the layout and timeline rendering of the monitoring record details page, and support the entire list to enter details](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3089)
  * maiagent-admin-vue #3110: [fix(agent-ops): repair record-detail layout and persist monitoring filters](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3110)
  * maiagent-admin-vue #3114: [fix(agent-ops): hotfix record-detail layout and monitoring filter persistence](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3114)
  * maiagent-admin-vue #3120: [feat(agent-ops): restore monitoring list page and page size on back-navigation](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3120)
  * maiagent-admin-vue #3122: [feat(agent-ops): hotfix — restore monitoring list page and page size on back-navigation](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3122)
  * maiagent-admin-vue #3123: [fix(agent-ops): apply restored pagination via setPagination before the initial auto-fetch (develop)](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3123)

**Review Status:** ⚠️ First implementation

* **Conversation records can be added to FAQ with one click**: When managers find questions and answers that the AI does not answer well in the conversation records monitored by the AI assistant, they can directly click "Add FAQ" from the list operation bar or the title bar of the details page, and select a knowledge base with editing permissions on the same screen to create a question and answer: the question is pre-recorded with the user's original question, and the answer can be left blank and handwritten or click "Bring it into AI" "Reply" and bring in the original text (with quality score and feedback reminder) and then modify it; blank answers will not be sent, and if the writing fails, the draft will be retained. When there is no editable knowledge base, the entrance will be deactivated and the reason will be prompted. No more switching pages to create manually or import using a spreadsheet.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Monitor the quality of AI assistant responses in AgentOps and organize managers responsible for maintaining knowledge bases
* Problem: The conversation record details are read-only. After seeing a wrong answer, you have to change the page to manually create a FAQ or import it. It is easy to forget after reading it.
* Repair: FAQ entrance and creation form were added to the list and details pages; after the details were changed to independent pages, the connections were once merged and overwritten, and have been connected according to the new structure.

**Associated PR:**

* maiagent-admin-vue #3028: [feat: AgentOps conversation record one-click "Join FAQ"](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3028)
  * maiagent-admin-vue #3101: [fix: restore AgentOps Add-to-FAQ entries lost in #2859 merge](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3101)

**Review Status:** ⚠️ First implementation

* **Hook personal information detection and content security classification settings**: Organization managers can directly set two types of protection in the Hook setting form: 1. Personal information (PII) detection - after selecting a detection service (such as Google Cloud DLP), select the items to be detected from the general type (email, phone, Taiwan ID card number, etc.) and the service's native detail type (IBAN, credit card number, etc.), and the same menu will be displayed in partitions; 2. Content security classification - select the classification service (currently OpenAI Moderation), check the items to be intercepted according to categories such as hatred, violence, self-harm, jailbreak attacks, etc.; 3. The selected items will be automatically cleared when switching services to avoid failure due to type incompatibility during archiving. Both setup interfaces are available in five languages.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Organization managers who use the Hook function to set up personal information detection protection or content security protection
* Problem: When the template uses personal information detection or content classification fields, the form does not have a corresponding selection interface, and the settings cannot be completed in the background.
* Fix: Add two selection components, load detection/classification service directory, two-layer classification menu, switch services and clear selected items

**Associated PR:** - maiagent-admin-vue #2916: [feat(hooks): pii\_detect\_select schema field widget](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/2916) - maiagent-admin-vue #2922: [feat(hooks): guardrail\_classify\_select schema field widget](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/2922)

**Review Status:** ⚠️ Third Party Integration

* **Official built-in Agent market and organization management**: 1. Organization members can browse the officially provided built-in Agents in the market, search by situation, distinguish between enabled and inactive, and play back demonstration conversations in the preview window, bring in sample questions with one click, and view sample output; 2. Administrators can filter by status, category, keyword, enable or disable built-in Agents in batches, and specify open objects in the organization settings. Projects with full seats or cool-down periods will be locked and cannot be operated; 3. Activated official Agents The list of self-created AI assistants will not be mixed with the "Organization Self-Created" tab of the market. Organizations that have not yet been activated or have zero plan seats will not see the market entrance. Organizations that have rented it can still enter the management page to release instances.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Organization members who want to quickly adopt official pre-built Agents, and organizational managers responsible for enabling and allocating open objects
* Problem: The official built-in Agent lacks the external browsing entrance and the organization-side activation/seat management interface; the official instance locked after going online will be mixed into the self-built assistant list, and the entrance to the organization that has not been activated is fail-open.
* Repair: Added new marketplace (official built-in/organization-built double paging, category search, preview modal) and management page (batch switch, seat progress, cooldown badge, open object drawer); self-built list changed to source=self\_built filter; entrance gating changed to fail-closed, official paging uses seat\_limit, management entrance uses has\_rentals

**Associated PR:** - maiagent-admin-vue #2838: [feat(build-in-agents): agent marketplace browse & org management pages](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/2838) - maiagent-admin-vue #3036: [fix(build-in-agents): hide locked instances from self-built lists (source=self\_built)](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3036)

**Review Status:** ⚠️ First implementation

* **MaiGPT meeting record quick entry and calendar link**: 1. A new quick entry column is added to the MaiGPT blank dialogue page, providing four entrances for briefings, documents, tables and meeting minutes; organizations that have activated the meeting recording function can start real-time transcription with one click, and view timing, real-time verbatim transcripts and the last three records in the panel; 2. You can choose to connect to Google Workspace or Microsoft 365 Calendar, the panel lists upcoming meetings by date. For ongoing meetings, you can directly press "Record" and the title and participants will be automatically brought in; 3. After the recording is completed, an AI summary is automatically generated and displayed directly in the panel, which can be brought into the dialogue input box or open the full page; 4. The summary view can return to the entrance screen with one click.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Organization members who use meeting records in MaiGPT, want to start a meeting with Google or Microsoft Calendar and view the summary
* Problem: MaiGPT blank page does not have a meeting record entry; calendar binding, ongoing meeting recording, and post-recording summary cannot be operated without leaving the conversation page; the main switch of the shortcut entrance is never turned on in the official area, and the three entrances of briefing/document/form never appear; the summary view cannot return to the entrance screen, the click semantics of recent records are contrary to intuition, and the small button has no tooltip
* Fix: Added MeetingRecordQuickEntry panel (recording status, recent records, four states), calendar connection modal and Coming up meeting card, inline summary after recording; turn on quickEntryEnabled through runtime config (main and develop are implemented simultaneously); summary view changed to return key, click semantics reversed, tooltip and failure/no summary card yet, panel title removed from summary view

**Associated PR:** - maiagent-admin-vue #2896: [feat(meeting-record): add quick entry panel to MaiGPT blank page](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/2896) - maiagent-admin-vue #2897: [feat(meeting-record): calendar connection modal + meeting card](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/2897) - maiagent-admin-vue #3070: [chore: enable quick entry via runtime config (prod)](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3070)

* maiagent-admin-vue #3069: [chore: enable quick entry via runtime config (develop package)](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3069)
  * maiagent-admin-vue #3112: [feat: improve MaiGPT meeting record quick entry usability](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3112)
* maiagent-admin-vue #3139: [fix(chat): Only the return key is left in the upper left corner of the meeting record quick entry summary view, and the panel title](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3139)is removed.

**Review Status:** ⚠️ Third Party Integration

* **File preview supports presentations, SVG and Office layouts**: 1. Word file preview is changed to high-fidelity presentation, table borders, fonts and paragraph spacing are consistent with the original document, and the file is processed in the browser and is not sent to external services; 2. Excel preview retains bold, font color, background color, alignment and merged cells; 3. AI Presentation files generated or uploaded to the knowledge base can be previewed page by page directly. Presentations that have not been converted in advance will be converted immediately when opened and "Converting" will be displayed. The original presentation file will still be obtained when downloading; 4. Added SVG image preview. Applicable to users who open files in the information bar on the right side of MaiGPT and conversation pages.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Users who enable file preview in the knowledge base/output file bar on the right side of MaiGPT and conversation pages
* Problem: DOCX preview only extracts semantics and loses tables and layouts; XLSX preview cannot read cell styles and merges; PPTX and SVG cannot be previewed at all and can only be downloaded
* Fix: DOCX uses docx-preview instead, XLSX uses exceljs instead (both lazy chunk, pure front-end); PPTX uses back-end sibling PDF/previewUrl to display in the PDF previewer, and when there is no pre-conversion of PDF, the back-end is called for instant conversion and polling (1.5s × 40); SVG repackage MIME is displayed as an image and included in 20MB protection

**Associated PR:**

* maiagent-admin-vue #2804: [feat(maigpt-preview): High-fidelity DOCX preview (docx-preview) + new SVG preview](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/2804)
* maiagent-admin-vue #2806: [feat(maigpt-preview): XLSX cell style + merge cell (exceljs)](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/2806)
* maiagent-admin-vue #2809: [feat(maigpt-preview): PPTX preview (sibling PDF via backend)](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/2809)
* maiagent-admin-vue #2819: [feat(maigpt-preview): Upload knowledge base presentation (pptx) preview (via backend previewUrl)](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/2819)
  * maiagent-admin-vue #2863: [feat(maigpt-preview): on-demand PDF preview for pptx without pre-converted PDF](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/2863)

**Review Status:** ⚠️ First implementation

* **LINE WORKS dialogue platform officially supported**: Enterprises using LINE WORKS can now directly add LINE WORKS on the backend channel selection page, enter Bot and Client credentials, affix the private key, and then perform a connection test before establishing the dialogue platform; the established setting page provides the same eight tabs as other channels: basic settings, function settings, Webhook, customer service to real person, conversation label, conversation analysis, AI Copilot, and permissions. The certificate is only entered when creating it. The saved secret value will no longer be displayed on the edit page. Only read-only fields such as the Bot ID that can be verified will be retained.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Organization administrators who need to connect AI assistants to LINE WORKS
* Problem: There is no LINE WORKS channel creation and setting screen in the backend, and the first version only has 2 of the 8 shared tabs.
* Repair: Added a new LINE WORKS creation form (credential input, private key format check, serial connection test, permission gatekeeping, and no leakage of credentials on the edit page), and completed the five common tabs of Webhook/live transfer/conversation label/conversation analysis/Copilot

**Associated PR:**

* maiagent-admin-vue #3004: [feat(inboxes): LINE WORKS dialogue platform setting screen — PR4/4](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3004)
* maiagent-admin-vue #3068: [feat(inboxes): LINE WORKS completes the remaining 5 shared settings tabs](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3068)

**Review Status:** ⚠️ Third Party Integration

* **Viber conversation platform connection**: Viber is added to the background channel selection page. Just paste the Bot Token provided by Viber to create a conversation platform. The event receiving URL is automatically registered with Viber by the system, and there is no need to manually paste the URL in the Viber background. When creating, you can fill in the welcome message and reset instructions together. The settings page can manage functions, permissions, and customer service transfers in the same way as other channels. Since Viber itself does not support the recall of sent messages, the clearing option for waiting for replies will not appear in this channel.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Organization administrators and their Viber users who want to use Viber to interact with customers
* Problem: There is no Viber channel creation and management screen in the background
* Fix: Use Telegram form as a template to add Viber selection card, create form (Token, welcome message, reset command), eight-tab setting page, and hide the unsupported cleanup switch according to Viber's capabilities

**Associated PR:** - maiagent-admin-vue #3040: [feat: add Viber messaging platform integration (admin phase 2)](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3040)

**Review Status:** ⚠️ Third Party Integration

* **Web Chat with Source ID login-free conversation**: When the client website already has its own membership system, past visitors still have to log in again within Web Chat. Administrators can now turn on this feature on the login settings tab of the conversation platform, and choose two modes: signature verification (recommended) or no verification. The platform generates a signature key and provides three back-end examples of PHP, Node, and Python as well as a one-line front-end call; as long as the member identification and signature are included in the embedded page, Web Chat will directly start the conversation as that identity, and the login screen will no longer appear. Verification failed records can be expanded and viewed on the same page to facilitate troubleshooting of connection issues.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Customers and website visitors who have put Web Chat into their membership websites in MaiGPT or embedded mode
* Problem: The embedded page already knows the identity of the visitor, but Web Chat still requires another login
* Fix: New switches, verification mode, signature key management, validity period, integration examples and failure diagnosis are added to the backend login page; the Web Chat side passes the signature parameters to the backend for verification, and skips the login process after passing it. If the timeout or verification fails, the original login will still be returned.

**Associated PR:** - maiagent-admin-vue #3118: [feat(inboxes): Source ID login-free access settings in the login tab](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3118) - maiagent-vue #1500: [feat(embed): pass Source ID signature through setupAuth for login-free entry](https://github.com/Playma-Co-Ltd/maiagent-vue/pull/1500)

**Review Status:** ⚠️ Access Control

* **Web Chat waiting style and tool copy customization**: The waiting screen before AI reply and the tool execution card can be adjusted according to the brand: 1. A new "Reply Waiting Style" tab is added to the dialogue platform settings, with two modes of copywriting narrative or brand animation, setting multi-lingual copywriting and waiting lines step by step (inputting, thinking, analyzing, interruption), uploading brand animation materials, and using AI for one-click translation; 2. Real-time preview and actual Web Chat on the right Pixel-by-pixel alignment, complete process playback, and a new "Show text next to animation" switch to determine whether to display text during the input stage; 3. The tool can set the category and the text to be displayed during execution/after completion. The MCP connector can also specify a default category, and the tool card in the conversation will give priority to displaying these texts instead of the English technical name; 4. Web Chat Copywriting is applied according to the visitor's language, and the tool card can display customized running/completed icons (it automatically returns to the system icon if loading fails). When the visitor prefers to reduce the dynamic effect, the animation stops at the static screen.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Organization administrators who want to keep the Web Chat waiting screen and tool cards on-brand, as well as all Web Chat visitors
* Problem: The waiting screen only has system preset text and animations. When the tool card is closed, you have to guess the name on the front end. If you fail to guess, the English technical name is displayed.
* Fix: Added reply waiting style tab, real-time preview, tool category copy table, tool display copy tab and connector category in the background; Web Chat consumes these settings (phased copy fallback, brand mascot animation, waiting line timing, tool card display copy parsed by the backend)

**Associated PR:**

* maiagent-admin-vue #3013: [feat(inboxes): Webchat Loading display customization (setting tab + real-time preview + category copy + connector category)](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3013)
  * maiagent-vue #1455: [feat(chat): consume loading display customization (narrative copy / brand animation)](https://github.com/Playma-Co-Ltd/maiagent-vue/pull/1455)
  * maiagent-admin-vue #3128: [feat(inboxes): loading-display preview alignment + typing-copy toggle](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3128)
  * maiagent-admin-vue #2823: [feat(tools): tool category select + display-copy tab (data layer consumption)](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/2823)
  * maiagent-vue #1397: [feat(tools): consume category/displayText stream fields in tool cards](https://github.com/Playma-Co-Ltd/maiagent-vue/pull/1397)
  * maiagent-vue #1492: [feat(webchat): loading-display consumption — tool-card icons, narrative typing, typing-copy toggle](https://github.com/Playma-Co-Ltd/maiagent-vue/pull/1492)

**Review Status:** ⚠️ First implementation

* **Pre-chat data collection supports logged-in users**: When a logged-in visitor filled out the Pre-chat form, an anonymous contact without an owner would be created in the past, and the conversation and account could not match. Now the system will first identify the login identity: when filling in the first time, it will be directly linked to the account; if the account already has information, the form will be skipped and the conversation will be started directly; if an anonymous record left previously is detected, it will be asked whether it is the person and claimed before the conversation is established; refilling the data will only update the existing contacts and will not generate new ones. The behavior of anonymous visitors and chat platforms without login settings is completely unchanged.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Open login and pre-chat data collection dialogue platforms and their logged-in visitors at the same time
* Problem: When a logged-in user sends a Pre-chat form, an orphan anonymous contact will be created, and the conversation cannot be attributed to the correct account.
* Repair: Added login identity analysis, anonymous record claim confirmation screen, account dimension update, and retained the original anti-pollution gatekeeping

**Associated PR:**

* maiagent-vue #1459: [feat: Pre-chat data collection supports non-anonymous users (login identity connection + S3 claim)](https://github.com/Playma-Co-Ltd/maiagent-vue/pull/1459)

**Review Status:** ⚠️ Access Control

* **Contact batch import preview and merge mode**: Batch import of contacts is changed to two steps: after uploading the file, the statistics card of "X pens will be created/Y pens will be updated" and the summary of this setting will be displayed. No data has been written at this time, so you can return to modify; it will be executed after confirmation. At the same time, a new conversation platform attribution option is added. You can choose to replace the existing attribution with the imported content (default, the same as the past behavior) or merge into the existing attribution. When the number of items that can be imported is 0 or the import fails, you will be prompted and stay on the settings page to avoid misoperation.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Organization administrators who need to import or update a large number of contacts
* Problem: The import is executed directly in a single step. It is impossible to know in advance how many transactions will be created/updated, and the ownership of the existing conversation platform cannot be retained.
* Fix: Change the import window to preview → confirm the two-step process, add the replace/merge attribution mode, 0 pens and failure situations stay on the settings page

**Associated PR:** - maiagent-admin-vue #3063: [feat(contacts): bulk-import dry-run preview and inbox merge mode](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3063)

**Review Status:** ✅ No special review required

* **New Archives**: In the past, files could only be entered into the knowledge base or used as conversation attachments. The platform did not have a unified file management interface, and mistransmissions, accidental deletions, and accidental transfers could not be recovered. Members can now use the two spaces of "My Files" and "Organization Shared Files" to: 1. Create folders and import multiple files at once. If a single file exceeds 10MB, a prompt will be displayed before uploading; 2. View with a list or thumbnail, filter by file type, search across spaces, and display the full path; 3. Rename, move or delete files in batches, and restore misoperations from the version record with one click; 4. Operations without permission will be directly disabled and the reason will be explained when the mouse is hovered.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Members and managers who need to centrally manage personal and organizational files
* Problem: Files can only be entered into the knowledge base or used as conversation attachments. There is no unified management interface. Misoperation cannot be restored.
* Fix: Added file browser, multi-file import, rename/move/delete and version record restoration for both personal/organizational spaces. Operation front-ends with insufficient permissions will be directly disabled.

**Associated PR:** - maiagent-admin-vue #3031: [feat(file-library): P1 file library browser UI — spaces, folders, import and activity log](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3031)

**Review Status:** ⚠️ First implementation

* **Knowledge base file cross-knowledge migration**: When reorganizing the knowledge base content, in the past, you could only delete the file and re-upload it to another knowledge base, and then wait for parsing and vectorization. Now you can move files directly to another knowledge base using the same vectorization model in the knowledge base list or the AI ​​assistant's file list without re-parsing: 1. The shuttle box can search, paging, and check multiple files, and will remind you in advance which tags will be cleared; 2. The move is performed in the background and will not be interrupted when closing the window. After completion, a notification and an entrance red dot will be used to remind you; 3. The results drawer lists completed, skipped, and failed files respectively, and failed projects can be rerun with one click.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Knowledge base managers who need to adjust file ownership between multiple knowledge bases
* Problem: Files cannot be moved across knowledge bases, they can only be deleted, retransmitted and re-parsed and vectorized
* Fix: Added shuttle box moving window, background polling and result drawer, and saved files between the knowledge base of the same vectorized model without re-parsing

**Associated PR:**

* maiagent-admin-vue #3023: [feat(knowledge-base): Cross-knowledge base file migration UI (shuttle box + result drawer)](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3023)

**Review Status:** ⚠️ First implementation

* **MaiAgent role credit limit control**: In the past, organizations billed by Credit could only set quotas for members and dialogue platforms, and could not control the usage of each role. Now: 1. The "Role Quota" page is added to the Credit usage page, which allows you to filter, search, enable quota control for each role according to status, and distribute, edit or deactivate the quota; 2. Members can see the quota, used amount, remaining and expiration date of each controlled role in the "My Quota" on the personal page, with warnings of low water levels and imminent expiration; 3. A read-only quota summary card is added to the role setting page, and those with Credit permissions can go directly to manage it. The quota of each role is accumulated independently. If any quota is exhausted, the service will be stopped.

  \*\*Analysis Summary:\*\* - Impact: Organization administrators and general members in Credit-billed organizations that need to control usage by role - Problem: The quota chain had only two levels—members and conversation platforms—with no way to set quotas at the role level - Fix: Added a Role Quota tab, a My Role Quotas section on the profile page, and a quota summary card on the role settings page. All usage is recorded, and service stops when any quota is exhausted

  **Associated PR:**

  * maiagent-admin-vue #3018: [feat: add role credit quota tab, profile self-check and group settings card](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3018)

  **Review Status:** ⚠️ Billing-related
* **Self-service API key issuance and key source management**: Members previously could not issue their own personal API keys, and each person could hold only one active key. Members can now issue, view, filter, and deactivate personal keys from their settings page. Organization administrators can also see whether each key on the organization's API Keys page was issued by an administrator or self-issued by a member, and the one-active-key-per-person limit has been removed.
* **Plan history timeline added to the organization overview**: Organization members previously saw only the current plan name and expiration date, with no visibility into past plans or upcoming switches, often requiring them to contact support. A timeline beneath the Current Plan card now shows past, current, and pre-activated plans with their start and end dates, automatically switching to a vertical layout on mobile. When there are more than five records, only the most recent are shown by default; users can expand older records and return to today with one click.
* **Redirect to a specified URL after logout**: For on-premises deployments or organizations using single sign-on (SSO), the built-in admin login page is usually irrelevant, so landing there after logout was a dead end. Deployment administrators can now configure a post-logout redirect URL. Once configured, actively logging out, being logged out due to inactivity, or opening an admin link while unauthenticated all trigger a full-page redirect to that URL; using the Back button will not return users to the admin login page. Existing behavior remains unchanged when no URL is configured.
* **Self-service OAuth application registration for organizations**: A new "OAuth Applications" page in organization settings lets organizations manage applications used by MCP clients such as Claude without relying on platform staff. The page provides: 1. Create, edit, and delete applications, and regenerate client secrets, which are shown only once when created or regenerated; 2. An overview of connection details such as authorization and token endpoints, with one-click copy; 3. Visibility for all members, while only owners or members with the "Manage OAuth Applications" permission can make changes, and controls are disabled with an explanation for unauthorized users; 4. A limit of 20 applications per organization, with the Create button disabled and an explanation when the limit is reached.
* **Connectors can use Web Chat context data**: Organizations using MCP connectors can now specify which context-data fields are allowed in connector settings. Data passed by an embedded Web Chat, such as a patient identity token, can then be inserted into the authentication headers used to call the MCP server. This is suitable when conversation-side identity must be passed back to a hospital or enterprise system. Related updates include: 1. The configuration dialog for service-account connectors can now be reopened for editing, with a new configuration entry point in the list; existing headers are masked, and leaving them blank preserves their values; 2. The context variables help panel in the connector form now includes usage instructions and examples for context data; 3. Invalid field names or more than 20 fields trigger immediate warnings, and untouched fields are not overwritten.
* **AI images can be embedded in MaiGPT-generated documents**: When MaiGPT creates presentations, Word documents, spreadsheets, or AI Slides presentations, users can ask the assistant to generate covers, illustrations, or diagrams from descriptions and embed them directly in the document. Generated images are billed using the existing image-generation credits. If credits are insufficient or generation fails, the document is completed with text and layout elements instead, without interrupting output. Administrators can specify the image-generation model used for document generation in the admin interface.
* **Voice assistant monitoring dashboard**: AI assistant monitoring now has a dedicated voice assistant section: 1. The overview summarizes call architecture distribution, token composition, credit breakdown, and phone-answering statistics; 2. Individual call records can be inspected, including complete transcripts and usage details; 3. Newer calls record per-message metrics for every conversation turn, accurately mapping consumption to each turn. Older calls are clearly marked as lacking per-message metrics rather than being filled with estimates.
* **Organization-level platform processing fee**: 1. The platform can set a processing-fee percentage for an individual organization. Every credit consumption by that organization then incurs an additional processing-fee entry at the same rate, charged alongside the original consumption and recorded in the consumption log; reversing the original consumption also reverses the fee. 2. Customers see the rate actually applied to their organization on the Billing Method page. The rate defaults to 0, so billing remains unchanged for organizations without a configured rate. 3. This also closes a gap where direct AI Gateway calls and team workflow consumption were previously excluded from usage reports; future consumption is now counted correctly.
* **Resume interrupted multi-turn evaluations**: Multi-turn conversation evaluations now record results case by case and save each one immediately upon completion. If an evaluation stops partway because of a timeout, cancellation, or system interruption, it is marked partially complete and can resume where it stopped. Scores for completed cases remain unchanged; only failed or unexecuted cases rerun, and credits are charged only for newly completed cases. If no cases complete, the evaluation is marked failed rather than completed.
* **Safety metrics and flaky-case markers added to AI assistant evaluations**: When creating and viewing multi-turn evaluations, teams can select safety-related metrics and identify test cases with repeatedly inconsistent results, helping them prioritize quality risks.
* **Conversation platform handoff notification settings**: Administrators can configure handoff-event notifications in notification settings, automatically sending transfers to human service to a specified external system.
* **AI assistant favorites synchronization**: Favorite status for custom AI assistants is now saved to the account, preserving the frequently used list when switching devices or signing in again.
* **Attachment parsing progress display**: After an attachment is uploaded to MaiGPT, the conversation shows parsing progress and processing status so users can clearly see when the file is ready for AI use.
* **Custom display for Web Chat tool messages**: Administrators can choose a display mode and configure an output template for each tool, allowing Web Chat to present execution results in a more readable format.
* **Deep Research output format selection**: Users can specify an output format before starting research. When background-generated results are ready, they appear as a downloadable file card, with no need to remain on the page.
* **API key creation wizard**: API key management now includes a three-step creation flow, a shared information panel, and a provisioning status field, making it easier for administrators to confirm that configuration is complete.
* **AI Gateway dashboard and provider setup wizard**: Administrators can view service status, usage trends, and items requiring attention from the overview, then use a guided flow to explore providers, select models, and configure fallback order.

### 🚀 Core Performance Improvements

* **Faster Web Search Tool responses**: For AI assistant responses measured in production, median time to first token was 9.75 seconds with search and 3.27 seconds without it. This update removes three sources of pure waiting time: 1. Search connections are now reused instead of establishing a new encrypted connection for every search; 2. The per-search timeout was reduced from 60 to 15 seconds, reporting a failure on timeout so the assistant can try another approach instead of waiting idly; 3. Search summaries were expanded from 500 to 1,500 characters, reducing the extra round trip where the assistant fetches the full page after searching (observed in about 55% of search responses). Longer summaries slightly increase input Token usage per response.
* **Reduced unnecessary data transfer when loading conversation messages**: When viewing conversation messages, each page of 20 messages previously loaded the associated assistant's complete prompts from the database as well (about 14 KB per message on average and up to 300 KB per page for assistants with long prompts), even though the screen used only the assistant name. The query now retrieves only required fields, reducing measured single-page query time from about 22 ms to 14 ms. Organizations with more conversation history and longer assistant prompts will receive page responses faster.
* **Faster calendar-event loading for meeting records**: When the meeting records panel loads Google or Microsoft calendar events, it now immediately returns the existing calendar cache and refreshes it in the background, so external calendar service latency no longer delays the response. The slowest 1% of requests previously took more than 15 seconds; they now respond directly from cache and are marked pending refresh. Members with expired calendar authorization no longer retry a refresh that is certain to fail on every request. Retries now start at one-minute intervals, double progressively up to one hour, and return to normal immediately after reauthorization.
* **Faster Web Chat message responses**: Whenever a visitor sent a message through Web Chat, the server previously read the same Web Chat configuration six times and performed an additional reverse lookup that scanned approximately 70,000 inbox records. Each message now resolves the configuration only once and shares it across all subsequent processing steps. Web Chat configuration reads have dropped from six to one, and the reverse lookup, which averaged about 10 milliseconds, has been removed entirely. The response format remains unchanged.
* **Faster inbox selector loading**: The inbox dropdown loaded when entering the admin console—also used on the contacts page and in the role inbox assignment form—fetches every readable inbox in the organization at once. Previously, each record also loaded hundreds of fields unused by the selector, such as prompts, welcome messages, and topics. It now reads only the fields displayed in the selector. In testing with an organization containing approximately 1,087 Web Chat inboxes, a request fell from 210 milliseconds to 157 milliseconds and transferred about 500 KB less data. Regular paginated lists are unaffected.
* **Faster creation of new Web Chat conversations**: The first request made when a visitor opens Web Chat to start a new conversation previously ran three permission and data queries that each scanned all approximately 70,000 records because the inbox table lacked the relevant index. A single request therefore spent about 22 milliseconds on database work. With a dedicated index, all three queries now use direct lookups. Queries for every incoming message across channels and for Web Chat contacts also benefit, while the response format and functional behavior remain unchanged.
* **Lower memory usage for conversations with large tool outputs**: Restoring an old Ask AI or Web Chat conversation containing extensive tool execution results—nearly 3 MB on one page in an actual customer case—caused the interface to freeze for about one second and memory usage to keep rising while typing until browser history was cleared. Tool card step lists and details now load only when first expanded, and tool results longer than 20,000 characters show only the beginning with a truncation notice. In testing with the same conversation, page nodes fell from 5,056 to 2,533, resident memory from 255 MB to 158 MB, and the pause when opening the conversation was also slightly shorter. Card appearance and collapse animations remain unchanged.
* **Faster PDF vision parsing**: Knowledge bases that parse PDFs through vision previously sent a separate recognition request for every page; a 150-page document took nearly 30 minutes in testing. Multiple pages—10 by default—are now combined into one request. If the output is truncated or too large, the batch is automatically halved and retried until it reaches a single page. The per-page result structure remains unchanged. The speedup from multi-page batches varies by vision model; internal testing with Claude Sonnet 5 was approximately 1.5 times faster.
* **Faster role member list loading**: When opening a MaiAgent role's member list or member edit form, the system queried the organization's plan once for every member. A role with more than 3,800 members generated thousands of queries and took over one second on average to respond. Plan data is now prefetched once, so the query count no longer grows with the number of members: for a role with 3,826 members, queries fell from 3,826 to one, while a paginated list fell from 20 to one.
* **Faster Telegram message intake**: For organizations using Telegram as a conversation channel, every incoming message previously fetched the sender's avatar from Telegram twice, resulting in a median processing time of about 1.6 seconds per message. An avatar fetched within the last 24 hours is now reused for the same user; it is fetched again only for a new user, an empty avatar, or after 24 hours. Based on actual repeat rates, processing time is estimated to fall to approximately 0.6–0.9 seconds. After a user changes their avatar, the contact avatar in the inbox may take up to 24 hours to update, while the display name is still updated with every message.
* **Faster AI assistant ranking dashboard loading**: When the assistant ranking on the Agent Ops dashboard is opened for an organization with many conversations, the query now calculates only the fields needed for ranking. Error counts use a dedicated index path, and assistant names are queried only for the top 50. Each load no longer reads wide columns across the entire batch of conversation records or the organization's full assistant list, shortening the wait for the dashboard to open.
* **Faster Messenger message intake responses**: Incoming Facebook Messenger and Instagram messages now receive an immediate platform response after signature verification, while message processing runs in the background and no longer queries Facebook synchronously for contact data during intake. Endpoint response time is expected to fall from about 0.5 seconds to under 0.1 seconds, also reducing the risk of Meta redelivering messages or suspending event notifications because of slow responses.
* **Faster keyword search for knowledge base files**: When searching by keyword in a knowledge base containing tens of thousands of files, redundant deduplication has been removed from pagination count calculation. In testing, the same query fell from 832 milliseconds to 96 milliseconds and no longer created a disk-backed temporary sort, reducing the delay after every keystroke during incremental search.
* **Faster filtering on the built-in AI assistant management page**: When switching categories or searching on the built-in AI assistant management page in organization settings, audience data for all assistants is now retrieved in one batch query instead of one request per enabled assistant—which reached 75 requests in testing. Organizations with many enabled assistants can now switch filters without the interface freezing.
* **Lower background resource usage for embedded Ask AI**: Unnecessary rendering and timer work now pauses when the page or browser tab is not visible and synchronizes state when the page becomes visible again, reducing processor and memory usage during long sessions.

### 😊 User Experience and Interface Improvements

* **AI Gateway traffic-fee pricing display**: For organizations billed through AI Gateway while using self-hosted models (BYOK), the traffic fee row on the pricing page now displays the formula “total tokens × the organization's rate,” with the tooltip populated with the organization's actual percentage. “Platform fees” has been added to the category filter in consumption records and to the category tabs in usage statistics, so traffic fees are no longer excluded from the pie chart and total. The AI Gateway model list also has a new “Pricing” column, where self-hosted models display the traffic-fee formula.
* **Three-level Agent Marketplace filtering and recently used Agents**: The official tab of the Agent Marketplace has been redesigned: 1. Filtering now has three levels—tab → category group → multi-select tags—with no selection meaning no restriction. 2. Cards now use a light background in their category's primary color. Each of the 14 categories has a dedicated color, and the icon fills the entire color tile using the same color family as the category tag in the upper-right corner. The Marketplace, recently used section, preview window, and management list now display cards consistently. 3. A new “Recently used” section lists the five Agents used in the most recent conversations; hover to continue a conversation. 4. Seat count is included in the page title, with separate empty-state messages for no search matches, no filter results, and no enabled Agents.
* **Connector tab in assistant settings available to everyone**: The “Connectors” tab in AI assistant settings and the “Connector binding” item under advanced organization features previously appeared only after the platform enabled them individually. All organizations can now view and use the Connectors tab whenever an assistant has Agent mode enabled, without requesting separate activation.
* **Red confirmation buttons for irreversible actions such as deletion**: After clicking a red delete icon in the admin console, the primary button in the confirmation view previously used the brand blue that represents a “safe default,” contradicting the consequences of the action. This update: 1. Changes confirmation buttons to solid red in table-row confirmation popovers and centered confirmation dialogs for deleting SIP numbers, teams, Hooks, crawler schedules, meeting records, conversations, MCP connectors, AI Gateway items, and more. Non-destructive confirmations such as signing out or leaving with unsaved changes remain blue. 2. Changes the API Key revocation confirmation button to the verb “Revoke,” and icon-button tooltips explain the action or why it cannot be revoked. 3. Stops automatically inserting spaces in two-character Chinese buttons across the site, restoring “確 定” to “確定” so letter spacing matches surrounding text.
* **Closable AI presentation preview panel that remembers its state**: After MaiGPT generates an AI presentation, the top row of the right-side preview panel now includes a close button. Once closed, the panel no longer reopens when the next message is sent or the page is refreshed, and remains closed when switching to another conversation and back. An “Open presentation” card appears at the end of the message that generated the presentation, allowing the panel to be reopened at any time. On narrow screens such as phones, the panel now overlays the conversation area so the close button and input box are no longer clipped. It still opens automatically when a new presentation is generated.
* **Fixed-width right information panel and resizable document preview**: The right-side knowledge base and generated-file card panel in MaiGPT and conversation pages now has a fixed width, with no resize handle on its left edge. Document previews opened from cards now appear in a separate floating layer that can be resized from 400 to 800 pixels by dragging its left edge. Each user's setting is remembered, and resizing the preview does not affect the card panel itself. The hover target for collapsing the sidebar has been widened to 24 pixels, making it easier to reach; the cursor indicates clicking and changes to a resize cursor only while dragging.
* **Background generation and progress display for meeting-record AI summaries**: Summaries are now processed in the backend, so transcripts from long meetings no longer fail to generate because the frontend times out. The summary page shows progress as “Analyzing transcript N/M → Compiling summary N/M” and automatically resumes when returning after leaving or refreshing the page. Upon completion, the result immediately becomes a new version, and any version can be deleted. Generation failures show a consistent retry message. The assistant selector lists only available assistants and uses the default template when none are available.
* **Meeting transcript load-failure notice and retranscription dialog**: If repeated attempts to load a transcript on the meeting record details page still fail, the page now shows a “Failed to load transcript” error and a reload button instead of confusing the failure with the empty state for meetings without transcripts. Retranscription now uses a dedicated dialog combining history, speech recognition provider selection, and speaker diarization settings. Fields in the offline audio import form are no longer clipped at mobile widths.
* **Login guidance for unauthenticated embedded Copilot views**: When the AI Copilot page is embedded in an external system such as Genesys Cloud, the browser isolates the embedded window’s login state from the main window. As a result, agents often saw only a generic “You do not have access to this conversation” error without knowing what to do. Unauthenticated users now see a direct “Please log in first” prompt and a “Go to Login” button. After logging in within the embedded window, they are automatically returned to the original conversation page, and only need to log in once per browser thereafter. Organizations using Google Account single sign-on must still use an account and password instead, because Google does not allow its login page to be displayed in an embedded window.
* **Synchronize conversation platform names when renaming AI assistants**: After an AI assistant is renamed and saved, a confirmation dialog now lists its connected Web Chat, LINE, Telegram, and other channels. Administrators can select which platforms to rename at the same time, without editing each platform’s settings individually. Built-in platforms managed by the system are synchronized automatically and are not included in the selection. The assistant deletion flow has also been fixed: selected platforms are now deleted before the assistant, resolving an issue where the system reported success even though the platforms had not actually been deleted. If some platform deletions fail, the failed items are listed accurately and the assistant is retained so the operation can be retried.
* **Display setting names and translated language names in the top-right menu**: Web Chat end users previously saw only values such as “Traditional Chinese” and “Dark” in the top-right menu, making it difficult to identify what each row configured. The locale, speech language, and theme rows now use the “Name: Value” format, consistent with the existing speech playback and font size rows. Language lists in the top-right menu, pre-chat form, and MaiGPT settings dialog now also use “Native name (translation in the current interface language),” such as English (英文). Language searches can match the native name, translated name, or language code. If a translation is unavailable, only the native name is displayed, with no empty parentheses.
* **Dedicated desktop Web Chat layout and quick access to common settings**: Previously, opening full-page Web Chat in a desktop browser simply stretched the mobile layout, leaving content confined to a narrow centered column with large blank areas on both sides, while font size controls were difficult to find in the second level of the “⋮” menu. Now: 1. When the viewport exceeds 768px, the message list and input box expand fluidly up to 1200px, while user message bubbles are capped at 72% of the content area; 2. Font size, theme mode, speech playback, and interface language settings are permanently available in the header and accessible in one step, subject to each conversation platform’s feature toggles; 3. After the relocated items are removed from the “⋮” menu, the entire menu is hidden if no items remain, and any open drawer is automatically closed when the viewport expands from narrow to wide; 4. The loading skeleton and loaded content area now have the same width, eliminating layout shifts. The mobile layout and embedded floating bubble remain unchanged.
* **MaiGPT right panel redesigned as collapsible cards**: The “Knowledge Base” and “Outputs” sections in the right panel of MaiGPT and conversation pages previously used horizontal tabs. They are now presented as two vertically stacked cards: 1. Only one card can be expanded at a time, and clicking an expanded card collapses it; collapsed cards still display a thumbnail and one-line description. Newly generated files are indicated with a count badge instead of automatically opening the panel; 2. Controls in the expanded knowledge base card have been condensed into a single row. The scope filter is always visible and defaults to “All Knowledge Bases,” while the “N/M selected” count updates in real time with the filter scope; 3. The right panel background now merges with the conversation area as a single white canvas, while the divider is transparent with only its handle remaining, making card boundaries and titles easier to distinguish.
* **Actionable guidance when conversation attachments exceed the limit**: The conversation attachment limit is 10 MB. When contracts, medical records, official documents, or other files exceed this limit, users no longer encounter only a “File size exceeds the maximum limit” message with no way forward. Admin conversations and MaiGPT now display a guidance dialog explaining the limit and providing a “Go to Knowledge Base” button, where the limit remains 100 MB. Members without knowledge base permissions are instead prompted to contact an administrator. Web Chat visitors see “Please contact an administrator to add the file to the knowledge base,” along with practical alternatives such as pasting relevant sections or splitting the content into smaller files; audio files also include compression guidance. Size validation now occurs before the file is read, so files dozens of MB in size receive an immediate prompt. Limit values always follow system settings.
* **Group database tables by source file**: When a multi-sheet Excel file was uploaded to create a MaiAgent database, each worksheet previously occupied a separate row displaying the same filename, making the tables difficult to distinguish. The table list is now grouped by source file, with expandable and collapsible groups showing the filename, associated knowledge base, and table count. Each table also identifies its source worksheet. Newly created tables that appear during upload processing are displayed directly under their corresponding files.
* **Added the “Micro” plan name**: Organizations subscribed to the Micro plan previously saw a blank plan name or English code on plan, billing, and organization information pages. All five interface languages now display the corresponding plan name, such as “微型版” in the Traditional Chinese interface.
* **Automatic MaiDesk login from the Support Center entry point**: Clicking “Support Center” in the top-right corner of the admin interface previously required users to log in to the customer service system again using an Email verification code. Because no account information was passed through, all resulting tickets were assigned to the demo organization. Clicking the link now automatically logs users in to MaiDesk with their current identity and passes through their actual organization, so tickets are assigned directly to the correct company. If automatic login fails, users fall back to the original login page without disrupting access.
* **Site-wide brand identity refresh (v1.4)**: Logos, wordmarks, favicons, and mobile installation icons across the admin interface and Web Chat have been updated to the new brand assets: 1. The default admin sidebar width has been adjusted to 240px so the new horizontal wordmark remains clear and legible, with the login-page logo height adjusted accordingly; 2. Favicons now use vector format and no longer appear blurry on high-resolution displays; 3. Web Chat installation icons for iOS and Android now use a white background, and preview images for shared links have also been added. Custom assets for white-label customers are unaffected.
* **Organization Overview advanced feature labels aligned with product specifications**: The “Advanced Features” section of Organization Overview previously contained two mislabeled items (the call center was labeled as a customer service center, and the Hook engine was labeled as a Webhook system), one label that had never worked, and no indication of which plan included disabled features. Labels and ordering now match the product specification sheet. Disabled features are marked “Enterprise” with activation instructions in their tooltips, while Beta features are marked as Beta in labels, sidebar menus, and page titles. Sales teams can now use this page directly to explain plan differences to customers.
* **Manage My Connectors redesigned as a four-state overview**: “Manage My Connectors” in MaiGPT previously had only a single “Connected／Not Connected” label, so members could not tell whether the organization had not enabled a connector or whether they had not personally authorized it, and expired credentials were not visible. After the redesign: 1. The list now uses a master-detail layout with the connector list on the left and details on the right. Each connector displays one of four states: “Authorized,” “Pending Authorization,” “Reauthorization Required,” or “Not Enabled,” with items requiring action listed first; 2. Users can search and filter by state, with counts displayed for each state; 3. Pending authorization shows the access scopes that will be requested, while authorized connectors display the authorized account, authorization time, authorized scopes, and credential expiration; 4. Members can submit enablement requests directly for connectors their organization has not enabled, with status updated immediately after submission; 5. Disconnecting requires confirmation to prevent accidental clicks from forcing users to repeat the entire authorization flow; 6. If a connector icon fails to load, the first letter of its name is displayed instead.
* **MCP app card width adapts to the device**: In Web Chat, interactive app cards, such as presentation cards containing sliders or multi-column statistics tables, were previously limited to 448 pixels wide on every device, crowding their contents on tablets and desktop computers. Cards now follow the same rules as Flex messages, allowing their content to determine their width so they can expand fully on tablets and desktops. On mobile devices, they remain constrained by the message column width, so their display is unaffected.
* **LlamaParse parsing migrated to tiered mode**: Knowledge base and conversation attachments processed through LlamaParse now use the new tiered parsing system, defaulting to the advanced tier with cost optimization so simple pages are automatically handled at a lower tier. Results are now returned in Markdown format with table structures preserved, making it easier for question-answering retrieval to match the correct passages in table-heavy documents. Operations staff can switch parsing tiers or pin versions as needed.
* **Vision parser analyzes original embedded images**: 1. When parsing PDFs containing instructional screenshots, embedded images are now sent to the model at their original resolution alongside the page, so details such as menu paths and red-box annotations are no longer misinterpreted because of full-page thumbnail scaling. For the same customer document, correct menu-path parsing improved from one out of four runs to all four; 2. The per-page output limit has been increased so content-dense pages are no longer silently truncated in the middle of tables, and a warning is recorded when truncation does occur; 3. Chunk size and overlap can now be configured individually for each parser, preventing highly structured parsing results from being split by global chunking rules, while parsers without custom settings retain their existing behavior.
* **Response traces now list model-call timing individually**: When viewing response traces for MaiGPT or Agent-mode assistants in AgentOps, administrators previously saw only the aggregate model token count for the entire turn and could not determine how long each model call took. The timeline now lists the start time, time to first token, end time, and token counts for every model call, making it easier to identify which step is slowing down a response. The model processing time for each record is now also the sum of all model calls in the same turn. For turns involving multiple calls, such as tool loops, this means that old and new records use different calculation methods in statistical charts.
* **Improved multilingual interface consistency**: Added complete text for all five languages across billing, conversations, login, AgentOps, tools, identity synchronization, and other pages, while correcting Japanese and Korean translations and date displays.
* **Improved AI assistant marketplace browsing and previews**: The self-built assistant tab now uses the same card layout as the official marketplace, displays content based on permissions, avoids repeated background loading, and shows the greeting for the selected language in previews.
* **Improved text display in pre-chat forms**: Field labels and descriptions can now include line breaks and clickable links, keeping longer notices, privacy policies, and instructions clear and readable.
* **Added external participants to meeting records**: When creating or editing a meeting record, users can now directly enter external participants who are not in the organization member list, preserving complete attendance information.
* **Consistent ordering for usage and billing details**: Credit usage, transaction records, and AgentOps details are now shown in the same order, with image embedding usage included to make item-by-item cost reconciliation easier.
* **Credit quota reset cycle settings**: Reset cycles can now be configured separately for credit quotas at the organization, plan, and member levels, allowing management policies to accommodate different budgeting systems.
* **Knowledge base similarity threshold setting**: Administrators can now adjust the similarity threshold when editing a knowledge base, providing more precise control over which search results are available to AI assistants as references.

### 🔐 Security and Governance Enhancements

* **Role-based access control for the AI Gateway menu**: Previously, once an organization enabled AI Gateway, every member could see its menu. Role permissions now include an “AI Gateway permission” checkbox. Roles without this permission will not see the AI Gateway tab in the sidebar and cannot access it directly by URL. The permission has been added automatically to default roles in organizations where AI Gateway was already enabled. For organizations that enable it later, an administrator must select the permission in role settings.
* **Input Hook checks now cover knowledge base and attachment content**: For AI assistants configured with an input Hook, such as PII masking, checks previously applied only to text entered by the user. Uploaded files and passages retrieved from a knowledge base were sent directly to the model without masking. In standard reply mode, attachments and knowledge base passages now pass through the same Hook before being sent to the model. Content identified for masking is replaced with the masked version. Blocked content is not sent to the model, while the assistant continues to answer from the conversation history; the message record also indicates that the retrieved content was blocked and not sent to the model. No additional configuration is required, and the cited sources panel remains unchanged.
* **AI assistant settings displayed and locked based on edit permissions**: The “AI Assistant Settings” button in the Agent marketplace and other entry points is now available based on each member’s edit permission for that assistant: 1. Members without edit permission do not see the button, preventing them from completing the form only to be denied when saving. 2. When the settings page is opened directly from a bookmark, shared link, or AgentOps, it initially loads in read-only mode and checks permissions again before enabling editing. 3. For organizations whose plans do not include the assistant building module, the marketplace settings button, AI assistant menu, and Agent marketplace entry are all hidden; entering the URL directly also redirects users to an available page.
* **Agent marketplace now indicates when a member lacks usage permission**: When an organization has enabled an official Agent but the current member is not among the permitted users, the marketplace card remains in the “Enabled” section and displays a lock and “No usage permission” label, while the “Start Conversation” button is disabled. Clicking the card or the button in the preview window prompts the member to contact an organization administrator. Members can therefore distinguish between “not enabled by the organization” and “not authorized for me” instead of assuming the feature is broken.
* **Meeting record visibility is now consistently controlled by role permissions**: Meeting record visibility for every organization is now determined exclusively by role permissions, and the “Meeting Privacy Mode” indicator is no longer shown in the advanced features section of organization settings. When “Meeting record permission” is selected in the role editor, “Meeting record management permission” (which allows viewing all meetings) is now selected by default. Administrators can clear it to restrict members to meetings they participate in. Existing permission settings saved for current roles remain unchanged.
* **Allowed embedding domain settings for Web Chat**: Previously, restricting which websites could embed Web Chat required an engineer to modify the system backend. Administrators can now add or remove allowed embedding URLs below the custom domain field on the “Basic” tab of conversation platform settings. Input is validated immediately and capitalization and trailing slashes are normalized automatically, preventing misspellings from causing the browser to block the embedded page with no obvious explanation. An empty list means any website may embed Web Chat. Web Chat also reports the actual embedding page origin to the platform for comparison, and embedding is rejected for websites not on the list.
* **Added a permission to view all conversations for conversation platforms assigned to roles**: Previously, assigning a conversation platform to a MaiAgent role allowed members with that role to view every conversation on the platform from the “All Conversations” page. If the same platform hosted sensitive AI assistants, such as those used by HR, those conversations were also exposed. The “Assigned Conversation Platforms” table in role settings now includes a separate “View all conversations” checkbox column, with a select-all header and explanatory tooltip. Administrators can authorize members to handle human handoffs and use the platform in the Agent marketplace without allowing them to browse every conversation.
* **Web Chat embed messages now lock onto the target website origin**: When customers ran security vulnerability scans such as Fortify WebInspect on their websites, cross-window messages between the Web Chat embed and the page were flagged as having an “overly permissive messaging policy” because no recipient was specified. Both sources have now been eliminated: the self-detection message sent by the attachment preview package when the page loads is no longer triggered, and the embed code supplies the embedding page’s URL origin when creating the window, locking the recipient from the first startup signal. Tests showed five messages with unspecified targets on each load before the fix and zero afterward. Legacy embedding without the parameter behaves as before.
* **o3-mini retired in favor of GPT-5.6**: The provider will soon discontinue o3-mini. AI assistants configured to use o3-mini and active conversations still pinned to it will automatically switch to GPT-5.6 luna with no manual changes required. GPT-5.6 luna has lower input and output rates than o3-mini, so costs will only decrease after the transition. Calls through AI Gateway using the original o3-mini identifier will continue to work, with responses generated by GPT-5.6 luna. Hidden reasoning is no longer included after the transition, so spot-check response quality for reasoning-intensive tasks.
* **Fixed Ask AI remaining usable after sign-out**: Previously, signing out of the admin console while the Ask AI sidebar was open left the sidebar on the login page, where users could continue asking questions, and the identity in the embedded window was not cleared. Signing out now first closes the Ask AI window and clears the embedded identity. Web Chat simultaneously disconnects the real-time connection, clears the current conversation and history list, and returns to an uninitialized state, preventing input on the login page. After signing back in, Ask AI can be reopened normally and the identity is injected again.
* **Fixed Ask AI actions affecting an organization other than the current one**: For admin users who belong to multiple organizations, Ask AI tool actions could previously be applied to an organization other than the one currently selected. The user’s current organization identity is now included when creating a conversation and sending messages, binding the conversation to the organization where it began. After switching organizations, Ask AI automatically switches to that organization’s most recent conversation, or starts a new one if none exists. The conversation history sidebar also lists only that organization’s conversations, and the title bar displays the currently bound organization name without duplicating badges in centered-title mode. If the identity expires, the conversation automatically continues in anonymous mode without interruption.
* **Fixed AI citing all data when label filtering fails**: When an organization uses label filters to restrict AI to specific knowledge base data, renaming or deleting a filter label—or submitting a query before label data has finished loading—could leave the filter blank and prevent the query from correctly limiting the citation scope by label. In MaiGPT, search testing, and contact query settings, labels that cannot be resolved are now shown in gray with a warning icon. Query submission is blocked with a prompt, and invalid labels can be removed with one click before making a new selection.
* **Hook inspection now covers tool returns in Agent mode**: For AI assistants with Hook enabled, content returned to the model by tools such as attachments, knowledge bases, MCP, browsers, code execution, and Skills in Agent mode now passes through the existing input inspection rules first, with no additional configuration required. If blocked, only that tool result is withheld from the model and the conversation continues. Each inspection leaves an execution record that identifies the source tool, making it possible to trace which tool supplied sensitive content to the model.
* **Recording credentials now expire immediately after a meeting ends**: A credential for joining the meeting room is issued when meeting recording begins. Previously, that credential could be reused while still valid after the meeting was completed, potentially creating an empty room without recording or transcription services. The credential is now revoked when a meeting is stopped manually or when the system reports completion or failure, and subsequent connections using the same credential are rejected. A revocation failure does not affect meeting finalization, recording output, or usage settlement.
* **New models now automatically include billing rules**: When the model catalog is synchronized, credit billing rules are now created for LLM, Embedding, and reranking models, with prices aligned to each provider's current rates. Previously, newly listed models without dedicated rules fell back to a provider-wide price or floor price, causing some premium models to be billed at several times below their actual cost. Models still missing an input or output price after synchronization remain disabled and cannot be used while unpriced. Existing rules customized by administrators are not overwritten.
* **Consistent MaiGPT role-permission guidance**: Users without permission no longer see settings entry points they cannot use. Restricted actions now display a clear reason, avoiding rejection only after users enter the feature.

### 🛠️ Bug Fixes

* **Fixed caching and list-price billing rules for multiple models**: 1. Input/output rates for GPT-5.6 sol/terra/luna and Claude Sonnet 5 now match the current prices of the actual provider channels; 2. The GPT-5.2 cache-read rate has been corrected to 0.3 times the input price, and amounts previously configured above this ratio are no longer overcharged; 3. Missing cache-read/write rates have been added for 25 active platform models, preventing cache tokens from being billed at the base unit price; 4. Cache rates for all platform models are now standardized at 1.5 times the input price for writes and 0.3 times for reads across providers. Organization-hosted (BYOK) models continue to be billed by traffic and are unaffected.
* **Fixed error guidance when tool calling is not enabled in vLLM**: When an on-premises self-hosted model uses vLLM without automatic tool selection and a tool-call parser enabled at service startup, every response from an AI assistant with a knowledge base or tools fails, and users previously saw only “The system is temporarily unable to process your request.” This made it easy to mistake the issue for a model limitation and switch models unnecessarily. The message now clearly indicates that the model service startup parameters must be adjusted and is distinct from the message shown when the model itself does not support tool calling, allowing administrators to address the actual cause directly.
* **Fixed blank display when an assistant's bound model is disabled**: After an organization disabled a model, the model selector on the edit page for an AI assistant still bound to that model appeared blank, making it seem as though no model was configured. It now shows an unselectable “Model Name (Disabled)” option with a warning that prompts the user to choose an available model. The warning and disabled option disappear immediately after another model is selected.
* **Fixed assistant settings form disappearing when a model becomes invalid**: Three long-standing production errors are fixed at once: 1. On the AI assistant settings page, the entire “Response Mode Settings” form disappeared when the selected model was delisted, organization permissions changed, or the model list had not yet loaded. The full form now remains, with only the output mode options temporarily hidden; 2. When a user without AI assistant permission opened the knowledge base list, related-assistant tags triggered a frontend error. Names are now displayed but cannot be clicked; 3. Network timeout and disconnection errors are now reported using standard error objects, allowing the Keycloak login page to retrieve the error message correctly and error tracking to group events by message.
* **Fixed Deep Research failures with specific Claude models**: When an AI assistant used Claude 4.8 Opus or Claude 5 Sonnet, Deep Research failed every time during planning because Bedrock rejected structured output. The planning stage now obtains structured results through tool calling, restoring Deep Research for both models. The planning stage is also limited to three model calls, so if the model repeatedly fails to produce a valid plan, an error is reported immediately instead of failing only after thousands of retries.
* **Fixed Hook inspection failures caused by oversized tool returns**: For AI assistants configured with content-review or personal-data-detection Hooks, when tool query results or retrieved content exceeded approximately 32,000 characters—such as extensive retrieval results or large text attachments—the entire inspection failed and blocked that content from reaching the model, leaving the response without the necessary data. Oversized text is now automatically split for inspection before the results are recombined. Personal-data findings that overlap at segment boundaries are also merged into complete ranges, allowing long content to pass inspection and be used in responses normally.
* **Fixed personal preference fields accepting submissions over the limit**: When users entered “Personal Preferences” on the profile page or in the organization member edit dialog, the UI allowed up to 2,000 characters, but the value was rejected when saved. The input limit is now 1,000 characters with a character counter. Excess input is blocked while typing, avoiding cases where completed content cannot be saved.
* **Fixed raw markup text appearing in the Deep Research progress panel**: When Deep Research was used in a conversation, step details in the progress panel appeared as unreadable, unparsed markup. Progress is now presented as structured steps, with each tool call and result displayed using the same step cards as regular conversations. Previously generated conversation records are also automatically converted to a readable format.
* **Fixed oversized messages freezing Web Chat**: If a conversation contained a single-line post of approximately 95,000 characters, Web Chat and Ask AI froze for more than two minutes when opening or automatically restoring that conversation, making all MaiAgent windows unresponsive. Messages with a single line over 2,000 characters or total content over 50,000 characters are now shown as collapsible plain text without full formatting, allowing conversations to open normally.
* **Fixed usage chart legends overlapping the X-axis**: When viewing usage statistics in English, Japanese, or Korean, long chart legend text wrapped and overlapped the X-axis labels, making them unreadable. The overlap was more pronounced when cached data increased the legend to four items. The 12 charts across all six tabs now reserve bottom space dynamically based on locale and legend item count, recalculating immediately when the locale changes or the window is resized. Chart titles such as “Daily Tokens by Member” have also been corrected to use proper spacing in each locale.
* **Fixed database table management displaying only the first 20 tables**: When an Excel file with multiple worksheets was uploaded to create a database, each worksheet created a separate table. If there were more than 20 tables, the table management page listed only the first 20, making the rest invisible and giving users the impression that files were missing. Up to 100 tables are now shown per page, with pagination appearing only above that limit. After upload, completion is also determined using the total count reported by the backend.
* **Fixed later saves overwriting earlier changes when multiple people edit assistant settings simultaneously**: When two tabs or two members opened the settings page for the same AI assistant at the same time, the person saving later sent the entire stale snapshot from when they opened the page, silently reverting fields the other person had just saved, such as a newly selected model. Before saving, the page now checks whether someone else has updated the assistant. If it has changed, the user is prompted to reload before saving, preventing overwrites.
* **Fixed AI replies referencing nonexistent knowledge base images**: When using knowledge base files containing images, AI replies occasionally referenced mistyped or fabricated image links. Web Chat displayed a red “Image failed to load” box at every step, and the assistant supplied another broken link when users followed up. Before a reply is saved, each referenced knowledge base image is now verified to exist, and any nonexistent image is removed entirely. This protection applies when conversations are reloaded and across channels such as LINE, Teams, and API; external and generated images are unaffected. A broken image may still appear briefly in a response while it is streaming, but the clean version appears after refresh.
* **Fixed HTML table replies appearing as plain text**: When a model output a table directly as HTML, usually with attributes such as borders and styles, security filtering in Web Chat and the admin conversation view downgraded the entire block to plain text, so users saw table markup instead of a table. Tables are now rebuilt from a fixed template and use the existing table styles. Only merged-cell information is retained, while original attributes are discarded. Tables display correctly in dark mode and on mobile. If a table contains unsafe tags, it still falls back to text, so security protections have not been relaxed.
* **Fixed AI fabricating content from filenames when attachments cannot be read**: When users uploaded an unsupported or corrupted attachment from which the system could not extract text, the AI assistant sometimes answered based on the filename, metadata, or an imagined document structure, giving the impression that the content had been read. The assistant now explicitly tells the user when attachment content is unavailable and is instructed not to infer from the filename or expected structure. This applies to all attachment formats. As a prompt-level safeguard, it reduces but cannot completely eliminate model speculation.
* **Fixed greeting not appearing when first entering an assistant in the admin console**: When entering an AI assistant with a configured greeting for the first time from the admin console's internal chat screen (with no existing conversation), the greeting had already been created but did not appear until the user clicked "New Conversation" or re-entered the assistant. This also affected the first visit after enabling an official Agent. The greeting now appears immediately on first entry and appears only once. Behavior remains unchanged for existing conversations and assistants without a configured greeting.
* **Fixed the entire site going blank after leaving a conversation record detail page**: After opening a conversation record detail page in AI Assistant Monitoring, clicking any item in the left menu caused the content area to become completely blank, and only a page refresh could restore it. Users can now leave the detail page and navigate to other pages normally, and an automated check has been added to prevent similar issues from recurring.
* **Fixed test case generation from knowledge base files getting stuck in processing**: When automatically generating test cases from a knowledge base file, a stalled model call could leave the job permanently at "Processing, 0%" (it was still running after 11 minutes in testing). Users could not tell whether to wait or give up, and there was no way to retry. Generation jobs now have a 60-minute time limit. Timed-out jobs are marked as failed with a readable message and the UI is notified immediately, allowing users to run them again.
* **Fixed misalignment between confirmation popover icons and titles**: In admin confirmation popovers, such as delete confirmations, the warning icon appeared about 3 pixels lower than the title text. When a popover opened inside a clipping container, its width also shrank pixel by pixel for 1 to 2 seconds. The icon is now locked to the visual center of the title's first line (within 0.1 pixels) and remains aligned to that line when the title wraps. The popover width is also fixed as soon as it opens and no longer creeps.
* **Fixed the default sender of system notification emails showing the legacy brand**: In deployments where the sender was not customized in email settings or specified through environment configuration, the default sender and subject prefix of system notification emails displayed the previous-generation brand name. The defaults now use the current MaiAgent brand and domain. Customers with a custom sender are unaffected.
* **Fixed stale generated-file lists and incorrect download filenames**: 1. After asking AI to generate files in MaiGPT, the generated-files panel and its tab count now reflect the files that are currently available to download, instead of listing expired files from earlier turns (for example, showing 3 files when only 1 can be downloaded). 2. Clicking an expired file now shows "This file has expired. Generate it again before downloading" and automatically refreshes the list instead of failing silently. 3. Downloads from the preview panel retain the original filename and extension instead of becoming a garbled string.
* **Fixed syntax-error diagrams appearing while Canvas flowcharts are being generated**: When asking AI to generate a Canvas flowchart in Web Chat or an admin chat, the bomb icon and "Syntax error" message no longer flash during streaming. Error diagrams also no longer remain permanently on screen until the user switches to source and back or reopens the conversation. During generation, Canvas displays only a processing state and temporarily disables the download button, then renders once after the content is complete.
* **Fixed incorrect line breaks in Canvas flowchart text**: When node text in AI-generated flowcharts or sequence diagrams contains line-break markers, Web Chat Canvas no longer displays the marker literally as two characters. Sequence diagram notes containing line breaks also no longer prevent the entire diagram from appearing in the admin console or MaiGPT Canvas. Line breaks now render correctly in both. Web Chat Canvas also redraws only after the content settles, eliminating repeated flickering during streaming.
* **Fixed the generated-image preview panel failing to reopen**: When using an AI assistant with code execution capabilities, clicking a generated image opened the preview sidebar, but after closing the sidebar, collapsing the right panel, or switching conversations, clicking the image again sometimes did nothing. Users had to manually expand the right panel and click the preview's close button to unblock it. Every click now opens the preview correctly, and the preview closes automatically when switching conversations or leaving the page. Files on the admin conversation record page can also be previewed directly. This is fixed in both Web Chat and the admin console.
* **Fixed failures when parsing presentation files uploaded to the knowledge base**: Uploading a PPTX without declared slide dimensions (some presentation tools omit this information when exporting) to the knowledge base previously failed with a "size validation error" and could not be indexed. The system now automatically adds the default 16:9 dimensions before parsing, allowing presentation text to be extracted normally without changing the original file.
* **Fixed Canvas webpages appearing as source code in shared conversations**: When a MaiGPT conversation contained a Canvas webpage generated by AI, sharing it with other members previously caused the shared view to display the entire webpage source. The shared page now renders Canvas in a secure, isolated environment just like the original conversation. Text before and after Canvas retains its original layout, and multiple canvases in one message each appear as a separate card. Existing share links are fixed as well.
* **Fixed Canvas charts disappearing after switching to source code**: When AI generated a Canvas webpage containing charts, switching to source and back to preview, or rerendering during generation, could leave the chart area as a fixed-height blank space while surrounding headings, tables, and statistic cards remained normal. Every render now loads in a fresh environment, so charts appear reliably.
* **Fixed selected participants not receiving view access when creating a meeting**: When creating a live transcription meeting, the "Participants" field now supports selecting multiple organization members. Selected members are automatically added as meeting members after creation, receive view access, and appear correctly in the participant fields on the list and detail pages. The creator automatically becomes the host and does not need to add themselves. If member synchronization fails, a notification appears without interrupting the recording.
* **Fixed organization labels appearing incorrectly when Web Chat is opened directly**: Ask AI embeds and public Web Chat share the same URL origin. When the browser navigated within the same tab or opened a new tab from an embedded page, it could copy cached caller data. As a result, opening public Web Chat directly displayed an unrelated organization name in the title bar and marked sent messages as coming from an administrator. Web Chat now clears this residual data before opening as a top-level page, so the title bar no longer shows an incorrect organization label and public conversations retain guest identity. Embedded Ask AI is unaffected.
* **Fixed MaiGPT taking over the entire page when an embed container cannot be found**: When embedding the MaiGPT conversation interface into a specified section of a website, a typo in the container selector or a container that had not yet loaded in a single-page application previously fell back to a full-screen window covering the entire page with no close button. A single typo could obscure the whole host page. The embed now waits up to 5 seconds for the container to appear, accommodating containers that load after the embed script. If it times out or the configuration type is invalid, nothing is rendered and the browser console shows an error with remediation guidance. Full-screen layouts that explicitly specify the entire page as their container are unaffected.
* **Fixed embedded chat window position settings not taking effect**: Embedded Web Chat floating windows and buttons on customer websites had three positioning issues: 1. On first open, the window was positioned relative to the button rather than using the configured value. If the site hid the button with CSS, the window moved to the upper-left corner and immediately saved the incorrect coordinates. 2. Any browser resize permanently saved the button position and overrode the site's configuration. After a user dragged the window, later embed configuration changes by the site also stopped taking effect. 3. Position and size values using relative font units were interpreted as pixels. The window now opens according to site configuration, and adjustments are remembered only after direct user actions such as dragging or closing the window. When the site changes position or size settings, the new settings take precedence and previous adjustments are reset once. Relative font units are converted using the host page's root font size; unsupported unit syntax triggers a browser console notice and falls back to defaults.
* **Fixed replies remaining permanently stuck after returning to Web Chat on mobile**: After a mobile browser left Web Chat in the background for a while, the real-time connection could be interrupted. On returning to the foreground, the AI typing indicator remained indefinitely and the input field stayed locked, even though the admin console had already received the complete reply. After reconnecting successfully, returning to the foreground, or detecting a reply stuck for more than 45 seconds, Web Chat now proactively fetches messages missed during the disconnection from the server and merges them into local history, clears stale typing indicators, and unlocks the input field. Reconnection also uses the latest login credentials, so it can recover automatically after credentials expire.
* **The size imbalance of the Web Chat brand logo has been fixed**: The display proportions of the three brand logos of Web Chat are inconsistent: 1. The "Powered by" logo at the bottom of the conversation page fills the entire height of the column and does not match the 12px description text. It is now scaled proportionally in the 80×32 frame; 2. The logo container of the login, registration, and password reset pages is reduced from 96px to 48px, the registration and reset pages are supplemented with proportional scaling; 3. The startup screen originally used a single 80px bitmap, which was enlarged and blurred on a high-resolution screen. It is now changed to a straight combination of a vector logo and a wordmark. White-label customers continue to use their respective logos. Also corrected the problem of dialog font level setting overflowing into the login page title, and removed the overlapping "text" mark on the title bar voice playback icon.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Users who use the Web Chat conversation page, login/registration/forgot password page, and opening screen (reported directly by users)
* Problem: The bottom logo fills up the column height, the login page logo is 96px full, and the startup screen bitmap is blurry in Retina; the startup image for white brand customers must be broken when using the signature URL.
* Fix: Three size adjustments, splash screen changed to vector logo and wordmark and provided white-label local assets, font-level rules converged to markdown container, residual "text" mark removed

**Associated PR:** - maiagent-vue #1508: [fix(branding): correct webchat brand logo sizing (footer, auth pages, splash)](https://github.com/Playma-Co-Ltd/maiagent-vue/pull/1508)

**Review Status:** ✅ No special review required

* **The tool card cannot be restored after the brand animation mode has been fixed**: The tool display mode (full/lite/hidden) of the conversation platform is a server-side setting, but Web Chat has written the "hidden" in the brand animation mode into the browser storage and retained it permanently. Once a visitor has opened the brand animation, the tool card cannot be returned after switching back to the copy narrative mode. The same applies to closing the browser and reopening it. Setting the background setting to "Complete" will also have no effect on this visitor. After the repair, the tool display mode only takes effect during the current load, and is always subject to the background settings. Switching back to the copy narrative will restore the tool card; the tool card remains hidden in the brand animation mode, and the four-stage animation is not affected.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Web Chat visitors who reply to wait style using branded animation
* Problem: The tool display mode is persisted to the browser storage, and the brand animation is directly overwritten to be hidden during initialization, permanently contaminating it across conversation platforms and work stages.
* Fix: The tool display mode is changed to a pure execution state, which is only set according to the server value; the hiding of the brand animation is changed to be derived on the rendering side, and the shared state is no longer overwritten.

**Associated PR:**

* maiagent-vue #1514: [fix(webchat): Brand animation is no longer rewritten and the tool display mode is persisted (restored when switching back)](https://github.com/Playma-Co-Ltd/maiagent-vue/pull/1514)

**Review Status:** ✅ No special review required

* **Repeated disconnection error in the closing stage of Web Chat has been fixed**: When closing the conversation, logging out, or switching modes, multiple processes will require the instant messaging connection to be disconnected. The second request will throw an error, causing subsequent closing actions such as clearing the conversation status and clearing embedded login information to be skipped; when uninstalling the MCP application card, the expected "Connection Closed" response is also leaked as an unhandled error. After repair, repeated disconnections will be safely ignored, the expected response when the MCP application card is uninstalled will be handled silently, and other uninstall failures will still be recorded as usual.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Users who use Web Chat to close conversations, log out, switch modes, or use MCP application cards (approximately 340 pens for Sentry VUE-1A2 family, 23 pens for VBEN-T9)
* Problem: The disconnection and removal monitoring of the shared connection package exploded when operating on a null value during the second call, and the second half of the closing sequence on the calling end was skipped; the ConnectionClosed rejection when the MCP application card was destroyed was not caught.
* Repair: add early return guard for disconnection, remove monitoring and change to safe access; change the judgment method for MCP card destruction to catch the expected connection closure, and check the existing errors in other ways

**Associated PR:** - maiagent-vue #1533: [hotfix: guard webchat socket teardown and MCP app close against expected rejections (Sentry VUE-1A2 family + T9)](https://github.com/Playma-Co-Ltd/maiagent-vue/pull/1533)

**Review Status:** ✅ No special review required

* **Fixed: When entering a new conversation, the name of the previous conversation platform flashes first**: When "Starting a conversation" from the official market point or switching to a conversation on another conversation platform, the top selector will briefly display the name of the previous conversation platform first, and then change to the correct name after the data is loaded. After the fix, the name is not displayed during switching, and the new dialogue platform name is displayed directly after loading; the behavior of reorganizing the same dialogue platform remains unchanged.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Members who switch the conversation platform in the background to enter the conversation, or start the conversation from the official market
* Problem: When switching, while waiting for the dialogue platform data to come back, the value of the previous dialogue platform is still tied to the top and the old name is displayed first.
* Fix: When the dialogue platform is really changed, clear the current value before loading, hide the name during loading, and display the correct new name after returning.

**Associated PR:** - maiagent-admin-vue #3131: [fix(chat): stop previous inbox name flickering when entering a new conversation](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3131)

**Review Status:** ✅ No special review required

* **Fixed image search query usage not billed and mixed with text vectorization**: When AI Assistant enabled image search, the image vectorization usage of each query was not previously recorded and billed, and was mixed with text vectorization in the same column. After the repair, the image vectorization usage is billed according to the model rate used and recorded in the usage statistics. The conversation records and export details list the image vectorization token independently. The original vectorization field only counts text; the search steps of the tracking screen display text and images together. This only affects AI assistants with image search turned on, and the billing amount will change accordingly; the image field of the old record displays 0.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Organizations with AI assistants that enable image search (the billing amount will change), and organization administrators who view conversation history usage and tracking details
* Problem: The image search tool does not include a usage callback when creating a retriever. The image vectorization usage during the query is not recorded or billed. Text queries are only calculated based on the default model price as a backup. Image vectorization tokens and text vectorization are mixed in the same column. The recording API and tracking screen cannot distinguish between the two, and the image cost will be swept into the last LLM step.
* Fix: Connect the callback to the image search tool, image usage is billed at the image vectorization rate and recorded in the usage details, text query is changed to be priced according to the actual model; usage statistics is changed to text only, the image quantity is saved in the model-by-model details and a separate column is added in the record API, the tracking search step is combined to display text + image; Attached is a data structure upgrade that only changes the field description text

**Associated PR:** - maiagent-django #7558: [fix(billing): wire image\_search into UsageCallbackHandler and bill query-time image tokens at embedding\_image\_k\_token](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7558) - maiagent-django #7612: [fix(billing): make the handler's embedding scalar text-only](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7612) - maiagent-django #7613: [feat(records): expose query-time image embedding tokens as usage.tokens.embeddingImage](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7613)

**Review Status:** ⚠️ Billing related

* **The gear guidance error of the dialogue platform on the team edit page has been fixed**: The gear icon in the "Associated Dialogue Platform" list on the left side of the team edit page, when clicked, goes to the wrong place according to the channel type: the internal channel jumps to the conversation page, the web channel opens a new page and goes to the external Web Chat URL, API, LINE and other channels, but there is no response at all. After the repair, the gears of the three paths will all lead to the settings page of the dialogue platform and no new tab will be opened. The behavior of the message icon to open the dialogue remains the same.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Manage members of the associated dialogue platform through the left list on the team editing page
* Problem: The processing function of the team sidebar only copies the "Open Conversation" branch and lacks gear type judgment; clicking on the icon does not prevent bubbling, and the column itself sends another event to overwrite it as Open Conversation.
* Repair: Gears are redirected to the dialogue platform settings page by type, icon clicks prevent bubbling, and menu action recognition is changed to centralized constants

**Associated PR:** - maiagent-admin-vue #3065: [fix(teams): route team sidebar gear icon to inbox settings](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3065)

**Review Status:** ✅ No special review required

* **Fixed: Broken image preview after uploading image in dialogue platform appearance settings**: After uploading a photo or technical support logo on the dialogue platform appearance settings page and before pressing save, the real-time preview on the right will display a broken image, which will return to normal after saving; the upload list and preview window title will also display the entire signature parameter of the media URL as the file name. After the repair is completed, the local image will be previewed in real time. The data sent to the backend will remain unchanged, and the file name will only display the actual file name. After saving or reorganizing, the URL returned by the backend will be used for display.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Administrators who upload photo stickers or Powered by logo on the appearance settings page of the conversation platform
* Problem: After the media changed the signature URL protection, the upload component changed the storage key, but the real-time preview panel directly used the same value as the image source. Before saving, it was parsed as a relative path and the image was broken; the file name derivation did not remove the signature query string.
* Fix: Use the storage key as an index to remember to upload the current local preview URL for the preview panel to check (the upper limit is 24 and release), and the file name parsing first removes query and hashing

**Associated PR:** - maiagent-admin-vue #3053: [fix(upload): restore image preview after upload switched to storage keys](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3053)

**Review Status:** ✅ No special review required

* **Fixed Google Maps embedded content being displayed as text**: When the AI ​​Assistant reply contains Google Maps embedded content, Web Chat will print out the entire source code as text, and the user will not be able to see the map. Now only the five modes of location, search, route, view and street view of Google's official map embedding endpoint are allowed, and the embedded elements are rebuilt with a fixed template. All other attributes of the original content are not used. Content that does not meet the conditions will remain downgraded to text. If the closing mark is missing, it will be automatically filled in to avoid swallowing up subsequent messages.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Web Chat visitors using an AI assistant that responds to Google Maps (customer report)
* Problem: The message embedded HTML whitelist only accepts layout tags with zero attributes. Map embedded tags with source URLs cannot pass the definition and are downgraded to text.
* Fix: Only extract the source URL and compare it with the fixed format of the Google Maps embedding endpoint. Only after passing the fixed template will the tag be rebuilt and the missing closing tag automatically filled in.

**Associated PR:**

* maiagent-vue #1470: [fix(chat): Make Google Maps embedded maps actually render instead of printing the iframe source code in the chat](https://github.com/Playma-Co-Ltd/maiagent-vue/pull/1470)

**Review Status:** ⚠️ Third Party Integration

* **Fixed embedded mode suggestion question never showing**: When a client site offered Web Chat in embedded mode, the opening suggestion question loaded but was never visible. The reason is that the embedded window is initially in a collapsed state with a height of zero. The system only measures the content height once when the welcome message appears, and does not retry after the measurement reaches zero. Therefore, the suggested problem remains hidden. After the fix, it will continue to monitor container size changes, remeasure and display suggested questions when the window is collapsed and expanded; the behavior of independent pages, no welcome message, and hiding suggested questions after asking questions remains unchanged.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Customers who offer Web Chat as an embed and their website visitors
* Problem: It is recommended that the anti-flicker hidden problem only measure the height once when the number of messages changes, and the height is measured to zero when the initial collapse is embedded and never retried.
* Repair: Extract the measurement logic and change it to observe changes in the monitoring container by size, collapse and expand it and then re-measure and unhide it; the anti-flicker semantics are retained

**Associated PR:**

* maiagent-vue #1454: [fix(webchat): embed mode suggestion questions are never displayed (opacity-0 stuck)](https://github.com/Playma-Co-Ltd/maiagent-vue/pull/1454)

**Review Status:** ✅ No special review required

* **Fixed the false positive warning when the embedded setting contains login information**: When the website loads Web Chat in embedded mode and brings the login information in the settings, a warning of "Unknown Setting Option" will appear on the browser console, but the setting is actually valid and the login function works normally. After the repair, the login information is listed as a legitimate setting item, and false positives no longer occur.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Client website developers using login information in embed settings
* Problem: The SDK will read the login information in the settings and automatically execute the settings, but the initialized legal settings list omits this item, causing false alarms
* Fix: Add login information to the legal settings list, no behavior change

**Associated PR:** - maiagent-vue #1467: [fix(embed): add auth to KNOWN\_KEYS to stop false unknown-config warning](https://github.com/Playma-Co-Ltd/maiagent-vue/pull/1467)

**Review Status:** ✅ No special review required

* **Fixed the crash when opening Web Chat in some browsers**: In some embedded browsers, private browsers, or pages where network information objects are overwritten by extensions, Web Chat will completely crash and become unusable due to incompatible ways of detecting network status when loading. Now it is changed to only listen to the online/offline events of the browser itself to determine the connection status. The display conditions and appearance of the offline prompt remain unchanged.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Visitors who enable Web Chat in specific webview, private browser or extension environments (Sentry 18N, 41 times / 4 users)
* Problem: The network status tool will monitor the browser's connection information object. This object exists in some environments but is not the event target. A type error will be thrown when mounting, causing the entire Web Chat to hang up.
* Fix: Use the self-written online status tool instead, which only monitors the online/offline events of the window

**Associated PR:** - maiagent-vue #1456: [fix(network): derive online status without touching navigator.connection](https://github.com/Playma-Co-Ltd/maiagent-vue/pull/1456)

**Review Status:** ✅ No special review required

* **Fixed that the usage statistics dialog platform type column displays "-"**: In the dialog platform table of the organization usage statistics page, the type column mostly only displays "-" because the subdivision type of the web page path (internal, API, web page, Desktop) is not recognized by the front end. After the repair, the type column is consistent with the quota page of the dialogue platform, and the icons and names of each channel are correctly displayed; at the same time, a new "Desktop" type is added to the channel labels of the entire site, and the Desktop channels that were previously displayed as "Web Page" will be displayed as "Desktop".

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Managers viewing organization usage statistics dialog platform details (MaiDesk customer ticket)
* Problem: The back-end stuffs the web page path subdivision value into a single path field, but the front-end finds no corresponding value and renders "-"
* Fix: Following the precedent of the quota page, it is changed to a two-column display, and the channel label is supplemented with the Desktop entry; before the backend is deployed, it returns to the "web page"

**Associated PR:** - maiagent-admin-vue #3105: [fix: show web inbox access type in usage statistics channel column](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3105)

**Review Status:** ✅ No special review required

* **Fixed: Organizations with more than 100 members cannot find members**: For organizations with more than 100 members, in all menus for selecting members, such as creating API keys, allocating credit limits, meeting and verbatim participants, conversation labels, customer service copy lists, MaiGPT sharing, etc., members after the 101st member cannot be found no matter how they are entered. After the repair, these menus will be searched on the server side and loaded in batches while scrolling. If the loading fails, you can retry on the spot. Deactivated members will be clearly marked; organizations with less than 100 people will maintain the original real-time filtering.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Managers and members of organizations with more than 100 members (16 formal districts, maximum 24,723 people)
* Problem: Each member's menu is captured one page at a time and then filtered locally. The server silently truncates the entries to 100, and the 101st position onwards will never be included in the comparison range.
* Repair: Extract the shared member menu and remote search logic, and change all member menus to server search + scrolling paging stage loading

**Associated PR:**

* maiagent-admin-vue #3049: [fix(api-key): Change the member search to the backend, and fix the problem that members](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3049)cannot be found in organizations with more than 100 people.
  * maiagent-admin-vue #3116: [fix(member-select): server-side search + staged loading across member pickers](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3116)

**Review Status:** ✅ No special review required

* **Fixed the data import failure with yes/no fields**: When uploading CSV or Excel to create the MaiAgent database, as long as there is a true/false field in the file, the column will be misjudged as an amount field, causing the entire file to fail to create the table instead of just that column. Whether the fields will maintain their original types after repair, and files containing such fields can be imported normally.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Users who upload CSV/Excel with Boolean fields to create MaiAgent database
* Problem: The Boolean column is hit by the value range branch determined by the amount column. After the value column is built, the write type does not match, and the entire import fails.
* Repair: Exclude the Bollinger column before judging the amount column, and the guards are ranked before the name style judgment.

**Associated PR:** - maiagent-django #7797: [fix(sql-databases): stop classifying boolean columns as money columns](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7797)

**Review Status:** ✅ No special review required

* **Fixed: Files with no content after parsing are marked as completed**: When uploading a damaged, blank or password-protected file to the knowledge base, the file has no content after parsing, but is still marked as "Complete". The user cannot see any abnormalities on the screen, but the AI ​​is completely unable to answer the content of the file. After repair, such files will be marked as failed and the reason for failure will be stated. Users can immediately know that they need to be re-uploaded.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Users who upload corrupt, password-protected or blank files to the knowledge base
* Problem: The index batch is not executed when parsing a zero-content node, and the empty result is judged as successful and a completion event is issued.
* Repair: The empty result is blocked before the success determination, the failure final state and the translatable failure reason are written; the files that have been mistakenly marked in history are not traced back

**Associated PR:** - maiagent-django #7796: [fix(knowledge-base): fail files whose parse produced zero content nodes](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7796)

**Review Status:** ✅ No special review required

* **Fixed: Knowledge base citation source page number always displays page 1**: The knowledge base citation source card in the backend and Web Chat used to always display "1" for the page number, and users would not be able to find the content when browsing the original document. After the repair, the real start page will be displayed, and cross-page references will display the page number range (for example, 1–2); sources that do not have the concept of pagination, such as web pages, Word, structured data, or voice transcriptions, will display "Source Not Paginated" and false page numbers will no longer be given.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Users viewing knowledge base citations in the background with Web Chat
* Problem: The page number field used to be the fragment serial number and defaulted to 1. The front end faithfully displayed the false page number.
* Fix: The new real start and end page fields in the backend and Web Chat connection backend are displayed in three states (single page/range/source not paginated), and ensure that null values ​​will not be included in the jump page parameters of PDF preview

**Associated PR:** - maiagent-vue #1486: [fix(citation): show real KB citation page numbers in the webchat hover card](https://github.com/Playma-Co-Ltd/maiagent-vue/pull/1486) - maiagent-admin-vue #3126: [fix(citation): show real knowledge-base page numbers instead of a fake page 1](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3126)

**Review Status:** ✅ No special review required

* **Fixed knowledge base PDF translation result download timeout**: When downloading PDF translation results (bilingual version, translated version or original text) in the knowledge base, it often times out after 20 seconds even if the file is less than 1MB. After the repair, the file was downloaded directly from the file storage space instead of being transferred through the server. The identifiable file name is still retained after the download is completed.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Users who download PDF translation results (bilingual, translated version or original text) in the knowledge base
* Problem: When downloading the backend streaming agent, due to the 20-second timeout and the cost of reestablishing the storage connection each time, small files also timeout.
* Fix: Use serialized returned objects to store direct URL downloads and retain custom file names to provide protection when the URL is missing.

**Associated PR:** - maiagent-admin-vue #3061: [fix: use direct S3 URL for PDF translation download instead of Django proxy](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3061)

**Review Status:** ✅ No special review required

* **Fixed the problem where more than 20 citation source fields in the knowledge base cannot be managed**: When more than 20 citation source fields are defined in the knowledge base: 1. The management page has no pagination, and fields after the 21st cannot be edited, switched, or deleted, and there is no prompt that they exist; 2. The file information window will mistakenly mark clearly defined fields as "deleted from definition"; 3. The search test will lose the sorting, prompts, and tags of some fields. After the repair, the admin page provides real pagination, and the file window and search test read the complete field definitions.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Knowledge base citation source field defines more than 20 organizations
* Problem: The citation source field query is paginated, but all three callers regard the first page as all
* Fix: Splitting paging query (management form) and group query (file window, search test) according to the intention, the text of the orphan field is changed to "This field is not defined in this knowledge base"

**Associated PR:** - maiagent-admin-vue #3001: [fix(knowledge): real pagination for metadata keys and whole-set fetch for modal](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3001)

**Review Status:** ✅ No special review required

* **Fixed "No Permissions" pop-up on the Credit page**: When a member who only checks the Credit management permissions and does not have bill management permissions opens the Credit Usage page, the content of the page will be normal, but a "No Permissions" error message will pop up. After the repair, the page no longer sends requests to the billing overview, and the prompt no longer appears.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Organization members who only have Credit management rights and do not have Billing management rights
* Problem: In order to obtain the billing source call from the Credit page, which requires billing authority, the bill overview prompts the global interceptor to pop up a no permission prompt after being rejected.
* Fix: The wallet balance responds to the derived billing source card mode, and the call to the statement overview is removed; the general balance card is returned when the backend is not deployed.

**Associated PR:** - maiagent-admin-vue #3077: [fix: derive Credit page billing provider from wallet balance response](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3077)

**Review Status:** ✅ No special review required

* **Fixed permission error pop-up in human handoff settings**: When a role with only customer service conversation permissions opened the human handoff settings on the conversation platform, a permission error appeared. In addition, if disabled members remained in the assignee or notification lists, the entire configuration was rejected when saving, requiring users to find and remove them manually. After this fix: 1. Human handoff settings, conversation tags, transcript speakers, and MaiGPT share recipients now use a streamlined member directory that any member can access; 2. Disabled members are clearly marked and can be removed before saving; 3. After saving, the system automatically removes disabled members and updates the screen accordingly.
* **Fixed an issue where SSO settings could be mistakenly deleted when authentication settings failed to load**: If the organization authentication settings page failed to load the existing configuration, such as during a brief network disruption, the screen fell back to the default appearance for signing in with a platform account and password. If an administrator clicked Save at that point, the configured third-party sign-in (SSO) and its credentials were deleted and could not be recovered. After this fix, when loading fails, the entire settings section displays an error message and a refresh button, and settings cannot be saved until the current configuration has been loaded successfully.
* **Fixed identical error messages for all sign-in failures**: When users whose accounts were disabled or whose email addresses had not been verified attempted to sign in, the screen always displayed “Unable to log in with provided credentials.” Neither users nor customer service staff could determine the actual cause. After this fix, the actual reason returned by the server is displayed, such as a disabled account or unverified email address. The generic message is used only when no specific reason is available.
* **Fixed an issue preventing configuration of MCP endpoints with TWCA certificates**: If an MCP endpoint used a certificate issued by a legacy root certificate authority such as TWCA, which is common among Taiwanese healthcare, financial, and government organizations, tools worked correctly in conversations, but “Get Tools,” saving MCP tools, and testing private MCP connections all failed in the admin console. These three configuration entry points now apply the same relaxed certificate validation used during conversation execution, based on a domain allowlist or tool-level setting. Allowlisted endpoints can now be configured normally, while strict validation remains in place for all other endpoints. MCP URL format validation has also been tightened to permit only http/https.
* **Fixed potential indefinite waits when generating MCP app cards**: If an AI assistant needed to obtain an app card from an MCP server while responding and the server did not respond, the automatic response path previously had no timeout, causing the entire response to remain stuck indefinitely. It now matches the other paths and stops waiting after 30 seconds, reporting the issue as a standard tool failure so users are not left waiting indefinitely.
* **Fixed app card height collapsing after exiting full screen**: In Web Chat, when an MCP app card, such as a high-speed rail timetable search, was expanded to full screen and then collapsed, the card returned to the default height of 220 pixels. After accounting for the title and filter rows, not even one timetable row remained visible. The collapsed card now preserves the height reported by the app. For example, a timetable with 84 services remains about 515 pixels tall after collapsing, showing at least five rows. Its height also adjusts automatically when the time period changes, without flickering as it collapses.
* **Fixed the Manage Connectors dialog navigating the background page away**: In a MaiGPT conversation, opening “Manage My Connectors” from the input bar menu previously navigated the background to the old connectors page, leaving the current conversation. The dialog now opens in place on the current conversation page, and the connector authorization status in the input bar updates immediately when it closes. This also fixes an issue where the status remained “Authorization Required” if the authorization window did not return a result after authorization was completed in the dialog. The status is now refreshed as soon as the authorization window closes.
* **Fixed submission failures for platform-level tool cards**: When an interactive card generated by a platform-level MCP tool, such as the official feedback card, appeared in a conversation, clicking “Submit” always failed and the card displayed only a request failure message. The tool source identifier was not included during submission. Cards from platform tools and connectors now include their respective source identifiers correctly, allowing feedback to be submitted successfully and the card to switch to its submitted state. The behavior of connector cards remains unchanged.
* **Fixed blank names in the connector selection dialog**: When creating or editing an AI assistant, connectors without a custom name, such as Microsoft 365, showed only an icon and enabled status in the “Select Connectors” dialog, making it impossible to identify which connector to select. After this fix: 1. The connector type name is displayed when no custom name is set, and searches can also match the type name; 2. A placeholder icon is displayed if the icon fails to load, while an error message and retry option are displayed if the list fails to load; 3. The search bar and selected count remain fixed at the top while only the list area scrolls; 4. Icons are also displayed in the list of connectors already attached to the assistant.
* **Fixed inaccurate credit charges for document parsing**: 1. When LlamaParse is used to parse a document, credits are now calculated from the number of pages actually billed by the provider. Each reparse of the same document is billed, while customers are not charged when the provider serves a cache hit without billing; 2. If statistics become available later after a knowledge base file finishes parsing, the charge is now added automatically when the data becomes available. Parsing fees for such files may previously have gone unrecorded; 3. LlamaParse unit pricing now applies the same standard pricing formula as model fees, based on actual costs.
* **Fixed the image search tool failing to find images**: When a multimodal knowledge base used the image search tool and was configured to return only images, text chunks filled all available retrieval slots, causing images to be excluded from the results and the response to state that no results were found. After this fix, only image nodes are selected during retrieval, using the result count configured for the tool. Both text-to-image and image-to-image searches can now return images correctly, while text-only and mixed-mode behavior remains unchanged.
* **Fixed incorrect AI Gateway error status classification**: When a model was called through AI Gateway and the upstream provider rejected the request because of an issue with the request itself, such as an invalid tool definition format or too many tools, the response was previously always a 502 server error, preventing callers from knowing that they needed to correct their request. These cases now return a 400 response with guidance to check model parameters, tool definitions, and input size. Provider outages, timeouts, keys, and rate-limit issues continue to return 502.
* **Fixed an issue preventing channel partner organization data from being saved**: Reseller and agent organizations that bill themselves previously could not save organization data in the admin console or through trial invitations, authentication source settings, deactivation scheduling, and other flows because the system treated “self as upstream” as an error. After this fix, self-billed channel partners with matching roles can save data normally and are labeled “Self-billed” in the admin console. The message shown when channel partners attempt to purchase credits through self-service has also been standardized to “Please contact your account manager to purchase.”
* **Fixed missing Gemini cache-read pricing rules**: After a Gemini model was added through Vertex AI, cache-read pricing rules were not created automatically, causing charges to fall back to the minimum base price and resulting in underbilling. Saving a model now automatically creates cache-read rules based on the provider ratio. Cache status is now displayed as “Automatic caching (provider-managed).” If caching is mistakenly enabled for one of these models, the page displays an explanation instead of a full-page error. Manually entered cache prices for OpenAI and Azure models can also now be saved correctly.
* **Fixed missing page numbers and misclassified decorative images in PDF parsing**: When the default parser processed a PDF, if a page had no text content that could be serialized, the page numbers for the entire adjacent group of chunks were cleared, preventing citations from displaying page numbers. At the same time, repeated footer logos on each page were treated as different images because of minor differences in per-page crops, so decorative image filtering never took effect. After this fix, blank pages retain their own page numbers, and images are compared using their embedded PDF image objects so the same logo can be recognized and filtered across pages.
* **Fixed parser toggles being reset during on-premises upgrades**: In licensed on-premises environments, when operators disabled cloud parsers such as Whisper or Azure Speech, every version upgrade previously re-enabled them, requiring operators to disable them again manually. Parser enablement is now controlled by operators just like the model catalog: newly added parsers default to disabled during upgrades, existing toggle states remain unchanged, and entries removed from the registry are only reported without further action. Parser toggles in SaaS environments are unaffected.
* **Fixed display issues in conversation content and tool status**: AI-generated tables, bold text, and tool execution descriptions now render completely. After switching languages, descriptions for tools in progress also immediately use the new language.
* **Fixed Web Chat failing to open under special deployment paths**: When deployed under a website subpath through a reverse proxy, sign-in, embedded pages, and related resources now automatically use the correct paths.
* **Fixed file preview and meeting connection issues**: Presentation files can now be previewed directly. After a meeting connection is interrupted, the system correctly leaves the old room and recognizes a newly created room, preventing reconnection to an invalid session.
* **Fixed skipping a question still triggering an AI response**: Closing a skippable question now updates only the screen state and no longer sends an additional message or starts new AI processing. The layout for multiple questions is also more compact.
* **Fixed messages sometimes receiving no response after being sent**: When the real-time connection does not return an acknowledgment, the system now uses a fallback delivery method, reducing cases where a message appears to have been sent but the conversation does not update.
* **Fixed incorrect knowledge base and file list states**: The summary card is no longer shown when AI summaries are disabled, and rejected uploads are immediately removed from the file list.

## v2026.09.04 <a href="#v2026-09-04" id="v2026-09-04"></a>

***

### ✨ New Features

* **New Work workspace**: The new Work workspace combines agent switching, cross-agent conversation history, and frequently used entry points in a single three-zone interface. The system remembers the last workspace and layout used, and automatically redirects users to an available feature when they encounter a page they cannot access.
* **Role workspace permission preview**: The MaiAgent role editor now includes workspace permission cards and a live preview, allowing administrators to confirm which feature zones a role can access before saving and reducing permission configuration errors discovered only afterward.
* **File library and AI workflow integration**: The file library can now display AI analysis status, mount knowledge bases, and bring files into the MaiGPT workspace. Parsed attachments are placed directly into the work context, while long documents provide the most relevant content within the available context window.
* **Multilingual content for built-in Agents**: The 98 built-in Agents in the Agent Marketplace now display English or Japanese names, descriptions, and instructions based on the interface language, avoiding mixed-language content after switching languages.
* **Automatic image generation for AI Slides**: AI Slides can now automatically generate visuals during slide creation and insert the generated images directly into slides, eliminating the need to download and re-upload them.
* **Question cards support skipping**: When an AI agent asks a multiple-choice question, users can now skip optional questions instead of having to select an unsuitable answer to continue the conversation.
* **Deep Research file downloads**: Downloadable report files are now available when Deep Research finishes, making it easier to save, share, or continue editing research results.

### 🚀 Core Performance Improvements

* **Improved test dataset evaluation stability**: Large test datasets are now distributed on demand across multiple workers. Interrupted work is automatically reclaimed and retried, while actual usage is saved for completed cases, preventing long-running evaluations from stalling when a single worker is interrupted.
* **Faster visual parsing for large documents**: Long documents containing images or complex layouts are now parsed concurrently in batches. When the service is busy, processing automatically slows down and resumes, reducing wait times and the risk of the entire document failing.
* **Faster organization usage page loading**: Organization usage and quota summaries now use a more efficient aggregation method, allowing administrators to retrieve complete statistics faster when opening the usage page.
* **Faster member roster loading**: When large organizations load their complete member roster, the system now prepares the data required by the interface directly, reducing delays caused by processing large numbers of members one by one.
* **Faster conversation platform knowledge summaries**: Knowledge summaries and select-all data for conversation platforms now load faster with large document collections, reducing the wait when configuring the knowledge scope.
* **Faster SCIM group synchronization**: When an enterprise identity directory synchronizes group members, it now processes only the users added or removed in the current update. This speeds up large-group updates and reduces load during synchronization.
* **Faster LINE message reception**: When a LINE conversation platform receives consecutive messages, it now reuses user data that is still current, reducing delays caused by repeated LINE lookups and allowing messages to enter the processing flow faster.

### 😊 User Experience and Interface Improvements

* **Aligned login page layout**: The loading indicator on the enterprise login page is now centered, and the fields in the account identification and password entry steps use consistent alignment, making the interface more stable when switching between login steps.
* **Retired Workflow reply mode**: AI agents no longer offer the option to create a new Workflow reply mode. Copies of older agents now use standard Q\&A. Existing agents that have not been used for a long time are automatically switched back to standard Q\&A, while recently active agents retain their existing behavior.

### 🛠️ Bug Fixes

* **Fixed activity log system event display**: Fixed a column alignment issue caused by automated system events in the activity log. Dates, actions, and content now remain in the correct columns even when an event has no actor.
* **Fixed AI monitoring log loading**: Fixed an issue that occasionally prevented the AI monitoring log page from loading. The page now retrieves data only after the table is ready, avoiding blank states caused by initialization order.
* **More reliable MCP App shutdown flow**: Fixed errors that occasionally occurred when closing an MCP App card or switching conversations. Closed connections are now cleaned up properly and no longer interfere with subsequent conversations.
* **MCP App tool timeout notification**: Fixed MCP App tools waiting indefinitely for a response. If a third-party service does not respond within 30 seconds, the system now stops waiting and displays an execution failure, allowing users to retry immediately instead of waiting several minutes.
* **Fixed Web Chat subpath deployment**: Fixed an issue that prevented Web Chat from opening correctly when deployed under a reverse-proxy subpath. The system now determines the path from the actual URL, so page refreshes and navigation work correctly.
* **Fixed Skill export and re-import**: Fixed issues that prevented exported Skills from being re-imported successfully or caused settings to be lost. Re-imported Skills now retain their usage conditions and bound tools, and their names are automatically converted to a valid import format.
* **Fixed Ask AI organization scope**: Fixed an issue where Ask AI could continue using the previous organization's data scope after switching organizations. Tools now always run within the organization associated with the current conversation, preventing irrelevant cross-organization results.

**Associated PR:** - maiagent-django #7424: [fix(ask-ai): prevent stale organization scope in MCP tools](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7424)

**Review Status:** ⚠️ Access Control

* **Usage statistics sorting correction**: Fixed the problem of only sorting the data on the current page when the usage statistics are sorted by points; now the complete results will be sorted first and then paginated, and the correct order will be maintained when viewing across pages.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Managers who sort by the points field on the usage statistics page
* Problem: The sorting is only applied to the data on the current page, and the overall order is incorrect after turning the page.
* Repair: Changed to sort the complete data set uniformly and compare with actual point values

**Associated PR:** - maiagent-django #7504: [fix(usage-statistics): sort and value credit columns globally in DB](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7504)

**Review Status:** ✅ No special review required

* **Knowledge base search status prompt**: The prompt when the knowledge base search has no results has been improved; if the relevant files are still being processed, the AI ​​assistant will point out the files that have not yet been prepared, including the workspace mounting content, to avoid mistakenly thinking that the knowledge base has no data.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Users who start asking questions as soon as they upload the file
* Problem: When there is no result in the search, it is impossible to tell whether it is really not found or the file is still being processed.
* Fix: Replies indicate files still being prepared and correctly cover workspace scope

**Associated PR:** - maiagent-django #7521: [fix(tools): surface unready knowledge base files on empty search results](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7521) - maiagent-django #7607: [fix(tools): unpack workspace scope in grep\_files unready files note](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7607)

**Review Status:** ✅ No special review required

* **Error message for tool models that do not support**: The error message when the model does not support tool operations has been improved; the screen will clearly explain that the current model cannot complete the tool task, and will guide you to use a supported model instead of just "Please try again later".

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Users who choose models that do not support tool operations
* Problem: When the model cannot use the tool, only a general error is displayed, and the user does not know how to deal with it.
* Fix: Instead indicate model capability limitations and provide next steps to take

**Associated PR:**

* maiagent-django #7583: [fix(chat): Actionable error message when model does not support tool use (was generic "Please try again later")](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7583)

**Review Status:** ✅ No special review required

* **Automatic backup of image generation service**: The stability of image generation has been enhanced; when the main service temporarily fails, it will automatically switch to the backup service. If the point deduction is not completed, it will be clearly reported and will no longer be interrupted by unknown errors.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Users who use MaiGPT or AI presentations to generate images
* Problem: When the main image service temporarily fails, the entire image production process is directly interrupted.
* Repair: Automatically switch to backup service when a temporary error occurs in the main service, and correctly report points deduction failure

**Associated PR:** - maiagent-django #7571: [fix(maigpt): scope generate\_image to MaiGPT + surface cashier failure (follow-up #7507)](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7571) - maiagent-django #7586: [fix(image-gen): Vertex 5xx crosses over to Google AI fallback (review #8, follow-up #7507)](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7586)

**Review Status:** ✅ No special review required

* **Schedule Execution Upper Limit Tip**: The problem of schedule being repeatedly paused after reaching the upper limit of execution times has been fixed; the system will clearly indicate that the number of execution times has been exhausted, making it easier for users to adjust schedule settings.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Users who set a schedule with a limited number of executions
* Problem: The schedule may be paused repeatedly after reaching the upper limit, and the real reason cannot be seen on the screen.
* Fix: clearly mark that the execution limit has been reached and stop repeated processing

**Associated PR:** - maiagent-django #7605: [fix(schedules): surface max-executions exhaustion instead of silent re-pause loop](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7605)

**Review Status:** ✅ No special review required

* **Anonymous Web Chat output file download**: Fixed the problem that anonymous Web Chat cannot open the code interpreter output files and images; visitors can view or download the results directly in the original conversation and will not be directed to log in.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Visitors who are not logged in but are using Code Interpreter via Web Chat
* Problem: Conversation can generate files or pictures, but anonymous visitors will be blocked by login restrictions when opening the output.
* Fix: Allow anonymous visitors with access to the conversation to obtain output content

**Associated PR:** - maiagent-django #7615: [fix(tools): open code interpreter output routes to anonymous webchat (2026.Q2 backport)](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7615)

**Review Status:** ⚠️ Access Control

* **Monitoring Timeline Step Correction**: The problem of missing model processing steps in AgentOps tracking timeline has been fixed; managers can see each segment of model execution again, making it easier to locate response quality and delays.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Managers using AgentOps to track AI response processes
* Problem: After the reply engine is updated, the model processing steps do not appear in the tracking timeline
* Fix: Tracking data conversion and display in recovery model step

**Associated PR:** - maiagent-django #7623: [fix: restore LLM steps in trace timeline after langgraph migration](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7623)

**Review Status:** ✅ No special review required

* **Knowledge retrieval long problem correction**: The situation where long questions caused knowledge retrieval failure has been fixed; the system will retain the available question content within the service limit, so that queries with a large amount of background information can still be completed.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Users who use long questions or paste a lot of background information for knowledge retrieval
* Problem: When the question exceeds the reordering service limit, the entire knowledge retrieval will fail.
* Fix: Safely reduce long content before sending and retain other query information

**Associated PR:** - maiagent-django #7657: [fix(rag): guard Bedrock rerank query against the 9000-character limit (2026.Q2 backport)](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7657)

**Review Status:** ⚠️ Third Party Integration

* **Meeting participant access rights correction**: The problem of incomplete participant permissions when creating meeting records from the calendar has been fixed; the system will identify internal and external participants based on the invitation list, allowing people with appropriate permissions to view the meeting content normally.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Participants who create meeting minutes from calendar
* Issue: Access rights for invitees and external participants may not be established correctly based on the invitation list
* Fix: Derivation of meeting permissions with external participants from calendar invitation

**Associated PR:** - maiagent-django #7629: [feat(meeting-records): derive meeting access and external participants from calendar invites](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7629)

**Review Status:** ⚠️ Third Party Integration

## v2026.09.02 <a href="#v2026-09-02" id="v2026-09-02"></a>

***

### ✨ New feature release

* **Instant meeting backup recording prevents sound leakage**: Instant meeting records add local backup recording: the recording will be saved locally in the browser before uploading. Even if the network is disconnected midway or the page is accidentally closed, the recorded content will be automatically re-uploaded after reconnecting; the meeting details page can switch between the original and backup audio files, and use the backup audio file to re-transcribe. The list will also mark meetings that are in backup synchronization or are incomplete.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Users who use real-time meeting recording, may experience network instability or accidentally close pagination
* Problem: If the browser disconnects or leaves the page during an instant meeting, the cloud radio will be missing a section, making the meeting minutes and verbatim transcripts incomplete and irreparable.
* Fix: The browser will first write the audio to the local backup and then gradually upload it; the missing segments will be automatically filled in after the network is restored or the website is reopened, and the original/backup audio source can be switched on the details page, and the backup verbatim transcript can be selected to re-transcribe.

**Associated PR:** - maiagent-admin-vue #3149: [feat(meeting-records): add resilient browser backup audio](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3149)

**Review Status:** ⚠️ First implementation

* **Self-service management of "Connected Services"**: The conversation page of Web Chat and the built-in AI assistant can now self-manage third-party service authorization: click the "Connected Services" portal at the top of the page to view the authorization status and validity period of services such as calendars and cloud drives, and directly authorize, reauthorize or disconnect (will confirm again before canceling). When an authorization request is received during a conversation, it will be presented as a clear authorization card instead of a string of English URLs; the mobile version can also be operated.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Users who authorize third-party services (such as calendar, cloud drive) in Web Chat or conversations with the built-in AI assistant
* Problem: After the user completes the third-party service authorization in the conversation, there is no place to view or cancel his authorization; the authorization link in the conversation is only a string of naked English URLs
* Fix: A new "Connected Services" management portal has been added to the Web Chat and built-in AI assistant dialogue pages: you can check the authorization status and validity period, authorize/reauthorize/disconnect (confirm twice before deactivating); the authorization requirements are changed to a localized authorization card; the authorization certificate only exists in the current browsing phase and is not written to the local storage

**Associated PR:** - maiagent-vue #1473: [feat(connected-services): contact connector portal API layer and status logic (1/2)](https://github.com/Playma-Co-Ltd/maiagent-vue/pull/1473) - maiagent-vue #1474: [feat(connected-services): connected-services modal UI, header entry and E2E (2/2)](https://github.com/Playma-Co-Ltd/maiagent-vue/pull/1474) - maiagent-admin-vue #3119: [feat(chat): contact self-service connector portal entry on Build-in Agent conversation](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3119)

**Review Status:** ⚠️ Third Party Integration

* **The login page automatically determines the SSO login path**: The login page will now automatically determine the login method based on the email you entered: Enterprise SSO users will be directly directed to the enterprise single login after entering the company mailbox, without having to remember a special URL; general users will enter their passwords as usual. When SSO authentication fails, the error will be clearly displayed and you will be provided with the option to retry or use a different password to log in, so you will no longer be stuck in a redirect loop.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: All backend logins, especially employees of organizations using enterprise single sign-on (SSO)
* Problem: After an enterprise connects to SSO, employees must know the special URL before they can log in through SSO. The login page will not boot at all; when SSO verification fails, it will fall into an infinite redirect loop and cannot return to the login page.
* Repair: The login page is changed to enter email first, and the system automatically determines whether the domain is logged in via SSO or password: Hitting SSO will directly lead to corporate login, and if there is no SSO, the password field will be expanded; when it is determined that the service is abnormal, the password login will be automatically returned and will not block people; if SSO verification fails, an error will be displayed and two exits will be provided: "Retry" and "Switch to use password to log in"

**Associated PR:** - maiagent-admin-vue #3021: [feat(login): identifier-first login page behind a runtime kill switch](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3021)

**Review Status:** ⚠️ feature flag

* **New Webhook channel for real-person notifications**: The settings for real-person notifications now support Webhook channels. You can fill in the HTTPS receiving URL of your own system (and optionally fill in the signature key for the receiving end to verify the source). When the conversation is transferred to a real-person assignment, the platform will instantly push the event notification to the URL, making it easy to connect the real-person transfer process to external systems such as work order systems or duty notifications. If the transmission fails, it will be automatically retried and will not affect the original email and notification center notifications.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Enterprise customers who need to connect "convert to real person" events to their own systems (such as work orders, duty notifications) in real time
* Problem: After the conversation is transferred to real-person assignment, notifications can only be delivered through email and platform notification center. The customer's external system cannot know it in real time, and it is difficult to automate the subsequent processing process.
* Fix: Add a new Webhook channel in Zhuanzhen notification settings: you can fill in the HTTPS URL and optional signing key. After Zhuanzhen is assigned, event notifications will be sent asynchronously to the specified URL. Failure will automatically retry, and will not affect the existing notifications in Email and notification center.

**Associated PR:** - maiagent-django #7352: [feat(chat): add webhook channel for handoff notifications](https://github.com/Playma-Co-Ltd/maiagent-django/pull/7352)

**Review Status:** ⚠️ Third Party Integration

* **New channel type hierarchical filtering on the contact page**: Two levels of filtering are added on the contact page: first select the channel type (web, LINE, Telegram, Facebook, etc.), and then select the conversation platform under this type, the list will be converged immediately; the conversation platform drop-down menu also displays the channel label, making it faster to find contacts across platforms.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Managers and customer service who need to find people in the contact list based on the source channel
* Problem: The contact list can only be filtered by a single conversation platform. It is not possible to quickly narrow down the scope by channel type (such as LINE, Facebook, web pages). It is very labor-intensive to find contacts across multiple platforms of the same type.
* Fix: Added "Channel Type" upper-level filter, the options are automatically generated based on the channels actually used by the organization; after selecting the type, the lower-level "Conversation Platform" options are automatically linked and converged, and the platform drop-down menu also adds channel labels for easy identification.

**Associated PR:**

* maiagent-admin-vue #2589: [feat(contacts): channel type → conversation platform hierarchy filter (replaces #2575)](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/2589)

**Review Status:** ⚠️ First implementation

* **Batch deactivated point quotas can all be lifted from the limit**: When deactivating the point quotas in batches based on MaiAgent roles, you can now choose to lift the quota limits of members together and switch to an organization wallet to avoid members being locked in the "limited, no quota" state; the confirmation box will also display the exact number of people who will be deactivated and who will be lifted based on actual statistics.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Organization managers who use point quota management and need to adjust member quotas in batches based on MaiAgent roles
* Problem: After deactivating the point quota in batches based on roles, members are still subject to the quota limit but have no available quota, which is equivalent to being locked and cannot be used, and cannot be seen on the screen; the number of people displayed in the confirmation box is also inaccurate
* Fix: Added two options in the batch deactivation window: deactivate only the quota (maintain the current one) or deactivate and lift the quota limit and switch to the organization wallet; the confirmation box before sending displays "N people will be deactivated / M people will be released" based on actual statistics, and the result message will be reported truthfully

**Associated PR:** - maiagent-admin-vue #3185: [feat(credit): batch deactivate modal option to release quota requirement](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3185)

**Review Status:** ⚠️ First implementation

### 🚀 Core performance optimization

* **Built-in Agent management page switching is no longer stuck**: The built-in Agent management page no longer repeatedly queries the open objects of each Agent when switching categories or searching. Organizations with more Agents enabled will noticeably faster when switching tabs, and the entire page will no longer flicker on the loading screen.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Organization administrators who switch categories or search on the built-in Agent management page
* Problem: Every time the management page switches categories or searches, each enabled Agent will be queried for open objects one by one (dozens of requests at a time when many are enabled), causing obvious switching lags and screen flickering.
* Fix: Open objects are obtained in batches when entering the page. Switching categories or searches only reloads the list; the loaded skeleton is only displayed on the first page entry, and the old list is retained and faded during the switch.

**Associated PR:**

* maiagent-admin-vue #3222: [feat(build-in-agents): The built-in Agent management page opens the object into a batch, switching does not re-fetch (repair lag)](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3222)

**Review Status:** ✅ No special review required

* **Speed ​​up the opening of huge tool output dialogs**: It will no longer freeze when opening an old dialog containing a large number of tool execution results, and the memory usage during typing is greatly reduced (actually measured from 255MB to 158MB); the tool step details are changed to be clicked to load, and the first part of the long results will be displayed and marked as truncated.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Web Chat/Ask AI users who restore old conversations containing a large number of tool execution results (customers actually reported typing lag and memory surge)
* Problem: If the restored conversation contains a huge amount of tool execution results (instance single page 2.8MB), the opening page will freeze for nearly a second, and the memory will jump wildly during typing. In severe cases, the browsing history must be cleared to recover.
* Fix: The tool step details are changed to be loaded after first expansion. The very long tool result preview only shows the first part and is marked as truncated; the measured memory usage is reduced from 255MB to 158MB, and the number of page elements is halved.

**Associated PR:** - maiagent-vue #1522: [fix(chat): lazy-render tool step details and cap JSON payload preview](https://github.com/Playma-Co-Ltd/maiagent-vue/pull/1522)

**Review Status:** ✅ No special review required

* **Knowledge base full-text view loading speed**: The assembly speed of the knowledge base full-text view is improved when opening large files (hundreds of paragraphs). Paragraph correspondence is calculated using a more efficient algorithm, and the displayed content is completely unchanged.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Users viewing full-text assembly screens of large documents (hundreds of paragraphs) in the knowledge base
* Problem: When assembling paragraphs in the full-text view of a knowledge base document, all text blocks are rescanned for each paragraph. The larger the file, the slower it becomes. The situations where viewing large files are most needed are the most laggy.
* Repair: The correspondence between paragraphs and blocks is changed to a single scan calculation, and the calculation amount is reduced from the number of paragraphs multiplied by the number of blocks to linear. The assembly results are tested to be the same bit by bit.

**Associated PR:** - maiagent-admin-vue #3182: [perf(knowledge): build chunk metadata in a single pass over blocks](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3182)

**Review Status:** ⚠️ Performance data pending verification

* **Platform stability enhancement during system update**: During system update deployment, the instantaneous server load caused by a large number of Web Chat connection reconnections has been significantly balanced, reducing the slow response of the entire platform during the update period; users waiting for a reply are not affected and still receive messages in real time.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: All Web Chat users, especially those currently using during system update deployment
* Problem: During system update deployment, thousands of Web Chat connections will be disconnected and reconnected at the same second. After reconnection, information will be requested from the server at the same time, causing an instant traffic spike and a sudden increase in database load, which may slow down the response of all users.
* Fix: The message synchronization after reconnection is changed to be randomly dispersed within a maximum of two minutes, flattening the instantaneous spike by about twelve times; users who are waiting for AI replies or watching the screen are still synchronized immediately, and the experience is not affected by delays.

**Associated PR:**

* maiagent-vue #1537: [fix: Add a random delay to the reconciliation after reconnection to prevent the entire socketio connection from sending /api/messages/](https://github.com/Playma-Co-Ltd/maiagent-vue/pull/1537)at the same second

**Review Status:** ⚠️ Performance data pending verification

### 😊 User experience and interface optimization

* **Conversation scrolling and reading experience are comprehensively improved**: The conversation scrolling experience of Web Chat, background chat and MaiGPT is comprehensively improved:

1. During the generation of AI answers, you can freely scroll up to review previous messages, and the screen will no longer be forced to return to the latest position;
2. The paragraph you are reading will not drift upward with the generation of replies, and will stay at the original reading position after loading more historical messages;
3. Each dialogue interface provides a "Back to Latest" button. Click to return to the latest content and resume automatic following;
4. The opening welcome message is no longer pushed out of the screen.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: All users reading AI replies in Web Chat, Backend Chat and MaiGPT
* Problem: During the AI-generated answer, the screen keeps being pulled back to the latest position, the content being read will drift upwards, the screen will jump suddenly when reviewing old messages, and the opening welcome message may be pushed out of the screen.
* Fix: Rewrite the scrolling structure of the chat window: detect the user's active scrolling during generation and cancel the automatic following, keep the reading position stable, unify the "Back to Latest" button behavior, and correct the opening positioning

**Associated PR:** - maiagent-admin-vue #3148: [feat(chat): detach auto-follow on user scroll during generation](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3148) - maiagent-admin-vue #3165: [refactor(chat): migrate chat scrollers from col-reverse to plain column](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3165) - maiagent-vue #1506: [refactor(chat): migrate chat scroller to natural column layout (zero-drift reading)](https://github.com/Playma-Co-Ltd/maiagent-vue/pull/1506) - maiagent-vue #1502: [feat(chat): unify back-to-latest button with admin chat surfaces](https://github.com/Playma-Co-Ltd/maiagent-vue/pull/1502) - maiagent-vue #1524: [fix(chat): don't push single greeting message off-screen (no-question spacer gate)](https://github.com/Playma-Co-Ltd/maiagent-vue/pull/1524)

**Review Status:** ✅ No special review required

* **Conversation platform setting page navigation revision**: The conversation platform setting page has been revised to a layout consistent with the AI ​​assistant setting page: setting categories have been moved to the left sidebar and displayed in groups, and basic, quota, and automatic replies have been changed to upper pagination; switching categories will be recorded in the URL, and you can return to the same category if you rearrange or share links.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Administrators who manage settings in the background chat platform (Web Chat channel)
* Problem: The navigation directions of the dialogue platform setting page and the AI ​​assistant setting page are opposite: the setting categories are in the top row of tabs, and the main navigation is three items on the left. When switching between the two pages, the main navigation is swapped left and right, causing cognitive load.
* Fix: The setting categories are moved to the left sidebar and grouped by "General/Connection and Login/Advanced Functions/Management", which is consistent with the AI ​​Assistant setting page; basic, quota, and automatic replies are reorganized above the content area; switching categories will be recorded in the URL, and will stay in the same category after reorganizing

**Associated PR:**

* maiagent-admin-vue #3024: [feat(inbox): Navigation adjustment of the dialogue platform setting page (category → left sidebar, basic/limit/auto reply → upper tab), aligned with the AI ​​assistant setting page](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3024)

**Review Status:** ✅ No special review required

* **MaiAgent role permissions will take effect immediately if checked**: When editing the resource permissions of the MaiAgent role, checking any permissions will take effect immediately and a result prompt will be displayed. There is no need to click "Update Role" page by page; there will no longer be a situation where some changes are not saved after cross-page editing.

📋 Development information (internal review only)

**Analysis Summary:**

* Impact: Administrators who edit MaiAgent role resource permissions in Organization Settings
* Problem: Each of the seven resource tabs for editing a role has a set of "Update/Cancel" buttons, which only save the current tab. After editing across tabs, changes in other tabs will not be saved, and unsaved check boxes will disappear silently when leaving the page.
* Repair: Change the permission check to "Save Immediately": each change will be sent immediately and a success or failure prompt will be displayed. In case of failure, the check status will be automatically restored, and the trouble of "unsaved changes" will disappear.

**Associated PR:** - maiagent-admin-vue #3196: [refactor: auto-save group resource permissions (remove per-tab save/cancel)](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3196)

**Review Status:** ⚠️ Access Control

* **Point consumption details, split cache items**: The point consumption summary of the dialogue will now list "LLM cache reading" and "LLM cache creation" as independent projects, no longer mixed in "Others". When using models that automatically cache, such as Gemini, you can clearly see the cache cost; the category names under the narrow panel have also been changed to wrap and are no longer truncated.

📋 Development information (internal review only)\*\*Analysis Summary:\*\* - Impact: Administrators editing MaiAgent role resource permissions in organization settings - Issue: Each of the seven resource tabs for role editing had its own "Update/Cancel" buttons and saved only the current tab. After editing across tabs, changes on the other tabs were not saved, and unsaved selections silently disappeared when leaving the page - Fix: Permission selections are now saved immediately. Each change is submitted in real time with a success or failure notification; if saving fails, the selection is automatically restored, eliminating the problem of unsaved changes

```
**Related PR:**
- maiagent-admin-vue #3196: [refactor: auto-save group resource permissions (remove per-tab save/cancel)](https://github.com/Playma-Co-Ltd/maiagent-admin-vue/pull/3196)

**Review Status:** ⚠️ Access Control
</details>
```

* **Cache items separated in credit usage details**: Conversation credit usage summaries now list "LLM cache reads" and "LLM cache creation" as separate items instead of grouping them under "Other." When using models such as Gemini that automatically cache content, you can clearly see cache costs. Category names now also wrap in narrow panels instead of being truncated.
* **Presentation and document templates can now be deleted**: When using presentation or document templates in a conversation, templates uploaded by your organization can now be deleted directly. A delete button has been added to template cards, with confirmation required before deletion, so accidentally uploaded templates no longer require engineering assistance.
* **Agent Marketplace displays required connectors and setup notices**: In the Agent Marketplace and built-in AI assistant management page, cards and preview windows now show icons for the third-party service connectors required by each AI assistant. Assistants that require an administrator to complete connection setup first are labeled "Administrator setup required," preventing them from being mistaken for ready-to-use assistants.
* **Built-in Agent usage renamed to "Enabled count"**: The built-in AI assistant usage description on the organization management page has been changed from "Seats" to "Enabled count," clearly indicating that it is the maximum number of AI assistants that can be enabled simultaneously rather than a user-seat license. Traditional Chinese, Simplified Chinese, English, Japanese, and Korean have all been updated.
* **Voice conversation responses now use full formatting**: In Web Chat voice conversation mode, AI assistant text responses now display with full formatting. Lists, headings, and blockquotes are laid out correctly and left-aligned, with no more raw symbols or incorrect center alignment.
* **Consistent sizing for sidebar brand logos**: Brand logos in the admin console sidebar now use a fixed size and centered alignment, giving different brands a more consistent appearance without distortion in either expanded or collapsed states.

### 🔐 Security and Governance Enhancements

* **Enhanced embedded widget security and integrity verification**: Customers embedding Web Chat on their websites can now enable a stricter Content Security Policy (CSP) without affecting the appearance of the chat button or window. Version-pinned embed files and integrity verification information are also available to meet security scanning and audit requirements. The chat button's hover enlargement effect is now working as intended.
* **Restricted access to built-in Agent management**: Access to built-in Agent management is now explicitly governed by the "Built-in Agent management permission" under organization permissions. Members without this permission will not see the management entry or the marketplace's "Go to management" link, while marketplace browsing remains available, providing more precise access control.
* **Permission checks for using Agents from the marketplace**: The "Use this Agent" button on Agent Marketplace detail pages now reflects permissions. Members without marketplace usage permission see a disabled button with an explanation, instead of discovering only after clicking that they cannot apply the Agent. Zone identity derivation has also been corrected so members with conversation-only permissions are not mistakenly classified as builders.

### 🛠️ Bug Fixes

* **Vision parsing engine upgraded and blank-page issue fixed**: When using the Vision Parser to parse documents, some pages could silently be parsed as blank, causing missing knowledge base content. This issue has been fixed. The underlying model has also been upgraded to Claude Sonnet 5, with parsing quality tested in Chinese, English, Japanese, and Thai and found comparable to the previous version. In addition, MaiAgent Parser (Online) has been disabled platform-wide due to upstream service quota limits.
* **Fixed Web Chat crashes on some Android devices**: Web Chat no longer crashes the entire page when opened in embedded browsers in certain Android apps where local storage is disabled. Chat features now work normally.
* **Fixed sign-in failure in on-premises deployments**: The sign-in issue affecting Web Chat and the admin console in private (on-premises) deployments has been fixed. Frontend error information from on-premises environments is also prevented from being sent to the cloud, keeping all data within the customer's environment.
* **Fixed incorrect multi-file upload order**: When uploading multiple images or files at once in Web Chat or MaiGPT, attachments now remain in the order in which you added them. The order in which the AI assistant reads images matches the thumbnails on screen, so asking about the "first image" refers to the correct one. Files are still uploaded concurrently, so upload speed is unaffected.
* **Tool narration now follows the interface language**: After switching the interface to English, Japanese, or another language, default system tool narration such as "Searching the knowledge base" and "Searched the web" in Web Chat and admin console conversations now follows the interface language. Narration in existing conversations also updates after switching languages, while administrator-defined narration remains unchanged.
* **Fixed blank screen after leaving conversation record details**: Fixed an issue in AI assistant monitoring where navigating to another page after viewing a conversation record's details caused the entire content area to go blank until the page was refreshed.
* **Fixed sign-in requirement for read-only conversation links**: People with a conversation viewing link can once again view conversations that allow anonymous read-only access without signing in. Users are prompted to sign in only when the conversation actually requires permission, while general connection problems now display a loading failure instead of incorrectly directing users to sign in.
* **Fixed conversation list previews not updating after message edits**: After a message is edited in the conversation platform, conversation list previews in other tabs and on other customer service agents' screens now display the edited content immediately without a manual refresh, and the conversation order remains unchanged.
* **Fixed inaccurate AI assistant quota display**: The AI assistant card in the organization usage overview now displays your plan's actual limit and actual usage. Organizations with add-on quota see the correct denominator, while legacy-mode assistants retained after a downgrade are clearly marked as not consuming quota, along with the exact number of additional assistants you can create.
* **Fixed built-in Agent usage count changing with filters**: The usage card on the built-in Agent management page now consistently displays the organization's actual total enabled count. The number no longer changes when searching or filtering the list and matches the quota information in the batch action bar at the bottom.
* **Fixed MaiGPT page getting stuck partially initialized**: When opening the MaiGPT conversation page, the page now completes initialization and remains usable even if the model list temporarily fails to load or times out. It no longer gets stuck in a partially loaded state that requires a refresh, and the wait time has been substantially reduced.
* **Fixed display error while MaiGPT conversations load**: When entering the MaiGPT conversation page after signing in, the message list no longer briefly fails to display while assistant data is still loading. If sign-in form validation fails, inline red error messages remain visible without generating unnecessary background errors.
* **Fixed incorrect workspace entry visibility and errors**: Fixed an issue where the "File Workspace" option appeared in MaiGPT conversations for organizations that did not have this capability enabled. Organizations without access will no longer see an entry that only produced a permission error when clicked, while organizations with access are unaffected.
* **Fixed scrolling on the AI Gateway overview**: Fixed an issue where the AI Gateway overview page could not scroll down in shorter windows. Content that extends beyond the screen can now scroll normally, allowing bottom sections such as "Usage by API Key" to be viewed in full.
* **Fixed row misalignment in the activity log**: System and organization events in the organization settings activity log now align correctly. The user column remains blank, and the View button and zebra striping no longer become misaligned.
* **Fixed submission failures for lengthy personal preferences**: The character limit for personal preferences has been adjusted to 1,000 characters to match the server's actual limit. Users will no longer enter lengthy content only to have it rejected upon submission.
* **Fixed clipped buttons in the API key list**: On the API key management page in organization settings, the action buttons on the right now remain fully visible when the table is scrolled horizontally, instead of being clipped and difficult to click.
* **Corrected the File Library menu position and space-name localization**: The "File Library" item in the left menu has moved below "Agent Marketplace" to better match common navigation flows. Space names such as "My Files" and "Organization Shared Files" in the File Library now follow the interface language instead of always appearing in English.
* **Fixed draft attachment removal for guests**: After a guest uploads an attachment in Web Chat, clicking × to remove it before sending now removes it successfully, and the AI assistant will no longer reference the removed file. A notification also appears if removal fails. This update also fixes an issue where removing an attachment could delete a different one when multiple file types were uploaded together.
* **Tool card display settings no longer persist incorrectly**: Fixed an issue where tool execution cards became permanently hidden and remained hidden across conversations after switching to a conversation with brand animation. Tool cards now display according to the correct settings each time a conversation is opened.
* **Corrected oversized brand logos**: Brand logos at the bottom of Web Chat conversations and on the login, registration, and password reset pages now display at an appropriate size. The logo on the startup screen also no longer appears blurry on high-resolution displays.
* **Fixed interrupted connection cleanup when closing conversations**: The internal cleanup process when logging out of or closing Web Chat is now more stable and no longer fails partway due to repeated connection termination, preventing residual conversation or authentication state from being left behind.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.maiagent.ai/release-note/en/readme.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
