github langgenius/dify 1.10.1
v1.10.1 – Multi-Database Era Begins: MySQL Joins the Family

one hour ago

🎉 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_TYPE configuration 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:

  • api
  • worker

Affected host directory:

  • ./volumes/app/storage → mounted to /app/api/storage

What 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 -d

After this one-time migration, Dify will operate normally with the new non-root user model.

  1. Back up your customized docker-compose YAML file (optional)

    cd docker
    cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
  2. Get the latest code from the main branch

    git checkout main
    git pull origin main
  3. Stop the service. Please execute in the docker directory

    docker compose down
  4. Back up data

    tar -cvf volumes-$(date +%s).tgz volumes
  5. Upgrade services

    docker compose up -d

Source Code Deployments

  1. Stop the API server, Worker, and Web frontend Server.

  2. Get the latest code from the release branch:

    git checkout 1.10.1
  3. Update Python dependencies:

    cd api
    uv sync
  4. Then, let's run the migration script:

    uv run flask db upgrade
  5. Finally, run the API server, Worker, and Web frontend Server again.


What's Changed

New Contributors

Full Changelog: 1.10.0...1.10.1

Don't miss a new dify release

NewReleases is sending notifications on new releases.