✨ 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_DRAFT
instead of hardcodeddraft
by @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 order
and appendsRow Page URL
by @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
- fix remote file by @kenwoodjw in #23127
- Add comprehensive security tests for file upload controller by @farion1231 in #23102
- Fix: Fix style issues by @ZeroZ-lab in #23209
- fix: call checkOrSetAccessToken when app access mode is PUBLIC by @douxc in #23195
- Chroe: some misc cleanup by @hyongtao-db in #23203
- fix: resolve sidebar animation glitches and layout shifts in app detail page (#23216) by @lyzno1 in #23221
- fix: correct plugin indentation by @Mairuis in #23228
- chore: Optimize dark mode styles (#23222) by @HyaCiovo in #23231
- fix: set default value to avoid initializing with empty value by @ianwoolf in #23220
- refine some orm types by @asukaminato0721 in #22885
- Fix: Update the background color and hover effect of secondary buttons by @ZeroZ-lab in #23186
- fix celery backend when use rabbitmq by @kenwoodjw in #23238
- [Enhancement] Allow modify conversation variable via api by @AlexChim1231 in #23112
- fix: resolve multipart/form-data boundary issue in HTTP Request compo nent #22880 by @baonudesifeizhai in #23008
- fix: improve boolean field handling in plugin configuration forms by @AlanBustamanteRemerge in #23160
- chore: tablestore full text search support score normalization by @wanttobeamaster in #23255
- chore: Optimize component styles and interactions (#23250) by @HyaCiovo in #23251
- Add a practical AKS one-click deployment Helm by @Ruiruiz30 in #23253
- minor fix: fix default for status of TidbAuthBinding in compatible with various versions by @NeatGuyCoding in #22288
- CI: restrict autofix.ci to run only in official repo by @hyongtao-db in #23267
- Chore/variable label by @zxhlyh in #23270
- fix: type for ProviderConfig.default by @jingfelix in #23282
- Fix: incorrect array element validation in SegmentType by @hyongtao-db in #23289
- fix video and audio extension, keep consistent with the web page. by @DazzlingSong in #23287
- Fix: Correct file variable handling for custom tools in workflow by @patsnap-liujin in #18427
- Update metadata_service.py by @XiaoXiaoJiangYun in #23271
- Update metadata_service.py by @XiaoXiaoJiangYun in #23272
- i18n: enhance check-i18n script with precise filtering and multiline support by @lyzno1 in #23298
- fix the error of unable to retrieve url from file by @csyourui in #13603
- Fix/variable input validation issue by @MatriQ in #23300
- fix: fix wrong css class by @NeatGuyCoding in #23299
- replace db with sa to get typing support by @asukaminato0721 in #23240
- chore: fix function name typo by @MatriQ in #23306
- Chore: replace deprecated
datetime.utcnow()
withnaive_utc_now()
by @hyongtao-db in #23312 - fixing chat window api recall fix on changing browser tab or window by @jubinsoni in #23301
- feat: Add Download Button to UI for Knowledge Resource Source Files by @somethingwentwell in #23320
- feat: support workflow version specification in workflow and chat APIs by @qiaofenlin in #23188
- Fix segment query tenant bug and variable naming typo by @hyongtao-db in #23321
- feat(ui): unify tag editing in app sidebar and add management entry to TagFilter by @lyzno1 in #23325
- retention of data filled on tab switch for tool plugin by @jubinsoni in #23323
- fix(i18n): correct translation errors across multiple languages by @lyzno1 in #23328
- fix(ui): temporarily remove TagSelector from app sidebar per design review by @lyzno1 in #23329
- Chore: fix typo, no code change by @hyongtao-db in #23331
- fixing footer by @jubinsoni in #22927
- Fix version comparison with imported_version by @hyongtao-db in #23326
- security: Fix XSS vulnerability in authentication check-code pages by @lyzno1 in #23295
- feat(i18n): enhance auto-gen script for template literals and add app-debug translations by @lyzno1 in #23344
- Fix: avoid Flask route conflict by merging
DocumentDetailApi
andDocumentDeleteApi
by @hyongtao-db in #23333 - fix: diplay all helpfields by @jingfelix in #23348
- Feat add testcontainers test by @NeatGuyCoding in #23269
- fix: fetchAppWithTags may return empty when apps is over 100 by @NeatGuyCoding in #23350
- feat: enhance document list navigation and sorting functionality by @lyzno1 in #23383
- remove useless Tool class attributes by @IthacaDream in #23389
- enhancing logging by @jubinsoni in #23332
- chore: add Template by @crazywoola in #23395
- fix: installed apps preview language error by @WTW0313 in #23397
- lint: fix issue of no-unused-vars by @MatriQ in #23375
- add otel instrument for redis and http request by @hieheihei in #23371
- fix: remove redundant useEffect from TagSelector component by @lyzno1 in #23406
- fix: resolve sidebar animation issues and improve app detail page UX by @lyzno1 in #23407
- feat(workflow): add relations panel to visualize dependencies by @Minamiyama in #21998
- Feat/webapp opt by @GareArc in #23283
- feat(workflow): add support for release/e-* tag in build-push workflow by @GareArc in #23418
- chore: update tmpl by @crazywoola in #23438
- fix: Multiple UI component improvements and code quality enhancements by @lyzno1 in #23446
- i18n/sync by @lyzno1 in #23429
- feat(api):Enhance the scope of expired data cleanup table in the Dify… by @rouxiaomin in #23414
- Feat add testcontainers test for account service by @NeatGuyCoding in #23380
- Update milvus version to LTS by @winsonwhe in #23393
- Feat add testcontainers test for workflow draft variable service by @NeatGuyCoding in #23466
- fix: fix wrong unicodechar regx by @LeeeeeeM in #23468
- fix: can not find file by @crazywoola in #23472
- Feat workflow node align by @ZeroZ-lab in #23451
- Fix API documentation layout and dark mode contrast issues by @lyzno1 in #23462
- Remove unnecessary issubclass check by @hyongtao-db in #23455
- Fix: moved
file =
after file presence validation by @hyongtao-db in #23453 - minor fix: translation for contentEnableLabel by @NeatGuyCoding in #23483
- Enhance API documentation TOC with modern design and improved UX by @lyzno1 in #23490
- fix: resolve i18n workflow permissions and naming issues by @lyzno1 in #23494
- fix(node): fix unexpected extra equals sign in HTTP params by @ghmark675 in #23474
- feat: Enhance response validation and parsing in tool.py by @liugddx in #23456
- Chore: remove unused variable pruned_memory by @hyongtao-db in #23514
- Feat add testcontainers test for app service by @NeatGuyCoding in #23523
- fix: make TagSelector always visible for accessibility and mobile support by @lyzno1 in #23515
- fix: update the guiding text in the upload component by @hangboss1761 in #23509
- chore: add template for required fields by @crazywoola in #23533
- fix localtime_to_timestamp tool throws 'no attribute localize error' when it executes without specifying a timezone parameter by @goofy-z in #23517
- chore: Optimize component styles and interactions (#23250) by @HyaCiovo in #23543
- feat: Add Clickzetta Lakehouse vector database integration by @yunqiqiliang in #22551
- Fixes #23536 by @tomorrowthief in #23542
- Fix/footer behavior by @crazywoola in #23555
- fix: exclude dev dependencies from production Docker image by @laipz8200 in #23562
- Fix: Apply Metadata Filters Correctly in Full-Text Search Mode for Tencent Cloud Vector Database by @dlmu-lq in #23564
- minor fix translation by @NeatGuyCoding in #23568
- fix: hide opensource license link when custom branding is enabled by @douxc in #23569
- fix: update invite settings page style in dark mode by @douxc in #23571
- fix: resolve Windows path separator issue in Huawei OBS operations by @BotAndyGao in #23475
- feat: add Service API file preview endpoint by @lyzno1 in #23534
- fix: empty arrays should convert to empty string in LLM prompts by @laipz8200 in #23590
- Feat add testcontainers test for annnotation service by @NeatGuyCoding in #23593
- fix: resolve AppCard description overlap with tag area by @lyzno1 in #23585
- Fix incorrect exception handling in db query by @hyongtao-db in #23582
- feat: improved MCP timeout by @IthacaDream in #23546
- fix: ensure vector database cleanup on dataset deletion regardless of document presence (affects all 33 vector databases) by @yunqiqiliang in #23574
- lint: fix tailwind lint issues by @MatriQ in #23367
- feat: tools json response support datetime uuid etc by @jiangbo721 in #22738
- word extractor cleans. by @zhanluxianshen in #20926
- using message_file event instead of message event by @jubinsoni in #22988
- Revert "feat: improved MCP timeout" by @crazywoola in #23602
- Bug Fix: Fix workflow knowledge retrieval cache bug by @yunqiqiliang in #23597
- fix: eliminate AppInfo sidebar animation glitches and layout jumps by @lyzno1 in #23609
- Fix X button animation glitches in secret key modals by @lyzno1 in #23614
- feat: Enhance the alignment logic of the nodes in the context menu by @ZeroZ-lab in #23617
- fix: i18n options too long breaks plugin setting ui by @iamjoel in #23640
- Fix ClickZetta stability and reduce logging noise by @yunqiqiliang in #23632
- Fix file type misclassification in logs interface by @lyzno1 in #23641
- Feat add testcontainers test for api base extendsion service by @NeatGuyCoding in #23652
- Allow to export full screen image of workflow by @ZombieBlue in #23655
- fix: change i18n workflow trigger mechanism to run in main repository by @lyzno1 in #23662
- fix: conversation pinned filter returns incorrect results when no conversations are pinned by @laipz8200 in #23670
- Fix bare raise in if blocks by @hyongtao-db in #23671
- fix: resolve datasets container rounded corners disappearing during scroll by @lyzno1 in #23667
- fix: sync missing conversation variables for existing conversations by @laipz8200 in #23649
- Feat add testcontainers test for app dsl service by @NeatGuyCoding in #23675
- fix: Add internationalization support for date input formatting Fixes #23266 by @baonudesifeizhai in #23678
- fix: support custom file types in workflow Start node by @liugddx in #23672
- lint: fix sonarjs/no-dead-store issues by @MatriQ in #23653
- chore: translate i18n files by @github-actions[bot] in #23679
- fix: correct File Preview API position in Japanese advanced chat template by @lyzno1 in #23645
- fix: improve dark mode UI consistency in signin page by @lyzno1 in #23684
- fix: update HTTP request timeout fields to use Field with default values by @liugddx in #23694
- Fix model_setting_map key mismatch by @hyongtao-db in #23699
- Feat node search by @crazywoola in #23685
- chore: translate i18n files by @github-actions[bot] in #23704
- Feat add testcontainers test for message service by @NeatGuyCoding in #23703
- fix: Optimize the event handling for inserting variable shortcuts, resolving incorrect blur issues (#22981) by @HyaCiovo in #23707
- fix: unified error handling for GotoAnything search actions by @lyzno1 in #23715
- fix: Enhance doc_form null checking, exception handling, and rollback logic by @NeatGuyCoding in #23713
- fix: model selector language undefined error by @WTW0313 in #23723
- fix: add @property decorator to pydantic computed_field for compatibility by @laipz8200 in #23728
- fix: resolve circular import in AppGenerateEntity by @laipz8200 in #23731
- chore: remove debug log statements from DifyAPIRepositoryFactory by @laipz8200 in #23734
- feat: enhance GotoAnything UX with @ command selector by @lyzno1 in #23738
- chore(version): bump version to 1.7.2 by @WTW0313 in #23740
New Contributors
- @chunglam2525 made their first contribution in #23058
- @wrfly made their first contribution in #23089
- @nurrochmanmuhammad made their first contribution in #23017
- @Sn0rt made their first contribution in #23163
- @ianwoolf made their first contribution in #23220
- @AlanBustamanteRemerge made their first contribution in #23160
- @Ruiruiz30 made their first contribution in #23253
- @DazzlingSong made their first contribution in #23287
- @patsnap-liujin made their first contribution in #18427
- @XiaoXiaoJiangYun made their first contribution in #23271
- @csyourui made their first contribution in #13603
- @ghmark675 made their first contribution in #23474
- @hangboss1761 made their first contribution in #23509
- @goofy-z made their first contribution in #23517
- @yunqiqiliang made their first contribution in #22551
- @BotAndyGao made their first contribution in #23475
Full Changelog: 1.7.1...1.7.2
Keep building awesome things!