v1.10.1 β Multi-Database Era Begins: MySQL Joins the Family
π Major new capabilities, critical stability fixes π§© And the long-awaited MySQL support finally arrives!
π New Features
Infrastructure & DevOps
MySQL adaptation (PostgreSQL / MySQL / OceanBase now fully supported) Thanks @longbingljw from the OceanBase team! PR: #28188
- Adds
DB_TYPEconfiguration option - Supports MySQL JSON / LONGTEXT / UUID / index differences
- Updates Alembic migrations for multi-DB compatibility
- Introduces cross-DB SQL helpers for statistics and date handling
- Rewrites dataset metadata filters with SQLAlchemy JSON operators
- Adds CI workflows for MySQL migration testing
This is a significant backend upgrade in Difyβs history β multi-database support is now first-class.
Performance & Workflow Editor Optimization
- Implemented a major performance upgrade for the Workflow Editor, eliminating costly per-node validation scans, reducing unnecessary re-renders, and improving responsiveness from becoming laggy at ~50 nodes to remaining smooth even near ~200 nodes β #28591, by @iamjoel.
Pipelines & Workflow Engine
- Introduced a broad set of workflow-editor improvements, including UI refinement, stability fixes, and quality-of-life enhancements across variable inspection, media components, and node interactions β #27981, by @Xiu-Lan, @crazywoola, @johnny0120, @Woo0ood.
π Fixes & Improvements
Runtime Stability & Workflow Execution
- Fixed an issue where advanced-chat workflows could fail to stop, preventing stuck or lingering processes β #27803, by @Kevin9703.
- Fixed a 500 error triggered when running βany nodeβ in draft mode, improving workflow debugging reliability β #28636, by @hjlarry.
- Corrected token overcounting during loop/iteration evaluation (not related to billing tokens) β #28406, by @anobaka.
- Fixed workflow-as-tool returning an empty files field, ensuring tool integrations receive correct file metadata β #27925, by @CrabSAMA.
- Resolved a session-scope error in FileService that could cause inconsistent file deletion behavior β #27911, by @ethanlee928.
Knowledge Base
- Fixed a 500 error when using the weightedScore retrieval option, restoring stability for weighted ranking scenarios β #28586, by @Eric-Guo.
Developer Experience & SDKs
- Fixed Node.js SDK route and multipart upload handling, ensuring robust file and data submission through JavaScript integrations β #28573, by @lyzno1.
- Fixed OpenAPI/Swagger failing to load, restoring developer documentation access β #28509, by @changkeke, with contributions from @asukaminato0721.
Web UI & UX
- Corrected dark-mode rendering for the ExternalDataToolModal, ensuring consistent appearance across themes β #28630, by @Nov1c444.
- Fixed Marketplace search-trigger behavior and scroll position, improving discovery and navigation β #28645, by @lyzno1.
- Fixed incorrect navigation when opening chatflow log details, providing more predictable UI behavior β #28626, by @hjlarry.
- Fixed layout and rendering issues in the README display panel, ensuring cleaner content presentation β #28658, by @yangzheli.
- Reduced unnecessary re-renders in the useNodes hook, improving overall front-end performance β #28682, by @iamjoel.
Plugins & Integrations
- Updated plugin verification logic to use a unique identifier, improving correctness across plugin installations and updates β #28608, by @Mairuis.
System Robustness
- Prevented nullable tags in TriggerProviderIdentity, avoiding potential runtime errors β #28646, by @Yeuoly.
- Improved error messaging for invalid webhook requests, providing clearer diagnostics β #28671, by @hjlarry.
Feedback & Logging
- Fixed like/dislike feedback not appearing in logs, ensuring end-user rating signals are correctly visualized β #28652, by @fatelei.
Internationalization (i18n)
- Standardized terminology for trigger and billing events, improving translation consistency β #28543, by @NeatGuyCoding.
- Fixed multiple issues in execution-related translations, correcting missing or malformed entries β #28610, by @NeatGuyCoding.
- Removed incorrect βrunningβ translation entries β #28571, by @NeatGuyCoding.
- Refactored i18n scripts and removed obsolete translation keys β #28618, by @lyzno1.
- Added missing translations across the UI, improving language coverage β #28631, by @lyzno1.
Maintenance & Developer Tooling
- Added front-end automated testing rules to strengthen baseline reliability β #28679, by @CodingOnStar and contributors.
- Upgraded system libraries and Python dependencies to maintain security and compatibility β #28624, by @laipz8200 and @GareArc.
- Updated start-web development script to use
pnpm dev, simplifying contributor workflows β #28684, by @laipz8200.
Upgrade Guide
Docker Compose Deployments
[!IMPORTANT] Required Action Before Upgrading
Starting from
1.10.1, the Dify API image now runs as a non-root user (UID 1001) for improved security. If you are using local filesystem storage (the default in community deployments), you must update the ownership of your mounted storage directories on the host machine, or the containers will fail to read/write files.Affected services:
apiworkerAffected host directory:
./volumes/app/storageβ mounted to/app/api/storageWhat you must do before restarting the new version:
# Stop existing containers docker compose down # Update directory ownership on the host sudo chown -R 1001:1001 ./volumes/app/storage # Restart normally docker compose up -dAfter this one-time migration, Dify will operate normally with the new non-root user model.
-
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
If you encounter errors like below
2025/11/26 11:37:57 /app/internal/db/pg/pg.go:30
[error] failed to initialize database, got error failed to connect to `host=db_postgres user=postgres database=dify_plugin`: hostname resolving error (lookup db_postgres on 127.0.0.11:53: server misbehaving)
2025/11/26 11:37:57 /app/internal/db/pg/pg.go:34
[error] failed to initialize database, got error failed to connect to `host=db_postgres user=postgres database=postgres`: hostname resolving error (lookup db_postgres on 127.0.0.11:53: server misbehaving)
2025/11/26 11:37:57 init.go:99: [PANIC]failed to init dify plugin db: failed to connect to `host=db_postgres user=postgres database=postgres`: hostname resolving error (lookup db_postgres on 127.0.0.11:53: server misbehaving)
panic: [PANIC]failed to init dify plugin db: failed to connect to `host=db_postgres user=postgres database=postgres`: hostname resolving error (lookup db_postgres on 127.0.0.11:53: server misbehaving)
Please use the following command instead. For details, please read this https://github.com/langgenius/dify/issues/28706
docker compose --profile postgresql 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.10.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
- Upgrade weave version to fix weave configuration failure by @xprilion in https://github.com/langgenius/dify/pull/28197
- fix: knowledge pipeline can not published by @hjlarry in https://github.com/langgenius/dify/pull/28203
- feat: add icon gallery stories by @lyzno1 in https://github.com/langgenius/dify/pull/28214
- fix: card view render by @lyzno1 in https://github.com/langgenius/dify/pull/28189
- add icon for forum by @crazywoola in https://github.com/langgenius/dify/pull/28164
- fix: click log panel of log page cause whole page crash by @hjlarry in https://github.com/langgenius/dify/pull/28218
- Perf/mutual node UI by @zhsama in https://github.com/langgenius/dify/pull/28282
- fix: update currentTriggerPlugin check in BasePanel component by @Yessenia-d in https://github.com/langgenius/dify/pull/28287
- chore: remove unused style.module.css from app-icon component by @lyzno1 in https://github.com/langgenius/dify/pull/28302
- fix: published webhook can't receive inputs by @hjlarry in https://github.com/langgenius/dify/pull/28205
- add cnt script and one more example by @asukaminato0721 in https://github.com/langgenius/dify/pull/28272
- add vdb-test workflow run filter by @JohnJyong in https://github.com/langgenius/dify/pull/28336
- doc: add doc for env config when site and backend are in different domains by @iamjoel in https://github.com/langgenius/dify/pull/28318
- fix: dataset metadata counts when documents are deleted by @kenwoodjw in https://github.com/langgenius/dify/pull/28305
- chore: translate i18n files and update type definitions by @github-actions[bot] in https://github.com/langgenius/dify/pull/28284
- refactor: consume events after pause/abort and improve API clarity by @laipz8200 in https://github.com/langgenius/dify/pull/28328
- fix(docker): start-up TiFlash by @Lloyd-Pottiger in https://github.com/langgenius/dify/pull/28376
- Revert "add vdb-test workflow run filter" by @JohnJyong in https://github.com/langgenius/dify/pull/28382
- fix: address user input preparation in workflow app generator by @Mairuis in https://github.com/langgenius/dify/pull/28410
- feat:mysql adaptation for metadb by @longbingljw in https://github.com/langgenius/dify/pull/28188
- feat: trigger billing by @Mairuis in https://github.com/langgenius/dify/pull/28335
- refactor: refactor python sdk by @fatelei in https://github.com/langgenius/dify/pull/28118
- style(web): fix vertical alignment of search button on apps page by @coding-ice in https://github.com/langgenius/dify/pull/28398
- fix(frontend): add missing vertical type to divider in provider config modal by @minimAluminiumalism in https://github.com/langgenius/dify/pull/28387
- make expand/collapse in question classifier node by @jubinsoni in https://github.com/langgenius/dify/pull/26772
- feat: implement RFC-compliant OAuth discovery with dynamic scope selection for MCP providers by @Nov1c444 in https://github.com/langgenius/dify/pull/28294
- fix: improve email code sign-in experience by @lyzno1 in https://github.com/langgenius/dify/pull/28307
- fix: change TenantApi endpoint from GET to POST by @laipz8200 in https://github.com/langgenius/dify/pull/27858
- chore: translate i18n files and update type definitions by @github-actions[bot] in https://github.com/langgenius/dify/pull/28425
- feat(workflow): optimize workflow canvas pan and scroll behavior by @yangzheli in https://github.com/langgenius/dify/pull/28250
- feat: add display status filtering to document list and API by @ZeroZ-lab in https://github.com/langgenius/dify/pull/28342
- fix(web): fix checkbox unselectable bug & optimize document-list/app-annotation styles by @yangzheli in https://github.com/langgenius/dify/pull/28244
- chore: remove redundant reimports by @IthacaDream in https://github.com/langgenius/dify/pull/28415
- chore: translate i18n files and update type definitions by @github-actions[bot] in https://github.com/langgenius/dify/pull/28429
- fix: add make test for short cut backend unittest by @yihong0618 in https://github.com/langgenius/dify/pull/28380
- refactor(web): remove redundant dataset card-item components and related code by @yangzheli in https://github.com/langgenius/dify/pull/28199
- Fix duration displayed for workflow steps on Weave dashboard by @xprilion in https://github.com/langgenius/dify/pull/28289
- fix(workflow): validate node compatibility when importing dsl between chatflows and workflows by @yangzheli in https://github.com/langgenius/dify/pull/28012
- fix: resolve CSRF token cookie name mismatch in browser (#28228) by @importcjj in https://github.com/langgenius/dify/pull/28378
- fix: update table alias in document service display status test asser⦠by @ZeroZ-lab in https://github.com/langgenius/dify/pull/28436
- fix: lazy init audioplayer to fix no tts message also switch audio source bug by @CrabSAMA in https://github.com/langgenius/dify/pull/28433
- Add Comprehensive Unit Tests for Console Auth Controllers by @codomposer in https://github.com/langgenius/dify/pull/28349
- fix(web): remove StatusPanel's internal useStore to fix context issues by @yangzheli in https://github.com/langgenius/dify/pull/28348
- fix: remove deprecated UnsafeUnwrappedHeaders usage by @17hz in https://github.com/langgenius/dify/pull/28219
- fix: add .ts and .mjs to EditorConfig indent rules by @17hz in https://github.com/langgenius/dify/pull/28397
- fix: add app_id to Redis cache keys for trigger nodes to ensure uniqueness by @17hz in https://github.com/langgenius/dify/pull/28243
- chore: update celery command for debugging trigger by @RockChinQ in https://github.com/langgenius/dify/pull/28443
- Feat integrate partner stack by @hj24 in https://github.com/langgenius/dify/pull/28353
- fix: add missing particle in Japanese trigger events translation by @lyzno1 in https://github.com/langgenius/dify/pull/28452
- refactor: remove TimeSliceLayer before the release of HITL by @Yeuoly in https://github.com/langgenius/dify/pull/28441
- fix: correct monitor and fix trigger billing rate limit by @Mairuis in https://github.com/langgenius/dify/pull/28465
- fix: treat -1 as unlimited for API rate limit and trigger events by @lyzno1 in https://github.com/langgenius/dify/pull/28460
- fix: correct trigger events limit modal wording by @lyzno1 in https://github.com/langgenius/dify/pull/28463
- fix: adjust overflow styles in EditMetadataBatchModal for better layout by @ZeroZ-lab in https://github.com/langgenius/dify/pull/28445
- feat: support redis 7.0 shared pub and sub by @fatelei in https://github.com/langgenius/dify/pull/28333
- fix: allow API to access conversations created before upgrade to 1.10.0 by @zhangzhefang-github in https://github.com/langgenius/dify/pull/28462
- chore: translate i18n files and update type definitions by @github-actions[bot] in https://github.com/langgenius/dify/pull/28478
- add two test examples by @asukaminato0721 in https://github.com/langgenius/dify/pull/28236
- fix(api): add session_id validation for webapp JWT authentication by @yangzheli in https://github.com/langgenius/dify/pull/28297
- disable sticky scroll by @jubinsoni in https://github.com/langgenius/dify/pull/28248
- Feat/add test script for account models by @codomposer in https://github.com/langgenius/dify/pull/28479
- fix: fix numeric type conversion issue in if-else condition comparison by @qiqizjl in https://github.com/langgenius/dify/pull/28155
- feat: Implement partial update for document metadata, allowing merging of new values with existing ones. by @ZeroZ-lab in https://github.com/langgenius/dify/pull/28390
- more typed orm by @asukaminato0721 in https://github.com/langgenius/dify/pull/28331
- use deco by @asukaminato0721 in https://github.com/langgenius/dify/pull/28153
- Clean up legacy conditions data in if-else nodes to prevent misjudgments by @qiqizjl in https://github.com/langgenius/dify/pull/28148
- more typed orm by @asukaminato0721 in https://github.com/langgenius/dify/pull/28494
- fix(api):
SegmentType.is_valid()raisesAssertionErrorforSegmentType.GROUPby @fatelei in https://github.com/langgenius/dify/pull/28249 - fix: Code editor throws dozen of errors by @hjlarry in https://github.com/langgenius/dify/pull/28500
- Fix/24655 by @dickens88 in https://github.com/langgenius/dify/pull/26527
- Support node reference multiple structured_output variables in single-step run by @goofy-z in https://github.com/langgenius/dify/pull/26661
- feat: complete test script for dataset models by @codomposer in https://github.com/langgenius/dify/pull/28512
- more typed orm by @asukaminato0721 in https://github.com/langgenius/dify/pull/28507
- feat: add a stop run button to the published app UI by @55Kamiryo in https://github.com/langgenius/dify/pull/27509
- feat: add comprehensive unit tests for dataset service creation methods by @SmartDever02 in https://github.com/langgenius/dify/pull/28522
- feat: MLflow tracing by @B-Step62 in https://github.com/langgenius/dify/pull/26093
- chore: translate i18n files and update type definitions by @github-actions[bot] in https://github.com/langgenius/dify/pull/28518
- chore: translate i18n files and update type definitions by @github-actions[bot] in https://github.com/langgenius/dify/pull/28528
- api -> console_ns by @asukaminato0721 in https://github.com/langgenius/dify/pull/28246
- fix: use default values for optional workflow input variables (#28546) by @importcjj in https://github.com/langgenius/dify/pull/28527
- feat: add comprehensive unit tests for dataset service retrieval/list⦠by @SmartDever02 in https://github.com/langgenius/dify/pull/28539
- chore(deps): bump clickhouse-connect from 0.7.19 to 0.10.0 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/28559
- chore: fix de-DE translations by @lyzno1 in https://github.com/langgenius/dify/pull/28552
- fix: add
COMPOSE_PROFILESparam to middleware.env.example file by @ACAne0320 in https://github.com/langgenius/dify/pull/28541 - feat: complete app models test script by @codomposer in https://github.com/langgenius/dify/pull/28549
- more typed orm by @asukaminato0721 in https://github.com/langgenius/dify/pull/28519
- chore: not using db.session.get by @fatelei in https://github.com/langgenius/dify/pull/28555
- fix: plugin auto update display issues by @hjlarry in https://github.com/langgenius/dify/pull/28564
- feat(seo): add meaningful
<h1>headings across all public pages by @coding-ice in https://github.com/langgenius/dify/pull/28569 - fix: i18n: stop running translation by @NeatGuyCoding in https://github.com/langgenius/dify/pull/28571
- pref: workflow by @iamjoel in https://github.com/langgenius/dify/pull/28591
- fix: Failed to load API definition by @changkeke in https://github.com/langgenius/dify/pull/28509
- Fix Node.js SDK routes and multipart handling by @lyzno1 in https://github.com/langgenius/dify/pull/28573
- fix: i18n: standardize trigger events terminology in billing translations by @NeatGuyCoding in https://github.com/langgenius/dify/pull/28543
- more typed orm by @asukaminato0721 in https://github.com/langgenius/dify/pull/28577
- fix: update plugin verification logic to use unique identifier instea⦠by @Mairuis in https://github.com/langgenius/dify/pull/28608
- Feat/test workflow models by @codomposer in https://github.com/langgenius/dify/pull/28604
- fix: i18n: executions translation by @NeatGuyCoding in https://github.com/langgenius/dify/pull/28610
- Fix(workflow): Prevent token overcount caused by loop/iteration by @anobaka in https://github.com/langgenius/dify/pull/28406
- chore: refactor i18n scripts and remove extra keys by @lyzno1 in https://github.com/langgenius/dify/pull/28618
- chore: add missing translations by @lyzno1 in https://github.com/langgenius/dify/pull/28631
- fix: chatflow log details always navigate to page first by @hjlarry in https://github.com/langgenius/dify/pull/28626
- fix(style): update ExternalDataToolModal to support dark mode using semantic tokens by @Nov1c444 in https://github.com/langgenius/dify/pull/28630
- Fix start tab marketplace trigger search and plugin list scroll by @lyzno1 in https://github.com/langgenius/dify/pull/28645
- fix: draft run any nodes raise 500 by @hjlarry in https://github.com/langgenius/dify/pull/28636
- fix(TriggerProviderIdentity): avoid nullable tags by @Yeuoly in https://github.com/langgenius/dify/pull/28646
- Feat/web workflow improvements by @Xiu-Lan in https://github.com/langgenius/dify/pull/27981
- use no-root user in docker image by default by @41tair in https://github.com/langgenius/dify/pull/26419
- fix [Chore/Refactor] Generate complete API documentation using Flask-RESTX #24421 by @asukaminato0721 in https://github.com/langgenius/dify/pull/28649
- Feat/add weaviate tokenization configurable by @lcedaw in https://github.com/langgenius/dify/pull/28159
- fix: ensure advanced-chat workflows stop correctly by @Kevin9703 in https://github.com/langgenius/dify/pull/27803
- fix(web): resolve readme-panel display and styling issues by @yangzheli in https://github.com/langgenius/dify/pull/28658
- feat(web): update marketplace description & icon by @yangzheli in https://github.com/langgenius/dify/pull/28662
- test: add comprehensive unit tests for SegmentService - Fix: #28656 by @SmartDever02 in https://github.com/langgenius/dify/pull/28568
- Feat/add test script for tool models by @codomposer in https://github.com/langgenius/dify/pull/28653
- fix: fix feedback like or dislike not display in logs by @fatelei in https://github.com/langgenius/dify/pull/28652
- chore: enhance the hint when the user triggers an invalid webhook request by @hjlarry in https://github.com/langgenius/dify/pull/28671
- fix: fixed workflow as tool files field return empty problem by @CrabSAMA in https://github.com/langgenius/dify/pull/27925
- frontend auto testing rules by @CodingOnStar in https://github.com/langgenius/dify/pull/28679
- chore: upgrade system libraries and Python dependencies by @laipz8200 in https://github.com/langgenius/dify/pull/28624
- Fixes session scope bug in FileService.delete_file by @ethanlee928 in https://github.com/langgenius/dify/pull/27911
- Use pnpm dev in dev/start-web by @laipz8200 in https://github.com/langgenius/dify/pull/28684
- Fix 500 error in knowledge base, select weightedScore and click retrieve. by @Eric-Guo in https://github.com/langgenius/dify/pull/28586
- pref: reduce the times of useNodes reRender by @iamjoel in https://github.com/langgenius/dify/pull/28682
New Contributors
- @Lloyd-Pottiger made their first contribution in https://github.com/langgenius/dify/pull/28376
- @coding-ice made their first contribution in https://github.com/langgenius/dify/pull/28398
- @importcjj made their first contribution in https://github.com/langgenius/dify/pull/28378
- @zhangzhefang-github made their first contribution in https://github.com/langgenius/dify/pull/28462
- @55Kamiryo made their first contribution in https://github.com/langgenius/dify/pull/27509
- @B-Step62 made their first contribution in https://github.com/langgenius/dify/pull/26093
- @changkeke made their first contribution in https://github.com/langgenius/dify/pull/28509
- @anobaka made their first contribution in https://github.com/langgenius/dify/pull/28406
- @Xiu-Lan made their first contribution in https://github.com/langgenius/dify/pull/27981
- @ethanlee928 made their first contribution in https://github.com/langgenius/dify/pull/27911
Full Changelog: https://github.com/langgenius/dify/compare/1.10.0...1.10.1