Replace v-html + DOMPurify sanitization with plain Vue text
interpolation ({{ }}) and CSS white-space: pre-wrap for the
thinking content display.
The thinking content is raw model output that should never be
interpreted as HTML. Using v-html here created an unnecessary XSS
attack surface — even with DOMPurify, the \n→<br/> replacement
happened before sanitization, and future changes to sanitizer config
could introduce vulnerabilities.
Plain text rendering with pre-wrap:
- Eliminates XSS risk entirely (no HTML parsing)
- Preserves line breaks natively via CSS
- Removes the sanitizeHTML import and safeProcessThinkContent function
- Simpler code with identical visual output
Two consistency fixes for <think> tag parsing in index.vue:
1. Streaming path (line 579): Changed indexOf to lastIndexOf when
splitting thinking content from answer, matching the history
loading path. Prevents incorrect splitting if </think> appears
multiple times (e.g., model discusses think tags in answer).
2. History loading path (line 274-281): Removed redundant split()
call, now uses only lastIndexOf consistently. The split was
creating an unnecessary intermediate array that could produce
wrong results with multiple </think> occurrences.
Both paths now use identical logic: lastIndexOf('</think>') to find
the boundary, substring(0, index) for thinkContent, substring(index+8)
for answer content.
- Add 26 missing i18n keys to ko-KR and ru-RU for image upload,
storage, VLM model, and multimodal features
- Add 7 new tool name keys (queryKnowledgeGraph, finalAnswer,
readSkill, executeSkillScript, dataAnalysis, dataSchema,
databaseQuery) to all 4 locales (zh-CN, en-US, ko-KR, ru-RU)
- Replace hardcoded Chinese tool name map (TOOL_NAME_DISPLAY) in
AgentStreamDisplay with i18n key references via i18n.global.t(),
merged into existing TOOL_NAME_KEYS
- Fix hardcoded Chinese error message in KnowledgeBase.vue to use
existing i18n key knowledgeBase.fileExists
- Add DingTalk AI Card streaming support with create/deliver/update via OpenAPI
- Extract shared think-block rendering into reusable im.TransformThinkBlocks
- Add stream orphan reaper and edit throttling for DingTalk and Telegram
- Apply think-block transform on all reply paths (DingTalk, Telegram, Feishu)
- Add Card Template ID config to frontend IM channel panel with i18n
Add DingTalk bot adapter supporting both webhook (HmacSHA256 signature
verification) and Stream mode (via official dingtalk-stream-sdk-go),
with sessionWebhook/OpenAPI reply fallback and AccessToken caching.
Add Telegram Bot API adapter supporting both webhook and long-polling
modes with streaming replies via editMessageText, file download via
getFile API, and timing-safe secret token verification.
Add Novita AI as a new model provider supporting chat, embedding,
and VLLM model types via OpenAI-compatible API endpoint.
- Add NovitaProvider implementation with OpenAI-compatible API
- Register ProviderNovita in provider registry
- Add ModelSourceNovita constant
- Add Novita to frontend fallback provider options
- Add i18n translations for en-US, zh-CN, ru-RU, ko-KR
Reset the global page variable to 1 when reloading the file list after operations like tagging, uploading, moving, editing, or deleting documents. This fixes a pagination bug where scrolling would skip pages after performing these operations.
- Format MCP tool names from "mcp_my_server_search_docs" to
"My Server Search Docs" in the agent stream UI
- Apply same formatting in sanitizeForDisplay for inline text
- Update tool-icons.ts getToolDisplayName with MCP support
- Added timezone and language settings to the environment configuration.
- Introduced built-in agent configurations with multilingual support for various agents.
- Updated Docker Compose to utilize new environment variables for timezone and language.
- Created new prompt templates for question generation, summary generation, and keywords extraction.
- Reduced the bottom margin of the tree container from 16px to 10px for better spacing.
- Increased the top margin of the answer toolbar from 4px to 10px to enhance visual separation.
- Added hints for WeCom and Feishu platforms in the IM channel panel to guide users in obtaining credentials.
- Included a recommendation for using WebSocket for easier setup.
- Updated localization files for English, Korean, Russian, and Chinese to support new hints and console links.
- Changed the storage engine warning from a div to a paragraph for better semantic structure.
- Updated the warning icon from 'error-circle' to 'info-circle' to better reflect the message.
- Adjusted CSS styles for the storage engine warning, including reduced gap and margin, and modified font size for improved readability.
- Added a new integration guide link in the IM channel panel description for better user guidance.
- Updated localization files for English, Korean, Russian, and Chinese to include the new 'docLink' key for the integration guide.
- Improved styling for the add button in the IM channel panel to enhance visual alignment and user experience.
- Removed redundant dropdown menu styles from various components and centralized them in a new `dropdown-menu.less` file.
- Updated components to use the unified styles, ensuring consistency in appearance and behavior across the application.
This change simplifies maintenance and enhances the visual coherence of dropdown menus.
- Removed outdated instructions regarding the `skip_kb_search` field in the conversation configuration.
- Clarified requirements for `image_description` to ensure it is non-empty when images are present.
- Adjusted the handling of message parts in the chat pipeline to improve image processing.
- Deleted unused migration files related to image handling in the database schema.
These changes enhance the clarity and functionality of the conversation and image processing logic.
- Introduced a new IMChannelPanel component for managing WeCom and Feishu channels.
- Added CRUD operations for IM channels, including create, update, delete, and list functionalities.
- Enhanced the backend with new API endpoints for IM channel management.
- Updated documentation to reflect changes in IM integration and channel management.
- Improved localization support for new IM-related UI elements across multiple languages.
- Added blur handling for the textarea in the Input-field component to prevent errors when navigating away from the component.
- Improved the sanitization process in the AgentStreamDisplay component to preserve specific tags during markdown processing, ensuring accurate content display.
- Introduced new methods for handling FAQ-specific post-processing in the knowledge base service, optimizing retrieval and filtering of search results.
These changes enhance user experience by improving input handling and content rendering in the chat interface.
- Introduced a pulsing animation for the stop button in the Input-field component, enhancing visual feedback.
- Updated the loading indicator in the AgentStreamDisplay component to clarify its purpose and improve overall styling.
These changes enhance user interaction and visual appeal in the chat interface.
- Added a streaming steps container to the AgentStreamDisplay component, allowing for better organization of streaming events.
- Implemented auto-scrolling functionality to keep the latest events in view during streaming.
- Enhanced CSS styles for the streaming steps container and event items, including custom scrollbar styles for improved user experience.
These changes improve the usability and visual appeal of the AgentStreamDisplay, facilitating a smoother interaction during event streaming.
- Replaced LLMConfig with model_id in TextRelationExtractionRequest and FabriTextRequest interfaces.
- Updated related API handlers to retrieve chat models based on model_id.
- Adjusted frontend components to pass model_id instead of LLMConfig, enhancing clarity and simplifying the configuration process.
These changes streamline the model configuration process across the application, improving maintainability and usability.
- Updated configuration to enable parent-child chunking, allowing for more structured content organization.
- Activated question generation feature, enhancing the ability to create relevant questions based on the content provided.
These changes improve the functionality of the KnowledgeBaseEditorModal, facilitating better content management and interaction.
- Implemented a new API endpoint to clear all messages in a session, enhancing session management capabilities.
- Updated the frontend to include a clear messages option in the session menu, allowing users to easily remove chat history.
- Added localization support for the new feature in English, Korean, Russian, and Chinese, improving accessibility for a broader audience.
- Enhanced the chat view to handle session message clearing events, ensuring a responsive user experience.
These changes significantly improve the user experience by providing a straightforward method to manage session messages effectively.
- Updated configuration to improve handling of multimodal queries, including clearer guidelines for when to use [NO_SEARCH] in responses.
- Enhanced the user interface to include dedicated sections for multimodal configuration, allowing users to manage image uploads and related settings more effectively.
- Added localization support for new multimodal features in both English and Chinese, improving accessibility for a broader audience.
- Implemented backend changes to support image analysis and extraction of OCR text, enriching the interaction experience for users.
These enhancements significantly improve the application's capability to process and respond to multimodal queries, fostering a more interactive and user-friendly environment.
- Added functionality for image uploads in chat, allowing users to attach images for multimodal Q&A.
- Enhanced the input field to handle image selection via drag-and-drop and paste, with validation for file types and sizes.
- Updated the backend to process images alongside text queries, including support for image analysis.
- Introduced new UI components for image previews and management, improving user interaction with uploaded content.
- Added localization strings for image upload features and error messages, enhancing accessibility for users in multiple languages.
These changes significantly improve the chat experience by enabling users to incorporate images into their queries, facilitating richer interactions and responses.
- Removed unnecessary fullscreen event listeners and streamlined the fullscreen toggle logic in the document preview component.
- Updated the CSS for fullscreen mode to enhance layout and responsiveness for various document types, including images and presentations.
- Adjusted the structure of the preview container to eliminate reliance on a ref, improving code clarity and maintainability.
These changes enhance the user experience by providing a more intuitive fullscreen functionality and better visual presentation of documents.
- Updated the summary length requirement for document summarization to 100-300 words.
- Added new localization strings for missing storage engine notifications in English, Korean, Russian, and Chinese.
- Implemented UI warnings for users regarding storage engine configuration when files exist, including confirmation dialogs for storage engine changes.
- Enhanced backend validation to ensure a storage engine is configured before allowing content uploads.
These changes improve user experience by providing clearer guidance on storage engine requirements and enhancing the overall functionality of the knowledge base management system.
This feature introduces a localized fullscreen toggle capability directly to the document preview component. It adds translations across 4 UI languages (zh-CN, en-US, ko-KR, ru-RU) avoiding hardcoded strings. It also sets proper responsive height scaling for DOCX views expanding to full viewport.
- Added API endpoints for moving knowledge items between knowledge bases, including validation for source and target compatibility.
- Implemented asynchronous task handling for knowledge moves, tracking progress and status updates.
- Introduced new localization strings for move-related UI elements in English, Korean, Russian, and Chinese.
- Enhanced the frontend to support knowledge move operations, including target selection and progress monitoring.
These changes significantly improve the application's capabilities for managing knowledge across different bases, providing users with a seamless experience in organizing their knowledge assets.
- Added support for AWS S3 as a storage engine, including configuration options for endpoint, region, access key, secret key, bucket name, and path prefix.
- Updated the StorageEngineConfig interface to include S3 configuration.
- Enhanced the UI components to allow users to configure S3 settings and test connections.
- Updated localization files to include new S3-related labels and descriptions in multiple languages.
These changes significantly enhance the storage capabilities of the application, providing users with more options for managing their data.
- Added new API endpoints for managing chat history configuration and retrieval settings, allowing tenants to enable message indexing and configure search parameters.
- Introduced new Vue components for ChatHistorySettings and RetrievalSettings, providing a user-friendly interface for managing these configurations.
- Updated localization files to include new settings descriptions and labels in multiple languages.
- Enhanced the KnowledgeSearch view to support searching across both knowledge bases and chat history, improving the overall search functionality.
These changes significantly enhance the application's capabilities in managing and retrieving chat history, contributing to a more robust user experience.
- Introduced the final_answer tool to ensure agents submit their complete responses as the last action, improving response accuracy and consistency.
- Updated the agent engine to log detailed information about tool calls and responses, including the total duration of agent execution.
- Enhanced the chat message model to include agent_duration_ms, tracking the total execution time from query start to answer delivery.
- Implemented JSON field extraction for streaming responses, allowing for more efficient handling of tool call outputs.
These changes significantly improve the agent's response handling and ensure that final answers are consistently delivered, enhancing overall user experience.