Releases: langgenius/dify
v1.7.2
✨ What’s New in v1.7.2? ✨
Alright folks, buckle up! Version 1.7.2 is here, packed with a ton of quality-of-life improvements, bug fixes, and some slick new features to make your Dify experience even smoother. This release has been a community effort, and we want to give a big shoutout to all the contributors, especially the new folks who jumped in – welcome to the party! 🎉
🚀 Major Feature: Workflow Visualization
A new relations panel allows you to visualize dependencies within your workflows. Big thanks to @Minamiyama for #21998! Now when you select any node and press Shift, you will see magic flowing lines.
🚀 Major Feature: Node Search
You can now easily find nodes in the workflow editor using the new search feature by @croatialu, @ZeroZ-lab, @HyaCiovo, @MatriQ, @lyzno1, @crazywoola in #23685.
⚙️ Enhancements
- Notion Database Row Extraction: The Notion Database integration now extracts rows in their original order and appends the Row Page URL. Thanks @ThreeFish-AI! #22646
- Workflow API Version Specification: You can now specify workflow versions in the workflow and chat APIs. Thanks, @qiaofenlin! #23188
- Tool JSON Response: Datetime and UUID are now supported in tool JSON responses, making those integrations even more powerful. Kudos to @jiangbo721! #22738
- API Documentation: The API documentation has been revamped with a modern design and improved UX. Thanks @lyzno1! #23490
- Workflow Node Alignment: Get those workflows looking sharp with enhanced node alignment options. Thanks, @ZeroZ-lab! #23451
- Service API File Preview Endpoint: A new endpoint to preview service API files, making it easier to manage and debug your services. Hat tip to @lyzno1! #23534
- Testcontainers Tests: We're serious about stability! @NeatGuyCoding and others have been hard at work adding Testcontainers tests for various services (account, app, message, workflow etc.) ensuring our services are rock solid.
🛠️ Bug Fixes
- Full-Text Search with Tencent Cloud VectorDB: Fixed an issue where metadata filters weren't being applied correctly in full-text search mode for Tencent Cloud VectorDB. Thanks, @dlmu-lq! #23564
- Workflow Knowledge Retrieval Cache: Fixed a cache bug in workflow knowledge retrieval. Another one bites the dust, thanks to @yunqiqiliang! #23597
- HTTP Request Component: Resolved a multipart/form-data boundary issue in the HTTP Request component. Thanks to @baonudesifeizhai for fixing this long-standing issue! #23008
- Conversation Variable Sync: Fixed an issue where conversation variables weren't being synced for existing conversations. Thanks to @laipz8200 for hunting this down! #23649
- Internationalization (i18n): Numerous i18n fixes and enhancements across the board. Shoutout to @lyzno1 and the i18n team for their dedication!
- Edge Cases Handled: We squashed a number of edge-case bugs, thanks to the contributions of many in the community.
🛡️ Security
- XSS Vulnerability: A big thank you to @lyzno1 for identifying and fixing an XSS vulnerability in the authentication check-code pages. #23295
Upgrade Guide
Docker Compose Deployments
-
Back up your customized docker-compose YAML file (optional)
cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
-
Get the latest code from the main branch
git checkout main git pull origin main
-
Stop the service. Please execute in the docker directory
docker compose down
-
Back up data
tar -cvf volumes-$(date +%s).tgz volumes -
Upgrade services
docker compose up -d
Source Code Deployments
-
Stop the API server, Worker, and Web frontend Server.
-
Get the latest code from the release branch:
git checkout 1.7.2
-
Update Python dependencies:
cd api uv sync -
Then, let's run the migration script:
uv run flask db upgrade
-
Finally, run the API server, Worker, and Web frontend Server again.
What's Changed
- Fixed code formatting issues in the comment header option component by @ZeroZ-lab in #23060
- fix: web SSO login redirect to correct basePath and origin by @chunglam2525 in #23058
- minor fix: using the same AccountInFreezeError by @NeatGuyCoding in #23061
- fix(i18n): Complete missing translations and clean up legacy keys in app-debug across all locales (#23062) by @lyzno1 in #23065
- Fix/23066 i18n related commands are broken by @crazywoola in #23071
- dark mode for overlay by @jubinsoni in #23078
- fix(scripts): resolve i18n check script path and logic issues by @lyzno1 in #23069
- Refactor: remove redundant full module paths in exception handlers by @hyongtao-db in #23076
- ability to click classifier during workflow execution by @jubinsoni in #23079
- Fix: number input can display 0 by @JzoNgKVO in #23084
- minor fix: fix error messages by @NeatGuyCoding in #23081
- Fix Empty Collection WHERE Filter Issue by @NeatGuyCoding in #23086
- Fix variable config by @ZeroZ-lab in #23070
- feat: update banner by @crazywoola in #23095
- chore: base form by @zxhlyh in #23101
- hotfix: clear_all_annotations should also execute delete_annotation_index_task just like delete_app_annotation by @NeatGuyCoding in #23093
- minor fix: wrong assignment by @NeatGuyCoding in #23103
- minor fix: fix some translation by @NeatGuyCoding in #23105
- Feat/enhance i18n scripts by @lyzno1 in #23114
- refactor: pass external_trace_id to message trace by @wrfly in #23089
- minor fix: wrong position of retry_document_indexing_task time elapsed by @NeatGuyCoding in #23099
- fix: i18n link in README.md by @crazywoola in #23121
- fix(web): make iteration panel respect MAX_PARALLEL_LIMIT environment variable (#23083) by @lyzno1 in #23104
- minor fix: Object of type int64 is not JSON serializable by @leslie2046 in #23109
- Fix/http node timeout validation#23077 by @baonudesifeizhai in #23117
- fix: metadata API nullable validation consistency issue by @lyzno1 in #23133
- Fix: add missing db.session.close() to ensure proper session cleanup by @hyongtao-db in #23122
- Chore: use
Workflow.VERSION_DRAFTinstead of hardcodeddraftby @hyongtao-db in #23136 - request fail when no api key by @jubinsoni in #23135
- Fix: prevent KeyError in validate_api_list by correcting logical check by @hyongtao-db in #23126
- fix(i18n): clean up unused keys and fix nesting & placeholder issues by @lyzno1 in #23123
- Fix: Support for Elasticsearch Cloud Connector by @nurrochmanmuhammad in #23017
- fix: disabled auto update but still show in plugin detail by @iamjoel in #23150
- Feat annotations panel by @ZeroZ-lab in #22968
- fix: element of Array[string] and Array[number] and size attribution by @leslie2046 in #23074
- feat: support metadata condition filter string array by @kenwoodjw in #23111
- fix: Support URL-encoded passwords with special characters in CELERY_BROKER_URL by @Sn0rt in #23163
- minor fix: fix wrong check of annotation_ids by @NeatGuyCoding in #23164
- minor fix: fix flask api resources only accept one resource for same url by @NeatGuyCoding in #23168
- fix: Error processing trace tasks by @IthacaDream in #23170
- chore(i18n): sync missing keys in zh-Hans and ja-JP by @lyzno1 in #23175
- chore: Update vulnerable eslint dependencies by @WTW0313 in #23192
- feat(notion): Notion Database extracts Rows content
in row orderand appendsRow Page URLby @ThreeFish-AI in #22646 - feat: Enable Tracing Support For Phoenix Cloud Instance by @ialisaleh in #23196
- fixing embedded chat styling by @jubinsoni in #23198
- fix: prevent client-side crashes from null/undefined plugin data in workflow (#23154) by @lyzno1 in #23182
- ...
v1.7.1
🎉 Dify v1.7.1 Release Notes 🎉
Hello, Dify enthusiasts! We're thrilled to announce version 1.7.1 of our platform, bringing a fresh batch of refinements and enhancements to your workflow. Here's a breakdown of what's changed:
🚀 New Features
-
Default Value for Select Inputs: Now you can set a default value for select input fields, providing a smoother user experience when working with forms. Thanks to @antonko. (#21192)
-
Selecting Variables in Conditional Filters: We've added the capability to select variables in conditional filtering within list operations. This feature, spearheaded by @leslie2046, will streamline data manipulation tasks. (#23029)
-
OpenAPI Schema Enhancement: Support for
allOfin OpenAPI properties inside schema has been added, courtesy of @mike1936. It's a big win for API design consistency. (#22975) -
K8s Pure Migration Option: We've introduced a pure migration option for the
apicomponent within Kubernetes deployments, making migrations simpler for large-scale systems. Thanks, @BorisPolonsky ! (#22750)
⚙️ Bug Fixes
-
Langfuse Integration Path: Incorrect path handling with Langfuse integration has been corrected by @chenguowei. Now it behaves just right within your API calls. (#22766)
-
CELERY_BROKER Improvements: For those using RabbitMQ, the broker handling issue during batch document segment additions has been addressed by @zhaobingshuang. No more endless processing status! (#23038)
-
Metadata Batch Edit Cross-page Issue: Resolved a previous issue with cross-page document selection during metadata batch edits. Thanks to @liugddx for smoothing out the workflow. (#23000)
-
Windows PEM KeyPath Fix: Corrected path errors for private.pem key files on Windows systems, ensuring cross-platform reliability. Thanks to @silencesdg. (#22814)
🔄 Improvements
-
ToolTip Component Refinement: We've refined the interaction of ToolTip components within menus to enhance readability and usability. Kudos to @HyaCiovo for this optimization. (#23023)
-
PostgreSQL Healthcheck: Enhanced the healthcheck command to avoid fatal log errors in PostgreSQL. Thanks to @J2M3L2's talismanic touch. (#22749)
-
Time Formatting Internationalization: The time formatting feature has been refactored for better international support, thanks to @HyaCiovo. (#22870)
🪄 Miscellaneous
-
Revamped Tool List Page: @nite-knite made the tool list page slicker and more user-friendly—check it out! (#22879)
-
Duplicate TYPE_CHECKING Import: Removed those unnecessary imports for sleeker code. Thanks, @hyongtao-db. (#23013)
Pulling all these improvements together, this release takes a big step forward in polishing everyday experiences and paving the way for future development. Enjoy the upgrade, and as always, reach out with feedback and ideas for what you'd love to see next. Keep coding! 🚀
Upgrade Guide
Docker Compose Deployments
-
Back up your customized docker-compose YAML file (optional)
cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
-
Get the latest code from the main branch
git checkout main git pull origin main
-
Stop the service. Please execute in the docker directory
docker compose down
-
Back up data
tar -cvf volumes-$(date +%s).tgz volumes -
Upgrade services
docker compose up -d
Source Code Deployments
-
Stop the API server, Worker, and Web frontend Server.
-
Get the latest code from the release branch:
git checkout 1.7.1
-
Update Python dependencies:
cd api uv sync -
Then, let's run the migration script:
uv run flask db upgrade
-
Finally, run the API server, Worker, and Web frontend Server again.
What's Changed
- fix: tablestore TypeError when vector is missing by @wanttobeamaster in #22843
- fix tablestore full text search bug by @wanttobeamaster in #22853
- test: add comprehensive integration tests for API key authentication system by @farion1231 in #22856
- fix: private.pem keyPath error in windows by @silencesdg in #22814
- feat(k8s): Add pure migration option for
apicomponent by @BorisPolonsky in #22750 - refactor: Change "filter" to "where" to match SQLAlchemy 2.x style. by @asukaminato0721 in #22801
- feat: Add user variable processing function to chat history by @croatialu in #22863
- chore: code format model-selector use enum by @jiangbo721 in #22787
- add autofix by @asukaminato0721 in #22785
- refactor(dayjs): Refactor internationalized time formatting feature (#22870) by @HyaCiovo in #22872
- fix: improved conversation name by @IthacaDream in #22840
- feat: revamp tool list page by @nite-knite in #22879
- fix: type error in list-operator by @leslie2046 in #22803
- Feat: add notification for change email completed by @JzoNgKVO in #22812
- refactor(i18next): streamline fallback translation handling and initi… by @WTW0313 in #22894
- fix: support authorization using session and user_id in URL. by @douxc in #22898
- fix(plugins_select): Adjust z-index, fix issue where options cannot be displayed (#22873) by @HyaCiovo in #22893
- Feat/change user email freezes limit by @zyssyz123 in #22900
- fix: refine handling of constant and mixed input types in ToolManager and ToolNodeData by @Yeuoly in #22903
- fix: rounded by @ZeroZ-lab in #22909
- fix: Optimize input variable retrieval logic (#22888) by @HyaCiovo in #22914
- chore: enhance error message when handling PluginInvokeError by @Yeuoly in #22908
- Feat: change user email freezes limit by @JzoNgKVO in #22912
- fix: unexpected redirection when landing at workflow by @JzoNgKVO in #22932
- Improve: support custom model parameters in auto-generator by @quicksandznzn in #22924
- chore: translate i18n files by @github-actions[bot] in #22934
- fix: improve PostgreSQL healthcheck cmd to avoid fatal log errors (#22749) by @J2M3L2 in #22917
- test: add comprehensive tests for file_factory build_from_mapping by @farion1231 in #22926
- fix: Optimize AppInfo component styles and fix CustomizeModal step display (#22930) by @HyaCiovo in #22935
- make logging not use f-str, change others to f-str by @asukaminato0721 in #22882
- fix: correct typo in function name paser_docx_part -> parser_docx_part by @little-huang in #22936
- fix: Refactor i18n config and fix plugin search box styling issue by @WTW0313 in #22945
- fix: Update the scheduling method for timed tasks, by @ZeroZ-lab in #22779
- Fix incorrect assert type in the AgentNode class by @hyongtao-db in #22964
- feat: clear all annotation by @leslie2046 in #22878
- Remove redundant condition check by @hyongtao-db in #22983
- adding mcp error in toast by @jubinsoni in #22987
- fix: Update trigger styles for disabled state in PureSelect component by @weijunjiang123 in #22986
- fix: eliminate dark mode flicker by moving ThemeProvider to root level by @lyzno1 in #22996
- Fix: correct misplaced
ensure_ascii=Falseby @hyongtao-db in #22997 - node title number on copied iteration node by @jubinsoni in #23004
- adding LANG LC_ALL PYTHONIOENCODING UTF-8 by @jubinsoni in #22928
- fix: resolve cross-page document selection issue in metadata batch edit by @liugddx in #23000
- fix: Improve create_agent_thought and save_agent_thought Logic by @IthacaDream in #21263
- ability to select same type sub item by preserving children of both f… by @jubinsoni in #23002
- Chore: remove duplicate TYPE_CHECKING import by @hyongtao-db in #23013
- refactor(web): Optimize the interaction effect of ToolTip component in menu items (#23020) by @HyaCiovo in #23023
- Rollback Aliyun Trace Icon File by @hieheihei in #23027
- feat: Support allOf in OpenAPI properties inside schema #22946 by @mike1936 in #22975
- chore: Updata eslint config dependencies by @WTW0313 in https://github.com/langgenius/dify/pull...
v1.7.0 - Tool OAuth & Plugin Auto-Upgrade Enhanced
🌟 What’s New in v1.7.0? 🌟
Version 1.7.0 is packed with features that expand our app's flexibility and enhance performance. Here's what we're bringing to the table:
🏗️ Major Feature: OAuth Support in Tool Plugins
Tool plugins now support OAuth 2.0 authentication, allowing users to securely connect with third-party services without manually managing API keys. This includes refresh token support for maintaining long-term authentication sessions.
(#22550 thanks @Mairuis @zxhlyh )

🏗️ Major Feature: Plugin auto upgrade strategy
Plugins can now be automatically updated with configurable upgrade policies and rollback mechanisms. The system monitors plugin repositories and performs seamless upgrades while ensuring compatibility with your Dify version.
(#19758 thanks @RockChinQ @iamjoel )

⚡ Enhancements
- Citations and Attributions: Agent Nodes now support features for citing and attributing sources, care of @chiehw. #18558
- Plugin Deprecation Notice: Stay ahead of the curve with deprecation notices for obsolete plugins, introduced by @RockChinQ. #22685
- API Key Authentication with Query Parameter: Now supports even more streamlined security methods with an API key in query parameters, courtesy of @ACAne0320. #21656
- Audio Configuration UI: Customize your app's audio settings right from the interface, introduced by @marcelodiaz558. #21957
- Variable Suggestions: Suggested questions can now utilize variables by @le0zh. This brings contextual awareness to another level. #17340
- Drag-and-Drop for Workflows: Start node variables and code node variables are now drag-and-drop enabled, simplifying workflow creation as seen in @Minamiyama's contributions. #22150 #22127
- Custom Max Active Requests per App: Manage traffic with custom settings for your app, brought by @qiaofenlin. #22073
- Optional OpenTelemetry (OTel) Endpoint Configuration: Ensure the best observability practices with this addition from @hieheihei. #22492
- RFC 5322 Email Validation: Ensure compliance and smarter email validation by @NeatGuyCoding. #22540
- Dynamic Imports for Performance: Boost your app's performance with dynamic component imports, an intelligent improvement by @WTW0313. #22614
- External Trace ID: Maintain traceability across systems with @qiaofenlin's external trace ID propagation. #22623
🐛 Bug Fixes
- Omitting Optional Parameters: Clean out unnecessary
Nonesettings thanks to @ACAne0320. #22171 - Docker Networking Fix: Fix Docker file URL networking issues for plugins, resolved by @krikera. #21382
- Plugin Installation: A persistent install hitch was ironed out by @Garden12138. #22156
- Model Selector and App Selector: Problems with selectors were eliminated by @hjlarry. #22291
- Session Management: Fast and reliable infrastructure with open session management by @Colstuwjx. #22306
- Metadata and File Processing: Smarter document filtering and error handling fixed by @helojo and others. #19305
⚙️ Improvements
- User Experience: Improved Opik workflow trace span names, better tooltip UX, and character limitations handled by various contributors (@quicksandznzn, @kerwin612, and @kushagra21-afk). #22356 #21383 #22679
- Batch Processing and Vector Indexing: Strengthened backend optimizations for faster and more reliable operations from talents like @issac2e and @jubinsoni. #22726 #22661
- Repo Configurations: Configure repository implementations with ease thanks to @laipz8200's efforts. #21458
- UUIDv7 Implementation: Add unique identifiers in style with SQL and Python implementations by @QuantumGhost. #22058
Upgrade Guide
Docker Compose Deployments
-
Back up your customized docker-compose YAML file (optional)
cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
-
Get the latest code from the main branch
git checkout main git pull origin main
-
Stop the service. Please execute in the docker directory
docker compose down
-
Back up data
tar -cvf volumes-$(date +%s).tgz volumes -
Upgrade services
docker compose up -d
Source Code Deployments
-
Stop the API server, Worker, and Web frontend Server.
-
Get the latest code from the release branch:
git checkout 1.7.0
-
Update Python dependencies:
cd api uv sync -
Then, let's run the migration script:
uv run flask db upgrade
-
Finally, run the API server, Worker, and Web frontend Server again.
What's Changed
- fix(custom_tool): omit optional parameters instead of setting them to None by @ACAne0320 in #22171
- minor fix: remove duplicates, fix typo, and add restriction for get mcp server by @NeatGuyCoding in #22170
- feat(tool): add support for API key authentication via query parameter by @ACAne0320 in #21656
- fix: adjust layout styles for header and dataset update by @WTW0313 in #22182
- fix: resolve Docker file URL networking issue for plugins (#21334) by @krikera in #21382
- feat: Add Audio configuration setting to app configuration UI by @marcelodiaz558 in #21957
- feat: support var in suggested questions by @le0zh in #17340
- fix:Fixed the problem of plugin installation failure caused by incons… by @Garden12138 in #22156
- chore:extract last run common logic by @iamjoel in #22214
- fix(emoji-picker): Adjust the style of the emoji picker (#22161) by @HyaCiovo in #22231
- fix(web): Optimize AppInfo Component Layout (#22212) by @HyaCiovo in #22218
- feat(workflow): add drag-and-drop support for variable list items for start node by @Minamiyama in #22150
- fix: Optimize the workspace panel width calculation by @ZeroZ-lab in #22195
- fix: iteration itemType support conversation var (#22220) by @yolofit in #22236
- reject whitespace characters in password regexp by @JunIce in #22232
- test: add comprehensive unit tests for PassportService with exception handling optimization by @farion1231 in #22268
- Add unit test for account service by @NeatGuyCoding in #22278
- minor fix: wrong and by @NeatGuyCoding in #22242
- chore: bump ruff to 0.12.x by @bowenliang123 in #22259
- fix: tool's model selector and app selector not work by @hjlarry in #22291
- fix(ui): prevent var icon hidden when only one var in list of start node by @Minamiyama in #22290
- test(web): add password regexp test case by @JunIce in #22308
- fixing Enum part in backend and making it same as front end by @jubinsoni in #22296
- test: add comprehensive unit tests for login decorator by @farion1231 in #22294
- Update README.md by @kr1shnasomani in #22305
- fix: prevent trigger form submit action when press 'enter' by @douxc in #22313
- fix: error parsing object type parameters for code node by @Nov1c444 in #22230
- Chore: Replace lodash/noop with lodash-es/noop by @HyaCiovo in #22331
- Fix: Remove height and overflow style settings by @ZeroZ-lab in #22327
- feat(api/repo): Allow to config repository implementation by @laipz8200 in #21458
- fix: close session before doing long latency operation by @Colstuwjx in #22306
- Update README.md by @kr1shnasomani in #22351
- fix: aliyun trace title&description by @hieheihei in #22347
- improve opik workflow_trace span name to node name by @quicksandznzn in #22356
- Provides a set of Kubernetes manifests supporting version 1.6.0 by @Zhoneym in #22287
- chore: bump nextjs to 15.3 by @bowenliang123 in #22262
- tablestore vector support more method by @wanttobeamaster in #22225
- feat(config-modal): add space to underscore conversion in variable name input of start node by @Minamiyama in #22284
- fix(plugin): introduce response_type parameter in plugin list API to enable paginated response support by @homejim in #22251
- fix: Metadata filtering with Manual option in Agent mode does not take effect when specifying input variables. by @suntp in #20362
- fix workflow node iterator . by @zhanluxianshen in...
v1.6.0
🌟 What’s New in v1.6.0? 🌟
Welcome to version 1.6.0! 🎉🎉🎉 This release is packed with new features, crucial fixes, and various optimisations aimed at enhancing your experience. We've listened to your feedback and made significant improvements across the board.
🎯 Spotlight Feature: Introducing MCP Support! 🎯
We’re thrilled to introduce support for Anthropic’s Model Context Protocol (MCP) — a new industry standard for structuring model inputs and outputs. MCP makes it easier than ever to integrate with cutting-edge language models using a unified, reliable format.
🚀 New Features
- MCP Support: We've integrated MCP support, opening doors for more seamless interactions. (See #20716, by Novice)
⚡ Enhancements
- Drag-and-Drop for Topics: Now, you can easily reorder your topics list with a drag-and-drop sorting feature. (See #22066, by Minamiyama)
- SSL Verify Toggle: You now have the ability to change SSL verification settings in the HTTP Node. (See #22052, by Davide Delbianco)
- Batch Embedding Optimisation: Optimised batch embeddings and Qdrant write consistency. (See #21776, by luckylhb90)
- Question Classifier Enhancements: Introduced instanceId to the class-item editor for sophisticated categorisation. (See #22002, by Minamiyama)
- Redis Fallback Mechanism: Added a robust fallback mechanism for Redis to ensure data resilience. (See #21044, by NeatGuyCoding)
🐛 Fixes
- Json Output Issue: Resolved an issue with JSON output that was affecting data consistency. (See #22053, by baonudesifeizhai)
- Variable Name Uniqueness: Ensured unique variable names in the list to avoid conflicts. (See #22038, by Minamiyama)
- Overflow Hidden Fix in Drawer: Ensured that the copy button remains clickable by adding overflow hidden. (See #22103, by Heyang Wang)
- Plugin Daemon Failures: Addressed issues preventing plugin daemons from starting. (See #21841, by Kalo Chin)
Version 1.6.0 brings major process optimisations and removes previous bottlenecks, while introducing the Model Context Protocol (MCP) standard to greatly enhance the consistency and compatibility of model inputs and outputs. This makes integration and extension smoother and more efficient than ever. Huge thanks to all our contributors! We welcome your ongoing feedback to help us keep improving the platform together.
Upgrade Guide
Docker Compose Deployments
-
Back up your customized docker-compose YAML file (optional)
cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
-
Get the latest code from the main branch
git checkout main git pull origin main
-
Stop the service. Please execute in the docker directory
docker compose down
-
Back up data
tar -cvf volumes-$(date +%s).tgz volumes -
Upgrade services
docker compose up -d
Source Code Deployments
-
Stop the API server, Worker, and Web frontend Server.
-
Get the latest code from the release branch:
git checkout 1.6.0
-
Update Python dependencies:
cd api uv sync -
Then, let's run the migration script:
uv run flask db upgrade
-
Finally, run the API server, Worker, and Web frontend Server again.
What's Changed
- remove unused config CURRENT_VERSION by @bowenliang123 in #21832
- chore(version): Bump plugin daemon version to 0.1.3 by @laipz8200 in #21835
- Chore/workflow last run by @zxhlyh in #21823
- Fix/workflow use nodes hooks by @zxhlyh in #21822
- fix: add list contents handling in structured LLM output by @Yeuoly in #21837
- feat: Retain llm setting for agent node by @fdb02983rhy in #21842
- chore: add message status enum by @jiangbo721 in #21825
- fix: plugin deamon start fail by @fdb02983rhy in #21841
- feat(tests): add structured output parser tests for LLM responses by @Yeuoly in #21838
- fix(web): adjust HTTP node method and input layout (#21834) by @HyaCiovo in #21855
- fix: nodeExtraData might be undefined by @crazywoola in #21856
- style(config-var): update styling classes to use design system tokens by @Minamiyama in #21846
- feat(variables): auto replace spaces with underscores in variable name inputs by @Minamiyama in #21843
- fix: Before publish the app, preview the voice of tts, it raise an er… by @jiangbo721 in #21821
- feat: Improve Observability with Arize & Phoenix Integration by @ialisaleh in #19840
- moving the
MessageStatusclass from themodels.modelmodule tomodels.enumsmodule by @NeatGuyCoding in #21867 - fix: The statistics page cannot display the tokens consumed by agent node by @Nov1c444 in #21861
- feat(api): validate and reject external datasets in document update by @cutiechi in #21783
- Fix: Add title attribute to edit time text for improved accessibility by @ZeroZ-lab in #21871
- fix: not search plugin if marketplace enabled by @iamjoel in #21880
- fix: prevent timeout in file encoding detection for large files by @baonudesifeizhai in #21453
- fix: tts tool must choose a voice by @hjlarry in #21877
- fix(loop-variables): validate variable name input by @Minamiyama in #21888
- use repair_json fix json parse error of HTTPRequestNode by @ZombieBlue in #21909
- feat: add document pause and resume functionality by @ZeroZ-lab in #21894
- Feat list query by @ZeroZ-lab in #21907
- feat: update account menu style by @nite-knite in #21916
- test:add unit test for api version config by @bowenliang123 in #21919
- minor fix: removes the duplicated handling logic for TracingProviderEnum.ARIZE and TracingProviderEnum.PHOENIX from the OpsTraceProviderConfigMap by @NeatGuyCoding in #21927
- refactor(web): Restructure the operation buttons layout in the app information component (#21742) by @HyaCiovo in #21818
- feat: Add Aliyun LLM Observability Integration by @hieheihei in #21471
- minor fix: translation for pause by @NeatGuyCoding in #21949
- chore(i18n): fix typos and improve Korean translation by @heojawon in #21955
- refactor: extract common url validator for config_entity.py by @NeatGuyCoding in #21934
- fix(agent): show agent run steps, fixes #21718 by @baonudesifeizhai in #21945
- fix: resolve JSON.parse precision issue causing 'list index out of ra… by @baonudesifeizhai in #21253
- feat: Add support for type="hidden" input elements in Markdown forms by @mizoo-snow21 in #21922
- refactor(graph_engine): Take GraphRuntimeState out of GraphEngine by @laipz8200 in #21882
- ENH(ui): enhance check list by @Minamiyama in #21932
- chore(docker): increase NGINX_CLIENT_MAX_BODY_SIZE from 15M to 100M i… by @lrhan321 in #21995
- fix: document delete image files check file exist by @quicksandznzn in #21991
- Chore: remove unreachable code by @hyongtao-db in #21986
- fix: resolve dropdown menu visibility issue caused by z-index conflict by @GeZiMm in #22000
- minro fix: fix a typo for aliyun by @NeatGuyCoding in #22001
- feat: add unit tests and validation for aliyun tracing by @NeatGuyCoding in #22012
- fix(variables): Improve
getNodeUsedVarsimplementation details by @Minamiyama in #21987 - minro fix: fix duplicate local import of ToolProviderType by @NeatGuyCoding in #22013
- test: add unit tests for password validation and hashing by @farion1231 in #22003
- feat(question-classifier): add instanceId to class-item editor by @Minamiyama in #22002
- don't add search params when opening detail links from marketplace. by @douxc in #22034
- fix(variable): ensure unique variable names in var-list by @Minamiyama in htt...
v1.5.1
🎉 What’s New in v1.5.1? 🎉
In this release, we've packed a punch with a host of new features, enhancements, and fixes designed to make your experience smoother and more intuitive.
🚀 New Features
- Knowledge Basis Indexing: Introduced KB indexing by @Gevtolev in #20868. It optimizes the access and retrieval speeds for your data treasures.
- Model Provider Validation: Added model provider validation in the API by @khoazero123 in #21582. Ensure your models are always in check.
- Dynamic Select Parameter: Implemented DYNAMIC_SELECT for dynamic options in parameter entities by @Yeuoly in #21425. Say goodbye to static param limits!
- Structured Output Plugin: Now invoke LLMs with structured output via a new API endpoint by @Yeuoly in #21624.
- Adaptive Panel Width Management: A refactor to add adaptive width observer for panels by @ZeroZ-lab in #21576.
- New Plugin Enhancements: Default value autofill in plugin settings by @leslie2046 in #21669.
🌟 Enhancements
- Front-End UX: Improved tooltip for workflow run node names and input restrictions by @CorrectRoadH in #21564 and #21562.
- UI and Style Tweaks: Various style fixes and enhancements, including decreasing navbar z-index for clarity by @douxc in #21612.
- Langfuse Trace Readability: Enhanced the clarity of Langfuse traces, making debugging and performance tracking clearer by @DavideDelbianco in #21777.
🛠️ Bug Fixes
-
Various UI and API Fixes: Addressed pop logic in tool selectors, variable inspection, and numerous API-related bugs to ensure a smoother experience.
- Fixed incorrect doc links and context insertion in prompt editors by @iamjoel and @zxhlyh.
- Resolved false token numbers and auto-increment errors in question-answer models by @NeatGuyCoding in #21574.
- Fixed node validation, hover effects, and modal presentations to fully support your workflows by multiple contributors.
-
Error Handling & Reset Issues:
- Enhanced error handling in code interpreters and fixed system variable resets by @quicksandznzn and @iamjoel.
- Adjusted reset system variable to avoid server crashes, thanks to @QuantumGhost in #21604.
-
Integration and Language Support:
- Improved integrations with services like Notion and document detail services by @baonudesifeizhai and others.
- Fixed dollar-sign escaping in LaTeX for smoother document processing by @ShadowJobs in #21796.
This latest release blends a blend of functional enrichment and optimized usability across the board. Dive in and make the most of these updates - we can't wait to see what you build next! Happy developing! 🎨🛠️
Upgrade Guide
Docker Compose Deployments
-
Back up your customized docker-compose YAML file (optional)
cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
-
Get the latest code from the main branch
git checkout main git pull origin main
-
Stop the service. Please execute in the docker directory
docker compose down
-
Back up data
tar -cvf volumes-$(date +%s).tgz volumes -
Upgrade services
docker compose up -d
Source Code Deployments
-
Stop the API server, Worker, and Web frontend Server.
-
Get the latest code from the release branch:
git checkout 1.5.1
-
Update Python dependencies:
cd api uv sync -
Then, let's run the migration script:
uv run flask db upgrade
-
Finally, run the API server, Worker, and Web frontend Server again.
What's Changed
- Feat/kb index by @Gevtolev in #20868
- feat: add a magic field in the cancel invite api response by @GareArc in #21505
- fix: var inspect doc link error by @iamjoel in #21515
- fix: prompt editor insert context by @zxhlyh in #21526
- Fix minor comment missing by @NeatGuyCoding in #21517
- feat: refactor: test_dataset unit tests #21499 by @NeatGuyCoding in #21502
- chore: remove unused code by @jiangbo721 in #21497
- chore: Simplify code logic by @jiangbo721 in #21496
- fix: update retrieval method cache by @WTW0313 in #21409
- feat: add tooltip to workflow run node name by @CorrectRoadH in #21564
- feat: prevent input of non-numeric values in numer input by @CorrectRoadH in #21562
- fix(web): optimize the pop logic of the tool selector (#21558) by @HyaCiovo in #21559
- fix: fix create custom modal overlay add tool by @CorrectRoadH in #21553
- feat: add DYNAMIC_SELECT parameter type for dynamic options in parameter entities by @Yeuoly in #21425
- fix: wrong token number when using qa_model and answer is updated. by @NeatGuyCoding in #21574
- Feat/api validate model provider by @khoazero123 in #21582
- feat: Add display control logic for the variable inspection panel by @ZeroZ-lab in #21539
- feat: to add tag when tag input is unfocus by @CorrectRoadH in #21555
- fix: value_selector will be empty string by @crazywoola in #21598
- feat: Refactor panel component, add adaptive width observer to optimize panel width management by @ZeroZ-lab in #21576
- style: decrease navbar z-index value from 30 to 15, fix style error by @douxc in #21612
- fix: Resolving conflicts caused by tablestore dependency on enum34 by @wanttobeamaster in #21605
- refactor: move structured output support outside LLM Node by @Yeuoly in #21565
- fix: annotation remove functionality Fixes #21448 by @guangtouwangba in #21616
- feat(plugin): Add API endpoint for invoking LLM with structured output by @Yeuoly in #21624
- chore: Add missing svg icon sources by @DavideDelbianco in #21627
- Add Env 'CELERY_SENTINEL_PASSWORD' for celery connect redis sentinel. by @zhanluxianshen in #21198
- feat(inner-api/workspace): include tenant details in CreateWorkspace response by @zhangx1n in #21636
- feat: Add autofill by default value in endpoint plugin setting page. by @leslie2046 in #21669
- fix(ui): no hover effect in copy button of code node by @Minamiyama in #21671
- fix: #21427 correct segment settings when creating documents via API by @guangtouwangba in #21673
- fix: keep search params in web app url when needs authorize by @douxc in #21717
- fix: enter and exit full canvas cause nav items missing by @hjlarry in #21691
- Add get document detail service api by @ZombieBlue in #21700
- fix: copy inspect variable value get extra quotes by @hjlarry in #21680
- fix: fix node valid detect by @Minamiyama in #21709
- [fix] #21678 User input of remote file link on the run page form causes conversation/message interface error by @dlmu-lq in #21683
- Fix/ serveral bugs fixed in enterprise by @douxc in #21729
- Fixes issue 21157/20661 extra quote in agent node by @wanghan5 in #21674
- fix: user cannot select 'Customer Service & Operations' category by @douxc in #21733
- chore: translate i18n files by @github-actions in #21732
- Feat: sync input variable names to main() function by @Minamiyama in #21667
- fix: set the func.coalesce() second paramter default value #21239 by @kgpp34 in #21240
- feat: Retain LLM Configuration Settings When Changing Model by @fdb02983rhy in #21247
- Release db.session connection before workflow new thread long time operation by @dlmu-lq in #21726
- refactor: define the Dify project version in pyproject.toml by @bowenliang123 in #20910
- fix: can not reset system variables by @iamjoel in #21750
- chore: upgrade package versions for security reason by @iamjoel in #21751
- fix: code Interpreter error handling not work by @quicksandznzn in #21736
- fix: handle configure button for notion internal integration by @baonudesifeizhai in #21412
- fix: incorrect api module version in pyproject.toml by @bowenliang123 in #21755
- fix: if parameter is not required, continue by @jiangbo721 in #21761
- minor fix: add parameters i...
v1.5.0
🚀 What's New in v1.5.0?
Meet v1.5.0—a sleek, powerful update boosting your productivity with simplified debugging and powerful integrations. Let's jump right in:
🏗️ Major Feature: Enhanced Workflow Debugging
We've completely rebuilt our workflow debugging tools! Effortlessly visualize and troubleshoot workflows with improved interfaces, persistent debugging variables (#20699, thanks @QuantumGhost), and enhanced dashboard integration (#21369, kudos to @iamjoel). Easily track your workflow runs directly from the dashboard, and spend less time debugging and more time creating amazing workflows. Dive deeper in our blog post.
✨ New & Improved Features
- Drag-and-Drop DSL: Easily create apps by dropping DSL files directly into your browser (#20706, @ACAne0320).
- Enhanced Default Templates:
sys.filesnow included for more powerful web apps (#21476, @laipz8200). - Hidden Form Attributes: Greater UI flexibility and control (#20956, @croatialu).
- MatrixOne Integration: Advanced data strategies with MatrixOne VDB integration (#20714, @volgariver6).
- Firecrawl Deep Search: Richer content discovery with an enhanced search endpoint (#20521, @ftonato).
- Notion Pagination: Easier navigation through extracted Notion data (#20919, @kazuya-awano).
- SendGrid Integration: Seamless, reliable email delivery (#21011, @andrematteo).
🛠️ Refinements & Fixes
- Smart Login Redirects: Intelligent user navigation with automatic login redirects (#21096, @douxc).
- Environment Sync: Automatic syncing of environment and conversation variables on import (#21215, @zxhlyh).
- API UX Improvements: Enhanced loading states, icon support, and rendering fixes (#21091, #20761, @kerwin612, @HyaCiovo).
- Responsive Charts: Improved analytics interactions with smoother, responsive charts (#21185, @xuzijie1995).
- Stable Markdown: Prevent crashes and enhance data integrity with improved markdown handling (#21258, #21309, @hjlarry, @koevas1226).
- App Icon Picker: Cleaner and better-organized UI with stable heights and collapsible sections (#21399).
- Instant Dataset Insights: Quickly access essential dataset information directly from your workflows (#21413, #21406, @JohnJyong).
We crafted v1.5.0 to enhance your productivity—dive in, explore, and start building! 🎉
Upgrade Guide
Docker Compose Deployments
-
Back up your customized docker-compose YAML file (optional)
cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
-
Get the latest code from the main branch
git checkout main git pull origin main
-
Stop the service. Please execute in the docker directory
docker compose down
-
Back up data
tar -cvf volumes-$(date +%s).tgz volumes -
Upgrade services
docker compose up -d
Source Code Deployments
-
Stop the API server, Worker, and Web frontend Server.
-
Get the latest code from the release branch:
git checkout 1.5.0
-
Update Python dependencies:
cd api uv sync -
Then, let's run the migration script:
uv run flask db upgrade
-
Finally, run the API server, Worker, and Web frontend Server again.
What's Changed
- fix: redirect to apps page if current user has no permission to visit dataset page by @douxc in #21065
- fix: Replace GenericProviderID with ToolProviderID by @laipz8200 in #21064
- Fix/webapp loop login by @douxc in #21092
- fix: auto redirect to login page if web app needs login by @douxc in #21096
- fix: page loop in datasets and apps if current user is dataset_operator by @douxc in #21114
- fix: doc error by @ZeroZ-lab in #21108
- fix: prevent nodes from being unintentionally deleted by pressing the backspace key. by @kurokobo in #21023
- fix: some dark theme display incorrect by @hjlarry in #21055
- chore: cleanup wrong and unused doc links in i18 translations by appling docLink method usage by @bowenliang123 in #21112
- fix: remove the x overflow scroll bar of monitoring page by @hjlarry in #21059
- chore: check input variable key of code/template node is valid by @hjlarry in #21057
- feat: add a flask_context_manager. by @laipz8200 in #21061
- chore: responsive header by @zxhlyh in #21115
- fix(agent_node):Fix spelling errors. by @wood02 in #21094
- chore: translate i18n files by @github-actions in #21053
- fix(code-editor): optimize the loading style of the CodeEditor component in dark mode (#21116) by @HyaCiovo in #21120
- fix(web): enhance API test page experience by adding loading state for test button by @kerwin612 in #21091
- fix: shorten connection timeout to pypi.org for deprecation check for weaviate client by @kurokobo in #21131
- [Bug] fix misusing ACCESS_TOKEN_EXPIRE_MINUTES in jwt on exp by @NeatGuyCoding in #21030
- fix(web): fix unique key issue (#20809) by @HyaCiovo in #20810
- feat: Add support for hidden attributes to form item types by @croatialu in #20956
- feat: add pagenation to notion extractor by @kazuya-awano in #20919
- fix Multiple \n Interface rendering exception by @XiaoCC in #20977
- fix(web): number type prompt variable required validation not effective by @yangzheli in #20898
- Set a default value for the PLUGIN_S3_USE_AWS environment variable in the dify-plugin-daemon. by @41tair in #21152
- feat: Support drop DSL file into the browser to create app by @ACAne0320 in #20706
- add healthcheck to oceanbase container by @whhe in #20989
- chore: cancel enforcing uppercase of the text of plugin navigation button on the header bar by @bowenliang123 in #20890
- add service api ratelimit check by @JohnJyong in #20878
- feat: Embedded chat window supports userVariables configuration. by @croatialu in #20983
- refactor(graph_engine): Merge duplicated if block by @laipz8200 in #20784
- unreachable-code for lb model fetch. by @zhanluxianshen in #20797
- clean duplicate validate for dataset_configs by @zhanluxianshen in #20775
- Fixes #20748 KnowledgeRetrievalNode return all external documents when reranker disabled even top-k configed by @rainsoft in #20762
- fix(api): add support for "image" icon when duplicate app (#20744) by @HyaCiovo in #20761
- feat: add search endpoint for Firecrawl Integration by @ftonato in #20521
- fix: add environment variable POSTGRES_USER by @ine1127 in #20786
- wip: add check before install plugin by @douxc in #20014
- fix: remove redundant PG_USER by @crazywoola in #21162
- chore: translate i18n files by @github-actions in #21163
- bug: fix sequence number may be duplicated when multi-threads running the same workflow #21047 by @NeatGuyCoding in #21153
- Fix: web app auth maybe failed by @douxc in #21166
- Feat/plugin install scope management by @zhangx1n in #19963
- fix: workflow shortcuts by @zxhlyh in #21164
- Minor Improvements for File Validation and Configuration Handling #21179 by @NeatGuyCoding in #21171
- fix(echarts): Resolve interaction issues on charts with timelines by @xuzijie1995 in #21185
- add func args missing in apps chat. by @zhanluxianshen in #21085
- Translation fix by @NeatGuyCoding in #21194
- feat: improve the orgnize node operation by @hjlarry in #21183
- Add Filter of Get Workflow Logs by @ZombieBlue in #21172
- feat: add support for Matrixone database by @volgariver6 in #20714
- feat:conversation variable support file array by @kinoooolu in #21174
- Feat/support sendgrid by @andrematteo in #21011
- fix keyword search top-k not initial by @JohnJyong in https://github.com/la...
v1.4.3
🚀 What’s New in v1.4.3? 🚀
It’s all about smoothing out the wrinkles and enhancing flexibility in this update. Here’s the rundown:
🛠 Fixes and Improvements
-
LLM Node Enhancements: We've ironed out issues with missing parameters for structured outputs; now your LLM node is more robust and prepared for all it can handle thanks to @laipz8200 in #20915.
-
Gemini LLM Support: For those integrating with Gemini, you'll now find support for the Gemini 0.2.x plugin running smoothly in your agent apps, as addressed by @takuya-o in #20794.
-
Markdown Button Fix: Sending messages through the Markdown button should now work flawlessly, thanks to @hjlarry in #20933.
-
Login Rate Limit Clearing: After a password reset, we’ve made sure the login rate limits are cleared, preventing any unnecessary hurdles, addressed by @xuzijie1995 in #20948.
-
App Info Update: For better transparency, the author_name is now part of the app info, thanks to @quicksandznzn in #20973.
-
Documentation Link Fixes: We’ve generalized the method for retrieving documentation links to respect localizations and squashed those error link paths, thanks to insights from @bowenliang123 in #20801.
-
Document Indexing Boundaries: A fix ensures document indexing is correctly bound to a session, reducing those pesky unbound errors, tackled by @xuhaixing in #21015.
-
Conversation Panel Optimization: We've fine-tuned the width adjustment logic for the conversation-panel modal, ensuring a smoother user interface experience, improved by @HyaCiovo in #21018.
-
CI Tests with Oceanbase: Integration tests now run the VDB tests of Oceanbase using Docker Compose within CI, streamlining our testing procedures thanks to @bowenliang123 in #20945.
-
Dead Code Cleanup: We’ve removed some obsolete code utilizing Vulture, keeping our codebase leaner and cleaner, courtesy of @yihong0618 in #20999.
-
Localized Documentation Updates: Documentation link updates now support localization across various components, enhancing accessibility for our global community, thanks to @WTW0313 in #21048.
Keep those pull requests coming as we aim to make your user experience as seamless and intuitive as possible! 🌟
Upgrade Guide
Docker Compose Deployments
-
Back up your customized docker-compose YAML file (optional)
cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
-
Get the latest code from the main branch
git checkout main git pull origin main
-
Stop the service. Please execute in the docker directory
docker compose down
-
Back up data
tar -cvf volumes-$(date +%s).tgz volumes -
Upgrade services
docker compose up -d
Source Code Deployments
-
Stop the API server, Worker, and Web frontend Server.
-
Get the latest code from the release branch:
git checkout 1.4.3
-
Update Python dependencies:
cd api uv sync -
Then, let's run the migration script:
uv run flask db upgrade
-
Finally, run the API server, Worker, and Web frontend Server again.
What's Changed
- fix remote ip header CF-Connecting-IP by @zhanluxianshen in #20846
- fix(llm_node): missing parameters for structure outputs by @laipz8200 in #20915
- 🐛 Fix(Gemini LLM): Support Gemini 0.2.x plugin on agent app by @takuya-o in #20794
- fix: markdown button can't send message by @hjlarry in #20933
- refactor(sqlalchemy_workflow_execution_repository): Use the max funtion for getting next_sequence_number. by @laipz8200 in #20966
- feat: add S3_USE_AWS env var to explicitly distinguish AWS S3 usage in plugin-daemon by @41tair in #20923
- fix(auth): Clear login rate limit after password reset by @xuzijie1995 in #20948
- chore: app info add author_name by @quicksandznzn in #20973
- refactor: generalize method for getting doc link respecting locale and fix error link paths by @bowenliang123 in #20801
- docs: conv and user_id by @alterxyz in #21004
- document indexing not bound to a Session by @xuhaixing in #21015
- fix: correct description for edu coupon by @kurokobo in #21020
- fix(web): optimize conversation-panel Modal width adjustment logic by @HyaCiovo in #21018
- test: run vdb test of oceanbase with docker compose in CI tests by @bowenliang123 in #20945
- fix: delete some dead code using vulture by @yihong0618 in #20999
- Feat/add rag dev deploy by @JohnJyong in #21049
- fix: update documentation links for various components to support localization by @WTW0313 in #21048
- chore: rename workflow blocks by @zxhlyh in #21052
- chore: bump version to 1.4.3 by @laipz8200 in #21045
New Contributors
- @xuhaixing made their first contribution in #21015
Full Changelog: 1.4.2...1.4.3
v1.4.2
🚀 What's New in v1.4.2?
We've packed v1.4.2 with usability upgrades, polished features, and stability enhancements. Check out what's new:
🌟 New Features & Improvements
-
Smarter Webapp Inputs: Automatically fill hidden fields using URL parameters (#20630), by @hjlarry.
-
Efficient Document Extraction: Faster, streamlined processing for Excel and CSV files (#20625), thanks to @HaiyangPeng.
-
Marketplace UI Update: Easier browsing with improved sorting for app types (#20685), courtesy of @nite-knite.
-
Personalized Chatbot UX: Chat input placeholder now dynamically displays your bot's name (#20473), thanks to @crazywoola.
-
Robust File Uploads: Addressed issues with multiple file extension mappings (#20559), by @bowenliang123.
-
Advanced Knowledge Base API Features:
- Refined metadata filtering for precise querying. Targeted searches using chunk IDs (#20426), by @Gevtolev.
- Improved tagging and dataset binding capabilities (#20023), thanks to @ZombieBlue.
-
Weave Tracing & W&B Integration: Enhanced support for dedicated cloud instances for better operations monitoring (#20765), from @parambharat.
🔒 Security Updates
- Flask-Cors Upgrade: Enhanced security by updating to the latest Flask-Cors version (#20577), by @laipz8200.
🐛 Bug Fixes
-
Resolved 401 Errors:
- Smooth parallel workflow execution (#20321).
- Fixed authentication issues in
workflow_as_tool(#20347). - Eliminated backward invoke errors (#20374).
All thanks to @laipz8200.
-
Agent Node Refinements:
- Corrected enum syntax for Python 3.11 (#20373), by @laipz8200.
- Improved handling of long tokens in LLM invocation (#20391), by @Nov1c444.
-
Annotation API Fix: Restored the missing
end_userargument (#20428), courtesy of @quicksandznzn. -
Docker Environment Corrections: Fixed erroneous handling of environment variables (#20436), by @crazywoola.
-
Code Node & Trace Management:
- Enhanced array validation in code nodes (#20437), by @Yeuoly.
app_idnow included in TraceTasks for better management (#20461), thanks to @laipz8200.
-
HTTP Node Reliability: Corrected curl operations using
--data(#20471), by @hjlarry. -
Memory Leak Prevention: Fixed Celery worker leaks ensuring jobs close correctly (#19268), by @JohnJyong.
-
Improved Housekeeping Command: Now preserves avatar images and app icons correctly (#20532), thanks to @kurokobo.
-
Email Invitation Fixes: SMTP authentication errors resolved (#20545), by @AnshumanSaini.
-
Consistent App Tagging: Resolved app tag update issues (#20618), by @Nov1c444.
-
Markdown Rendering Fixes: Ensured abbreviations display properly in react-markdown (#20648), by @xuzijie1995.
-
LLM Node Image Parsing: Improved reliability for single-step executions with images (#20417), by @lrhan321.
-
Restored Agent Moderation: Functionality fully restored (#20673), by @Nov1c444.
-
Plugin Extension Performance: Restored responsiveness and speed (#20704), by @Yeuoly.
-
Question Classifier Stability: Executions now error-free (#20829), thanks to @QuantumGhost.
-
Enhanced Web UX: Single-run modals now auto-dismiss for better usability (#20865), by @HyaCiovo.
Enjoy these improvements and a smoother, more stable experience! 🚀
Upgrade Guide
Docker Compose Deployments
-
Back up your customized docker-compose YAML file (optional)
cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
-
Get the latest code from the main branch
git checkout main git pull origin main
-
Stop the service. Please execute in the docker directory
docker compose down
-
Back up data
tar -cvf volumes-$(date +%s).tgz volumes -
Upgrade services
docker compose up -d
Source Code Deployments
-
Stop the API server, Worker, and Web frontend Server.
-
Get the latest code from the release branch:
git checkout 1.4.2
-
Update Python dependencies:
cd api uv sync -
Then, let's run the migration script:
uv run flask db upgrade
-
Finally, run the API server, Worker, and Web frontend Server again.
What's Changed
- update img by @crazywoola in #20291
- Chore/update img by @crazywoola in #20292
- chore: enchance the copywriting of tool by @iamjoel in #20294
- fix: i18n auto run failed by @iamjoel in #20302
- fix: Enhances tenant ID handling in telemetry by @laipz8200 in #20304
- [Observability] Add type check and try-except in otel by @TedaLIEz in #20319
- fix(workflow): fetch user failed when workflow run in parallel mode by @laipz8200 in #20321
- fix: Instance is not bound to a Session by @laipz8200 in #20347
- fix: reset password page dark style by @junjiem in #20350
- Fixes some i18n(ko) translations. by @comfuture in #20348
- fix(http): force multipart/form-data even without files(#20322) by @ultramancode in #20323
- fix: workflow plugins list update by @zxhlyh in #20357
- feat(agent_node): ensure that the enum-checking syntax is compatible with Python 3.11. by @laipz8200 in #20373
- fix: register user model to current_user in backward invoke. by @laipz8200 in #20374
- Fix/branding broken by @douxc in #20375
- fix: inner invoke llm token too long by @Nov1c444 in #20391
- chore: remove agent turn limits by @Nov1c444 in #19930
- docs: Update PR template to emphasize guidelines and issue linking by @laipz8200 in #20382
- fix: show 'reset brand' button after set branding image by @douxc in #20420
- fix: apps/annotation missing 1 required positional argument: 'end_user' by @quicksandznzn in #20428
- fix: wrong env usage in middleware by @crazywoola in #20436
- chore: improve error logging for requests to plugin daemon by @bowenliang123 in #20328
- fix: handle values in output arrays for CodeNode transformation by @Yeuoly in #20437
- tests: Removes outdated marketplace download test by @laipz8200 in #20454
- refactor: Remove db from cycle manager by @laipz8200 in #20455
- refactor(workflow): Rename NodeRunMetadataKey to WorkflowNodeExecutionMetadataKey by @laipz8200 in #20457
- refactor(workflow): Rename workflow node execution models by @laipz8200 in #20458
- fix(models): WorkflowRun's total_steps and exceptions_count mismatch with database by @laipz8200 in #20452
- fix(ops_trace_manager): Adds app_id to TraceTask initialization by @laipz8200 in #20461
- chore: Colorize new OpenAI LLM versions by @DavideDelbianco in #20463
- Feat/15534 support replacing the bot in chat input placeholder with the bots name by @crazywoola in #20473
- fix: import from curl not work for --data by @hjlarry in #20471
- chore: translate i18n files by @github-actions in #20476
- refactor(api/core/workflow/enums): Rename WORKFLOW_RUN_ID to WORKFLOW_EXECUTION_ID by @laipz8200 in #20459
- fix: some display error in dark mode by @hjlarry in #20469
- Refactor/markdown component split by @xuzijie1995 in #20177
- fix(json-schema-editor): Add container reference for resize observer in CodeEditor; Update language hook and help doc URL in JsonSchemaConfig by @WTW0313 in #20488
- fix: drop some type fixme by @yihong0618 in #20344
- Refactor/message cycle manage and knowledge retrieval by @laipz8200 in #20460
- fix celery job not closed issue by @JohnJyong in #19268
- Improve CONVERSATION_TITLE_PROMPT to correctly handle Japanese and input by @yasu-oh in #20351
- update knowledge base api by @Gevtolev in #20426
- Add APIs for Knowledge Base Tag Management and Dataset Binding by @ZombieBlue in #20023
- fix: resolve unstable scrolling in workflow debug panel with multiple input fields #19697 by @KaitlynFeng in #19698
- fix: agent app tool update by @zxhlyh in #20490
- Amend color typo by @DavideDelbianco in #20497
- fix: fetch tenant_id in other trace providers besides langfuse by @laipz8200 in #20495
- fix: the plugin order ...
v1.4.1
🚀 What’s New in v1.4.1? 🚀
Welcome to version 1.4.1! This release is all about squashing bugs, enhancing functionality, and making everything run smoother. Here’s the scoop:
🚀 New Features
-
Optional Request Logging: Now you can configure optional request and response logging to help with debugging and tracking, thanks to @NeatGuyCoding in #19783.
-
Web Media Element Enhancements: Added support for both
<video>and<audio>elements withsrcattributes, bringing you more flexibility when embedding media, by @ruanjf in #19988. -
Aliyun OSS Storage Support in Plugin Daemon: The new Plugin Storage Type now supports Aliyun OSS, catering to users in need of this cloud storage option, courtesy of @quicksandznzn in #20012.
-
Tracing Conversation in Opik Tracer: Introduced support for tracking conversations via Opik Tracer, enhancing your tracing capabilities, integrated by @Lothiraldan in #20063.
-
Streamlined App Creation: Simplified the app creation experience with collapsed basic app types for a more intuitive setup, thanks to @guchenhe in #20007.
-
Document Extractor Enhancements: Implemented the chardet encoding in our document extractor to handle varied text encodings more robustly, courtesy of @laipz8200 in #20269.
🛠️ Fixes and Improvements
-
Security Update: Upgraded qdrant-client to version 1.9.0 to keep your environment secure and up to date by @Gevtolev in #20231.
-
Overflow and Layout Fixes: Corrected metadata condition name overflow and improved handling of long bot descriptions by @CorrectRoadH in #19812 and #19805.
-
File Upload and Export: Resolved issues with avatar uploads and custom file type exports so everything uploads without a hitch by @iamjoel and @hjlarry in respective pulls.
-
Performance Optimizations: Improved several workflows, including the validation logic in OpsTraceManager and chart rendering in markdown to tackle flickering and looping issues, with help from @jameshui1997 and @xuzijie1995 among others.
-
Knowledge Retrieval and Workflow Enhancements: Addressed an uninitialized variable error and improved logic in knowledge retrieval efforts by @zhudongwork and others.
Upgrade to v1.4.1 and enjoy a more streamlined, robust, and feature-rich experience that primes your projects for success!
Upgrade Guide
Docker Compose Deployments
-
Back up your customized docker-compose YAML file (optional)
cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
-
Get the latest code from the main branch
git checkout main git pull origin main
-
Stop the service. Please execute in the docker directory
docker compose down
-
Back up data
tar -cvf volumes-$(date +%s).tgz volumes -
Upgrade services
docker compose up -d
Source Code Deployments
-
Stop the API server, Worker, and Web frontend Server.
-
Get the latest code from the release branch:
git checkout 1.4.1
-
Update Python dependencies:
cd api uv sync -
Then, let's run the migration script:
uv run flask db upgrade
-
Finally, run the API server, Worker, and Web frontend Server again.
What's Changed
- Resolve Python Logger library warnings by @emmanuel-ferdman in #19791
- Fix: style of app publisher by @JzoNgKVO in #19803
- fix: fix metadata condition name overflow by @CorrectRoadH in #19812
- fix: fix overflow when bot description too long by @CorrectRoadH in #19805
- fix: llm parameters radio type dark style by @junjiem in #19833
- feat(workflow): domain model for workflow node execution by @laipz8200 in #19430
- fix: upload avatar failed by @iamjoel in #19853
- fix: correct type mismatch in WorkflowService node execution handling by @laipz8200 in #19846
- revert #19497 (19497) by @gq957534377 in #19807
- feat(DraftWorkflowApi): Requires environment_variables in DraftWorkflowApi by @laipz8200 in #19849
- feat: Add optional request and response JSON logging extension with configuration and tests by @NeatGuyCoding in #19783
- fix: nav selector's dark theme by @hjlarry in #19869
- fix: tool node number type constant field dark style by @junjiem in #19818
- fix(devcontainer): uv sync fail by @yedamao in #19834
- docs: Add text_to_speech left out in the API response by @yeyunwen in #19862
- chore: improve some doc by @hjlarry in #19881
- fix create_tracing_app_config error by @hieheihei in #19884
- fix: db_model save to _node_execution_cache by @hjlarry in #19911
- feat(api): Introduce
WorkflowDraftVariableModel by @QuantumGhost in #19737 - feat(workflow): Add variable node jump navigation and persist node dimensions/position by @wellCh4n in #13623
- chore: upgrade Redis from v6 to v7 in middlewares by @bowenliang123 in #19935
- docs: Optimize Response data array object indentation for the /messages interface by @yeyunwen in #19922
- Feat(WaterCrawl error handling): add custom exceptions and error handling by @amirasaran in #19948
- fix model workflow_draft_variables duplicate app_id set. by @zhanluxianshen in #19949
- Revert "chore: upgrade Redis from v6 to v7 in middlewares" by @crazywoola in #19960
- chore: update redis dependency to version 6.1.0 in api/pyproject.toml by @rotoni in #19885
- E-300 by @douxc in #19726
- fix: fix page broken for undefined permission by @LeeeeeeM in #19972
- fix: multiple retrieve reranking_enabled switch by @zengruizhao in #19958
- fix: ensure Decimal values in metadata are JSON serializable (fixes #19936) by @williamjizihe in #19955
- feat: Web
- fix: search query and refine the logic by @crazywoola in #19987
- fix: fix duplicate app lose custom image by @CorrectRoadH in #19775
- chore: Reduce the invocation of the plugin interface by @luckylhb90 in #19629
- Revert "fix: fix duplicate app lose custom image" by @crazywoola in #19995
- fix: update IN SERVICE status text in app detail panel by @douxc in #19993
- fix: ReactFlow background in dark theme by @crazywoola in #20013
- fix create_tracing_app_config error (#19884) by @homeant in #20004
- fix: emoji picker in dark mode by @crazywoola in #20019
- Feat:Plugin Storage Type Support Aliyun OSS by @quicksandznzn in #20012
- feat: Move to node in workflow panel and fix help link hover style by @wellCh4n in #19998
- feat: Support hidden fields in the start node by @ModyQyW in #19678
- refactor: Use typed SQLAlchemy base model and fix type errors by @laipz8200 in #19980
- fix(sqlalchemy_workflow_node_execution_repository): Missing
triggered_fromwhile querying WorkflowNodeExecution by @laipz8200 in #20044 - Fix/modify translation by @HanqingZ in #20046
- Simplify
execution_metadataHandling forWorkflowNodeExecutionby @QuantumGhost in #20062 - tencent vectordb compatible with version 1.1.3 and below by @wlleiiwang in #20056
- feat: Introduce WorkflowExecution Domain Entity and Repository, Replace WorkflowRun Direct Usage, and Unify Stream Response Logic by @laipz8200 in #20067
- Fix/fix trace provider delete err by @hieheihei in #20070
- feat: Split WorkflowCycleManager by @laipz8200 in #20071
- fix: correct indentation in dataset retrieval model assignment by @GonzaHM in #20040
- fix: uninitialized variable error on empty knowledge retrieval(agent) by @zhudongwork in #20025
- Refactor OpenSearch config to separate use_ssl and verify_certs flags by @He-Huang in #20075
- fix: improve tracing provider validation logic in OpsTraceManager by @jameshui1997 in #20042
- chore: Update S3StorageConfig to match boto3 type hints by @Lothir...
v1.4.0
🌟 What's New in v1.4.0? 🌟
🎂 Dify turns 2! New look, new brand, same mission.
Imagine if every idea could become an AI agent. With Dify, ‘if’ you can ask it, you can build it.
Check out the new Dify.AI and start building your if today.
🚀 New Features & Enhancements
🌙 Dark Mode
We’ve rolled out a theme switcher that allows you to easily toggle between light and dark modes, perfect for those late-night coding sessions. Click your avatar to experience it! This feature helps reduce eye strain and allows you to customize your user interface to match your preference. Thanks to @JzoNgKVO in PR #18093 for making this possible.
🖼️ Multi-Modal LLM Output
Our platform now supports multimodal outputs, allowing LLMs to handle both text and images within the LLMNode. This feature enhances the richness of data interaction and boosts your model's capabilities, courtesy of @QuantumGhost's efforts in PR #17372. You can now try these new features using the Gemini 2.0 Flash Exp model! This integration ensures that your AI can process and respond with both text and visual data seamlessly.
✏️ Editable Questions
We’ve added greater control over your questions, allowing them to be edited before they go live. This update ensures that you can tweak questions for clarity and relevance, as implemented by @HyaCiovo in PR #19117.
🔧 Bug Fixes and Improvements
-
Enhanced Redis Management: Support Redis client-side caching for optimized data handling (though it’s disabled out-of-the-box), improving overall system performance. Credits to @bowenliang123 in PRs #19493 and #19524.
-
Robust Workflow Management: Addressed numerous inconsistencies and bugs in workflows, ensuring smoother, more reliable operations across the board. Our workflows can now handle node failures more gracefully, thanks to contributions from @Kevin9703 in PR #18994.
These features and improvements reflect the feedback from our amazing community and aim to elevate both usability and functionality. We hope these updates significantly enhance your user experience!
Big thanks to all contributors for steering this version forward. Happy experimenting! 🙌
Upgrade Guide
Docker Compose Deployments
-
Back up your customized docker-compose YAML file (optional)
cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
-
Get the latest code from the main branch
git checkout main git pull origin main
-
Stop the service. Please execute in the docker directory
docker compose down
-
Back up data
tar -cvf volumes-$(date +%s).tgz volumes -
Upgrade services
docker compose up -d
Source Code Deployments
-
Stop the API server, Worker, and Web frontend Server.
-
Get the latest code from the release branch:
git checkout 1.4.0
-
Update Python dependencies:
cd api uv sync -
Then, let's run the migration script:
uv run flask db upgrade
-
Finally, run the API server, Worker, and Web frontend Server again.
What's Changed
- add MAX_TASK_PRE_CHILD for celery by @JohnJyong in #18985
- remove unstructured api key check by @JohnJyong in #18989
- refactor: switch to dynamic versioning in package configuration by @laipz8200 in #19019
- feat: clean up message_files table first before proceeding to find orphaned files by @kurokobo in #19035
- fixes: fix entrypoint script with missing environment variables by @fdb02983rhy in #19039
- fix: fix embedded chatbot styles on a relatively wide screen by @ModyQyW in #19030
- chore: Improve FILES_URL Configuration Comments by @fdb02983rhy in #19040
- test(graph-engine-test): modify the assert condition by @Nov1c444 in #19041
- fix(workflow_cycle_manage): failed nodes were not updated in workflow_node_executions by @Kevin9703 in #18994
- chore: improve diagram picture of docker compose by @hjlarry in #19054
- feat(api): use
json_repairto fix invalid json while generate structured output by @ZombieBlue in #18977 - fix(web): fix the wrong components usage(#18995) by @HyaCiovo in #19065
- fix: fix rerank model runner usage by @ModyQyW in #19008
- feat: support access milvus with token by @realethanhsu in #19034
- feat: add AWS Managed IAM auth for OpenSearch vector DB by @lan666as in #18963
- fix: remove redundant Mermaid graph direction enforcement by @haocheng6 in #19024
- fix: image preview triggers binary download by @dimsky in #19070
- fix: change provider should change the content by @crazywoola in #19075
- Fix: the issue of getting empty environment variables. by @linfey90 in #19085
- Enhance Code Consistency Across Repository with
.editorconfigby @QuantumGhost in #19023 - fix: Chinese input deletes extra character in Safari within Workspaces (#18193) by @kingsword09 in #19088
- fix(api): resolve external knowledge API error due to excessive URL validation by @kenwoodjw in #19003
- add Accept-Ranges header for audio/video files by @sondin in #19119
- feat(logAndAnn): add control option for question editing feature by @HyaCiovo in #19117
- fix: fix import LexicalErrorBoundary error by @LeeeeeeM in #19124
- fix: metadata filter not work by @kingsant in #19020
- fix: fix render undefined when text children is empty by @LeeeeeeM in #19135
- fix(i18n): add functions to retrieve document and pricing page languages by @WTW0313 in #19142
- fix: inconsistent case expression in _process_metadata_filter_func by @IthacaDream in #19146
- feat: support remove first and remove last in variable assigner by @laipz8200 in #19144
- immediately return initialed tiktokenizer instance and remove dead code in usage of tiktokenizer by @bowenliang123 in #17957
- ci: add diff to lint ci by @yihong0618 in #17874
- fix: mouse scrolling zooming can not function anymore by @junjiem in #19160
- feat(api): Add image multimodal support for LLMNode by @QuantumGhost in #17372
- fix: file name incorrect when download file by @hjlarry in #19183
- fix: fix API tool integration test by @haocheng6 in #19187
- feat: Plugin page related document supports multiple languages by @ACAne0320 in #19197
- chore: bump celery from 5.4 to 5.5 by @bowenliang123 in #19190
- fix: time type metadata filtering error by @IthacaDream in #19192
- fix: use only supported operators in metadata filter system prompts by @haocheng6 in #19195
- Fix appURL construction when basePath is empty by @osaimi in #19234
- chore: required pip and performance improvment in mypy checks by @bowenliang123 in #19225
- fix: support non-ascii charactors in filename of the tool files by @bowenliang123 in #19228
- fix basic auth if not base64 encode by @kenwoodjw in #19242
- Optimize the event handling and rendering logic of the component picker by @441126098 in #19232
- fix(api): add missing INNER_API_KEY to InnerAPIConfig by @Yeuoly in #19166
- fix: s.filter is not a function by @crazywoola in #19250
- feat: sort variables in the selector by x axis for most recent order by @GeorgeCaoJ in #19243
- Fix: optional input in batch run by @JzoNgKVO in #19257
- chore: avoid repeated type ignore noqa by adding flask_restful and flask_login in mypy import exclusions by @bowenliang123 in #19224
- Fix: hide view chat setting button when no inputs form by @JzoNgKVO in #19263
- fix(structured-output): reasoning model's json format parsing by @Nov1c444 in #19261
- feat: add mode for /info api by @LeeeeeeM in #19264
- fix(web): add workspace selector overflow auto by @Bonfireee in #19265
- Fix doc bug workflow ...

