Releases: langgenius/dify
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
MessageStatus
class from themodels.model
module tomodels.enums
module 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
getNodeUsedVars
implementation 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.files
now 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_user
argument (#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_id
now 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 withsrc
attributes, 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
WorkflowDraftVariable
Model 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_from
while querying WorkflowNodeExecution by @laipz8200 in #20044 - Fix/modify translation by @HanqingZ in #20046
- Simplify
execution_metadata
Handling forWorkflowNodeExecution
by @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_repair
to 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
.editorconfig
by @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 ...
v1.3.1
🚀 What's New in v1.3.1?
Hello Dify community! Version 1.3.1 is here and packed with updates aimed to enhance your LLMOps operations and workflow. Let’s take a closer look at what's included:
🌟 New Features
- VTT to Document Transform: We've enhanced the Document extractor to support VTT data formats, thanks to @te-chan2.
- Advanced Storage Management: Admins, rejoice! You can now easily reclaim storage space by cleaning up unused files. This feature is courtesy of @kurokobo.
- Vastbase Vector Database Support: Enjoy seamless integration with Vastbase vector DB for more efficient processing, thanks to @yayaxxww.
👌 Improvements & Refactoring
- Frontend Timezone Support: The frontend now respects timezone for timestamps, thanks to @JzoNgKVO.
- Enhanced Embedded Chatbot Usability: Drag-and-drop functionality in embedded websites has been improved significantly for both mouse and touch inputs, by @hjlarry.
- Upload Folders to Knowledgebase: Simplify your knowledgebase management by uploading entire folders directly, thanks to @Silow9.
🛠️ Bug Fixes
- Model Plugin Order Correction: Fixed order settings enforcement from
position.yaml
, thanks to insights by @bravomark. - Authorization & Password Autofill Fixes: Resolved unintentional password autofill behavior within authorization plugins, by @hjlarry.
- Import Template Error Fix: Squashed those bugs—no more errors when importing templates! Special acknowledgment to our diligent devs for this fix.
That's all in v1.3.1! Get your hands on these new features and improvements, and do let us know your thoughts and feedback on our forums or GitHub discussions. Until next time, keep coding and exploring! 🚀
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.3.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
- chore: fix reimported by @IthacaDream in #18610
- embedding in websites support initializes to specify the conversation_id by @junjiem in #18602
- fix: improve translation of community code of conduct sentence by @minglu7 in #18607
- feat: add missing switches by @crazywoola in #18619
- embedding in websites setting conversation_id requires hiding reset conversation button by @junjiem in #18623
- fix: enhance TOC navigation with scrollable overflow for better usability by @ZeroZ-lab in #18636
- Add jp translation by @HanqingZ in #18628
- Fix some prompt typos by @mPyKen in #18645
- fix agentflow error if first variable is num by @ZombieBlue in #18660
- fix some browser autofill password when authorization plugin by @hjlarry in #18661
- fix: sometimes error message not display complete by @hjlarry in #18663
- chore(docker): bump dify-plugin-daemon to 0.0.9 by @laipz8200 in #18672
- fix: link address error in the embedding in websites first example by @junjiem in #18677
- fix: remove chat variable in workflow mode by @zxhlyh in #18696
- Added the missing path of the webpath prefix and the prefix basepath + of static resources to remove the bug of adding more basepath. by @gq957534377 in #18658
- fix: project version to 1.3.0 in package.json and uv.lock by @junjiem in #18684
- feat: support vastbase vector database by @yayaxxww in #16308
- fix: not render conversation var in prompt editor by @iamjoel in #18728
- [Lindorm VDB] Add the QUERY_TIMEOUT parameter to force the search query to fail. by @AlwaysBluer in #18613
- issue: #17056 : Add a reason field to the message_replace event by @just2gooo in #17195
- fix: buildin tool provider credentials_for_provider by @luckylhb90 in #18725
- Resolves #18536 Retreive conversation variables by @AlexChim1231 in #18581
- fix: enable Milvus database configuration via .env(#18707) by @jiawei5807 in #18714
- fix: wording in README.md by @crStiv in #18751
- fix: update api rate limit on Pricing page by @douxc in #18755
- enable pan by fingers by @crazywoola in #18775
- fix(web): add missing 'clsx' dependency for pagination component by @minglu7 in #18769
- fix: #18744 The model order defined in position.yaml in the Model Plugin is not taking effect. by @bravomark in #18756
- optimize account status field hard coded by @gsmini in #18771
- fix: Allow advanced chat app to get workflow run detail (#18753) by @1betatsu in #18758
- fix: embed chatbot can't drag when use mouse by @hjlarry in #18781
- refactor: Apply DI to WorkflowNodeExecutionRepository. by @laipz8200 in #18794
- feat(app_dsl_service): Refines version compatibility logic by @laipz8200 in #18798
- Hotfix/create from template category by @douxc in #18807
- fix(plugin_service): Add marketplace enabled check before plugin operations by @Yeuoly in #18806
- feat: Add W&B Weave Tracing Integration by @parambharat in #14262
- fix depth param issue for WaterCrawl by @wesleysui in #18839
- feat: add administrative commands to free up storage space by removing unused files by @kurokobo in #18835
- fix: LLMResultChunk cause concatenate str and list exception by @hjlarry in #18852
- feat: change delete status code from 200 to 204 by @devxing in #18398
- fix: update notice for users for clear-orphaned-file-records and remove-orphaned-files-on-storage commands by @kurokobo in #18864
- fix: install plugins permissions by @zxhlyh in #18870
- fix: check dsl version when create app from explore template by @zxhlyh in #18872
- chore: support other webapps embedded in iframe by @iamjoel in #18877
- refactor: rename plugin manager to plugin client and rename path from manager to impl by @Yeuoly in #18876
- fix: Text Generation App should not should not show embedded in website by @crazywoola in #18880
- [Observability] Convert exception logging into span in OpenTelemetry by @TedaLIEz in #18821
- refactor: remove external link for dataset description guidance by @ZeroZ-lab in #18884
- feat: add interfaces of OAuth handler methods for authorization by @Yeuoly in #18889
- chatflow/workflow add field required by @junjiem in #18892
- fix: annotation update need use http put method and annotation-reply api doc parms wrong by @safejob in #18891
- refactor: Refactors repository imports structure by @laipz8200 in #18901
- chore: disabled struct output not show model not support warning by @iamjoel in #18909
- fix: when cot_agent call tool like searxng lost some response content by @hanqingwu in #16781
- [Observability][Bugfix] Fix expected an instance of Token, got None error in OpenTelemetry by @TedaLIEz in #18934
- fix: i.find is not a function by @crazywoola in #18945
- feat: add VTT data transform to Document extractor by @crazywoola in #18936
- fix: classify remove always remove the last one by @iamjoel in #18959
- fix: header padding by @zxhlyh in #18957
...
v1.3.0
🌟 What's New in v1.3.0 🌟
Hey tech fam, welcome to version 1.3.0! We've been grinding to bring in some slick enhancements, bug fixes, and new capabilities. Let’s dig into what’s freshly brewed:
🚀 New Features
-
Structured Output in LLM Node: We've introduced structured output support for the LLM Node. This means your language models can now return neatly organized and easily processable data. Backend implementation by @Nov1c444 in #17877 and frontend magic by @iamjoel in #17994 ensure this feature is seamless and powerful for developers.
Check out our intro video for more details: Dify's Structured Output: Make AI Agent chat with API easier -
Never Miss a Plugin Update: Our new feature ensures you're always in the loop. When a new version of a plugin drops, you'll see a clear indicator right in the UI. This keeps your environment up-to-date and running smoothly, thanks to @Yeuoly in #17695.
-
Token Counting Made Easy: We've tweaked the default token counting rules. Now, if your provider doesn't return token usage, we'll default to using 0. However, if you'd like to estimate using the tokenizer, you can set
PLUGIN_BASED_TOKEN_COUNTING_ENABLED=true
. Heads up, this might impact performance, detailed by @laipz8200 in #17706. -
Workflow Export Delight: Ever wanted to share your workflow effortlessly? You can now export it as an image with the slick new feature from @ACAne0320 in #17904.
-
Mermaid Analysis Gets Smarter: Optimization magic was done on Mermaid by @charli117 in #18089 for all you diagram enthusiasts out there.
🛠️ Enhancements
-
Python Package Manager Upgrade: We made a significant switch from poetry to uv as our Python package manager. This speeds up operations, minimizes merge conflicts, and streamlines our development process. Huge thanks to @bowenliang123 for leading this transition in #16317.
-
Slick Shortcuts & Indicators: Consistent keyboard shortcut support and handy visual indicators have been rolled into all app creation dialogs thanks to @ACAne0320 in #17138. Speed and efficiency now go hand in hand.
-
Observability on Steroids: Integrated OpenTelemetry for better observability in workflows by @TedaLIEz in #17627 and beefed it up with HTTP metrics in HTTP response handling.
-
Type Safety Surge: Massive improvements on type safety in components like
PluginList
by @samuel871211 in #17498. Our internals are as tight as ever!
🐛 Bug Fixes
-
Style & Layout Wrinkles Ironed: Various layout and style improvements across components to improve readability and consistency, mostly spearheaded by @ZeroZ-lab and pals.
-
Fixing the Fixables: Squashed bugs such as the pesky workflow run panel resizing issue and a couple of others like clickjacking prevention thanks to @hjlarry and @iamjoel.
-
Error-Free Conversations: Fixed the conversation log issue that could throw a 500 error. Clean data for sweet conversation flow is the norm again.
🌐 Language & Locale Updates
-
Japanese Touch-Ups: Some timely translation updates and locale param support by @t-daisuke for plugins. Quick ‘Yoro-shiku’ to our Japanese community!
-
German Date Format Tweak: Corrected an unsupported date format issue, courtesy of @haocheng6 ensuring German precision.
🔧 Chores & Docs Love
- Git Workflow Optimization: Speedier git checkouts by shaving off unnecessary layers — kudos to @bowenliang123 in #18103 for the efficiency boost.
That’s a wrap, people! Enjoy exploring v1.3.0's new dimensions and as always, stay curious and keep building. Cheers! 🚀✨
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.3.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
- refactor: add API endpoint to list latest plugin versions and query it in asynchronous way by @Yeuoly in #17695
- chore: hide eslint complexity warning by @iamjoel in #17698
- fix segment query index not effect by @JohnJyong in #17704
- fix: Check collection exists before drop it. by @wlleiiwang in #17692
- fix : PLUGIN_S3_USE_AWS_MANAGED_IAM AND PLUGIN_S3_USE_PATH_STYLE … by @quicksandznzn in #17702
- revert batch query by @JohnJyong in #17707
- feat(large_language_model): Adds plugin-based token counting configuration option by @laipz8200 in #17706
- fix: docker compose plugin s3 config default value by @quicksandznzn in #17722
- Fix create blank app by @ZeroZ-lab in #17724
- Chore/slice workflow utils by @zxhlyh in #17730
- fix: 17712-get-messages-api-encountered-internal-server-error by @crazywoola in #17716
- fix: Enhance error handling and retry logic in Apps component by @ZeroZ-lab in #17733
- enhance guessing mimetype of tool file by @QunBB in #17640
- feat: add search params to url by @WTW0313 in #17684
- Add and modify jp translation by @HanqingZ in #17748
- fix: fix inputs lost by @ModyQyW in #17747
- feat: add consistent keyboard shortcut support and visual indicators across all app creation dialogs by @ACAne0320 in #17138
- fix: adjust spacing in ViewHistory and Panel components by @WTW0313 in #17766
- chore: skip document segments fetching with non-existed dataset of DatasetDocument in add_document_to_index_task task by @bowenliang123 in #17784
- Feat: workflow dark mode by @JzoNgKVO in #17785
- hotfix: Workflow page element warning problem #17787 by @Jimmiaxie in #17789
- fix: parallel id caused append to wrong branch by @iamjoel in #17794
- create db if not exists by @wlleiiwang in #17796
- fix: return null url when upload local file by @izon-masuara in #17752
- robust for json parser by @zxfishhack in #17687
- fix: make prompt consistent with few-show examples by @xu-song in #11538
- chore: remove non-existed extra msg for unstructured package by @bowenliang123 in #17670
- chore: Modify watercrawl translation in en-US and zh-Hans by @chairc in #17828
- fix: text.split by @crazywoola in #17842
- fix: run button disappeared when where is no inputs in form by @douxc in #17854
- feat: add optional search parameters to dataset query templates i by @ZeroZ-lab in #17857
- fix: do not submit value when file input is optional by @JzoNgKVO in #17861
- enhance(plugin): replace json.loads with Pydantic model_validate_json by @Yeuoly in #17867
- fix: in variable settings, use Textarea to replace Input. by @LeeeeeeM in #17864
- fix: autocorrect everything in api by @yihong0618 in #17859
- fix: fix file number limit error by @LeeeeeeM in #17848
- Fix external knowledge Issues: (#17685) by @briqt in #17843
- fix: add annotation ctrl button for annotation add by @JzoNgKVO in #17873
- Update the model modal:position the scrollbar further inside the modal by @maoguy in #17672
- fix: adjust margin in DatasetCard component for better layout by @ZeroZ-lab in #17879
- fix: refactor SVG icon handling logic and optimize event listener management in embed.js to support mobile browsers #16719 by @zwq357smile in #16717
- [Observability] Integrate OpenTelemetry by @TedaLIEz in #17627
- feat: re-add prompt messages to result and chunks in llm by @laipz8200 in #17883
- refactor(api): Enhance error handling in BasePluginManager by @QuantumGhost in https://github.com/langgenius/...
v1.2.0
🚀 What’s New in v1.2.0? 🚀
Hello community! We’re excited to share our v1.2.0 update with you—it's packed with impressive new features, enhancements, and of course, some good ol' bug fixes. Sit back, sip your coffee, and let's dive into what's new!
🎉 Highlight of the Release
- New Workflow Loop Node: A huge shoutout to @Woo0ood, @arkunzz, @Gevtolev and @zxhlyh for dropping this game-changer in #14863, #17268 and #17273! The Loop Node feature maximizes efficiency in automation by allowing you to iterate over items in your workflows seamlessly. This is a big step forward in letting you do more with less. Kudos to the development team for making this happen!
🌟 New Features
-
Childchunk API Added: Thanks to @ZeroZ-lab in #16094, we've introduced the childchunk API to enhance your workload flexibility.
-
OceanBase Hybrid Search: Courtesy of @hsiong in #16652, this feature integrates hybrid search capabilities within OceanBase, providing more robust query options.
-
Webapp Input Flexibility: Webapp now allows input changes after a conversation starts, by @JzoNgKVO in #16901.
-
Langfuse LLM Node: Input and output support are enhanced by @ZhouhaoJiang in #16924.
-
Tablestore Vector Database Support: By @wanttobeamaster in #16601—it's like giving your data superpowers!
-
WaterCrawl.dev Integration: Thanks to @amirasaran in #16396, this is now available as a new knowledge base provider.
-
Plugin Daemon OSS Env Config: By @quicksandznzn in #17663, enhancing your plugin management.
🛠️ Enhancements & Bug Fixes
-
Metadata Fixes & Optimizations: We've got metadata variable value fixes by @JohnJyong in #16665 and metadata filter improvements from various contributors. Your data management is smoother than ever!
-
UI/UX Improvements: Whether it’s fixing layout issues on mobile (thanks, @LeeeeeeM in #16793!) or improving text spacing on charts (@ACAne0320, #16894), we’re committed to a slicker experience.
-
Multilingual Support: Added jp_ja for the knowledge API by @crazywoola and supported Tablestore vector database—a shout-out to our international users.
-
UI Consistency Tweaks: Little UI adjustments for a big impact, like updating border radius for dropdowns and other forms, thanks to our vigilant community contributors.
-
Security & Efficiency: Fixes like the provider credentials load error by @liuzhenghua ensure the platform's robust performance. Also, optimizing the database workflow app log index has been another focus area.
-
Additional Fixes: Addressing multiple translation gaps, account errors, and something as specific as the
Function's Name Mismatch
by @hyongtao-db—keeping us refined! -
Education API Introduction: By @GareArc in #17168, we’re aiming to broaden horizons with educational integrations.
🏗️ Miscellaneous
- Code Quality & Documentation: We've cleaned up typos, added unit tests, and brought in a sparkle to our codebases for VDB, ensuring smooth sailing for devs and users!
In conclusion, this release is about empowering you with flexibility and reliability, from the all-new Loop Node to a windfall of other enhancements. Thanks to everyone contributing to shaping the future with our open-source spirit. Keep pushing the envelope and happy innovating! 👐
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.2.0
-
Update Python dependencies:
cd api poetry install
-
Then, let's run the migration script:
poetry run flask db upgrade
-
Finally, run the API server, Worker, and Web frontend Server again.
What's Changed
- Feat add childchunk api by @ZeroZ-lab in #16094
- Metadata variable value fix by @JohnJyong in #16665
- Fix/vdb lindorm by @AlwaysBluer in #16660
- Fix function's name mismatch by @hyongtao-db in #16681
- fix: pgvector metadata filter by @kenwoodjw in #16688
- mark weight type as optional by @JohnJyong in #16701
- fix: regex expressions distorted in code block by @ACAne0320 in #16690
- Update prompts.py:Fix conversation title language for Italian conversations by @zhangkun-21 in #16696
- feat: Add OceanBase hybrid search features by @hsiong in #16652
- fix: fix icon generation error on Windows platform by @hudenghui in #16254
- fix: update htmlContent type and wrap button in div for manualClose by @WTW0313 in #16716
- fix milvus filter search by @JohnJyong in #16725
- fix full-doc mode document doesn't reindex after enable or un_archive by @JohnJyong in #16737
- fix(slider): the slider's style is not as expected by @Nov1c444 in #16711
- fix: trim whitespace from URL input in file uploader component #16700 by @ZeroZ-lab in #16722
- chore(slider): fix the slider lint error by @Nov1c444 in #16746
- Fix some typos in CONTRIBUTING.md by @hyongtao-db in #16761
- fix: provider credentials load error by @liuzhenghua in #16695
- feat: add jp_ja for knowledge api by @crazywoola in #16766
- fix the major and minor version of stub types declaration with build date stripped by @bowenliang123 in #16709
- fix typo in _process_metadata_filter_func by @kztao in #16780
- Remove the useless excluded item in mypy.ini by @hyongtao-db in #16777
- fix: fix ui layout when in mobile mode by @LeeeeeeM in #16793
- Add and modify jp translation by @HanqingZ in #16807
- fix multiple metadata filter's confusing setting by @JohnJyong in #16771
- feat: add the maximum number of iterations to env by @XiaoBa-Yu in #16805
- chore: handle Textarea component ref warning in react 19 by @iamjoel in #16818
- fix missing agent node help link by @hjlarry in #16841
- fix: fix missing oceanbase config enable_hybrid_search init by @yourchanges in #16852
- fix: tool's number and secet input display issue by @hjlarry in #16834
- install pandoc by @JohnJyong in #16825
- chore: remove third party models by @hjlarry in #13885
- Fix Custom Tool File Upload: Resolve Multiple Files Recognition and Multipart Boundary Issues by @JimHeo in #14014
- fix(agent app): moderation feature can't work as expected by @Nov1c444 in #16794
- feat: webapp support change inputs after conversation started by @JzoNgKVO in #16901
- feat: tencent vectordb: use grpc client and set upsert batch size by @wlleiiwang in #16016
- feat(api): optimize conversation name generation logic in message app by @AlexYuan997 in #16917
- fix: fix the bug where pressing Enter in Chinese input mode on Safari… by @LeeeeeeM in #16914
- fix: some parallel logs missing by @iamjoel in #16923
- Fix wrong allowed extensions by @hyongtao-db in #16893
- feat: support Tablestore vector database by @wanttobeamaster in #16601
- fix(ui): improve chart text spacing and prevent unnecessary truncation by @ACAne0320 in #16894
- feat: add langfuse llm node input and output by @ZhouhaoJiang in #16924
- fix: enhance filename validation and extraction in FileService #16867 by @ZeroZ-lab in #16869
- fix: WorkflowRunDetailApi created_at、finished_at types changed to timestamps by @guoshiqiufeng in #16821
- Revert "feat: add langfuse llm node input and output" by @crazywoola in #16947
- remove business contact info in license by @guchenhe in #16985
- fix: add overflow hidden to Collapse component #17009 by @ZeroZ-lab in #17011
- fix: show build app limit in app creation modal by @Jzon...