Releases: langgenius/dify
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...
v1.1.3
✨ What’s New in v1.1.3? ✨
Here's what's been cooking in the latest update—v1.1.3. We've got some slick new features, essential fixes, and handy refinements to enhance your experience. Let's dive right in:
⚙️ Enhancements
-
APP Filtering Harmonization: Made the logic between App filtering and creation consistent for a seamless UX by @jiangbo721 in #16079.
-
ESLint Cache Enabled: Code quality meets speed as ESLint cache support is enabled, reducing linting time by @karamaru-alpha in #16570.
-
Workflow Adjustments: You can now add a related-id in iteration nodes for more dynamic workflows by @kenwoodjw in #16255.
🛠️ Bug Fixes
-
Optimize Expired Workflow Run Query: Fixed inefficient queries by adding a date filter and limiting the results to improve query performance by @Yeuoly in #16491.
-
Document Dataset Creation: Resolved the missing
weight_type
issue in documents created within datasets by @LiuBodong in #16503. -
Inputs on iOS Devices: Squashed bugs causing errors when passing inputs on iOS by @mrdotdotdot in #16534.
-
Variable Aggregator Node in Workflows: Fixed issue with variable-aggregation nodes failing checks when using group mode by @LeeeeeeM in #16439.
-
XSS Sanitization: Strengthened your security with SVG sanitization to prevent XSS attacks by @iamjoel in #16606.
-
UI/UX Fixes: Addressed various style and interaction issues, like sidebar width on mobile (#16629) and app detail panel in JP (#16620) by @JzoNgKVO.
-
Sandbox Security Upgrade: Upgrade the Dify sandbox to avoid JavaScript code injection.
This update focuses on making the platform not only more efficient but also easier and secure to use. Enjoy the improvements, and let's keep pushing the boundaries 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, Command, 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.1.3
-
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
- refactor: add OpikDataTrace instance builder. by @laipz8200 in #16444
- feat: Skip Redis operations if RateLimit is disabled by @acelyc111 in #12226
- fix: workflow file add related-id in iteration node by @kenwoodjw in #16255
- feat: cleanup free tenants expired data like messages/conversations/workflow_runs/workflow_node_executions by @Yeuoly in #16490
- use REDIS_PORT to replace 6379 in celery config by @jjzhoujun in #16182
- fix: optimize query for expired workflow runs by adding date filter and limiting results by @Yeuoly in #16491
- fix:weight_type missing when create document in dataset by @LiuBodong in #16503
- fix: the error occurring when passing inputs on iOS devices and some … by @mrdotdotdot in #16534
- fix: update chatbot doc link at create app page by @douxc in #16479
- fix: fix the app max_active_requests been overwritten bug by @acelyc111 in #16513
- feat: Make the logic of APP filtering and creation the same by @jiangbo721 in #16079
- fix: fix variable-aggregator cannot pass node check in group mode by @LeeeeeeM in #16439
- fix: update app mode display text for advanced-chat type by @WTW0313 in #16578
- chore: enable eslint cache by @karamaru-alpha in #16570
- fix: workflow if-else node variable tag style by @zxhlyh in #16583
- fix: transition in simple select causes page crash by @iamjoel in #16587
- Fix: web app sidebar cannot close when long title conversation existed by @JzoNgKVO in #16593
- feat: datasets openapi list segements support paged resp by @StrayDragon in #16603
- feat: add datasets detail context and provider for improved data vali… by @WTW0313 in #16451
- fix: sanitizer svg to avoid xss by @iamjoel in #16606
- feat: add openGauss PQ acceleration feature by @chenhuan0728 in #16432
- fix: cancel marketplace debounced search when clear search keywords by @zxhlyh in #16614
- Fix: show feedback status in conversation by @JzoNgKVO in #16615
- Fix: style issue of app detail panel in jp by @JzoNgKVO in #16620
- Fix: style of sidebar with in mobile by @JzoNgKVO in #16629
- chore: update release trigger to include all tags in build-push workflow by @laipz8200 in #16631
- fix: update retrieval configuration to correctly handle reranking mod… by @WTW0313 in #16641
- fix: fix inner API workspace Account.query error. by @islenbo in #16630
- chore: bump the package version to 1.1.3 by @laipz8200 in #16612
- fix metadata filter not affect in keyword-search and fulltext-search by @JohnJyong in #16644
New Contributors
- @jjzhoujun made their first contribution in #16182
- @mrdotdotdot made their first contribution in #16534
- @LeeeeeeM made their first contribution in #16439
- @karamaru-alpha made their first contribution in #16570
- @chenhuan0728 made their first contribution in #16432
- @islenbo made their first contribution in #16630
Full Changelog: 1.1.2...1.1.3
v0.15.5
🔒 Security Patch in v0.15.5
Hey everyone, this version bumps us up to v0.15.5, and it focuses on tightening security:
🔐 Important Fix
- Sandbox Code Injection: Upgrade Dify Sandbox to avoid the code injection. We strongly recommend that all users currently using versions below 0.15.5 update to this version, or you can only update the sandbox.
- XSS Vulnerability: Sanitize SVG to prevent XSS attacks by @iamjoel in #16608.
What this means: We've updated our SVG handling to ensure that potentially malicious scripts can't take advantage of your interaction with our SVG elements. This patch fortifies our platform against cross-site scripting vulnerabilities, making sure your application usage remains safe and secure.
Stay secure, and happy coding! 🚀
What's Changed
Full Changelog: 0.15.4...0.15.5
v1.1.2
✨ What’s New in v1.1.2? ✨
Thanks for keeping up with Dify! This patch delivers some important fixes to boost the stability and security of your operations.
Important
This update includes a critical fix for an XSS vulnerability. Cloud users are not affected by this issue.
This version disables the SVG rendering in the message. If you are using our Community Edition and meet all of the following conditions, we recommend that you upgrade to the current version immediately:
- Your service is exposed to the internet.
- You provide external WebApps.
- You have not configured
SERVICE_API_URL
andFILES_URL
on different domains.
🛠️ Fixes & Improvements
-
Security: Resolved an XSS vulnerability related to rendering SVGs, closing a security gap with help from @iamjoel in #16433.
-
Knowledge Base Cleanup: Fixed an issue where the OpenAPI interface couldn't delete metadata, thanks to @StrayDragon in #16365. Now clearing out old or unnecessary metadata is straightforward.
-
GitHub Plugin Installation: Resolved an import DSL issue that blocked the installation of the GitHub plugin, thanks to @junjiem in #16362. This patch ensures smoother plugin integrations.
-
Metadata Migration Check: Added a check for built-in fields during old metadata migration to ensure completeness and accuracy, contributed by @JohnJyong in #16371. Your metadata migrations have stepped up in robustness.
-
Literal Syntax Error Handling: Fixed errors related to
literal_eval
function usage, courtesy of @svcvit in #16297. These changes help keep your code from breaking due to syntax evaluation.
This update is all about refining the edges and enhancing the user experience—an essential pit-stop on our road to new features and capabilities. Keep those contributions and feedback coming, and let's make Dify even better, 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, Command, 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.1.2
-
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
- fix: knowledge base openapi cannot delete metadata by @StrayDragon in #16365
- fix import DSL install Github plugin failed by @junjiem in #16362
- add built-in field check when doing old metadata migrate by @JohnJyong in #16371
- fix error with literal_eval by @svcvit in #16297
- fix: typos by @kid1412621 in #16385
- fix: xss in render svg by @iamjoel in #16433
- Chore: frontend infrastructure upgrade by @iamjoel in #16420
- feat: replace file content type to avoid load script in svg. by @laipz8200 in #16454
- chore(api): enhance ruff rules to disallow dangerous functions and modules by @QuantumGhost in #16461
New Contributors
- @kid1412621 made their first contribution in #16385
Full Changelog: 1.1.1...1.1.2
v0.15.4
✨ What’s New in v0.15.4? ✨
Thanks for keeping up with Dify! This patch delivers some important fixes to boost the stability and security of your operations.
Important
This update includes a critical fix for an XSS vulnerability. Cloud users are not affected by this issue.
This version disables the SVG rendering in the message. If you are using our Community Edition and meet all of the following conditions, we recommend that you upgrade to the current version immediately:
- Your service is exposed to the internet.
- You provide external WebApps.
- You have not configured
SERVICE_API_URL
andFILES_URL
on different domains. - You are still using a version lower than 1.0.0
🛠️ Fixes & Improvements
- Security: Resolved an XSS vulnerability related to rendering SVGs, closing a security gap with help from @iamjoel in #16437.
This update is all about refining the edges and enhancing the user experience—an essential pit-stop on our road to new features and capabilities. Keep those contributions and feedback coming, and let's make Dify even better, together! 🚀
v1.1.1
✨ What’s New in v1.1.1? ✨
We've got some cool updates and fixes in v1.1.1 to keep things running smoother and shinier. Let's dive in:
⚙️ Enhancements
- Addressed a metadata service API issue so everything stays in sync, thanks to @JohnJyong in #16211.
- Solved metadata and retrieval bugs with Weaviate by @JohnJyong in #16230.
- Fixed weight rerank mode information not showing up when creating datasets by @JohnJyong in #16190.
- Ensured retrieval configurations with empty embedding models still play nice, thanks to another assist from @JohnJyong in #16181.
- Sorted out some code linting issues, courtesy of @jiangbo721 in #16164.
- Solved the MAX_TOOLS_NUM environment value issue in dify-web docker by @0fv in #16241.
- Fixed conversation reset inputs so they function as expected by @ModyQyW in #16233.
Big thanks to all contributors for making v1.1.1 even better! Keep diving into those projects and creating cool things!
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, Command, 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.1.1
-
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
- reopen PR for #14411 by @cyflhn in #16148
- enhance: avoid to use transaction Redis commands in rate limiter by @acelyc111 in #15917
- chore: use ConversationService.get_conversation instead of AgentChatA… by @jiangbo721 in #16136
- feat: dark mode for knowledge by @WTW0313 in #15236
- fix: code lint by @jiangbo721 in #16164
- refactor: change public functions to protected in PromptTransform by @hyongtao-db in #16143
- docs: update contributing by @crazywoola in #16078
- fix Weight rerank mode info missed when create dataset by @JohnJyong in #16190
- check high-quality dataset with empty embedding model provider by @JohnJyong in #16181
- fix: agent node help link error in zh by @ACAne0320 in #16194
- fix: missing metadata service api by @JohnJyong in #16211
- feat: change recreate_collection function to create_collection by @JohnJyong in #16212
- feat: tenant app invocations limiter by @Yeuoly in #16221
- fix: metadata expect value check error by @JohnJyong in #16210
- fix: model changed but completion params not change by @jimmyfen in #16156
- fix: update _dataset handling in knowledge retrieval config by @WTW0313 in #16218
- fix: retrieve metadata filter with weaviate will returns None by @JohnJyong in #16230
- chore: add magicsong/ai-charts to recommended Helm charts in README by @magicsong in #15848
- fix tidb metadata filter by @JohnJyong in #16237
- refactor: improve layout structure in StepOne component for better re… by @ZeroZ-lab in #16209
- fix: reset inputs when reset conversation by @ModyQyW in #16233
- feat: add vdb document id index by @JohnJyong in #16244
- chore: add kubernetes yaml for dify by docker-compose.yaml by @wyy-holding in #16246
- fix: update workflow doc by @sorphwer in #16251
- fix: dify-web docker MAX_TOOLS_NUM environment value not work by @0fv in #16241
- fix: enhance React imports in LLM panel component #16282 by @ZeroZ-lab in #16283
- fix: metadata on documents are orphaned by @JohnJyong in #16307
- fix enable dataset metadata built-in field when dataset is empty by @JohnJyong in #16290
- fix: exclude additional unreachable nodes by @Nov1c444 in #16329
- fix removing member without permission by @batman0911 in #16332
- chore: update version to 1.1.1 in packaging and docker configurations by @laipz8200 in #16301
New Contributors
- @jimmyfen made their first contribution in #16156
- @magicsong made their first contribution in #15848
- @ModyQyW made their first contribution in #16233
- @wyy-holding made their first contribution in #16246
- @sorphwer made their first contribution in #16251
- @0fv made their first contribution in #16241
- @batman0911 made their first contribution in #16332
Full Changelog: 1.1.0...1.1.1
v1.1.0
🚀 What's New in v1.1.0
Welcome to v1.1.0! This release packs a punch with significant improvements, enhancements, and the introduction of some much-awaited features. Here's what we've got:
🚀 New Features
- Metadata Filtering for Knowledge Retrieval by @JohnJyong in #15982 and #16063. Metadata filtering enhances the retrieval and accuracy of relevant data in knowledge bases by leveraging custom metadata attributes. This makes finding the right data quicker and more precise. To get more information, please read our blog.
🛠️ Enhancements
- Improved File Upload Handling in
manager.py
by @laipz8200 in #15714. - IF-ELSE Node Improvements: Handles missing optional file variables seamlessly by @lrhan321 in #15693.
- Enhanced Integration of pg_bigm for Keyword Search in pgvector by @utsumi-fj in #13876.
- Increased Maximum Number of Parallelism Branches by @XiaoBa-Yu in #15964.
- HTTP request node now supports skipping SSL verification by @sho-takano-dev in #15664.
🐞 Bug Fixes
- Fixed SQL Injection Vulnerabilities in Vector DB by @JohnJyong in #16096. We recommend users upgrade to this version immediately to mitigate risks.
- Resolved Conditional Branches That Disrupted Streaming Output by @Nov1c444 in #14065.
- Fixed Trace Return Null Issues Causing Page Crashes by @iamjoel in #15588.
- Corrected Missing Translations by @crazywoola in #4212.
- Improved Handling of Unicode in Keyword Search Queries by @kenwoodjw in #15522.
- Fixed Dataset Re-Ranking Mode to Handle Optional Fields Gracefully by @JohnJyong in #15643.
- Resolved File Upload Method Validation Issues for Non-Image Files in Workflows by @lrhan321 in #15932.
- Fixed Nginx Template Environment Variable Replacement Issues by @LiuBodong in #15651.
- Improved InputNumber Component Behavior by @ACAne0320 in #16044.
Miscellaneous
- Opensandal Version Update by @yihong0618 in #14343.
- Updated default Milvus URI value by @codingjaguar in #13140.
- Ruff Linting Fixes bump to 0.11.0 by @bowenliang123 in #15953.
This release aims to strengthen our platform's reliability, security, and usability, and we are keen on hearing your feedback. Happy coding with v1.1.0!
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, Command, 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.1.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
- fix: nesting of conditional branches causing streaming output error by @Nov1c444 in #14065
- chore: update opendal version by @yihong0618 in #14343
- feat: add click-away and mounting logic to agent setting component by @fdb02983rhy in #15521
- fix: remove size prop in PlanBadge component because UpgradeBtn size … by @douxc in #15544
- fix: workflow loop node break by @zxhlyh in #15549
- fix: invoke_error is not callable by @jiangbo721 in #15555
- feat: add debounced enter key submission to install form (#15445) by @jw0903 in #15542
- chore: remove unused parameter by @crazywoola in #15558
- fix:message api doc by @marsDes in #15568
- fix: dataset editor by @ZhouhaoJiang in #15218
- chore: use TenantAccountRole instead of TenantAccountJoinRole by @jiangbo721 in #15514
- feat: env MAX_TOOLS_NUM by @rafaelncarvalho in #15431
- fix: set marketplace feature to false in feature_service.py by @Yeuoly in #15578
- fix: trace return null cause page crash by @iamjoel in #15588
- fix: no attribute error by @ZhouhaoJiang in #15597
- fix: can not test custom tool by @hjlarry in #15606
- fix: preserve Unicode characters in keyword search queries by @kenwoodjw in #15522
- fix dataset reranking mode miss by @JohnJyong in #15643
- fix: prevent AppIconPicker click event from propagating (#15575) by @jw0903 in #15647
- Update .env.example to fix MILVUS_URI default value by @codingjaguar in #13140
- fix: set score_threshold only when score_threshold_enabled is true. by @droxer in #14221
- fix: if-else-node handles missing optional file variables by @lrhan321 in #15693
- Ci/deploy enterprise by @GareArc in #15699
- Fix:webapp UI issues by @JzoNgKVO in #15601
- fix: update default github star count value by @douxc in #15708
- improve text split by @JohnJyong in #15719
- fix: Integration langfuse, front-end error( #15695) by @XiaoBa-Yu in #15709
- fix: Resolve errors in SQL queries caused by SELECT fields not appearing in the GROUP BY clause. by @Jam804 in #15659
- Feat: Add pg_bigm for keyword search in pgvector by @utsumi-fj in #13876
- fix: streamline file upload configuration handling in manager.py by @laipz8200 in #15714
- feat: add keyboard shortcuts support for dialog confirmation by @ACAne0320 in #15752
- fix: http_request node form-data support array[file] by @Sakura4036 in #15731
- feat: add Http Request Node to skip ssl verify function #15177 by @sho-takano-dev in #15664
- Fix style of opening statement by @JzoNgKVO in #15821
- fix document could be None by @JohnJyong in #15818
- fix: update Knowledge Api doc: 【Update a Chunk in a Document】 by @guoshiqiufeng in #15823
- chore: remove useless doc and font by @hjlarry in #15838
- fix tool selector with empty tools raise error by @hjlarry in #15829
- fix: Remove any extra Spaces in the title by @bigyifeng in #15841
- fix: iteration total tokens calculate error by @jiangbo721 in #15813
- chore(api): improve type hints for BaseNode and its subclasses by @QuantumGhost in #15826
- Chore: remove unused fields by @hyongtao-db in #15764
- FIX:microsoft word text copy and paste error by @ShadowJobs in #14905
- fix: node use vision model may caused page crash by @iamjoel in #15921
- Fix/enable marketplace bug by @BenjaminX in #15895
- Chore: fix wrong annotations by @hyongtao-db in #15871
- fix:Nginx template not replace env correctly by @LiuBodong in #15651
- fix: validation for upload methods of non-image files within the work… by @lrhan321 in #15932
- fix:delete empty table bug by @huangzhuo1949 in #15517
- fix: api error of get all workspaces by @csurong in #15880
- When decrypt_trace_config is empty, it should be skipped directly by @shaxiaozz in #15870
- fix(api): fix fail branch functionality for
WorkflowTool
by @QuantumGhost in #15966 - fix: typo when assign doc_metadata when non-empty by @StrayDragon in #15975
- chore: bump ruff to 0.11.0 and fix linting violations by @bowenliang123 in #15953
- chore(api): Disable preview rules of Ruff while running pre-commit hook by @QuantumGhost in #15999
- feat: add llm blocking invoke by @Nov1c444 in #15732
- chore: use POSIX shell syntax in pre-commit script by @QuantumGhost in #16025
- fix: fail-branch stream ...
v1.0.1
🎉 Welcome to v1.0.1! 🎉
We've leveled up to v1.0.1, bringing a bunch of improvements, new features, and fixes. Here’s the lowdown without the bloat:
🛠️ Fixes & Improvements
-
Cache Mechanics for Plugin Models: Reducing redundancy through improved caching, championed by @Yeuoly in #14968 and #14898.
-
Connectors & Workflows: Improved data source handling: Fixed iteration logs, edges in copied nodes, and one-step run operations with updates in #14855 by @iamjoel, #12692 by @ihaichao, and #14724 by @zxhlyh.
-
Visual & UX Refinements: Interface upgrades across the board with zoom handling, dataset selection revamps, and fullscreen toggles improved by @WTW0313, @marsDes, and others.
-
Stability & Reliability: Tackled pesky bugs—be it with document extracts, chat components, or execution metadata—to make your experience smooth. Solutions from @hjlarry, @jiangbo721, and more.
You might have already met these errors, we fixed them in this version.
core.plugin.manager.exc.PluginDaemonInternalServerError: PluginDaemonInternalServerError: no available node, plugin not found
Error: PluginDaemonInternalServerError: killed by timeout
<Site at 0x7ffaec0a8c50> is not bound to a Session
TypeError: expected string or bytes-like object, got 'NoneType'
...
🌐 Internationalization
- New Translations: German translations for README & CONTRIBUTING, thanks to @Walpurga03, and Bangla README added by @warhammer327.
For a more detailed dive into each update, feel free to browse through the PRs. We’re all about improving and adapting, so keep the feedback coming. Now go explore what’s new, and as always, happy 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,Command, 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 API server, Worker and Web frontend Server.
-
Get the latest code from the release branch:
git checkout 1.0.1
-
Update Python dependencies:
cd api poetry install
-
Then, let's run the migration script:
poetry run flask db upgrade
-
Finally, run API server, Worker and Web frontend Server again.
What's Changed
- fix: add collapse icon for fullscreen toggle in segment detail compon… by @WTW0313 in #14530
- add german translation of README & CONTRIBUTING by @Walpurga03 in #14498
- fix: the edges between the nodes inside the copied iteration node are… by @ihaichao in #12692
- fix: typo
doc_metadat
by @crazywoola in #14569 - fix: fix a typo of get_customizable_model_schema method name by @acelyc111 in #14449
- fix: save site setting not work by @hjlarry in #14700
- fix: document extractor can't parse excel by @hjlarry in #14695
- fix: (psycopg2.errors.StringDataRightTruncation) value too long for type character varying(40) Fixes #14593 by @engchina in #14597
- fix: one step run by @zxhlyh in #14724
- Feat: web app dark mode by @JzoNgKVO in #14732
- chore: Bump ruff to 0.9.9 by @bowenliang123 in #13356
- Fix: web app theme intialization by @JzoNgKVO in #14761
- Fix/explore darkmode by @douxc in #14751
- fix: improve layout in dataset selection component by @WTW0313 in #14756
- Fix: update embed.min.js by @JzoNgKVO in #14772
- fix: When chatflow's file uploads changed from not being supported to… by @jiangbo721 in #14341
- fix EXPOSE_PLUGIN_DEBUGGING_HOST not working by @junjiem in #14742
- unify moderation and annotation's response behavior in message log of chatflow app with other types of app by @QunBB in #14800
- feat: support oracle oci autonomouse database. Fixes #14792 and Fixes #14628. by @engchina in #14804
- fix: fixed incorrect operation of publishing as tool by @JS-mark in #14561
- fix: eslint extension not working in vscode by @WTW0313 in #14725
- Fix can not modify required filelist input before starting by @marsDes in #14825
- chore: Restore the parts that were overwritten during conflict resolution. by @Nov1c444 in #14141
- chore: fix contaminated db migration commit title for add_retry_index_field_to_node_execution by @bowenliang123 in #14787
- fix: iteration log index error by @iamjoel in #14855
- feat: Add caching mechanism for plugin model schemas by @Yeuoly in #14898
- fix: workflow one step run form validate by @zxhlyh in #14934
- Fix empty results issue in full-text search with Milvus vector database by @llinvokerl in #14885
- Fix typo: Window -> Windows in .gitattributes comment by @Dictionaryphile in #14961
- fix: fixed to AWS Marketplace link by @ramen2020 in #14955
- add bangla (bengali) readme translation and link to all other readme by @warhammer327 in #14970
- feat: Add caching mechanism for latest plugin version retrieval by @Yeuoly in #14968
- fix(llm/nodes.py): Ensure that the output returns without any exceptions by @auxpd in #14880
- fix endpoint help link 404 by @hjlarry in #14981
- chore: remove the unused config INNER_API_KEY by @bowenliang123 in #14780
- [FIX]Ruff: lint errors for E731 by @MikiPWata in #13018
- fix docker-compose.yaml and docker-compose.middleware.yaml plugin_daemon environment parameter values by @junjiem in #14992
- Feature/newnew workflow loop node by @Woo0ood in #14863
- Feat/compliance report download by @douxc in #14477
- Fix: new upgrade page by @douxc in #12417
- fix: add custom disallowed elements to Markdown component and restore the default disallowed elements by @WTW0313 in #15057
- fix: agent node can't use in parallel by @Nov1c444 in #15047
- fix(docker): plugin daemon lacks database dependency by @perzeuss in #15038
- feat: refactor date-and-time-picker to use custom dayjs utility and add timezone support by @WTW0313 in #15101
- Feat/14573 support more types in form by @crazywoola in #15093
- Update ko-KR/plugin.ts by @w4-jinhyeonkim in #15103
- fix: with file conversation second chat raise error by @hjlarry in #15097
- hotfix: Fixed tags not updating in real time in the label management of apps #15113 by @Jimmiaxie in #15110
- modify oracle lexer name Fixes #15106 by @engchina in #15108
- Fixed incorrect use of key in the page /plugins?category=discover #15126 by @Jimmiaxie in #15127
- fix parent-child retrival count by @JohnJyong in #15119
- docs: add comprehensive Traditional Chinese contribution guide by @appleboy in #14816
- fix: adjust scroll detection threshold in chat component by @fdb02983rhy in #14640
- Fix: only retrieval plugin-compatible providers when provider_name starts with
langgenius
by @Yeuoly in #15133 - add: allowed_domains marketplace.dify.ai by @ec2ainun in #15139
- Feat: settings dark mode by @JzoNgKVO in #15184
- fix: http node request detect text/xml as file by @hjlarry in #15174
- chore: update langfuse description by @marcklingen in #15136
- Fix: psycopg2.errors.StringDataRightTruncation value too long for type character varying(40) by @lcgash in #15179
- bugfix:cant correct display latex by @likenamehaojie in #14910
- fix: update the link of contact sales in billing page by @douxc in #15219
- feat...
v1.0.0
🎉 Introducing Dify Plugins 🎉
We are glad to share that we're launching Dify v1.0.0.
Plugins are modular components that extend AI applications with plug-and-play simplicity. Now you can assemble external services and custom functionalities with your Dify apps effortlessly.
What's new
- We've developed a plugin system, a standard for Dify that lets users create plugins with the suffix .difypkg. By installing different plugin packages, you can add various capabilities to Dify.
- Through this system, we've decoupled tools and models that can be expanded from Dify, enabling you to install them in a truly plug-and-play manner.
- We've introduced a new Agent node in Workflow, where the agent's behavior can now be defined by plugins. This means Dify is no longer limited to built-in strategies like CoT; you can define your own agent strategies.
- We've also introduced a new type of plugin called Extension, which is a custom service hosted within Dify. You can customize this service's code through plugins to handle external Webhook events.
- We've launched the Dify Marketplace, a centralized platform where plugins can be freely shared, allowing users to publish and download different plugins.
Docker Deployment
v1.0.0 supports Docker compose deployment. You can start Dify using the following commands:
git checkout 1.0.0
cd ./docker
docker compose -f docker-compose.yaml up -d
Plugin Migration
- !! Note, if you are upgrading from an older version to v1.0.0, you need to execute some basic migration steps.
The first step in upgrading to v1.0.0 is to install the tools and models used in your current environment into the new plugin environment, ensuring plugin installation is completed before database migration, run the following command:
poetry run flask extract-plugins --workers=20
This command extracts all models and tools used in the current environment. The workers parameter determines the number of parallel processes during extraction; adjust it according to your needs.
The final result will be saved in the plugins.jsonl file, which contains the plugin information for all workspaces in the current Dify instance.
Ensure your network is functioning properly and can access https://marketplace.dify.ai, then run the following command:
poetry run flask install-plugins --workers=2
This command will download and install all necessary plugins into the latest environment.
Database Migration
After completing the basic plugin installation process, follow the standard Dify upgrade procedure to update the database schema to the latest version.
poetry run flask db upgrade
Dify v1.0 includes compatibility for old data. You should be able to operate normally, but for better future compatibility, run the following data migration command once you're sure you won't revert to an older version:
poetry run flask migrate-data-for-plugin
This command will prefix existing model and tool vendors in the database with langgenius, such as converting openai to langgenius/openai/openai. This operation may affect the functioning of the older Dify version, so back up your database before running this command to prevent unwanted issues.
For more detailed migration docs, you can refer to https://docs.dify.ai/development/migration/migrate-to-v1
Chore Changes From v0.15.3
🚀 New Features & Enhancements
- Pan & Zoom: The MiniMap now comes equipped with pan and zoom support thanks to @KatyTao.
- Unified Reasoning Model: Standardized the think tag with
<think></think>
by @junjiem for enhanced compatibility. - Docker SSRF Settings: Fine-tuned SSRF-related timeout settings in Docker by @gubinjie.
- HNSW Vector Index: Now available for TiDB vector store with TiFlash, optimizing how you handle large datasets by @bowenliang123.
- Efficient Retrieval Service: We’ve doubled down on efficiency, making data retrieval lightning fast by @charli117.
🛠️ Performance Optimizations & Bug Fixes
- Logical Optimization: Integration of short-circuit evaluation to optimize logical conditions by @llinvokerl.
- SQL Queries Reduction: Improved message loading speeds while slicing SQL queries by @hundredwz.
- Streamlined Workflow: Simplified the workflow by @jiangbo721.
🌟 New Contributors
A warm welcome to our new contributors! They’ve made their first contributions to our project:
- @KatyTao made their first contribution in #13382
- @h4ckdepy made their first contribution in #13376
- @HuChundong made their first contribution in #13175
- @junjiem made their first contribution in #13392
- @takatea made their first contribution in #13399
- @Wu-Jiayang made their first contribution in #7955
- @AugNSo made their first contribution in #12902
- @vasu-negi made their first contribution in #13571
- @hundredwz made their first contribution in #13720
- @stonexer made their first contribution in #13988
- @mobiusy made their first contribution in #13854
- @ramen2020 made their first contribution in #14026
- @daonatural made their first contribution in #13617
- @w4-jinhyeonkim made their first contribution in #14075
- @radiumce made their first contribution in #14100
- @VinceOPS made their first contribution in #14180
- @StrayDragon made their first contribution in #14243
- @MLeft made their first contribution in #14216
- @WustLCQ made their first contribution in #14309
- @xlight made their first contribution in #14316
- @auxpd made their first contribution in #14361
- @yuhaowin made their first contribution in #14219
- @QuantumGhost made their first contribution in #14476
- @n2em made their first contribution in #13980
- @Jiakaic made their first contribution in #14524
Full Changelog: For a comprehensive overview of all changes, check out the full changelog here.
Thanks for being a part of our journey, your contributions and support make this project better with every release! 🚀
🎉 Welcome to Dify v1.0.0! 🎉
Hey Dify community! It’s been a wild ride, but here we are at v1.0.0! First and foremost, a massive shoutout to every contributor, both new and veteran. Your hard work has brought us to this major milestone. 🚀 Now, let’s dive into the highlights of this landmark release.
🌟 A Warm Welcome to New Contributors
We’re ecstatic to welcome so many new names contributing to our project! Your initiatives have enriched this ecosystem. Whether it was translating i18n files, squashing bugs, refining algorithms, or anything in between — you made a difference.
🔍 Full Changelog
Missed the nitty-gritty? You can find the complete list of changes from 0.15.3 to 1.0.0 here.
With Dify hitting v1.0.0, our commitment to providing open-source LLMOps solutions continues stronger than ever. Here’s to many more releases filled with innovation and community spirit! Cheers! 🥂