# Dify changelog > A platform for building LLM applications from visual workflows and RAG pipelines. - Vendor: LangGenius - Category: AI - Official site: https://dify.ai - Tracked by: What's New (https://whatsnew.fyi/product/dify) - Harvested from: GitHub (langgenius/dify) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## Releases ### 1.16.1 — Release v1.16.1 - Bug Fixes and Security Enhancements - Date: 2026-07-28 - Version: 1.16.1 - Original notes: https://github.com/langgenius/dify/releases/tag/1.16.1 - Permalink: https://whatsnew.fyi/product/dify/releases/1.16.1 - **added** — Workflow tool nodes now support multi-select dropdown inputs for choosing multiple values from a predefined list when configuring tool parameters - **added** — Click a node_id in workflow run logs or error messages to locate and highlight the corresponding node in the workflow editor canvas - **added** — Block selector panel now features improved keyboard navigation, category previews, and a more intuitive search experience when adding nodes to workflows - **added** — Agent apps can now be exported as DSL YAML directly from the app sidebar menu - **added** — Added more observability traces to knowledge/RAG document processing operations - **fixed** — Fixed hidden-tab collaboration leader saving stale drafts when the tab is inactive - **fixed** — Fixed unsaved edits being dropped when collaboration never connects - **fixed** — Preserved latest collaboration session after reconnection - **fixed** — Fixed false draft save error during Strict Mode initialization - **fixed** — Show persistent error notification when workflow draft save fails - **fixed** — Wait for workflow worker threads to finish before Celery tasks complete, preventing orphaned executions - **fixed** — Lazy-load Loro collaboration runtime to reduce initial bundle size - **fixed** — Don't open node settings panel when clicking a node in comment mode - **fixed** — Don't close active comment panel when a different comment is resolved - **fixed** — Fixed document cleaner stripping valid characters ï, ¿, ¾ - **fixed** — Preserved spaces during recursive text splitting - **fixed** — Used flush() instead of commit() in dataset service to preserve caller transaction boundaries - **fixed** — Sent valid body in external knowledge validation probe - **fixed** — Fixed agent preview: start new Preview conversations without inheriting an old ID - **fixed** — Fixed agent chat input being replaced when conversation history updates ##### What's Changed ###### New Features **Tool Multi-Select Input** - Workflow tool nodes now support multi-select dropdown inputs, allowing users to choose multiple values from a predefined list when configuring tool parameters. (#39346) **Workflow Node Locator** - You can now click a node_id in workflow run logs or error messages to locate and highlight the corresponding node in the workflow editor canvas. (#38187) **Workflow Block Selector Improvements** - The block selector panel now features improved keyboard navigation, category previews, and a more intuitive search experience when adding nodes to workflows. (#39212) **Export Agent DSL from Sidebar** - Agent apps can now be exported as DSL YAML directly from the app sidebar menu, making it easy to back up or version-control agent configurations. (#39299) **Knowledge Tracing** - Added more observability traces to knowledge/RAG document processing operations, improving visibility into indexing pipelines. (#38959) --- ###### Bug Fixes **Workflow & Collaboration** - Fixed hidden-tab collaboration leader saving stale drafts when the tab is inactive (#38997) - Fixed unsaved edits being dropped when collaboration never connects (#39579) - Preserved latest collaboration session after reconnection (#39646) - Fixed false draft save error during Strict Mode initialization (#39353) - Show persistent error notification when workflow draft save fails (#39293) - Wait for workflow worker threads to finish before Celery tasks complete, preventing orphaned executions (#39614) - Lazy-load Loro collaboration runtime to reduce initial bundle size (#39631) - Don't open node settings panel when clicking a node in comment mode (#39500) - Don't close active comment panel when a different comment is resolved (#39491) **RAG & Knowledge** - Fixed document cleaner stripping valid characters ï (U+00EF), ¿ (U+00BF), ¾ (U+00BE) (#39215) - Preserved spaces during recursive text splitting (#39498) - Used `flush()` instead of `commit()` in dataset service to preserve caller transaction boundaries (#39223) - Sent valid body in external knowledge validation probe (#39410) **Agent** - Fixed agent preview: start new Preview conversations without inheriting an old ID (#39463) - Fixed agent chat input being replaced when conversation history updates (#39289) - Preserved complete model usage pricing in agent logs (#39201) - Show workflow node runs in agent execution logs (#39471) - Include workflow runs in agent monitoring stats (#39354) - Block unpublished agents from being used in workflows (#39532) - Prevent agent preview actions from being clipped (#39510) - Prevent build reset from clearing preview chat history (#39490) - Fixed agent build draft UI flashing during apply (#39642) **Web App & UI** - Fixed webapp JWT expiration time being incorrectly set (#39537) - Fixed TTS playback in Safari and Firefox (#39444) - Fixed clipboard writes failing in embedded apps (#39511) - Fixed text generation web app showing infinite loading after timeout (#39268) - Fixed chat not passing document if model doesn't support vision (#39461) - Stopped chunk length/overlap inputs collapsing to unusable width in narrow containers (#39600) - Fixed search hotkey hydration mismatch (#39574) - Improved DSL import/export dialog states (#39432, #39409) - Fixed basePath doubling in auth refresh redirects (#39273) - Show unavailable state for disabled Web Apps (#39392) - Fixed permission selector semantics (#39269) - Fixed customization page horizontal overflow (#39557) **API & Backend** - Fixed MCP tool `output_schema` being treated as required when it's optional (#39453) - Honored array-element limit and byte budget for `list[File]` in VariableTruncator (#39220) - Prevented identity logging deadlock (#39449) - Rejected `host:port`-shaped `PLUGIN_REMOTE_INSTALL_PORT` values with an actionable hint (#39329) - Fixed `PaginatedResult.pages` returning 1 inst _[Truncated at 4000 characters — full notes: https://github.com/langgenius/dify/releases/tag/1.16.1]_ ### 1.16.0 — v1.16.0 - Date: 2026-07-17 - Version: 1.16.0 - Original notes: https://github.com/langgenius/dify/releases/tag/1.16.0 - Permalink: https://whatsnew.fyi/product/dify/releases/1.16.0 - **added** — Introduce Dify Agent in open beta with a builder for creating agents through the UI, a sandbox environment for code execution, a skill system for calling tools and APIs, and an agent roster for managing agents across a workspace - **added** — Add Dify Workflow integration for Dify Agent allowing existing agents to be used in workflows or temporary inline agents to be created - **added** — Add web app experience for publishing Dify Agents with familiar user interface powered by Dify Agent - **changed** — Enhance the ⌘K → /create and /refine AI workflow generator by removing the low-value Ideal output field, replacing static example chips with AI-generated suggestions grounded in workspace context, and parallelizing node config generation for faster results - **added** — Add configurable timeout for AI workflow generation using WORKFLOW_GENERATION_TIMEOUT_MS environment variable with default 180 seconds - **changed** — Upgrade MCP protocol support to version 2025-06-18 with version negotiation and structured tool output while maintaining backward compatibility with older clients - **added** — Add support for injecting dynamic HTTP request headers at runtime in MCPClient connections using placeholders like {{request.headers.X-Custom-Auth}} for per-request authentication passthrough - **added** — Add customization of chat input placeholder text up to 64 characters for Chatbot, Agent, and Chatflow web apps - **changed** — Refine web app customization UI with clearer naming for Custom Frontend and Branding options and improved label handling - **added** — Display app descriptions on chat and text-generation app screens with collapsible view to prevent pushing input form off screen - **added** — Add workflow run archive export capability - **changed** — Properly abort active runs during Celery warm shutdown to prevent orphaned tasks - **changed** — Improve Redis connection resilience with TCP keepalive support and expanded retry coverage - **added** — Pass app_id to model providers for provider-side cost attribution in services like Bedrock, OpenAI, and Vertex AI - **changed** — Improve OAuth and SSO login flows to preserve redirect URLs more reliably with a dedicated error view for failed SSO completions - **changed** — Change default API type for new OpenAI configurations from Chat Completions to Responses to support GPT-5.6 and newer models - **fixed** — Fix multiple workflow draft import issues losing references, node settlement after failures, and retry detail visibility - **fixed** — Fix SSE stream corruption with Unicode separators and agent final answer being cleared after stream completion - **fixed** — Fix open redirect vulnerabilities in post-login and auth redirect flows #### Introducing Dify Agent *(Beta)*: A New Agent Experience in Dify > [!WARNING] > You should provide Dify Agent services ⚠️**only to trusted, non-malicious users**⚠️. As many of you know, the shell-based LLM agent paradigm has brought a major leap in agent capabilities and changed how we think about agents. Meanwhile, Skills provide a standardized way to package and distribute capabilities, making it easier to build powerful agents. Today, we are launching Dify Agent. Like other leading agents, it runs in a Linux sandbox. This release includes: - A builder for creating Dify Agents - You can build Dify Agents through the UI: set a base prompt, upload Skills and files, and connect tools and knowledge from the Dify ecosystem. - We also provide an agent that helps you build Dify Agents. Through conversation, it can configure the Linux sandbox environment, install required packages, and create new Skills and files that your Dify Agent can use later. - Dify Workflow integration for Dify Agent - You can use an existing Dify Agent in a Dify Workflow, or temporarily create an inline Dify Agent. It will execute the task defined by the workflow node, generate the required output, and pass it to the next node. - A new web app experience - The Dify Agent you build can be published and used as a web app. While the user experience remains familiar, it is now powered by Dify Agent. Docs: https://docs.dify.ai/en/self-host/use-dify/build/new-agent/overview image #### ⚠️ Action Required **OpenAI GPT-5.6 Compatibility Notice** The OpenAI plugin previously defaulted to using the Chat Completions API, which was deprecated by OpenAI earlier this year and has increasingly poor support for newer model series. The newly released GPT-5.6 family has many unusual and unique parameter combination restrictions when used with Chat Completions, because OpenAI now provides only minimal compatibility support for Chat Completions with new models. **This is not a Dify system issue.** The default API type for new configurations has been changed from Chat Completions to **Responses**. However, users who previously saved a custom API key with the old default (Chat Completions) will retain that setting, which may cause unexpected errors that appear to originate from Dify. > If you have previously configured a custom OpenAI API key, please check your API type setting and switch to **Responses** if it is still set to Chat Completions, especially when using GPT-5.6 or later models. ##### New Features **Agent App (Open Beta)** - Agent App enters open beta and is now enabled by default for all users. It introduces a built-in sandbox for code execution and shell commands, a skill system that lets agents call tools and APIs, an agent roster for managing and reusing agents across a workspace, and support for referencing new agents from workflow agent nodes. **Smarter AI Workflow Generation** - The ⌘K → /create and /refine AI workflow generator has been enhanced end-to-end: the low-value "Ideal output" field was removed, static example chips replaced with AI-generated suggestions grounded in your workspace context, and node config generation is now parallelized for faster results. A configurable timeout (`WORKFLOW_GENERATION_TIMEOUT_MS`, default 180s) prevents long-running generations from hanging. **MCP Protocol Upgrade** - The workflow-as-MCP server now supports MCP protocol 2025-06-18 with version negotiation and structured tool output, while remaining backward compatible with older clients. MCPClient connections can now inject dynamic HTTP request headers at runtime using placeholders (e.g. `{{request.headers.X-Custom-Auth}}`), enabling per-request authentication passthrough. **Web App Customization** - App owners can now customize the chat input placeholder text (up to 6 _[Truncated at 4000 characters — full notes: https://github.com/langgenius/dify/releases/tag/1.16.0]_ ### 1.16.0-rc1 — v1.16.0-rc1 - Date: 2026-07-09 - Version: 1.16.0-rc1 - Original notes: https://github.com/langgenius/dify/releases/tag/1.16.0-rc1 - Permalink: https://whatsnew.fyi/product/dify/releases/1.16.0-rc1 - Labels: Pre-release - **added** — Introduce Dify Agent (experimental) with a builder for creating agents through the UI by setting base prompts, uploading Skills and files, and connecting tools and knowledge - **added** — Provide an agent assistant that helps build Dify Agents by configuring Linux sandbox environments, installing packages, and creating new Skills and files through conversation - **added** — Add Dify Workflow integration for Dify Agent to use existing agents or create inline agents within workflows - **added** — Enable publishing Dify Agents as web apps with a familiar user experience powered by Dify Agent - **added** — Display app description on chat and text-generation app screens - **fixed** — Require edit access for trace config changes - **fixed** — Use correct article in difyctl prerelease warning - **fixed** — Decouple deployment access control dialog - **fixed** — Make marketplace URL builder SSR-safe - **fixed** — Isolate node selector keyboard events - **changed** — Migrate response contract tooling to BaseModel - **changed** — Simplify deployment access ownership - **changed** — Align deployment detail state ownership #### Introducing Dify Agent *(Experimental)*: A New Agent Experience in Dify > [!WARNING] > You should provide Dify Agent services ⚠️**only to trusted, non-malicious users**⚠️. As many of you know, the shell-based LLM agent paradigm has brought a major leap in agent capabilities and changed how we think about agents. Meanwhile, Skills provide a standardized way to package and distribute capabilities, making it easier to build powerful agents. Today, we are experimentally launching Dify Agent. Like other leading agents, it runs in a Linux sandbox. This release includes: - A builder for creating Dify Agents - You can build Dify Agents through the UI: set a base prompt, upload Skills and files, and connect tools and knowledge from the Dify ecosystem. - We also provide an agent that helps you build Dify Agents. Through conversation, it can configure the Linux sandbox environment, install required packages, and create new Skills and files that your Dify Agent can use later. - Dify Workflow integration for Dify Agent - You can use an existing Dify Agent in a Dify Workflow, or temporarily create an inline Dify Agent. It will execute the task defined by the workflow node, generate the required output, and pass it to the next node. - A new web app experience - The Dify Agent you build can be published and used as a web app. While the user experience remains familiar, it is now powered by Dify Agent. Docs: https://docs.dify.ai/en/self-host/use-dify/build/new-agent/overview ##### Limitations Please note that in the current experimental release, all Dify Agents run in the same sandbox. This means: - Under normal circumstances, each Dify Agent configures its environment and executes tasks within its own workspace without interfering with others. - However, with simple instructions, any Dify Agent can read or interfere with the environments and data of other Dify Agents, including user data. Strict isolation will be implemented in a future release. For now, > [!WARNING] > You should provide Dify Agent services ⚠️**only to trusted, non-malicious users**⚠️. Similarly, because Dify Agent is not fully ready yet, you may find that some features are not available for Dify Agent. For example, Dify Workflow DSL export is unavailable when the workflow contains nodes that reference Dify Agent. ##### Upgrade Guide > [!IMPORTANT] > > - This release includes new database migrations. Run them as part of the upgrade. > - Environment variables changed. Review the Environment Variable Changes section and update your `.env` accordingly. > - Docker Compose configuration files changed. If you maintain a customized `docker-compose.yaml`, review the changes and re-apply local customizations carefully. ###### Docker Compose Deployments 1. Back up your customized docker-compose YAML and env files. ```bash cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak cp .env .env.$(date +%s).bak 2>/dev/null || true ``` 2. Get the latest code for the `1.16.0-rc1` release. ```bash git fetch --tags git checkout 1.16.0-rc1 ``` 3. Stop the services (run inside the `docker` directory). ```bash docker compose down ``` 4. Back up data. ```bash tar -cvf volumes-$(date +%s).tgz volumes ``` 5. Review any env file changes and re-apply local customizations. 6. Upgrade services. ```bash docker compose up -d ``` ###### Source Code Deployments 1. Stop the API server, Worker, and Web frontend server. 2. Get the latest code for the `1.16.0-rc1` release. ```bash git fetch --tags git checkout 1.16.0-rc1 ``` 3. Update Python dependencies. ```bash cd api uv sync ``` 4. Run database migrations. ```bash uv run flask db upgrade ``` 5. Restart the API server, Worker, and Web frontend server. To experiment with the new agent feature, you also need to start dify-agent and shellctl. **Importan _[Truncated at 4000 characters — full notes: https://github.com/langgenius/dify/releases/tag/1.16.0-rc1]_ ### 1.15.0 - Date: 2026-06-25 - Version: 1.15.0 - Original notes: https://github.com/langgenius/dify/releases/tag/1.15.0 - Permalink: https://whatsnew.fyi/product/dify/releases/1.15.0 - **added** — difyctl command-line client to run apps and workflows from the terminal without opening the web UI - **added** — Stream model reasoning into a dedicated live thinking panel in Chat Flow, Workflow, and CLI while keeping the final answer separate - **added** — Human-in-the-loop forms now support dropdown selects and file/multi-file uploads in addition to free text - **added** — Workflows can now use long-running generation models such as image or video generation via a polling mechanism - **added** — Extract images embedded inside Excel files during knowledge import - **added** — Set custom trace session id for Phoenix to align traces with your application's sessions - **added** — Plugin daemon auto-detects region at startup and automatically selects a nearby package mirror for faster installs - **changed** — Redesigned landing and onboarding for an easier first-run experience - **changed** — Improved go to anything palette with faster navigation and autofocused search inputs - **changed** — Workflow editor now features collapsible panels for a cleaner interface - **changed** — Notifications show consistent toasts that display long errors in full - **changed** — Refreshed start node and smarter output node provide more control over workflow returns - **changed** — Reduced workflow startup latency for Chatflow and lowered workflow termination latency - **fixed** — One-click confirmation before removing an app prevents accidental deletes - **fixed** — Fixed Lindorm vector store errors caused by opensearch-py update - **fixed** — Fixed Tongyi credential compatibility - **fixed** — Invalidated credential cache after OAuth refresh - **fixed** — Improved workflow execution error handling and prevented legacy stop from interrupting GraphEngine runs - **fixed** — Fixed conversation variable description length validation to prevent varchar(255) truncation - **security** — Fixed path traversal issue in plugin-daemon forwarding #### Dify 1.15.0 Release Note ##### What's Changed ###### UX & UI Enhancements 录屏2026-06-25 21 12 33 - **Redesigned landing / onboarding** for an easier first-run experience (#37433, #37844, #37800) - **Faster navigation** — improved "go to anything" palette and autofocused search inputs (#32130, #37175) - **Safer deletes** — one-click confirmation before removing an app (#37263) - **Cleaner workflow editor** with collapsible panels (#37276) - **Clearer notifications** — consistent toasts that show long errors in full (#37382, #37581) - **More accessible** — plugin permission hints, restored contact-us menu, skip-nav link, and keyboard focus polish (#37310, #37774, #37644) ###### New Features **difyctl — drive Dify from the command line** ([Docs](https://docs.dify.ai/en/cli/overview)) - difyctl is a command-line client for Dify: you can now run apps and workflows straight from your terminal, so personal agents, scripts, and CI pipelines can invoke Dify workflows without opening the web UI (#37036) - Install it on any platform (macOS, Linux, Windows) with a single command and no access token — binaries are published as public releases with checksum verification (#37036, #37454) - Pass scoped environment variables to CLI tool runs, and get clearer, consistent error messages (including friendly rate-limit handling) across both difyctl and the `/openapi/v1` API (#37324, #37285, #37313, #36896) **See CoT in Workflow & Chatflow & CLI** - Chat Flow / Workflow can now stream the model's reasoning into a dedicated live "thinking" panel while keeping the final answer clean and readable. The reasoning is preserved so it's still there after a page refresh, and the same reasoning is visible in CLI and workflow run previews (#37460, #37828) **Richer Human-in-the-Loop forms** - When a workflow pauses to ask a person for input, the form can now include dropdown selects and file / multi-file uploads — not just free text — so people can answer with structured choices and attachments (#36322) **Support for slow, long-running models** - Workflows can now use generation models that take a long time to respond (such as image or video generation) via a polling mechanism: the node patiently waits for the final result instead of timing out (#37462) **Knowledge from richer spreadsheets** - Images embedded inside Excel files are now extracted during knowledge import, so spreadsheet content that relies on pictures (diagrams, screenshots, charts) is no longer lost (#37104) **Deeper observability** - Set your own trace session id for Phoenix so traces line up with your application's sessions, and follow document-retrieval steps in traces to understand how RAG results were produced (#37056, #37283) **Workflow authoring polish** - A refreshed start node makes it clearer how a workflow begins, and a smarter output node gives you more control over what a workflow returns (#37348, #35511) - Friendlier errors when an app or workspace ID is malformed, instead of confusing failures (#37212) **Faster plugin installs in certain regions** - The plugin daemon now auto-detects your region at startup and, where network connectivity to PyPI is poor, automatically picks a nearby package mirror — so installing plugins is faster and more reliable without any manual setup. You can still pin a specific mirror if you prefer (dify-plugin-daemon#750) ###### Security Updates This release fixes a path traversal issue in plugin-daemon forwarding (cve-2026-41948). ###### Bug Fixes - Hardened outbound HTTP with bounded timeouts for Firecrawl, Jina, Watercrawl, Nacos, and Marketplace requests, and hardened default SSRF proxy egress (#37638, #37637, #37515, #37444, #37424, #36332) - Fixed Lindorm vector store errors caused by the `opensearch-py` update (#37862) and Tongyi credential compatibility _[Truncated at 4000 characters — full notes: https://github.com/langgenius/dify/releases/tag/1.15.0]_ ### 1.14.2 — v1.14.2 - Security fixes, agent groundwork, workflow reliability, and deployment updates - Date: 2026-05-19 - Version: 1.14.2 - Original notes: https://github.com/langgenius/dify/releases/tag/1.14.2 - Permalink: https://whatsnew.fyi/product/dify/releases/1.14.2 - **security** — Strengthened tenant isolation for app trace-config endpoints and FilePreview text extraction - **security** — Restrict default builtin tool credential updates to workspace admins and owners - **security** — Clean stale tenant tool credentials during reset-encrypt-key-pair - **fixed** — Restore tracing after HITL workflow resume - **fixed** — Improve workflow run callback tracking - **fixed** — Reduce message-update database roundtrips - **fixed** — Fix memory fetches outside Flask context - **fixed** — Close base64 file lookup sessions correctly - **fixed** — Fix loading behavior when no model is selected - **changed** — Filter model presets by supported parameters - **changed** — Improve API extension dialog controls - **fixed** — Fix knowledge hit-testing rendering - **fixed** — Fix empty knowledge creation - **fixed** — Fix recommended app category ordering - **fixed** — Fix null handling in recommended app detail retrieval - **changed** — Allow LLM nodes to access retrieved knowledge files - **fixed** — Regenerate document summaries after API updates - **fixed** — Fix pipeline template rendering - **changed** — Handle credential fetch failures in RAG pipelines more gracefully - **changed** — Track app creation source and template ID ##### 🚀 What's New in v1.14.2? v1.14.2 is a patch release focused on security hardening, workflow and knowledge reliability, observability fixes, agent groundwork, and deployment/runtime tuning after v1.14.1. ###### 🔐 Security and administration - **Tenant-scoped sensitive endpoints** — strengthened tenant isolation for app trace-config endpoints and FilePreview text extraction. Thanks @xr843 in [#35793](https://github.com/langgenius/dify/pull/35793) and [#35797](https://github.com/langgenius/dify/pull/35797). - **Tool credential safety** — restricted default builtin tool credential updates to workspace admins and owners, and cleaned stale tenant tool credentials during `reset-encrypt-key-pair`. Thanks @NeatGuyCoding and @xr843 in [#36264](https://github.com/langgenius/dify/pull/36264) and [#35843](https://github.com/langgenius/dify/pull/35843). ###### 🧩 Workflow, HITL, and app runtime - **Workflow execution reliability** — restored tracing after HITL workflow resume, improved workflow run callback tracking, reduced message-update database roundtrips, fixed memory fetches outside Flask context, and closed base64 file lookup sessions correctly. Thanks @Blackoutta, @CodingOnStar, @wylswz, @hjlarry, and @escape0707 in [#36064](https://github.com/langgenius/dify/pull/36064), [#36149](https://github.com/langgenius/dify/pull/36149), [#36213](https://github.com/langgenius/dify/pull/36213), [#36253](https://github.com/langgenius/dify/pull/36253), and [#36308](https://github.com/langgenius/dify/pull/36308). - **Workflow and model selection polish** — fixed loading behavior when no model is selected, filtered model presets by supported parameters, and improved API extension dialog controls. Thanks @iamjoel and @lyzno1 in [#36342](https://github.com/langgenius/dify/pull/36342), [#36339](https://github.com/langgenius/dify/pull/36339), and [#36323](https://github.com/langgenius/dify/pull/36323). ###### 📚 Data, RAG, and knowledge - **Knowledge-base stability** — fixed knowledge hit-testing rendering, empty knowledge creation, recommended app category ordering, and null handling in recommended app detail retrieval. Thanks @FFXN, @laipz8200, @hjlarry, and @EvanYao826 in [#36106](https://github.com/langgenius/dify/pull/36106), [#36336](https://github.com/langgenius/dify/pull/36336), [#36161](https://github.com/langgenius/dify/pull/36161), and [#36153](https://github.com/langgenius/dify/pull/36153). - **RAG and document processing** — allowed LLM nodes to access retrieved knowledge files, regenerated document summaries after API updates, fixed pipeline template rendering, and handled credential fetch failures in RAG pipelines more gracefully. Thanks @laipz8200, @EvanYao826, @FFXN, and @linw1995 in [#36175](https://github.com/langgenius/dify/pull/36175), [#36035](https://github.com/langgenius/dify/pull/36035), [#36168](https://github.com/langgenius/dify/pull/36168), and [#36165](https://github.com/langgenius/dify/pull/36165). ###### 🎨 Web UI and product experience - **App creation and onboarding** — tracked app creation source and template ID, initialized user timezone and language from the browser, and fixed WebApp icon and description display. Thanks @CodingOnStar, @lyzno1, and @JzoNgKVO in [#36369](https://github.com/langgenius/dify/pull/36369), [#36170](https://github.com/langgenius/dify/pull/36170), [#36206](https://github.com/langgenius/dify/pull/36206), and [#36209](https://github.com/langgenius/dify/pull/36209). - **Annotation and datasets UI** — allowed annotation reply score thresholds below `0.8`, redirected unauthorized knowledge editors back to datasets, and fixed tag rename without type payload. Thanks @JzoNgKVO, @iamjoel, and @lyzno1 in [#36337](https://github.com/langgenius/dify/pull/36337), [#36073](https://github.com/langgenius/dify/pull/36073), and [#36182](https://github.com/langgenius/dify/pull/36182). - **UI platform migration and polish** — added Checkbox and CheckboxGroup primitives, m _[Truncated at 4000 characters — full notes: https://github.com/langgenius/dify/releases/tag/1.14.2]_ ### 1.14.1 — v1.14.1 - Security hardening, workflow stability, and cleaner self-hosted deployments - Date: 2026-05-12 - Version: 1.14.1 - Original notes: https://github.com/langgenius/dify/releases/tag/1.14.1 - Permalink: https://whatsnew.fyi/product/dify/releases/1.14.1 - **security** — Docker deployments no longer rely on a public default SECRET_KEY; when left empty, the API generates and persists a runtime key through the configured storage backend - **security** — Protect /threads and /db-pool-stat endpoints from unauthenticated access to internal runtime and database-pool details - **security** — Fix IDOR issue in GET /account/avatar endpoint and scope builtin-tool default-credential cleanup to the current tenant - **security** — Upgrade LiteLLM for CVE-2026-42208 and refresh backend dependencies including urllib3, gunicorn, gitpython, mako, Google SDK packages, storage libraries, and OpenTelemetry exporter packages - **fixed** — Restore workflow-version loading through the backend API - **fixed** — Fix online-user polling for large app lists - **fixed** — Prevent preview resize observer loops - **fixed** — Avoid schema model collisions in trial workflows - **fixed** — Fix variable reference picker behavior for sub-variables - **fixed** — Fix workflow node title overflow - **fixed** — Fix condition operator popovers - **fixed** — Fix workflow checklist semantics - **fixed** — Fix KB metadata filter field selection - **fixed** — Preserve single-run input variable types - **fixed** — Fix structured_output_enabled validation - **fixed** — Fix file-preview URL handling in node output display - **fixed** — Unblock plugin model selector tools on v1.14.0 workflows - **added** — Expose selected action values for Human-in-the-loop flows - **added** — Add editable class labels to Question Classifier - **fixed** — Fix image rendering failures in the knowledge base - **fixed** — Skip empty documents before vector embedding and validate missing text indexing techniques - **changed** — Use doc_id as the deduplication key across all RAG providers, not only Dify-hosted providers ##### 🚀 What's New in v1.14.1? v1.14.1 is a patch release focused on security hardening, workflow and knowledge-base stability, deployment cleanup, and continued UI platform migration after v1.14.0. ###### 🔐 Security - **Self-hosted `SECRET_KEY` hardening** — Docker deployments no longer rely on a public default key. When `SECRET_KEY` is left empty, the API generates and persists a runtime key through the configured storage backend, while explicitly configured keys continue to work as before. Thanks @laipz8200 in [#36049](https://github.com/langgenius/dify/pull/36049). - **Internal metrics endpoint protection** — `/threads` and `/db-pool-stat` are hardened to avoid unauthenticated exposure of internal runtime and database-pool details. Thanks @orbisai0security in [#35665](https://github.com/langgenius/dify/pull/35665). - **Account and tool isolation** — fixed an IDOR issue in `GET /account/avatar` and scoped builtin-tool default-credential cleanup to the current tenant. Thanks @NeatGuyCoding and @GareArc in [#35771](https://github.com/langgenius/dify/pull/35771) and [#35887](https://github.com/langgenius/dify/pull/35887). - **Dependency security** — upgraded LiteLLM for CVE-2026-42208 and refreshed several backend dependencies, including `urllib3`, `gunicorn`, `gitpython`, `mako`, Google SDK packages, storage libraries, and OpenTelemetry exporter packages. Thanks @crazywoola in [#35953](https://github.com/langgenius/dify/pull/35953), [#35779](https://github.com/langgenius/dify/pull/35779), [#35791](https://github.com/langgenius/dify/pull/35791), [#35863](https://github.com/langgenius/dify/pull/35863), [#35864](https://github.com/langgenius/dify/pull/35864), [#35958](https://github.com/langgenius/dify/pull/35958), [#36011](https://github.com/langgenius/dify/pull/36011), [#36012](https://github.com/langgenius/dify/pull/36012), [#36013](https://github.com/langgenius/dify/pull/36013), [#36017](https://github.com/langgenius/dify/pull/36017), and [#36050](https://github.com/langgenius/dify/pull/36050). ###### 🧩 Workflow, HITL, and app runtime - **Workflow stability** — restored workflow-version loading through the backend API, fixed online-user polling for large app lists, prevented preview resize observer loops, and avoided schema model collisions in trial workflows. Thanks @hjlarry and @lyzno1 in [#35817](https://github.com/langgenius/dify/pull/35817), [#35786](https://github.com/langgenius/dify/pull/35786), [#35936](https://github.com/langgenius/dify/pull/35936), and [#36061](https://github.com/langgenius/dify/pull/36061). - **Workflow authoring polish** — fixed variable reference picker behavior for sub-variables, workflow node title overflow, condition operator popovers, workflow checklist semantics, and KB metadata filter field selection. Thanks @iamjoel, @hjlarry, @lyzno1, and @shawny011717 in [#35732](https://github.com/langgenius/dify/pull/35732), [#35740](https://github.com/langgenius/dify/pull/35740), [#35828](https://github.com/langgenius/dify/pull/35828), [#36006](https://github.com/langgenius/dify/pull/36006), and [#34149](https://github.com/langgenius/dify/pull/34149). - **Workflow execution correctness** — preserved single-run input variable types, fixed `structured_output_enabled` validation, fixed file-preview URL handling in node output display, and unblocked plugin model selector tools on v1.14.0 workflows. Thanks @Jingyi-Dify, @fatelei, @shawny011717, and @sawyer-shi in [#35710](https://github.com/langgenius/dify/pull/35710), [#35747](https://github.com/langgenius/dify/pull/35747), [#34150](https://github.com/langgenius/dify/pull/34150), and [#35794](https://github.com/langgenius/dify/pull/35794). - **Human input** — exposed selected action values for Human-in-the-loop flows. Thanks @Blackoutta in [#35451](https://github.com/langgenius/dify/pull/35451). - **Question Classifier** — added editable class labels. Thanks @Blackoutta in [#35430](https://github.com/langgenius/dify/pull/35430). _[Truncated at 4000 characters — full notes: https://github.com/langgenius/dify/releases/tag/1.14.1]_ ### 1.14.0 — v1.14.0 - Date: 2026-04-29 - Version: 1.14.0 - Original notes: https://github.com/langgenius/dify/releases/tag/1.14.0 - Permalink: https://whatsnew.fyi/product/dify/releases/1.14.0 - **added** — Collaboration allows workspace members to edit the same workflow together with synced graph updates, online presence, and shared visibility into who is working where - **added** — Service API for human-in-the-loop (HITL) provides programmatic support for human-in-the-loop flows - **added** — MCP tool metadata refreshes after updates to keep the UI in sync - **added** — Goto Anything command includes recent items, /go command, and deeper app sub-sections - **added** — Prompt editor supports slash-triggered variable filtering and keyboard up/down navigation in variable lists - **added** — Langfuse integration includes optional time-to-first-token (TTFT) reporting - **added** — Quota v3 integration in the product stack - **added** — Optional ALLOW_INLINE_STYLES environment variable to allow inline CSS in rendered Markdown - **added** — Healthchecks added for api, worker, and worker_beat in Docker Compose - **added** — Shared UI primitives including PreviewCard and Meter in @langgenius/dify-ui package - **changed** — MCP server URL double /v1 path issue that could break OAuth and authorization fixed - **changed** — MCP OAuth discovery now handles malformed JSON safely - **changed** — MCP schema publishing maps checkbox and json_object types correctly - **changed** — Plugin auto-upgrade strategy persistence, local installer and file-input behavior improved - **changed** — Celery default worker concurrency raised to 4 - **changed** — PostgreSQL default max connections increased to 200 - **changed** — Redis operations include configurable key prefix and retry logic - **changed** — TiDB endpoint support and auth binding migration including Qdrant endpoint on TiDB - **changed** — Graph initialization performance optimized - **changed** — Graphon upgraded to standalone version 0.2.2 replacing in-tree dify_graph - **fixed** — Change-email flow implements stricter phase-bound token handling - **security** — IDOR hardening through tenant validation on data-source binding and dataset and API ownership checks ##### 🚀 What's New in v1.14.0? ###### Collaboration img_v3_02117_67a67218-1ae5-4d68-a45b-3ada592f87fg Collaboration allows workspace members to edit the same workflow together, with synced graph updates, online presence, and shared visibility into who is working where. On self-hosted deployments, collaboration is turned off by default. Enable it by setting: ``` ENABLE_COLLABORATION_MODE = true SERVER_WORKER_CLASS = geventwebsocket.gunicorn.workers.GeventWebSocketWorker NEXT_PUBLIC_SOCKET_URL = your deployment’s WebSocket URL (e.g., wss://dify.example.com) ``` For more details, see [Full Documentation](https://docs.dify.ai/en/use-dify/build/workflow-collaboration) ###### Human-in-the-loop (HITL) - **Service API for HITL** — programmatic support for human-in-the-loop flows alongside existing console behavior. ###### MCP and plugins - **MCP tool metadata** — refresh after updates so the UI stays in sync. - **MCP server URL** — fix double `/v1` that could break OAuth and authorization (404). - **MCP OAuth discovery** — handle malformed JSON safely. - **MCP schema publishing** — map `checkbox` and `json_object` types correctly. - **Plugins** — auto-upgrade strategy persistence, local installer and file-input behavior, tenant scoping for inner API end-user lookup. ###### Marketplace and OAuth - **Marketplace and OAuth** — targeted fixes for marketplace flows and OAuth sign-in (including edge cases such as null email on GitHub OAuth). ###### UI kit and front-end platform - **`@langgenius/dify-ui`** — shared primitives (for example **PreviewCard**, **Meter**), design tokens, and broad migration from ad-hoc `web/base/ui` toward the package. - **Accessibility** — date and time pickers, auto-update strategy picker, scrollbars in plugin and model selectors, and related polish. - **Goto Anything** — recent items, `/go` command, deeper app sub-sections; fix for **Cmd+K** (removed problematic dynamic import). - **Prompt editor** — slash-triggered **variable filtering**; keyboard **up/down** in variable lists. - **Follow-up questions** — improved settings and token limits for suggested questions. - **Modals** — ApiKey, provider config, and others refactored toward a shared **Dialog** pattern with tests. ###### Observability and analytics - **Langfuse** — optional **time-to-first-token (TTFT)** reporting. - **Explore** — banner impression tracking; app preview event tracking on cards. ###### Billing and quotas - **Quota v3** integration in the product stack. - **Billing UI** — Meter-based usage presentation; more resilient cleanup when billing APIs fail. - **File uploader** — billing-aware behavior and copy updates. ###### Data, RAG, and knowledge - **Summary index and Weaviate** — compatibility fixes when using the summary index with Weaviate. - **Vector projection** — include `is_summary` and `original_chunk_id` in default projection where relevant. - **External and bound datasets** — stronger tenant checks on knowledge APIs. ###### Infrastructure and operations - **Docker Compose** — **healthchecks** for `api`, `worker`, and `worker_beat`; template and env example updates (for example S3 address style). - **Celery** — default worker **concurrency raised to 4**; missing queue fix. - **PostgreSQL** — higher default **max connections (200)** for the updated app DB path. - **Redis** — **configurable key prefix**; **retry** logic for Redis operations. - **TiDB** — endpoint support and related auth binding migration (**Qdrant endpoint on TiDB auth bindings**). - **Markdown** — optional **`ALLOW_INLINE_STYLES`** environment variable to allow inline CSS in rendered Markdown when needed. ###### Security - **Change-email flow** — stricter phase-bound token handling ([GHSA-4q3w-q5mc-45rq](https://github.com/advisories?query=GHSA-4q3w-q5 _[Truncated at 4000 characters — full notes: https://github.com/langgenius/dify/releases/tag/1.14.0]_ ### 1.13.3 — v1.13.3 - Date: 2026-03-27 - Version: 1.13.3 - Original notes: https://github.com/langgenius/dify/releases/tag/1.13.3 - Permalink: https://whatsnew.fyi/product/dify/releases/1.13.3 - **added** — Add variable-reference support for model parameters in LLM, Question Classifier, and Variable Extractor nodes - **fixed** — Fix StreamsBroadcastChannel replay and concurrency issues to keep frontend/backend event delivery stable - **fixed** — Fix pasted nodes retaining Loop/Iteration metadata - **fixed** — Prevent HumanInput nodes from being pasted into invalid containers - **fixed** — Restore prompt message transformation logic - **fixed** — Correct max_retries=0 handling for executor-driven HTTP Request execution - **fixed** — Preserve citation metadata in web responses - **fixed** — Fix crashes when dataset icon metadata is missing - **fixed** — Correct hit-count query filtering - **fixed** — Restore indexed document chunk previews ##### 🚀 What's New in v1.13.3? Our latest patch release, v1.13.3, focuses on stability and correctness across workflow execution, streaming, and knowledge retrieval. Here's a quick look at the most important updates: ###### 🎬 New Features - **Workflow Configuration**: Added variable-reference support for model parameters in LLM, Question Classifier, and Variable Extractor nodes by @scdeng in #33082. ###### 🛠️ Bug Fixes - **Streaming Reliability**: Fixed `StreamsBroadcastChannel` replay and concurrency issues to keep frontend/backend event delivery stable by @QuantumGhost in #34030 and #34061. - **Workflow Editor Behavior**: Fixed pasted nodes retaining Loop/Iteration metadata and prevented `HumanInput` nodes from being pasted into invalid containers by @majiayu000 and @hjlarry in #29983 and #34077. - **Runtime Execution**: Restored prompt message transformation logic and corrected `max_retries=0` handling for executor-driven HTTP Request execution by @QuantumGhost, @fatelei, and @kurokobo in #33666, #33619, and #33688. - **Knowledge Retrieval**: Preserved citation metadata in web responses, fixed crashes when dataset icon metadata is missing, corrected hit-count query filtering, and restored indexed document chunk previews by @Theysua, @copilot-swe-agent, and @fatelei in #33778, #33907, #33757, and #33942. ###### 🔧 Under the Hood - **Patch Stability**: This release prioritizes targeted fixes for workflow runtime behavior, real-time streaming, and knowledge base usability for teams upgrading from v1.13.2. --- ##### Upgrade Guide > [!IMPORTANT] > The Sandbox image used by Dify v1.13.3 expects the following Python and Node.js paths. > If you upgraded from an older Docker Compose deployment and already have `docker/volumes/sandbox/conf/config.yaml`, update it on the host machine: > ```yaml > python_path: /opt/python/bin/python3 > nodejs_path: /usr/local/bin/node > ``` > > Do not edit the file inside the sandbox container. The directory `docker/volumes/sandbox/conf` is mounted into the container as `/conf`, so host changes persist after container restarts. ###### Docker Compose Deployments 1. Back up your customized docker-compose YAML file (optional) ```bash cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak ``` 2. Get the latest code from the main branch ```bash git checkout main git pull origin main ``` 3. Stop the service. Please execute in the docker directory ```bash docker compose down ``` 4. Back up data ```bash tar -cvf volumes-$(date +%s).tgz volumes ``` 5. Upgrade services ```bash docker compose up -d ``` ###### Source Code Deployments 1. Stop the API server, Worker, and Web frontend Server. 2. Get the latest code from the release branch: ```bash git checkout 1.13.3 ``` 3. Update Python dependencies: ```bash cd api uv sync ``` 4. Then, let's run the migration script: ```bash uv run flask db upgrade ``` 5. Finally, run the API server, Worker, and Web frontend Server again. --- ##### What's Changed * refactor(web): number inputs to use Base UI NumberField by @lyzno1 in https://github.com/langgenius/dify/pull/33539 * feat(web): add base ui toast by @lyzno1 in https://github.com/langgenius/dify/pull/33569 * chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/33585 * chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/33586 * refactor(api): Query API to select function_1 by @RenzoMXD in https://github.com/langgenius/dify/pull/33565 * refactor: replace sa.String with EnumText for mapped_columns by @tmimmanuel in https://github.com/langgenius/dify/pull/33547 * refactor(api): replace dict/Mapping with TypedDict in core/app by @statxc in https://github.com/langgenius/dify/pull/33601 * chore( _[Truncated at 4000 characters — full notes: https://github.com/langgenius/dify/releases/tag/1.13.3]_ ### 1.13.2 — v1.13.2 - Date: 2026-03-18 - Version: 1.13.2 - Original notes: https://github.com/langgenius/dify/releases/tag/1.13.2 - Permalink: https://whatsnew.fyi/product/dify/releases/1.13.2 - **fixed** — Fix severe regression in prompt message transformation that caused multiple LLM-plugin invocation failures across LLM-related nodes - **fixed** — Fix Knowledge Retrieval node execution failures caused by incompatible enum values - **fixed** — Fix improper Weaviate client cleanup by removing the __del__ method - **fixed** — Fix max_retries being hardcoded - **fixed** — Make CreatorUserRole accept both end-user and end_user formats This patch release fixes several critical regressions and stability issues introduced in v1.13.1, including: - a severe regression in prompt message transformation that caused multiple LLM-plugin invocation failures across LLM-related nodes, including LLM and Question Classifier. - Knowledge Retrieval node execution failures caused by incompatible enum values - improper Weaviate client cleanup --- ##### Upgrade Guide > [!IMPORTANT] > If you use custom `CELERY_QUEUES`, make sure `workflow_based_app_execution` is included. > If `ENABLE_API_TOKEN_LAST_USED_UPDATE_TASK=true`, also include `api_token`. > > For background and details, see **⚠️ Important Upgrade Note** and **🔧 Operational Note** above. ###### Docker Compose Deployments 1. Back up your customized docker-compose YAML file (optional) ```bash cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak ``` 2. Get the latest code from the main branch ```bash git checkout main git pull origin main ``` 3. Stop the service. Please execute in the docker directory ```bash docker compose down ``` 4. Back up data ```bash tar -cvf volumes-$(date +%s).tgz volumes ``` 5. Upgrade services ```bash docker compose up -d ``` > [!NOTE] > > If you encounter errors like below > > ```bash > 2025/11/26 11:37:57 /app/internal/db/pg/pg.go:30 > [error] failed to initialize database, got error failed to connect to `host=db_postgres user=postgres database=dify_plugin`: hostname resolving error (lookup db_postgres on 127.0.0.11:53: server misbehaving) > > 2025/11/26 11:37:57 /app/internal/db/pg/pg.go:34 > [error] failed to initialize database, got error failed to connect to `host=db_postgres user=postgres database=postgres`: hostname > resolving error (lookup db_postgres on 127.0.0.11:53: server misbehaving) > 2025/11/26 11:37:57 init.go:99: [PANIC]failed to init dify plugin db: failed to connect to `host=db_postgres user=postgres database=postgres`: hostname resolving error (lookup db_postgres on 127.0.0.11:53: server misbehaving) > panic: [PANIC]failed to init dify plugin db: failed to connect to `host=db_postgres user=postgres database=postgres`: hostname resolving error (lookup db_postgres on 127.0.0.11:53: server misbehaving) > ``` > Please use the following command instead. For details, please read this https://github.com/langgenius/dify/issues/28706 > ```bash > docker compose --profile postgresql up -d > ``` ###### Source Code Deployments 1. Stop the API server, Worker, and Web frontend Server. 2. Get the latest code from the release branch: ```bash git checkout 1.13.2 ``` 3. Update Python dependencies: ```bash cd api uv sync ``` 4. Then, let's run the migration script: ```bash uv run flask db upgrade ``` 5. Finally, run the API server, Worker, and Web frontend Server again. --- ##### What's Changed * chore: bump version to 1.13.2 (#33681) by @QuantumGhost * fix: fix max_retries is hardcode (#33619) by #32715 @fatelei * fix(api): Preserving the content transform logic in fetch_prompt_messages (#33666) by @QuantumGhost * feat: remove weaviate client __del__ method (#33593) by @fatelei * fix(api): make CreatorUserRole accept both `end-user` and `end_user` (#33638) by @fatelei **Full Changelog**: https://github.com/langgenius/dify/compare/1.13.1...1.13.2 ### 1.13.1 — v1.13.1 - Date: 2026-03-17 - Version: 1.13.1 - Original notes: https://github.com/langgenius/dify/releases/tag/1.13.1 - Permalink: https://whatsnew.fyi/product/dify/releases/1.13.1 - **added** — Add Hologres as a supported backend option for vector retrieval and full-text search - **added** — Add Service API endpoints for dataset document downloads including batch ZIP download and signed URL download - **changed** — HITL email content now uses markdown rendering before delivery - **changed** — Draft variables are now user-scoped instead of app-scoped - **added** — Add edge context menu support in workflow canvas including direct edge deletion - **changed** — Preserve existing connections when changing node types in workflow editing - **added** — Add configurable send-key behavior for embedded chat input - **added** — Add file payloads in message-end stream responses - **removed** — Remove GPT-4-specific hardcoded behavior from default model selection logic - **added** — Add export-app-messages CLI command to export application messages and related feedback to JSONL.GZ - **security** — Prevent SQL injection risks in vector-store query paths by switching to parameterized SQL - **security** — Sanitize subject and body content in HITL email delivery - **security** — Strip CR/LF from email subjects to prevent SMTP header-injection vectors - **security** — Enforce ownership checks for conversation deletion APIs - **security** — Clear stale provider credentials during plugin uninstall - **security** — Improve enterprise API error handling and license-enforcement behavior for invalid or expired license states - **added** — Add dedicated Celery queue dataset_summary for LLM-heavy summary generation tasks - **added** — Add telemetry metrics for retention cleanup tasks and flush behavior for short-lived command jobs - **added** — Add REDIS_MAX_CONNECTIONS configuration option - **deprecated** — Deprecate PUBSUB_* event-bus settings in favor of EVENT_BUS_* settings - **fixed** — Fix workflow_runs.started_at being overwritten on resume - **fixed** — Fix metadata batch-edit silent failures caused by split-transaction edge cases - **fixed** — Fix metadata filter extraction issues in knowledge retrieval - **fixed** — Restore citation visibility in advanced chat applications - **fixed** — Fix conversation variable reset behavior after HITL nodes - **fixed** — Fix page crash in knowledge-retrieval node configuration flow - **fixed** — Fix chat assistant blocking response-mode behavior - **added** — Add doc_type handling in Weaviate vector attributes - **changed** — Upgrade OpenTelemetry dependencies to resolve context-detach errors ##### 🚀 Major Functional Changes ###### Data platform and dataset operations - Added **Hologres** as a supported backend option for both vector retrieval and full-text search. - Added Service API endpoints for dataset document downloads: - Batch ZIP download for selected documents. - Signed URL download for single-document original files. ###### Workflow and chat experience improvements - **Breaking change:** HITL email content now uses markdown rendering before delivery. Existing email templates that relied on raw/plain behavior may render differently after upgrade. - Draft variables are now user-scoped instead of app-scoped. Historical draft variables will not be available after upgrading. - Added edge context menu support in workflow canvas, including direct edge deletion. - Preserved existing connections when changing node types in workflow editing. - Added configurable send-key behavior (`Enter` vs `Shift+Enter`) for embedded chat input. - Added file payloads in message-end stream responses. - Removed GPT-4-specific hardcoded behavior from default model selection logic. - Added a new `export-app-messages` CLI command to export application messages and related feedback to `JSONL.GZ` (local or cloud storage). ##### 🔐 Security Updates - Prevented SQL injection risks in vector-store query paths by switching to parameterized SQL in affected implementations. - Hardened HITL email delivery: - Sanitize subject and body content. - Strip CR/LF from subjects to prevent SMTP header-injection vectors. - Enforced ownership checks for conversation deletion APIs. - Cleared stale provider credentials during plugin uninstall to reduce residual credential risk. - Improved enterprise API error handling and license-enforcement behavior for invalid/expired license states. ##### 🏗️ Configuration, Architecture, and Deployment Updates ###### Deployment and operations - Added a dedicated Celery queue: `dataset_summary` for LLM-heavy summary generation tasks. - Ensure workers subscribe to this queue to avoid summary-job backlog. - Added telemetry metrics for retention cleanup tasks (messages/workflow runs), plus flush behavior for short-lived command jobs. ###### Configuration changes - Added `REDIS_MAX_CONNECTIONS`. - Deprecated `PUBSUB_*` event-bus settings in favor of `EVENT_BUS_*` settings. ##### 🛠 Other Noteworthy Changes - Fixed `workflow_runs.started_at` being overwritten on resume. - Fixed metadata batch-edit silent failures caused by split-transaction edge cases. - Fixed metadata filter extraction issues in knowledge retrieval (`{{...}}` conditions). - Restored citation visibility in advanced chat applications. - Fixed conversation variable reset behavior after HITL nodes. - Fixed a page crash in knowledge-retrieval node configuration flow. - Fixed chat assistant blocking response-mode behavior. - Added `doc_type` handling in Weaviate vector attributes for better compatibility. - Upgraded OpenTelemetry dependencies to resolve context-detach errors. --- ##### Upgrade Guide > [!IMPORTANT] > If you use custom `CELERY_QUEUES`, make sure `workflow_based_app_execution` is included. > If `ENABLE_API_TOKEN_LAST_USED_UPDATE_TASK=true`, also include `api_token`. > > For background and details, see **⚠️ Important Upgrade Note** and **🔧 Operational Note** above. ###### Docker Compose Deployments 1. Back up your customized docker-compose YAML file (optional) ```bash cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak ``` 2. Get the latest code from the main branch ```bash git checkout main git pull origin main ``` 3. Stop the service. Please execute in the docker directory ```bash docker compose down ``` 4. Back up data ```bash tar -cvf volumes-$(date +%s).tgz volumes ``` 5. Upgrade services ```bash docker compose up -d ``` > [!NOTE] > > _[Truncated at 4000 characters — full notes: https://github.com/langgenius/dify/releases/tag/1.13.1]_