ITADN

版本发布 8

v1.13.11.13.1
? · 2026-03-17

## 🚀 Major Functional Changes ### Data platform and dataset operations - Added **Hologres** as a supported backend option for both vector retrieval and full-text search. - Added Service API endpoints for dataset document downloads: - Batch ZIP download for selected documents. - Signed URL download for single-document original files. ### Workflow and chat experience improvements - **Breaking change:** HITL email content now uses markdown rendering before delivery. Existing email templates that relied on raw/plain behavior may render differently after upgrade. - Draft variables are now user-scoped instead of app-scoped. Historical draft variables will not be available after upgrading. - Added edge context menu support in workflow canvas, including direct edge deletion. - Preserved existing connections when changing node types in workflow editing. - Added configurable send-key behavior (`Enter` vs `Shift+Enter`) for embedded chat input. - Added file payloads in message-end stream responses. - Removed GPT-4-specific hardcoded behavior from default model selection logic. - Added a new `export-app-messages` CLI command to export application messages and related feedback to `JSONL.GZ` (local or cloud storage). ## 🔐 Security Updates - Prevented SQL injection risks in vector-store query paths by switching to parameterized SQL in affected implementations. - Hardened HITL email delivery: - Sanitize subject and body content. - Strip CR/LF from subjects to prevent SMTP header-injection vectors. - Enforced ownership checks for conversation deletion APIs. - Cleared stale provider credentials during plugin uninstall to reduce residual credential risk. - Improved enterprise API error handling and license-enforcement behavior for invalid/expired license states. ## 🏗️ Configuration, Architecture, and Deployment Updates ### Deployment and operations - Added a dedicated Celery queue: `dataset_summary` for LLM-heavy summary generation tasks. - Ensure workers subscribe to this queue to avoid summary-job backlog. - Added telemetry metrics for retention cleanup tasks (messages/workflow runs), plus flush behavior for short-lived command jobs. ### Configuration changes - Added `REDIS_MAX_CONNECTIONS`. - Deprecated `PUBSUB_*` event-bus settings in favor of `EVENT_BUS_*` settings. ## 🛠 Other Noteworthy Changes - Fixed `workflow_runs.started_at` being overwritten on resume. - Fixed metadata batch-edit silent failures caused by split-transaction edge cases. - Fixed metadata filter extraction issues in knowledge retrieval (`{{...}}` conditions). - Restored citation visibility in advanced chat applications. - Fixed conversation variable reset behavior after HITL nodes. - Fixed a page crash in knowledge-retrieval node configuration flow. - Fixed chat assistant blocking response-mode behavior. - Added `doc_type` handling in Weaviate vector attributes for better compatibility. - Upgraded OpenTelemetry dependencies to resolve context-detach errors. --- ## Upgrade Guide > [!IMPORTANT] > If you use custom `CELERY_QUEUES`, make sure `workflow_based_app_execution` is included. > If `ENABLE_API_TOKEN_LAST_USED_UPDATE_TASK=true`, also include `api_token`. > > For background and details, see **⚠️ Important Upgrade Note** and **🔧 Operational Note** above. ### Docker Compose Deployments 1. Back up your customized docker-compose YAML file (optional) ```bash cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak ``` 2. Get the latest code from the main branch ```bash git checkout main git pull origin main ``` 3. Stop the service. Please execute in the docker directory ```bash docker compose down ``` 4. Back up data ```bash tar -cvf volumes-$(date +%s).tgz volumes ``` 5. Upgrade services ```bash docker compose up -d ``` > [!NOTE] > > If you encounter errors like below > > ```bash > 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 > ```bash > docker compose --profile postgresql up -d > ``` ### Source Code Deployments 1. Stop the API server, Worker, and Web frontend Server. 2. Get the latest code from the release branch: ```bash git checkout 1.13.1 ``` 3. Update Python dependencies: ```bash cd api uv sync ``` 4. Then, let's run the migration script: ```bash uv run flask db upgrade ``` 5. Finally, run the API server, Worker, and Web frontend Server again. --- ## What's Changed * feat(api): add scheduled cleanup task for specific workflow logs by @razerzhang in https://github.com/langgenius/dify/pull/31843 * test: add unit tests for some base components by @saumyatalwani in https://github.com/langgenius/dify/pull/32201 * test: add comprehensive unit and integration tests for dataset module by @CodingOnStar in https://github.com/langgenius/dify/pull/32187 * test(web): add comprehensive unit and integration tests for plugins and tools modules by @CodingOnStar in https://github.com/langgenius/dify/pull/32220 * test: add comprehensive unit and integration tests for billing components by @CodingOnStar in https://github.com/langgenius/dify/pull/32227 * test: add unit and integration tests for share, develop, and goto-anything modules by @CodingOnStar in https://github.com/langgenius/dify/pull/32246 * test: add comprehensive unit and integration tests for RAG Pipeline components by @CodingOnStar in https://github.com/langgenius/dify/pull/32237 * feat(tests): add integration tests for explore app list, installed apps, and sidebar lifecycle flows by @CodingOnStar in https://github.com/langgenius/dify/pull/32248 * fix: metadata batch edit silently fails due to split transactions and swallowed exceptions by @veeceey in https://github.com/langgenius/dify/pull/32041 * fix: can not upload file in single run by @hyoban in https://github.com/langgenius/dify/pull/32276 * chore(deps): bump pillow from 12.0.0 to 12.1.1 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32250 * feat: support config max size of plugin generated files by @bowenliang123 in https://github.com/langgenius/dify/pull/30887 * feat(api): optimize OceanBase vector store performance and configurability by @connermo in https://github.com/langgenius/dify/pull/32263 * test(web): add and enhance frontend automated tests across multiple modules by @CodingOnStar in https://github.com/langgenius/dify/pull/32268 * chore(deps): bump qs from 6.14.1 to 6.14.2 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/32290 * test: add unit tests for base components-part-1 by @poojanInfocusp in https://github.com/langgenius/dify/pull/32154 * test: add integration tests for app card operations, list browsing, and create app flows by @CodingOnStar in https://github.com/langgenius/dify/pull/32298 * test: add tests for some base components by @saumyatalwani in https://github.com/langgenius/dify/pull/32265 * refactor(web): extract custom hooks from complex components and add comprehensive tests by @CodingOnStar in https://github.com/langgenius/dify/pull/32301 * chore(deps): bump sqlparse from 0.5.3 to 0.5.4 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32315 * test: add unit tests for base chat components by @poojanInfocusp in https://github.com/langgenius/dify/pull/32249 * fix(app-copy): inherit web app permission from original app by @GareArc in https://github.com/langgenius/dify/pull/32323 * fix(api): make DB migration Redis lock TTL configurable and prevent LockNotOwnedError from masking failures by @lin-snow in https://github.com/langgenius/dify/pull/32299 * fix: remove explore context and migrate query to orpc contract by @lyzno1 in https://github.com/langgenius/dify/pull/32320 * refactor(web): centralize role-based route guards and fix anti-patterns by @lyzno1 in https://github.com/langgenius/dify/pull/32302 * ci: update dependabot config by @asukaminato0721 in https://github.com/langgenius/dify/pull/32346 * chore(deps-dev): bump types-greenlet from 3.1.0.20250401 to 3.3.0.20251206 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32349 * fix(i18n): fix critical errors and overhaul Persian (fa-IR) translations in workflow.json by @Haohao-end in https://github.com/langgenius/dify/pull/32342 * refactor(workflow-file): move `core.file` to `core.workflow.file` by @WH-2099 in https://github.com/langgenius/dify/pull/32252 * refactor(document_extractor): Extract configs by @laipz8200 in https://github.com/langgenius/dify/pull/31828 * refactor(web): replace String.match() with RegExp.exec() for non-global regex by @apoorvdarshan in https://github.com/langgenius/dify/pull/32386 * ci: Add weekly schedule for pip and uv ecosystems by @asukaminato0721 in https://github.com/langgenius/dify/pull/32398 * chore(deps): bump gmpy2 from 2.2.1 to 2.3.0 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32402 * chore(deps-dev): update types-markdown requirement from ~=3.7.0 to ~=3.10.2 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32401 * chore(deps-dev): bump opensearch-py from 2.4.0 to 3.1.0 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32400 * refactor(web): make Switch controlled-only and migrate call sites by @lyzno1 in https://github.com/langgenius/dify/pull/32399 * chore(deps-dev): bump import-linter from 2.7 to 2.10 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32403 * fix: correct misleading retry count in error message by @kurokobo in https://github.com/langgenius/dify/pull/32406 * test: add tests for base > date-time-picker by @saumyatalwani in https://github.com/langgenius/dify/pull/32396 * fix: clear stale provider credentials during plugin uninstall by @laipz8200 in https://github.com/langgenius/dify/pull/32380 * chore(deps): bump pypdf from 6.6.2 to 6.7.1 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32427 * chore(deps): bump werkzeug from 3.1.5 to 3.1.6 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32431 * chore(deps): bump flask from 3.1.2 to 3.1.3 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32432 * refactor: refine some type in trial by @asukaminato0721 in https://github.com/langgenius/dify/pull/32426 * fix: fix node after change can not select start node by @fatelei in https://github.com/langgenius/dify/pull/32441 * test: tighten user-visible specs and raise coverage for key-validator… by @akashseth-ifp in https://github.com/langgenius/dify/pull/32281 * test: header account about, account setting and account dropdown by @mahammadasim in https://github.com/langgenius/dify/pull/32283 * test(web): Added test for model-auth files in header folder by @akashseth-ifp in https://github.com/langgenius/dify/pull/32358 * test: Add unit tests for Data Source Integrations (Notion, Website) and Modals by @mahammadasim in https://github.com/langgenius/dify/pull/32313 * test: add test cases for some base components by @saumyatalwani in https://github.com/langgenius/dify/pull/32314 * chore(deps): update pydantic requirement from ~=2.11.4 to ~=2.12.5 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32462 * chore(deps): update python-docx requirement from ~=1.1.0 to ~=1.2.0 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32463 * chore(deps): update redis[hiredis] requirement from ~=6.1.0 to ~=7.2.0 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32464 * refactor: inherit ABC in AppQueueManager for proper abstract method usage by @tysoncung in https://github.com/langgenius/dify/pull/32461 * test(web): add members-page account-setting specs and improve coverage by @akashseth-ifp in https://github.com/langgenius/dify/pull/32311 * test(web): add tests for model-provider-page files in header account-… by @akashseth-ifp in https://github.com/langgenius/dify/pull/32360 * fix: add return type annotation to BaseVector.create by @KinomotoMio in https://github.com/langgenius/dify/pull/32475 * test: migrate Dataset/Document property tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32487 * refactor: fix opentelemetry histogram type assignment error by @Hypertension42 in https://github.com/langgenius/dify/pull/32490 * fix: add return type annotation to Moderation.validate_config abstract method by @tysoncung in https://github.com/langgenius/dify/pull/32491 * fix: add return type annotation to abstract _publish method by @J0su3Code in https://github.com/langgenius/dify/pull/32493 * test: add unit tests for base-components part-3 by @poojanInfocusp in https://github.com/langgenius/dify/pull/32408 * test: add unit tests for prompt editor's component picker block plugin. by @mahammadasim in https://github.com/langgenius/dify/pull/32412 * test(web): increase test coverage for components inside header folder by @akashseth-ifp in https://github.com/langgenius/dify/pull/32392 * test(web): Fix failing web test in 'Web Tests' GitHub Action by @akashseth-ifp in https://github.com/langgenius/dify/pull/32481 * test: add tests for base > features by @saumyatalwani in https://github.com/langgenius/dify/pull/32397 * test: add unit tests for base-components-part-2 by @poojanInfocusp in https://github.com/langgenius/dify/pull/32409 * test: add tests for some base components by @saumyatalwani in https://github.com/langgenius/dify/pull/32356 * fix: correct type annotations in Langfuse trace entities to match SDK by @stakeswky in https://github.com/langgenius/dify/pull/32498 * test: add tests for file-upload components by @saumyatalwani in https://github.com/langgenius/dify/pull/32373 * test: added tests for some base components by @saumyatalwani in https://github.com/langgenius/dify/pull/32370 * fix: resolve pyright bad-index errors in parser.py by @tysoncung in https://github.com/langgenius/dify/pull/32507 * test(web): increase test coverage for model-provider-page folder by @akashseth-ifp in https://github.com/langgenius/dify/pull/32374 * test: add unit tests for chat components by @poojanInfocusp in https://github.com/langgenius/dify/pull/32367 * fix: add explicit return type annotations to BaseVector abstract methods by @longway-code in https://github.com/langgenius/dify/pull/32516 * test(web): increase coverage for files in folder plugin-page and model-provider-page by @akashseth-ifp in https://github.com/langgenius/dify/pull/32377 * test: add unit tests for chat/embedded-chatbot components by @poojanInfocusp in https://github.com/langgenius/dify/pull/32361 * test: add tests for some base components by @saumyatalwani in https://github.com/langgenius/dify/pull/32415 * test: add tests for base > image-uploader by @saumyatalwani in https://github.com/langgenius/dify/pull/32416 * test(base): added test coverage to form components by @akashseth-ifp in https://github.com/langgenius/dify/pull/32436 * test: migrate workflow run repository SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32519 * test: migrate remaining DocumentSegment navigation SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32523 * test: migrate end user service SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32530 * test: migrate message extra contents tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32532 * test: migrate workflow trigger log repository sql tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32525 * test: migrate node execution repository sql tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32524 * test: migrate remove_app_and_related_data_task SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32547 * test: migrate test_document_service_display_status SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32545 * test: migrate delete_archived_workflow_run SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32549 * test(base): add test coverage for more base/form components by @akashseth-ifp in https://github.com/langgenius/dify/pull/32437 * fix: incorrect form field height of input modal by @hjlarry in https://github.com/langgenius/dify/pull/32557 * chore(deps): bump fickling from 0.1.7 to 0.1.8 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32552 * test: migrate conversation service SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32527 * test: migrate dataset collection binding SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32539 * test: migrate dataset service update-delete SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32548 * test: unit test cases for controllers.files, controllers.mcp and controllers.trigger module by @rajatagarwal-oss in https://github.com/langgenius/dify/pull/32057 * test: improve unit tests for controllers.service_api by @cryptus-neoxys in https://github.com/langgenius/dify/pull/32073 * test: add tests for some components in base > prompt-editor by @saumyatalwani in https://github.com/langgenius/dify/pull/32472 * test: add tests for some base components by @saumyatalwani in https://github.com/langgenius/dify/pull/32479 * refactor(workflow): inject http request node config through factories and defaults by @laipz8200 in https://github.com/langgenius/dify/pull/32365 * test: migrate dataset service retrieval SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32528 * test: add unit tests for base components-part-4 by @poojanInfocusp in https://github.com/langgenius/dify/pull/32452 * test: add unit tests for base-components-part-5 by @poojanInfocusp in https://github.com/langgenius/dify/pull/32457 * fix: incorrect placeholder color in dark mode by @hjlarry in https://github.com/langgenius/dify/pull/32568 * fix: spin-animation animation-delay by @Pandaaaa906 in https://github.com/langgenius/dify/pull/32560 * feat(aliyun-trace): add app_id attribute by @hieheihei in https://github.com/langgenius/dify/pull/32489 * test: example for [Refactor/Chore] use Testcontainers to do sql test #32454 by @asukaminato0721 in https://github.com/langgenius/dify/pull/32459 * fix: type checking error in parser by @ajuijas in https://github.com/langgenius/dify/pull/32510 * test: migrate test_dataset_service_get_segments SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32544 * test: migrate restore_archived_workflow_run SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32590 * test: migrate workflow_node_execution_service_repository SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32591 * feat: Adding error handle support for Agent Node by @Pandaaaa906 in https://github.com/langgenius/dify/pull/31596 * ci: try from main repo by @asukaminato0721 in https://github.com/langgenius/dify/pull/32620 * fix: add None checks for tenant.id in dataset vector index tests by @stakeswky in https://github.com/langgenius/dify/pull/32603 * test: migrate clean_dataset_task SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32529 * test: migrate dataset_indexing_task SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32531 * fix: replace dict() merge with dict unpacking to resolve overload error by @toroleapinc in https://github.com/langgenius/dify/pull/32653 * test: migrate dataset service update-dataset SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32533 * fix: add type annotations to BaseStorage.exists and BaseStorage.download by @toroleapinc in https://github.com/langgenius/dify/pull/32652 * fix: replace deprecated SpanAttributes and ResourceAttributes with new semconv imports by @stakeswky in https://github.com/langgenius/dify/pull/32661 * test: improve coverage for header components by @poojanInfocusp in https://github.com/langgenius/dify/pull/32628 * refactor(api): inject code executor from node factory by @laipz8200 in https://github.com/langgenius/dify/pull/32618 * refactor(workflow): inject redis into graph engine manager by @laipz8200 in https://github.com/langgenius/dify/pull/32622 * revert: "fix: image preview triggers binary download" by @laipz8200 in https://github.com/langgenius/dify/pull/32683 * refactor(workflow): inject credential/model access ports into LLM nodes by @laipz8200 in https://github.com/langgenius/dify/pull/32569 * chore: update README.md by @Inlei in https://github.com/langgenius/dify/pull/32680 * refactor(web): remove mouseup listener in use-resize-panel cleanup by @haku-ink in https://github.com/langgenius/dify/pull/32636 * chore(ci): fold pyrefly diff comments by @laipz8200 in https://github.com/langgenius/dify/pull/32685 * test: align file preview mimetype expectation by @laipz8200 in https://github.com/langgenius/dify/pull/32688 * chore(deps-dev): bump nltk from 3.9.2 to 3.9.3 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32691 * fix: the action button of structure output modal should align right by @hjlarry in https://github.com/langgenius/dify/pull/32700 * docs(api): simplify setup README and worker guidance by @laipz8200 in https://github.com/langgenius/dify/pull/32704 * refactor: decouple the business logic from datasource_node by @fatelei in https://github.com/langgenius/dify/pull/32515 * fix: correct mock return type in CodeBasedExtension test by @veeceey in https://github.com/langgenius/dify/pull/32058 * chore: update to eslint 10 by @hyoban in https://github.com/langgenius/dify/pull/32646 * test: migrate document_indexing_sync_task SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32534 * feat(web): add hover clear button for provider search by @laipz8200 in https://github.com/langgenius/dify/pull/32707 * fix: add return type to abstract _publish method by @tda1017 in https://github.com/langgenius/dify/pull/32701 * chore(deps-dev): bump storybook from 10.2.0 to 10.2.10 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/32659 * ci(web): parallelize web tests with 4-shard Vitest sharding by @lyzno1 in https://github.com/langgenius/dify/pull/32713 * test: migrate test_dataset_service SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32535 * chore(deps-dev): align all @storybook/* packages to 10.2.13 by @lyzno1 in https://github.com/langgenius/dify/pull/32714 * fix: YAML syntax error in pyrefly-diff-comment workflow by @nielskaspers in https://github.com/langgenius/dify/pull/32718 * test: migrate document_service_status SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32536 * feat: add backend-code-review skill by @hj24 in https://github.com/langgenius/dify/pull/32719 * fix(ci): fix invalid workflow file pyrefly-diff.yml by @tysoncung in https://github.com/langgenius/dify/pull/32728 * fix: replace unreachable yield expression with yield from () by @tysoncung in https://github.com/langgenius/dify/pull/32727 * chore(deps): bump pypdf from 6.7.1 to 6.7.4 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32736 * refactor: consolidate LLM runtime model state on ModelInstance by @laipz8200 in https://github.com/langgenius/dify/pull/32746 * refactor(workflow): move variables package into core.workflow by @laipz8200 in https://github.com/langgenius/dify/pull/32750 * refactor: inject memory interface into LLMNode by @laipz8200 in https://github.com/langgenius/dify/pull/32754 * test(api): add autospec to MagicMock-based patch usage by @laipz8200 in https://github.com/langgenius/dify/pull/32752 * chore: add vinext as dev server by @hyoban in https://github.com/langgenius/dify/pull/32559 * fix: Fixed the adaptation issue of response formats for different mod… by @FFXN in https://github.com/langgenius/dify/pull/32326 * refactor(web): replace resolutions with pnpm.overrides by @slegarraga in https://github.com/langgenius/dify/pull/32768 * fix: remove REDIRECT_URL_KEY from url by @hyoban in https://github.com/langgenius/dify/pull/32770 * fix: some Qwen3 models only support streaming output. by @FFXN in https://github.com/langgenius/dify/pull/32766 * fix(workflow): decouple http request node external dependencies by @WH-2099 in https://github.com/langgenius/dify/pull/32762 * fix(api): add explicit return type annotations to clean() methods by @Br1an67 in https://github.com/langgenius/dify/pull/32772 * fix(api): resolve type errors in BaseTraceInstance and OpsTraceManager by @Br1an67 in https://github.com/langgenius/dify/pull/32773 * fix: add return type annotation to auth decorators by @tda1017 in https://github.com/langgenius/dify/pull/32699 * fix(web): improve chat edit input behavior and shortcuts by @laipz8200 in https://github.com/langgenius/dify/pull/32757 * refactor(workflow): remove code node helper imports by @WH-2099 in https://github.com/langgenius/dify/pull/32759 * fix: improve TanStack Query client setup and fix queryKey bug by @lyzno1 in https://github.com/langgenius/dify/pull/32422 * feat(enterprise): auto-join newly registered accounts to the default workspace by @lin-snow in https://github.com/langgenius/dify/pull/32308 * fix: add missing pipeline_templates by @akkoaya in https://github.com/langgenius/dify/pull/31528 * fix(api): enforce ownership check for conversation delete by @laipz8200 in https://github.com/langgenius/dify/pull/32686 * chore: remove ty from backend type-check pipeline by @BeautyyuYanli in https://github.com/langgenius/dify/pull/32782 * chore(web): remove PM2 process manager by @majiayu000 in https://github.com/langgenius/dify/pull/30252 * fix: serialize data_source_info with json.dumps in Notion sync task by @weiguangli-io in https://github.com/langgenius/dify/pull/32747 * revert(graph-engine): rollback stop-event unification by @laipz8200 in https://github.com/langgenius/dify/pull/32789 * chore: support code-inspector for vinext by @hjlarry in https://github.com/langgenius/dify/pull/32788 * refactor(api): move llm quota deduction to app graph layer by @laipz8200 in https://github.com/langgenius/dify/pull/32786 * refactor: inject workflow node memory via protocol by @laipz8200 in https://github.com/langgenius/dify/pull/32784 * refactor(workflow): move PromptMessageMemory to model_runtime.memory by @laipz8200 in https://github.com/langgenius/dify/pull/32796 * refactor(workflow): decouple start node external dependencies by @WH-2099 in https://github.com/langgenius/dify/pull/32793 * fix: fix import error by @fatelei in https://github.com/langgenius/dify/pull/32800 * fix: typo in WebScraper plugin description: "Scrapper" → "Scraper" by @Copilot in https://github.com/langgenius/dify/pull/32790 * fix(ci): make pyrefly diff comments focus on diagnostics by @hwb96 in https://github.com/langgenius/dify/pull/32778 * fix: remove references to non-existent Document attributes in test by @toroleapinc in https://github.com/langgenius/dify/pull/32654 * fix: use declared_attr.directive for WorkflowNodeExecutionModel.__table_args__ by @toroleapinc in https://github.com/langgenius/dify/pull/32656 * feat(web): add root isolation layer for portal stacking context by @lyzno1 in https://github.com/langgenius/dify/pull/32807 * fix: optimize workflow_run iter query by @hj24 in https://github.com/langgenius/dify/pull/32815 * test: add unit tests for base components by @CodingOnStar in https://github.com/langgenius/dify/pull/32818 * refactor(ci): use diff -u for pyrefly diff output by @stablegenius49 in https://github.com/langgenius/dify/pull/32813 * chore(deps): update pyjwt requirement from ~=2.10.1 to ~=2.11.0 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32804 * chore(deps-dev): update types-aiofiles requirement from ~=24.1.0 to ~=25.1.0 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32803 * fix: fix chat assistant response mode blocking is not work by @fatelei in https://github.com/langgenius/dify/pull/32394 * refactor: use unified diff format in pyrefly-diff workflow by @Echo0ff in https://github.com/langgenius/dify/pull/32828 * refactor: remove tests and core/rag from pyrefly excludes by @stablegenius49 in https://github.com/langgenius/dify/pull/32801 * fix: map all NodeType values to span kinds in Arize Phoenix tracing by @veeceey in https://github.com/langgenius/dify/pull/32059 * fix: upgrade OpenTelemetry to 0.49b0 to fix context detach error by @GareArc in https://github.com/langgenius/dify/pull/32825 * feat: ensure document id is not missing by @fatelei in https://github.com/langgenius/dify/pull/32765 * fix(api): add return type annotation to filter_none_values() by @Br1an67 in https://github.com/langgenius/dify/pull/32774 * refactor: knowledge index node decouples business logic by @fatelei in https://github.com/langgenius/dify/pull/32274 * feat(tests): add comprehensive test suite for workflow utilities and node creation by @CodingOnStar in https://github.com/langgenius/dify/pull/32841 * refactor: move workflow package to dify_graph by @laipz8200 in https://github.com/langgenius/dify/pull/32844 * perf: optimize dataset api query speed by @fatelei in https://github.com/langgenius/dify/pull/32847 * refactor(api): move model_runtime into dify_graph by @laipz8200 in https://github.com/langgenius/dify/pull/32858 * chore: update vinext, add workaround by @hyoban in https://github.com/langgenius/dify/pull/32878 * refactor(web): restructure app-sidebar with component decomposition and folder organization by @CodingOnStar in https://github.com/langgenius/dify/pull/32887 * refactor: TemplateTransformNode decouple code executor by @fatelei in https://github.com/langgenius/dify/pull/32879 * chore(deps): bump pypdf from 6.7.4 to 6.7.5 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32882 * chore(deps): bump @orpc/client from 1.13.4 to 1.13.6 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/32883 * refactor(dify_graph): unify invoke and user enums source in workflow by @WH-2099 in https://github.com/langgenius/dify/pull/32873 * fix: Add the missing validation of doc_form in the service API. by @FFXN in https://github.com/langgenius/dify/pull/32892 * fix: downgrade node version to 22 by @hyoban in https://github.com/langgenius/dify/pull/32897 * feat(web): overlay migration guardrails + Base UI primitives by @lyzno1 in https://github.com/langgenius/dify/pull/32824 * test(web): add high-quality unit tests for Base UI wrapper primitives by @lyzno1 in https://github.com/langgenius/dify/pull/32904 * refactor(web): migrate document list query state to nuqs by @lyzno1 in https://github.com/langgenius/dify/pull/32339 * test: migrate test_dataset_service_batch_update_document_status SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32537 * fix: get i18n lazy, make vinext build works by @hyoban in https://github.com/langgenius/dify/pull/32917 * chore: add dependency groups to Dependabot config by @nightcityblade in https://github.com/langgenius/dify/pull/32721 * fix(api): resolve OpenTelemetry histogram type mismatch by @Br1an67 in https://github.com/langgenius/dify/pull/32771 * test: migrate test_dataset_service_create_dataset SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32538 * fix(web): align dropdown-menu styles with Figma design by @lyzno1 in https://github.com/langgenius/dify/pull/32922 * fix: keep account dropdown open when switching theme by @lyzno1 in https://github.com/langgenius/dify/pull/32918 * chore: fix load env and treeshaking for vinext by @hyoban in https://github.com/langgenius/dify/pull/32928 * test(workflow): add unit tests for workflow store slices by @CodingOnStar in https://github.com/langgenius/dify/pull/32932 * refactor: migrate workflow onboarding modal to base dialog by @lyzno1 in https://github.com/langgenius/dify/pull/32915 * feat: redis connection support max connections by @fatelei in https://github.com/langgenius/dify/pull/32935 * refactor: human input node decouple db by @fatelei in https://github.com/langgenius/dify/pull/32900 * feat: support redis xstream by @fatelei in https://github.com/langgenius/dify/pull/32586 * feat: replace db.session with db_session_with_containers by @RenzoMXD in https://github.com/langgenius/dify/pull/32942 * refactor(web): migrate Button to Base UI with focus-visible by @lyzno1 in https://github.com/langgenius/dify/pull/32941 * feat(web): add base AlertDialog with app-card migration example by @lyzno1 in https://github.com/langgenius/dify/pull/32933 * perf(api): utilize the message_workflow_run_id_idx while querying messages by @QuantumGhost in https://github.com/langgenius/dify/pull/32944 * fix(api): decouple enterprise default-workspace join from personal workspace creation by @lin-snow in https://github.com/langgenius/dify/pull/32938 * refactor: do not import i18n resource json to split chunk by @hyoban in https://github.com/langgenius/dify/pull/32947 * refactor: document extract node decouple ssrf_proxy by @fatelei in https://github.com/langgenius/dify/pull/32949 * chore: refine oRPC contract-first skill guidance by @lyzno1 in https://github.com/langgenius/dify/pull/32955 * test(workflow): add comprehensive hooks unit tests and refactor test infrastructure (Part 3) by @CodingOnStar in https://github.com/langgenius/dify/pull/32958 * chore: drop pwa with serwist by @hyoban in https://github.com/langgenius/dify/pull/32838 * chore: clean up sw file by @hyoban in https://github.com/langgenius/dify/pull/32973 * chore: add react refresh plugin for vinext by @hyoban in https://github.com/langgenius/dify/pull/32996 * test: migrate duplicate_document_indexing_task SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32540 * chore: expand overlay migration ESLint rules to popover, dropdown, dialog by @lyzno1 in https://github.com/langgenius/dify/pull/33001 * chore(deps): bump fickling from 0.1.8 to 0.1.9 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32999 * chore(deps): bump authlib from 1.6.6 to 1.6.7 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32998 * chore(deps): bump immutable from 5.1.4 to 5.1.5 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/33000 * test: migrate test_document_service_rename_document SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32542 * chore: add TypedDict related prompt to AGENTS.md by @caoergou in https://github.com/langgenius/dify/pull/32995 * chore: i18n hmr support, fix hmr for app context by @hyoban in https://github.com/langgenius/dify/pull/32997 * refactor: simplify oauthNewUser state handling in AppInitializer component by @CodingOnStar in https://github.com/langgenius/dify/pull/33019 * refactor(dify_graph): introduce run_context and delegate child engine creation by @WH-2099 in https://github.com/langgenius/dify/pull/32964 * test(workflow): add validation tests for workflow and node component rendering part 3 by @CodingOnStar in https://github.com/langgenius/dify/pull/33012 * fix: workflow canvas sync by @zxhlyh in https://github.com/langgenius/dify/pull/33030 * refactor: spilt context for better hmr by @hyoban in https://github.com/langgenius/dify/pull/33033 * chore: prevent Storybook crash caused by vite-plugin-inspect by @lyzno1 in https://github.com/langgenius/dify/pull/33039 * feat: add partial indexes on conversations for app_id with created_at and updated_at by @Nov1c444 in https://github.com/langgenius/dify/pull/32616 * feat: 204 http status code not return content by @fatelei in https://github.com/langgenius/dify/pull/33023 * fix: fix check workflow_run by @fatelei in https://github.com/langgenius/dify/pull/33028 * test: migrate test_dataset_service_delete_dataset SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32543 * chore(api): update Python type-checker versions by @lavish0000 in https://github.com/langgenius/dify/pull/33056 * chore(deps): bump dompurify from 3.3.0 to 3.3.2 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/33062 * test: migrate dataset permission service SQL tests to testcontainers by @KinomotoMio in https://github.com/langgenius/dify/pull/32546 * chore(deps): bump markdown from 3.5.2 to 3.8.1 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/33064 * refactor(api): add TypedDict definitions to models/model.py by @statxc in https://github.com/langgenius/dify/pull/32925 * chore: add local pyrefly exclude workflow by @BeautyyuYanli in https://github.com/langgenius/dify/pull/33059 * fix(api): return inserted ids from Chroma and Clickzetta add_texts by @lavish0000 in https://github.com/langgenius/dify/pull/33065 * fix: show citations in advanced chat apps by @kurokobo in https://github.com/langgenius/dify/pull/32985 * fix: conversation var unexpected reset after HITL node by @hjlarry in https://github.com/langgenius/dify/pull/32936 * fix(i18n): correct French translation of "disabled" from medical term to UI-appropriate term by @Copilot in https://github.com/langgenius/dify/pull/33067 * fix(type-check): resolve missing-attribute in app dataset join update handler by @hjlarry in https://github.com/langgenius/dify/pull/33071 * chore: add support email env by @nite-knite in https://github.com/langgenius/dify/pull/33075 * feat(tasks): isolate summary generation to dedicated dataset_summary queue by @euxx in https://github.com/langgenius/dify/pull/32972 * chore: use react-grab to replace code-inspector-plugin by @hyoban in https://github.com/langgenius/dify/pull/33078 * fix(api): fix the issue that workflow_runs.started_at is overwritten while resuming by @QuantumGhost in https://github.com/langgenius/dify/pull/32851 * perf: no longer record install count for auto upgrade by @RockChinQ in https://github.com/langgenius/dify/pull/33086 * chore: bring back code-inspector-plugin and agentation by @hyoban in https://github.com/langgenius/dify/pull/33088 * chore: fix account dropdown test by @nite-knite in https://github.com/langgenius/dify/pull/33093 * test: improve coverage for some test files by @saumyatalwani in https://github.com/langgenius/dify/pull/32916 * feat(toast): add IToastProps type import to enhance type safety by @CodingOnStar in https://github.com/langgenius/dify/pull/33096 * refactor: pass KnowledgeConfiguration directly instead of dict by @pepsile in https://github.com/langgenius/dify/pull/32732 * feat: add export app messages by @hj24 in https://github.com/langgenius/dify/pull/32990 * feat: add files to message end pr32019 by @Stormhand in https://github.com/langgenius/dify/pull/32242 * chore: add TypedDict related prompt to api/AGENTS.md by @CoralGarden52 in https://github.com/langgenius/dify/pull/33116 * fix(web): stabilize dayjs timezone tests against DST transitions by @lyzno1 in https://github.com/langgenius/dify/pull/33134 * test: remaining header component and increase branch coverage by @akashseth-ifp in https://github.com/langgenius/dify/pull/33052 * refactor: use thread.Timer instead of time.sleep by @fatelei in https://github.com/langgenius/dify/pull/33121 * test: unit test case for controllers.common module by @rajatagarwal-oss in https://github.com/langgenius/dify/pull/32056 * fix: handle backslash path separators in DOCX ZIP entries exported on…(#33129) by @yijiaquan in https://github.com/langgenius/dify/pull/33131 * chore: update vinext, agentation, remove Prism in lexical by @hyoban in https://github.com/langgenius/dify/pull/33142 * fix: fix metadata filter condition not extract from {{}} by @fatelei in https://github.com/langgenius/dify/pull/33141 * feat(web): add context menu primitive and dropdown link item by @lyzno1 in https://github.com/langgenius/dify/pull/33125 * fix(web): fix tool item text not vertically centered in block selector by @lyzno1 in https://github.com/langgenius/dify/pull/33148 * refactor: deduplicate legacy section mapping in ConfigHelper by @Olexandr88 in https://github.com/langgenius/dify/pull/32715 * feat: keep connections when change node by @hjlarry in https://github.com/langgenius/dify/pull/31982 * fix: workflow_as_tool not work with json input by @hjlarry in https://github.com/langgenius/dify/pull/32554 * feat: when copy/paste multi nodes not require reconnect them by @hjlarry in https://github.com/langgenius/dify/pull/32631 * fix: fix allow handle value is none by @fatelei in https://github.com/langgenius/dify/pull/33031 * feat: support relative mode for message clean command by @hj24 in https://github.com/langgenius/dify/pull/32834 * docs: use docker compose command consistently in README by @haosenwang1018 in https://github.com/langgenius/dify/pull/33077 * refactor: reuse redis connection instead of create new one by @fatelei in https://github.com/langgenius/dify/pull/32678 * test: improve unit tests for controllers.web by @cryptus-neoxys in https://github.com/langgenius/dify/pull/32150 * refactor: file saver decouple db engine and ssrf proxy by @fatelei in https://github.com/langgenius/dify/pull/33076 * fix: stop responding icon not display by @hjlarry in https://github.com/langgenius/dify/pull/33154 * test: unit test cases for console.datasets module by @rajatagarwal-oss in https://github.com/langgenius/dify/pull/32179 * test: unit test case for controllers.console.workspace module by @rajatagarwal-oss in https://github.com/langgenius/dify/pull/32181 * ci: ignore some major update by @hyoban in https://github.com/langgenius/dify/pull/33161 * ci: ignore ky and tailwind-merge in update by @hyoban in https://github.com/langgenius/dify/pull/33167 * chore(deps-dev): bump the storybook group in /web with 7 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/33163 * chore(deps-dev): bump the eslint-group group in /web with 5 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/33168 * chore(deps): bump the npm-dependencies group across 1 directory with 55 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/33170 * ci: update actions version, reuse workflow by composite action by @hyoban in https://github.com/langgenius/dify/pull/33177 * test: unit test case for controllers.console.app module by @rajatagarwal-oss in https://github.com/langgenius/dify/pull/32247 * refactor: tool node decouple db by @fatelei in https://github.com/langgenius/dify/pull/33166 * fix(web): correct responding state after annotation reply completed by @JzoNgKVO in https://github.com/langgenius/dify/pull/33173 * test: add UTs for api core.trigger by @cryptus-neoxys in https://github.com/langgenius/dify/pull/32587 * test: unit test cases for console.explore and tag module by @rajatagarwal-oss in https://github.com/langgenius/dify/pull/32186 * feat: add batch download for dataset documents as ZIP and signed URL for single document download. by @ZeroZ-lab in https://github.com/langgenius/dify/pull/33100 * docs: Update Opik intergration docs by @vincentkoc in https://github.com/langgenius/dify/pull/32336 * feat: configurable Enter/Shift+Enter send behavior in embedded chat (#32295) by @agent-steven in https://github.com/langgenius/dify/pull/32300 * fix: copy button stays disabled after Human Input node pause/resume by @stakeswky in https://github.com/langgenius/dify/pull/32662 * feat: Improve SQL Comment Context for Celery Worker Queries by @Desel72 in https://github.com/langgenius/dify/pull/33058 * fix: use correct plugin_id for WaterCrawl datasource by @bgondell in https://github.com/langgenius/dify/pull/33182 * chore(ui): raise overlay primitives z-index for legacy coexistence by @lyzno1 in https://github.com/langgenius/dify/pull/33185 * test: add new unit tests for message service utilities, get message, feedback, and retention services. by @mahammadasim in https://github.com/langgenius/dify/pull/33169 * fix: prevent hydration warning from div nesting inside p for inline markdown images by @tysoncung in https://github.com/langgenius/dify/pull/32419 * test: unit test for core.rag module by @rajatagarwal-oss in https://github.com/langgenius/dify/pull/32630 * feat: enterprise plugin pre uninstall by @wylswz in https://github.com/langgenius/dify/pull/33158 * fix: fix request.metadata_model_config param check by @fatelei in https://github.com/langgenius/dify/pull/33189 * refactor: use `generate_valid_password` helper for creating test account passwords by @ZeroZ-lab in https://github.com/langgenius/dify/pull/33192 * fix: ensure external knowledge API key updates are persisted by @Saber-youMianJing in https://github.com/langgenius/dify/pull/33188 * fix: nested spans and traces; by @aadereiko in https://github.com/langgenius/dify/pull/33049 * fix: copy to clipboard failed in non-secure (HTTP) contexts by @hizhujianfeng in https://github.com/langgenius/dify/pull/32287 * refactor: replace react markdown with streamdown by @WTW0313 in https://github.com/langgenius/dify/pull/32971 * ci: add anti-slop GitHub Action to detect low-quality AI PRs by @elliotllliu in https://github.com/langgenius/dify/pull/33193 * chore(deps-dev): bump the storybook group in /web with 7 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/33198 * chore: update ky to 1.14.3 by @hyoban in https://github.com/langgenius/dify/pull/33201 * chore(deps-dev): bump the eslint-group group in /web with 2 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/33209 * chore(deps): bump rollup from 4.56.0 to 4.59.0 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/33197 * chore: split commands by domain by @hjlarry in https://github.com/langgenius/dify/pull/33085 * chore: switch vinext to npm, remove npm from dependabot by @hyoban in https://github.com/langgenius/dify/pull/33234 * test: add test for api core datasource by @mahammadasim in https://github.com/langgenius/dify/pull/32414 * fix(ci): add close-pr and failure label to anti-slop workflow by @RogueTex in https://github.com/langgenius/dify/pull/33236 * chore(deps): bump pypdf from 6.7.5 to 6.8.0 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/33238 * fix: fix failed test by @fatelei in https://github.com/langgenius/dify/pull/33241 * fix: fix parse mailto / http link in table cell by @fatelei in https://github.com/langgenius/dify/pull/33224 * feat: source for plugin tasks by @zyssyz123 in https://github.com/langgenius/dify/pull/33244 * fix: PromptEditor leaves a pending blur timer that triggers a Vitest unhandled error by @ZeroZ-lab in https://github.com/langgenius/dify/pull/33253 * chore: remove optimize standalone script by @hyoban in https://github.com/langgenius/dify/pull/33256 * chore: update script for build docker by @hyoban in https://github.com/langgenius/dify/pull/33261 * chore: disable some auto fix, disable e18e rules by @hyoban in https://github.com/langgenius/dify/pull/33265 * fix: use moderation modified inputs and query by @fatelei in https://github.com/langgenius/dify/pull/33180 * fix: fix mcp tool parameter extract by @fatelei in https://github.com/langgenius/dify/pull/33258 * fix: vertically center key-value table headers in HTTP and Webhook by @hjlarry in https://github.com/langgenius/dify/pull/33260 * test: add tests for some files in services module by @saumyatalwani in https://github.com/langgenius/dify/pull/32583 * refactor(avatar): migrate to Base UI primitives with Record size variants by @lyzno1 in https://github.com/langgenius/dify/pull/33268 * chore: fix dependabot alerts by @hyoban in https://github.com/langgenius/dify/pull/33277 * fix: main CI by @hjlarry in https://github.com/langgenius/dify/pull/33276 * test: add unit tests for some services by @poojanInfocusp in https://github.com/langgenius/dify/pull/32866 * refactor: move to modern monaco by @hyoban in https://github.com/langgenius/dify/pull/32966 * chore: skip pre commit check for merge by @hyoban in https://github.com/langgenius/dify/pull/33287 * refactor(select): align with Base UI data attributes and Figma specs by @lyzno1 in https://github.com/langgenius/dify/pull/33286 * feat: notification by @zyssyz123 in https://github.com/langgenius/dify/pull/32192 * feat: support in site message by @iamjoel in https://github.com/langgenius/dify/pull/33255 * chore: split /api dependabot groups by logical dependency category by @Copilot in https://github.com/langgenius/dify/pull/33297 * chore(deps): bump the flask group in /api with 4 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/33301 * chore(deps): bump the google group in /api with 5 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/33304 * chore(deps): bump astral-sh/setup-uv from 7.3.1 to 7.4.0 in the github-actions-dependencies group by @dependabot[bot] in https://github.com/langgenius/dify/pull/33303 * chore(deps): bump the pydantic group in /api with 2 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/33302 * chore(deps): bump the google group in /api with 2 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/33299 * chore(deps): bump the flask group in /api with 3 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/33298 * chore(deps): bump the llm group in /api with 6 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/33305 * chore(deps): update redis[hiredis] requirement from ~=7.2.0 to ~=7.3.0 in /api in the database group by @dependabot[bot] in https://github.com/langgenius/dify/pull/33306 * chore(deps): bump the storage group in /api with 7 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/33315 * chore(deps): bump mlflow-skinny from 3.6.0 to 3.10.1 in /api in the llm group across 1 directory by @dependabot[bot] in https://github.com/langgenius/dify/pull/33317 * chore(deps): bump opentelemetry-propagator-b3 from 1.28.0 to 1.40.0 in /api in the opentelemetry group by @dependabot[bot] in https://github.com/langgenius/dify/pull/33308 * refactor: Unify NodeConfigDict.data and BaseNodeData by @BeautyyuYanli in https://github.com/langgenius/dify/pull/32780 * chore(deps-dev): bump the dev group across 1 directory with 18 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/33322 * chore(deps): bump the python-packages group across 1 directory with 13 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/33319 * ci: Revert "chore(deps): bump the python-packages group across 1 directory with 13 updates" by @asukaminato0721 in https://github.com/langgenius/dify/pull/33331 * test: improve unit tests for controllers.inner_api by @cryptus-neoxys in https://github.com/langgenius/dify/pull/32203 * test: unit test cases for core.callback, core.base, core.entities module by @rajatagarwal-oss in https://github.com/langgenius/dify/pull/32471 * test: unit test cases core.agent module by @rajatagarwal-oss in https://github.com/langgenius/dify/pull/32474 * fix: allow line breaks when a field value overflows due to excessive length by @douxc in https://github.com/langgenius/dify/pull/33339 * test: unit test cases for core.app.apps module by @rajatagarwal-oss in https://github.com/langgenius/dify/pull/32482 * test: add UTs for api/ services.plugin by @cryptus-neoxys in https://github.com/langgenius/dify/pull/32588 * test: unit test cases for core.variables, core.plugin, core.prompt module by @rajatagarwal-oss in https://github.com/langgenius/dify/pull/32637 * test: add UTs for api/services recommend_app, tools, workflow by @cryptus-neoxys in https://github.com/langgenius/dify/pull/32645 * test: add test for core extension, external_data_tool and llm generator by @mahammadasim in https://github.com/langgenius/dify/pull/32468 * test: added for core logging and core mcp by @mahammadasim in https://github.com/langgenius/dify/pull/32478 * test: added test for core token buffer memory and model runtime by @mahammadasim in https://github.com/langgenius/dify/pull/32512 * test: Unit test cases for core.tools module by @rajatagarwal-oss in https://github.com/langgenius/dify/pull/32447 * chore: update vinext by @hyoban in https://github.com/langgenius/dify/pull/33347 * refactor(switch): Base UI migration with loading/skeleton variants by @lyzno1 in https://github.com/langgenius/dify/pull/33345 * test: improve coverage parameters for some files in base by @saumyatalwani in https://github.com/langgenius/dify/pull/33207 * test: improve coverage for some files by @saumyatalwani in https://github.com/langgenius/dify/pull/33218 * test: added tests for backend core.ops module by @mahammadasim in https://github.com/langgenius/dify/pull/32639 * test: added test for services of ops, summary, vector, website and ji… by @mahammadasim in https://github.com/langgenius/dify/pull/32893 * test: added test cases for core.workflow module by @rajatagarwal-oss in https://github.com/langgenius/dify/pull/33126 * test: refactor mock implementation in markdown component tests by @CodingOnStar in https://github.com/langgenius/dify/pull/33350 * chore: use tsconfigPaths for vinext by @hyoban in https://github.com/langgenius/dify/pull/33363 * fix: The HTTP Request node panel supports line break and overflow handling for variable values by @douxc in https://github.com/langgenius/dify/pull/33359 * fix: test_get_credentials_and_config_selects_plugin_id_and_key_api_ke… by @fatelei in https://github.com/langgenius/dify/pull/33361 * chore(web): disable i18next support notice by @Copilot in https://github.com/langgenius/dify/pull/33309 * chore: add dev proxy server, update deps by @hyoban in https://github.com/langgenius/dify/pull/33371 * chore: remove unused WEAVIATE_GRPC_ENABLED config option by @majiayu000 in https://github.com/langgenius/dify/pull/33378 * feat(workflow): add edge context menu with delete support by @lyzno1 in https://github.com/langgenius/dify/pull/33391 * chore: add tracking info of in site message by @iamjoel in https://github.com/langgenius/dify/pull/33394 * fix: with_debug_recipient() silently drops debug emails when user_id is None or empty string by @gambletan in https://github.com/langgenius/dify/pull/33373 * test: enforce app/components coverage gates in web tests by @CodingOnStar in https://github.com/langgenius/dify/pull/33395 * test: [Refactor/Chore] use Testcontainers to do sql test #32454 by @asukaminato0721 in https://github.com/langgenius/dify/pull/32460 * chore(deps): bump orjson from 3.11.4 to 3.11.6 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/33380 * chore: use vite plus by @hyoban in https://github.com/langgenius/dify/pull/33407 * refactor(web): split share text-generation and add high-coverage tests by @CodingOnStar in https://github.com/langgenius/dify/pull/33408 * fix(api): allow punctuation in uploaded filenames by @yevanmore in https://github.com/langgenius/dify/pull/33364 * fix: correctly detect required columns in archived workflow run restore by @hjlarry in https://github.com/langgenius/dify/pull/33403 * chore(deps): bump pyjwt from 2.11.0 to 2.12.0 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/33437 * chore(deps): bump fickling from 0.1.9 to 0.1.10 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/33436 * refactor: replace sa.String with EnumText in mapped_column for type s… by @tmimmanuel in https://github.com/langgenius/dify/pull/33332 * refactor(tests): use enum values instead of string literals for status fields by @nielskaspers in https://github.com/langgenius/dify/pull/33441 * refactor: replace remaining sa.String with EnumText 2 by @tmimmanuel in https://github.com/langgenius/dify/pull/33448 * refactor(workflow): move agent node back to core workflow by @WH-2099 in https://github.com/langgenius/dify/pull/33431 * refactor(api): move workflow knowledge nodes and trigger nodes by @laipz8200 in https://github.com/langgenius/dify/pull/33445 * fix: preserve custom icons in exported DSL by @majiayu000 in https://github.com/langgenius/dify/pull/33424 * fix: add doc_type to Weaviate properties and default Vector attributes by @RickDamon in https://github.com/langgenius/dify/pull/33398 * fix: update INTERNAL_FILES_URL example default for Docker Desktop by @laipz8200 in https://github.com/langgenius/dify/pull/33447 * feat: Add Hologres as a VDB & FullText DB choice by @TimothyDing in https://github.com/langgenius/dify/pull/32830 * fix: downgrade image download failure log from ERROR to WARNING by @tysoncung in https://github.com/langgenius/dify/pull/33429 * fix(api): resolve type errors in service API wraps tests by @mahmoodhamdi in https://github.com/langgenius/dify/pull/33467 * feat: Remove GPT-4 special-casing from default model selection by @laipz8200 in https://github.com/langgenius/dify/pull/33458 * fix: use parameterized queries to prevent SQL injection in vector stores by @mango766 in https://github.com/langgenius/dify/pull/33421 * chore(deps): bump sqlalchemy from 2.0.44 to 2.0.48 in /api in the database group by @dependabot[bot] in https://github.com/langgenius/dify/pull/33487 * refactor: llm decouple code executor module by @fatelei in https://github.com/langgenius/dify/pull/33400 * chore(deps): bump the storage group in /api with 2 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/33488 * chore(deps): bump the github-actions-dependencies group with 4 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/33485 * chore(deps): bump litellm from 1.82.1 to 1.82.2 in /api in the llm group by @dependabot[bot] in https://github.com/langgenius/dify/pull/33480 * chore(deps-dev): update faker requirement from ~=40.8.0 to ~=40.11.0 in /api in the dev group by @dependabot[bot] in https://github.com/langgenius/dify/pull/33482 * chore: add indexes for human_input_forms query patterns by @hjlarry in https://github.com/langgenius/dify/pull/32849 * chore(deps): bump the storage group in /api with 2 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/33481 * chore(deps): bump the llm group across 1 directory with 2 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/33491 * chore(deps): bump the python-packages group in /api with 13 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/33484 * ci: Simplify nltk data download in Dockerfile by @asukaminato0721 in https://github.com/langgenius/dify/pull/33495 * fix: enterprise API error handling and license enforcement by @GareArc in https://github.com/langgenius/dify/pull/33044 * chore(deps): bump google-auth from 2.49.0 to 2.49.1 in /api in the google group by @dependabot[bot] in https://github.com/langgenius/dify/pull/33483 * feat: Add weaviate client single instance by @lcedaw in https://github.com/langgenius/dify/pull/27910 * refactor(web): consolidate query/mutation guidance and deprecate use-base wrappers by @lyzno1 in https://github.com/langgenius/dify/pull/33456 * chore(deps-dev): bump the vdb group across 1 directory with 15 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/33502 * chore: change draft var to user scoped by @hjlarry in https://github.com/langgenius/dify/pull/33066 * fix: fix weaviate_vector test failed by @fatelei in https://github.com/langgenius/dify/pull/33511 * feat(diff-coverage): implement coverage analysis for changed components by @CodingOnStar in https://github.com/langgenius/dify/pull/33514 * refactor(web): split text-generation result flow and raise coverage by @CodingOnStar in https://github.com/langgenius/dify/pull/33499 * chore: remove next font by @hyoban in https://github.com/langgenius/dify/pull/33512 * feat(diff-coverage): enhance coverage reporting for multi-line statements and branches by @CodingOnStar in https://github.com/langgenius/dify/pull/33516 * chore: compatiable resource_metadata return without scheme by @fatelei in https://github.com/langgenius/dify/pull/33506 * chore: remove next img by @hyoban in https://github.com/langgenius/dify/pull/33517 * feat: apply markdown rendering to HITL email, sanitize email subject and body by @Blackoutta in https://github.com/langgenius/dify/pull/32305 * test: limit web diff coverage to current push range by @CodingOnStar in https://github.com/langgenius/dify/pull/33523 * chore: update plugin daemon version to 0.5.4-local in Docker compose files by @QuantumGhost in https://github.com/langgenius/dify/pull/33526 * chore: fix dep alerts by @hyoban in https://github.com/langgenius/dify/pull/33527 * chore(api): rename configuration `EVENT_BUS_REDIS_CLUSTERS` by @QuantumGhost in https://github.com/langgenius/dify/pull/33528 * fix(web): migrate InputNumber to Base UI NumberField by @lyzno1 in https://github.com/langgenius/dify/pull/33520 * refactor(custom): reorganize web app brand module and raise coverage threshold by @CodingOnStar in https://github.com/langgenius/dify/pull/33531 * chore(deps-dev): bump the dev group across 1 directory with 19 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/33525 * refactor(api): simplify response session eligibility by @laipz8200 in https://github.com/langgenius/dify/pull/33538 * chore: update coverage summary check in web tests workflow by @CodingOnStar in https://github.com/langgenius/dify/pull/33533 * chore(deps): bump authlib from 1.6.7 to 1.6.9 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/33544 * refactor(api): replace dict/Mapping with TypedDict in dataset models by @statxc in https://github.com/langgenius/dify/pull/33550 * fix(web): page crash in knowledge retrieval node caused by dataset selection and score threshold by @JzoNgKVO in https://github.com/langgenius/dify/pull/33553 * fix: raise block selector overlay z-index by @lyzno1 in https://github.com/langgenius/dify/pull/33557 * refactor: use hoisted modern monaco by @hyoban in https://github.com/langgenius/dify/pull/33540 * refactor(api): replace dict/Mapping with TypedDict in trigger.py and workflow.py by @statxc in https://github.com/langgenius/dify/pull/33562 * test(web): ignore default-branch merge commits in diff coverage by @CodingOnStar in https://github.com/langgenius/dify/pull/33564 * chore: revert #33540 #32966 by @hyoban in https://github.com/langgenius/dify/pull/33566 * feat: add metrics to clean message and workflow-run task by @hjlarry in https://github.com/langgenius/dify/pull/33143 * fix(web): preserve public workflow SSE reconnect after pause by @laipz8200 in https://github.com/langgenius/dify/pull/33552 ## New Contributors * @razerzhang made their first contribution in https://github.com/langgenius/dify/pull/31843 * @saumyatalwani made their first contribution in https://github.com/langgenius/dify/pull/32201 * @poojanInfocusp made their first contribution in https://github.com/langgenius/dify/pull/32154 * @Haohao-end made their first contribution in https://github.com/langgenius/dify/pull/32342 * @apoorvdarshan made their first contribution in https://github.com/langgenius/dify/pull/32386 * @akashseth-ifp made their first contribution in https://github.com/langgenius/dify/pull/32281 * @mahammadasim made their first contribution in https://github.com/langgenius/dify/pull/32283 * @tysoncung made their first contribution in https://github.com/langgenius/dify/pull/32461 * @Hypertension42 made their first contribution in https://github.com/langgenius/dify/pull/32490 * @J0su3Code made their first contribution in https://github.com/langgenius/dify/pull/32493 * @stakeswky made their first contribution in https://github.com/langgenius/dify/pull/32498 * @rajatagarwal-oss made their first contribution in https://github.com/langgenius/dify/pull/32057 * @cryptus-neoxys made their first contribution in https://github.com/langgenius/dify/pull/32073 * @Pandaaaa906 made their first contribution in https://github.com/langgenius/dify/pull/32560 * @ajuijas made their first contribution in https://github.com/langgenius/dify/pull/32510 * @toroleapinc made their first contribution in https://github.com/langgenius/dify/pull/32653 * @haku-ink made their first contribution in https://github.com/langgenius/dify/pull/32636 * @tda1017 made their first contribution in https://github.com/langgenius/dify/pull/32701 * @nielskaspers made their first contribution in https://github.com/langgenius/dify/pull/32718 * @slegarraga made their first contribution in https://github.com/langgenius/dify/pull/32768 * @Br1an67 made their first contribution in https://github.com/langgenius/dify/pull/32772 * @akkoaya made their first contribution in https://github.com/langgenius/dify/pull/31528 * @hwb96 made their first contribution in https://github.com/langgenius/dify/pull/32778 * @stablegenius49 made their first contribution in https://github.com/langgenius/dify/pull/32813 * @Echo0ff made their first contribution in https://github.com/langgenius/dify/pull/32828 * @nightcityblade made their first contribution in https://github.com/langgenius/dify/pull/32721 * @RenzoMXD made their first contribution in https://github.com/langgenius/dify/pull/32942 * @caoergou made their first contribution in https://github.com/langgenius/dify/pull/32995 * @lavish0000 made their first contribution in https://github.com/langgenius/dify/pull/33056 * @statxc made their first contribution in https://github.com/langgenius/dify/pull/32925 * @pepsile made their first contribution in https://github.com/langgenius/dify/pull/32732 * @Stormhand made their first contribution in https://github.com/langgenius/dify/pull/32242 * @CoralGarden52 made their first contribution in https://github.com/langgenius/dify/pull/33116 * @Olexandr88 made their first contribution in https://github.com/langgenius/dify/pull/32715 * @haosenwang1018 made their first contribution in https://github.com/langgenius/dify/pull/33077 * @vincentkoc made their first contribution in https://github.com/langgenius/dify/pull/32336 * @agent-steven made their first contribution in https://github.com/langgenius/dify/pull/32300 * @Desel72 made their first contribution in https://github.com/langgenius/dify/pull/33058 * @bgondell made their first contribution in https://github.com/langgenius/dify/pull/33182 * @Saber-youMianJing made their first contribution in https://github.com/langgenius/dify/pull/33188 * @aadereiko made their first contribution in https://github.com/langgenius/dify/pull/33049 * @hizhujianfeng made their first contribution in https://github.com/langgenius/dify/pull/32287 * @elliotllliu made their first contribution in https://github.com/langgenius/dify/pull/33193 * @RogueTex made their first contribution in https://github.com/langgenius/dify/pull/33236 * @gambletan made their first contribution in https://github.com/langgenius/dify/pull/33373 * @tmimmanuel made their first contribution in https://github.com/langgenius/dify/pull/33332 * @RickDamon made their first contribution in https://github.com/langgenius/dify/pull/33398 * @TimothyDing made their first contribution in https://github.com/langgenius/dify/pull/32830 * @mahmoodhamdi made their first contribution in https://github.com/langgenius/dify/pull/33467 * @mango766 made their first contribution in https://github.com/langgenius/dify/pull/33421 **Full Changelog**: https://github.com/langgenius/dify/compare/1.13.0...1.13.1

1.14.0-rc1: New Agent x Skills for Production Workflows1.14.0-rc1预发布
? · 2026-02-14

## 💥 New Agent x Skills 🥳 `1.14.0-rc1` brings a new agent-building experience: sandboxed runtime, Skill Editor, collaboration, and dynamic variable assembly. preview docs: <https://docs.bash-is-all-you-need.dify.dev/> ## 🌟 Try the Experience Now Build with the new Agent + Skill workflow in minutes. ### 👉 **Experience Now: [Live Demo](https://skills.bash-is-all-you-need.dify.dev/)** Not sure where to begin? Use our ready-made operational templates! ### 🧩 Start from Templates (Recommended) 👉 [Templates](https://marketplace.dify.ai/templates/operations) ## ✨ Highlights - **New Agent runtime** with sandboxed execution and Agent Mode. ([Agent docs](https://docs.bash-is-all-you-need.dify.dev/en/use-dify/nodes/agent) · [Runtime docs](https://docs.bash-is-all-you-need.dify.dev/en/use-dify/build/runtime)) - **Skill Editor** helps you build reusable SOP blocks and call tools inline with `@` (e.g., `@send_email`). ([File system docs](https://docs.bash-is-all-you-need.dify.dev/en/use-dify/build/file-system)) - **Command + Upload File to Sandbox** make runtime operations practical and controllable. ([Command docs](https://docs.bash-is-all-you-need.dify.dev/en/use-dify/nodes/command) · [Upload docs](https://docs.bash-is-all-you-need.dify.dev/en/use-dify/nodes/upload-file-to-sandbox)) - **"Pull a Variable"** unlocks dynamic context with Assemble Variables and chat-history extraction. ([Pull a Variable docs](https://docs.bash-is-all-you-need.dify.dev/en/use-dify/nodes/tools#prepare-tool-inputs)) - **Collaboration Beta** adds shared editing, comments, and `@` mentions. ([Collaboration docs](https://docs.bash-is-all-you-need.dify.dev/en/use-dify/build/collaboration)) ## 🖼️ Feature Snapshots ### 🧩 Skill Editor + `@tool` Write reusable skills and call tools inline with `@` (for example, `@send_email`). <img width="1512" height="982" alt="Tool Action" src="https://github.com/user-attachments/assets/79780401-f97b-4b44-90ba-5458f00e38da" /> ### 🧠 New Agent Runtime Ship multi-step agent flows with sandboxed execution and Agent Mode. ![img_v3_02us_7fdc1732-f5f9-41dc-a60a-246ed8be261g](https://github.com/user-attachments/assets/469c641b-7b04-43ae-ae3b-75e319965090) ### 🌍 Create and Publish Your First Agent Template Build and test your workflow in **Dify Studio**, then share it with the world. #### How to publish: * Click **Publish → Publish to Marketplace** in the top-right panel * Or upload your exported file via **Creator Center** 👉 [https://creators.dify.ai/](https://creators.dify.ai/) <img src="https://github.com/user-attachments/assets/02ea242d-3be7-458b-bb51-2a9a3859407a" width="30%" style="margin-right:2%;" /> Complete your template details and submit for review. Once approved, your template will appear on the **Template Marketplace**: 👉 [https://marketplace.dify.ai/templates](https://marketplace.dify.ai/templates) Let others fork, explore, and build on top of your work. <img src="https://github.com/user-attachments/assets/654f7f8a-7fd7-4d68-91b1-43df0f8727e7"/> ### 🛠️ Command + Upload File to Sandbox Upload files into sandbox, then run controlled commands for real execution tasks. <img width="1018" height="463" alt="image" src="https://github.com/user-attachments/assets/a1837a8e-251f-4555-94b9-ffa1089ae97a" /> ### 🔄 Pull a Variable Assemble variables and extract structured values from LLM chat history. <img width="1512" height="982" alt="@Agent · Entry Point" src="https://github.com/user-attachments/assets/7268a91a-2de7-4af3-887a-fa4ca4190a05" /> ### 🤝 Collaboration (beta) Co-edit workflows with comments, mentions, and real-time presence. <img width="1502" height="770" alt="image" src="https://github.com/user-attachments/assets/c631c910-f821-4ad3-a80f-a76837f6c360" /> ## 🔗 Docs and Experience - Experience: <https://skills.bash-is-all-you-need.dify.dev/> - Preview docs: <https://docs.bash-is-all-you-need.dify.dev/> ## ⚠️ Preview Notice - `1.14.0-rc1` is a testing preview release candidate for evaluation and feedback. - Stability, availability, and compatibility are not guaranteed in this preview build. - We recommend using this version in non-production environments only. - Collaboration capabilities are beta; self-hosted setups require collaboration/websocket configuration. ## Upgrade Guide ### Docker Compose Deployments 1. Back up your customized docker-compose YAML file (optional) ```bash cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak ``` 2. Get the latest code from the feat/support-agent-sandbox branch ```bash git checkout feat/support-agent-sandbox ``` 3. Stop the service. Please execute in the docker directory ```bash docker compose down ``` 4. Back up data ```bash tar -cvf volumes-$(date +%s).tgz volumes ``` 5. Upgrade services ```bash 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: ```bash git checkout feat/support-agent-sandbox ``` 3. Update Python dependencies: ```bash cd api uv sync ``` 4. Then, let's run the migration script: ```bash uv run flask db upgrade ``` 5. Finally, run the API server, Worker, and Web frontend Server again. ## What's Changed * fix(web): redirect to OAuth authorize page after login instead of /apps by @RockChinQ in https://github.com/langgenius/dify/pull/32177 * feat(api): add scheduled cleanup task for specific workflow logs by @razerzhang in https://github.com/langgenius/dify/pull/31843 * feat: add Creators Platform helper for DSL upload and OAuth redirect (Vibe Kanban) by @RockChinQ in https://github.com/langgenius/dify/pull/32232 * test: add unit tests for some base components by @saumyatalwani in https://github.com/langgenius/dify/pull/32201 * test: add comprehensive unit and integration tests for dataset module by @CodingOnStar in https://github.com/langgenius/dify/pull/32187 * test(web): add comprehensive unit and integration tests for plugins and tools modules by @CodingOnStar in https://github.com/langgenius/dify/pull/32220 * test: add comprehensive unit and integration tests for billing components by @CodingOnStar in https://github.com/langgenius/dify/pull/32227 * test: add unit and integration tests for share, develop, and goto-anything modules by @CodingOnStar in https://github.com/langgenius/dify/pull/32246 * test: add comprehensive unit and integration tests for RAG Pipeline components by @CodingOnStar in https://github.com/langgenius/dify/pull/32237 * feat(tests): add integration tests for explore app list, installed apps, and sidebar lifecycle flows by @CodingOnStar in https://github.com/langgenius/dify/pull/32248 * fix: metadata batch edit silently fails due to split transactions and swallowed exceptions by @veeceey in https://github.com/langgenius/dify/pull/32041 * fix: can not upload file in single run by @hyoban in https://github.com/langgenius/dify/pull/32276 * fix: publish-to-marketplace exports YAML for classic apps instead of ZIP (Vibe Kanban) by @RockChinQ in https://github.com/langgenius/dify/pull/32284 * chore(deps): bump pillow from 12.0.0 to 12.1.1 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/32250 * feat: support config max size of plugin generated files by @bowenliang123 in https://github.com/langgenius/dify/pull/30887 * feat(api): optimize OceanBase vector store performance and configurability by @connermo in https://github.com/langgenius/dify/pull/32263 * test(web): add and enhance frontend automated tests across multiple modules by @CodingOnStar in https://github.com/langgenius/dify/pull/32268 * chore(deps): bump qs from 6.14.1 to 6.14.2 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/32290 * test: add unit tests for base components-part-1 by @poojanInfocusp in https://github.com/langgenius/dify/pull/32154 * test: add integration tests for app card operations, list browsing, and create app flows by @CodingOnStar in https://github.com/langgenius/dify/pull/32298 * test: add tests for some base components by @saumyatalwani in https://github.com/langgenius/dify/pull/32265 ## New Contributors * @razerzhang made their first contribution in https://github.com/langgenius/dify/pull/31843 * @saumyatalwani made their first contribution in https://github.com/langgenius/dify/pull/32201 * @poojanInfocusp made their first contribution in https://github.com/langgenius/dify/pull/32154 **Full Changelog**: https://github.com/langgenius/dify/compare/1.13.0...1.14.0-rc1

v1.11.41.11.4
? · 2026-01-15

## 🔒 Security Dify now requires Node.js 24.13.0 to pick up the upstream fix for the AsyncLocalStorage/async_hooks DoS CVE that can crash apps with deeply nested input. **All self-hosted deployments should upgrade Node.js**. Thanks to @hyoban in #30945. Related: #30935. ## 🛠️ Bug Fixes - **Redirect After Login**: We’ve sorted out the login redirects to bring you back to your intended destination smoothly after logging in. Shoutout to @hyoban for this fix in #30985. - **Missing ID and Message ID**: Missing the essentials? Not anymore! We’ve patched the missing `id` and `message_id` issue, thanks to @fatelei in #31008. - **Destructuring Undefined Properties**: Ever run into that annoying error where you can't destructure `name` from `value` because it's undefined? That’s been crushed too, all thanks to @fatelei in #30991. --- ## Upgrade Guide ### Docker Compose Deployments 1. Back up your customized docker-compose YAML file (optional) ```bash cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak ``` 2. Get the latest code from the main branch ```bash git checkout main git pull origin main ``` 3. Stop the service. Please execute in the docker directory ```bash docker compose down ``` 4. Back up data ```bash tar -cvf volumes-$(date +%s).tgz volumes ``` 5. Upgrade services ```bash docker compose up -d ``` > [!NOTE] > > If you encounter errors like below > > ```bash > 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 > ```bash > docker compose --profile postgresql up -d > ``` ### Source Code Deployments 1. Stop the API server, Worker, and Web frontend Server. 2. Get the latest code from the release branch: ```bash git checkout 1.11.4 ``` 3. Update Python dependencies: ```bash cd api uv sync ``` 4. Then, let's run the migration script: ```bash uv run flask db upgrade ``` 5. Finally, run the API server, Worker, and Web frontend Server again. --- ## What's Changed - fix: redirect after login by @hyoban in https://github.com/langgenius/dify/pull/30985 - fix: fix missing id and message_id by @fatelei in https://github.com/langgenius/dify/pull/31008 - build: require node 24.13.0 by @hyoban in https://github.com/langgenius/dify/pull/30945 - chore: bump version to 1.11.4 by @laipz8200 in https://github.com/langgenius/dify/pull/30961 - fix: fix Cannot destructure property 'name' of 'value' as it is undef… by @hyoban in https://github.com/langgenius/dify/pull/30991 **Full Changelog**: https://github.com/langgenius/dify/compare/1.11.3...1.11.4

v1.11.31.11.3
? · 2026-01-13

## 🚀 What's New in v1.11.3? Our latest release, v1.11.3, brings to you a slew of bug fixes and features focused on performance, functionality, and user experience. Here's a look at what's changed: ### 🎬 New Features - **MCP Tool Enhancements**: Added support for `embeddedResource` and made MCP tools display directly for quicker access by @IthacaDream and @fatelei in #30261 and #30019. - **Batch Operations**: Introduced re-index operation in document batch operations by @fatelei in #30275. - **Agent and Workflow Updates**: New AgentMaxIterationError and enhancements in app mode checks make workflows and agents more robust by @fatelei. - **OAuth Integration**: Frontend login now supports `oauth_new_user` flag by @zyssyz123 in #30370. - **PDF Extraction**: Improved RAG extractor to support image extraction from PDFs by @yangzq50 in #30399. - **Storage and Archive**: Added archive storage client and config settings by @hjlarry in #30422. - **Translation and Internationalization**: Added initial RSC support for translations for a global audience by @hyoban in #30596. ### 🛠️ Bug Fixes - **Redis and Cache**: Used pipelines to optimize Redis cache deletions, enhancing speed and reliability by @fatelei in #30159. - **UI/UX Fixes**: From preventing page crashes due to permission errors to fixing flicking button sizes, multiple UI-related issues have been addressed by various contributors. - **Data Operations**: Fixed dataset access errors and improved error handling in batch operations by @zhaobingshuang and others. - **Performance**: Released runtime state references under high load to prevent potential memory leaks by @SherlockShemol in #30236. - **Security**: Rectified CORS and SSL issues that could've affected bot integrations and Celery operations. - **Internationalization**: Korean translations and content were updated for accuracy by @sangyun-han in #30347. ### 🔧 Under the Hood - **CI/CD and Build Enhancements**: Enhanced GitHub actions and build processes for better reliability and less downtime by @bowenliang123 and @hyoban. - **Code & Query Optimization**: Addressed inefficiencies in SQL queries and data handling in workflows and the API, improving overall stability. This release emphasizes streamlining backend operations, fortifying security, and enriching the user interface for a smoother, more productive experience. Thank you to all contributors for refining Dify and pushing our platform forward! 🛠️💡 --- ## Upgrade Guide ### Docker Compose Deployments 1. Back up your customized docker-compose YAML file (optional) ```bash cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak ``` 2. Get the latest code from the main branch ```bash git checkout main git pull origin main ``` 3. Stop the service. Please execute in the docker directory ```bash docker compose down ``` 4. Back up data ```bash tar -cvf volumes-$(date +%s).tgz volumes ``` 5. Upgrade services ```bash docker compose up -d ``` > [!NOTE] > > If you encounter errors like below > > ```bash > 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 > ```bash > docker compose --profile postgresql up -d > ``` ### Source Code Deployments 1. Stop the API server, Worker, and Web frontend Server. 2. Get the latest code from the release branch: ```bash git checkout 1.11.3 ``` 3. Update Python dependencies: ```bash cd api uv sync ``` 4. Then, let's run the migration script: ```bash uv run flask db upgrade ``` 5. Finally, run the API server, Worker, and Web frontend Server again. --- ## What's Changed * perf: using pipeline to delete redis cache by @fatelei in https://github.com/langgenius/dify/pull/30159 * fix: update permission in member list caused page crash by @iamjoel in https://github.com/langgenius/dify/pull/30164 * feat(refactoring): introduce comprehensive guidelines and tools for component refactoring in Dify by @CodingOnStar in https://github.com/langgenius/dify/pull/30162 * fix: validate first then save to db by @fatelei in https://github.com/langgenius/dify/pull/30107 * fix: load i18n on server by @hyoban in https://github.com/langgenius/dify/pull/30171 * chore: some test by @iamjoel in https://github.com/langgenius/dify/pull/30148 * fix(web): correct deleted tools matching to use provider_id instead of id by @majiayu000 in https://github.com/langgenius/dify/pull/30138 * fix: add transparent border to prevent button size flickering by @Pleasurecruise in https://github.com/langgenius/dify/pull/30128 * refactor: part of remove all reqparser by @asukaminato0721 in https://github.com/langgenius/dify/pull/29847 * fix: fix metadata filter not survive a rename by @fatelei in https://github.com/langgenius/dify/pull/30174 * feat: add mcp tool display directly by @fatelei in https://github.com/langgenius/dify/pull/30019 * feat: allow config NEXT_PUBLIC_BATCH_CONCURRENCY by @fatelei in https://github.com/langgenius/dify/pull/30086 * fix(dataset): dataset tags service_api error "Dataset not found" by @zhaobingshuang in https://github.com/langgenius/dify/pull/30028 * refactor: split changes for api/controllers/console/workspace/load_ba… by @asukaminato0721 in https://github.com/langgenius/dify/pull/29887 * refactor: split changes for api/controllers/console/explore/saved_mes… by @asukaminato0721 in https://github.com/langgenius/dify/pull/29889 * refactor: split changes for api/controllers/console/explore/message.py by @asukaminato0721 in https://github.com/langgenius/dify/pull/29890 * chore: bypass InsufficientPrivilege on Azure PostgreSQL by @fatelei in https://github.com/langgenius/dify/pull/30191 * chore: some tests for components by @iamjoel in https://github.com/langgenius/dify/pull/30194 * fix: use query param for delete method by @GareArc in https://github.com/langgenius/dify/pull/30206 * fix: fix DatasetRetrieval._process_metadata_filter_func miss in operator by @fatelei in https://github.com/langgenius/dify/pull/30199 * fix: fix missing not in by @fatelei in https://github.com/langgenius/dify/pull/30207 * fix: retrieval test and knowledge retrieval node failed in multimodal mode by @JohnJyong in https://github.com/langgenius/dify/pull/30210 * test(web): add unit tests for Avatar component by @SherlockShemol in https://github.com/langgenius/dify/pull/30201 * fix: remove unused CSS styles and fix HitTestingPage layout by @WTW0313 in https://github.com/langgenius/dify/pull/30235 * chore(web): remove unused dev-preview page by @sarxxt in https://github.com/langgenius/dify/pull/30226 * fix: Add JSON RPC request type guard by @Nov1c444 in https://github.com/langgenius/dify/pull/30216 * fix: consolidate duplicate InvokeRateLimitError definitions by @Mairuis in https://github.com/langgenius/dify/pull/30229 * fix: wrong usage of redis lock by @NeatGuyCoding in https://github.com/langgenius/dify/pull/28177 * chore(claude-code): migrate from legacy MCP configuration to official plugin system by @lyzno1 in https://github.com/langgenius/dify/pull/30265 * fix: fix custom tool content is not update by @fatelei in https://github.com/langgenius/dify/pull/30250 * fix(api): fix credential type handling and rebuild subscription transaction safety by @NeatGuyCoding in https://github.com/langgenius/dify/pull/30242 * chore(deps): bump scheduler from 0.26.0 to 0.27.0 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/30284 * chore(deps): bump json-repair from 0.54.1 to 0.54.3 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/30285 * refactor(web): Migrate to Unified TanStack Devtools by @lyzno1 in https://github.com/langgenius/dify/pull/30279 * fix: Workflow Start node optional enum parameter is treated as required by @hjlarry in https://github.com/langgenius/dify/pull/30287 * feat: document batch operation tool add re-index operation by @fatelei in https://github.com/langgenius/dify/pull/30275 * chore(sdk/nodejs): update deps by @hyoban in https://github.com/langgenius/dify/pull/30291 * feat: MCP tool adds support for embeddedResource by @IthacaDream in https://github.com/langgenius/dify/pull/30261 * fix(web): handle null/undefined message in log list by @majiayu000 in https://github.com/langgenius/dify/pull/30253 * fix: release graph_runtime_state reference to prevent memory leak under high load by @SherlockShemol in https://github.com/langgenius/dify/pull/30236 * fix(web): rollback React Scan dynamic import by @lyzno1 in https://github.com/langgenius/dify/pull/30294 * refactor(query-state): migrate query param state management to nuqs by @lyzno1 in https://github.com/langgenius/dify/pull/30184 * build: update github actions by @bowenliang123 in https://github.com/langgenius/dify/pull/30106 * fix(template-transform): use base64 encoding for Jinja2 templates to fix #26818 by @devbyteai in https://github.com/langgenius/dify/pull/30223 * refactor(web): drop swr and migrate share/chat hooks to tanstack query by @lyzno1 in https://github.com/langgenius/dify/pull/30232 * refactor(i18n): use JSON with flattened key and namespace by @hyoban in https://github.com/langgenius/dify/pull/30114 * feat: support tencent cos custom domain by @fatelei in https://github.com/langgenius/dify/pull/30193 * test: add comprehensive tests for plugin authentication components by @CodingOnStar in https://github.com/langgenius/dify/pull/30094 * fix(api): remove tool provider list cache to fix cache inconsistency by @Mairuis in https://github.com/langgenius/dify/pull/30323 * chore: refactor config var and add tests by @iamjoel in https://github.com/langgenius/dify/pull/30312 * chore: i18n namespace refactor in package.json and add missing translations by @lyzno1 in https://github.com/langgenius/dify/pull/30324 * test: add some tests for marketplace by @CodingOnStar in https://github.com/langgenius/dify/pull/30326 * refactor(web): organize devtools components by @lyzno1 in https://github.com/langgenius/dify/pull/30318 * fix: restore draft version correctly in version history panel by @majiayu000 in https://github.com/langgenius/dify/pull/30296 * feat: allow fail fast by @fatelei in https://github.com/langgenius/dify/pull/30262 * feat: get plan bulk with cache by @hj24 in https://github.com/langgenius/dify/pull/30339 * fix: update Korean translations for various components and improve cl… by @sangyun-han in https://github.com/langgenius/dify/pull/30347 * fix: missing i18n translation for Trans by @hyoban in https://github.com/langgenius/dify/pull/30353 * refactor(i18n): about locales by @hyoban in https://github.com/langgenius/dify/pull/30336 * fix(i18n): load server namespaces by kebab-case by @lyzno1 in https://github.com/langgenius/dify/pull/30368 * chore: remove useless __esModule by @hyoban in https://github.com/langgenius/dify/pull/30366 * fix: fix provider_id is empty by @fatelei in https://github.com/langgenius/dify/pull/30374 * fix: fix markdown escape issue by @fatelei in https://github.com/langgenius/dify/pull/30299 * feat: integrate Google Analytics event tracking and update CSP for script sources by @CodingOnStar in https://github.com/langgenius/dify/pull/30365 * refactor: Replace direct `process.env.NODE_ENV` checks with `IS_PROD` and `IS_DEV` constants. by @lyzno1 in https://github.com/langgenius/dify/pull/30383 * feat: add oauth_new_user flag for frontend when user oauth login by @zyssyz123 in https://github.com/langgenius/dify/pull/30370 * fix(web): template creation permission for app templates by @quicksandznzn in https://github.com/langgenius/dify/pull/30367 * refactor: split changes for api/services/tools/api_tools_manage_servi… by @asukaminato0721 in https://github.com/langgenius/dify/pull/29899 * fix: Incorrect REDIS ssl variable used for Celery causing Celery unable to start by @jasonfish568 in https://github.com/langgenius/dify/pull/29605 * fix: keyword search now matches both content and keywords fields by @majiayu000 in https://github.com/langgenius/dify/pull/29619 * fix: [xxx](xxx) render as xxx](xxx) by @fatelei in https://github.com/langgenius/dify/pull/30392 * fix: workflow incorrectly marked as completed while nodes are still executing by @Chenyl-Sai in https://github.com/langgenius/dify/pull/30251 * feat(web): migrate from es-toolkit/compat to native es-toolkit (#30244) by @lyzno1 in https://github.com/langgenius/dify/pull/30246 * chore(deps): bump qs from 6.14.0 to 6.14.1 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/30409 * fix: Ensure chat history refreshes when switching back to conversations by @devbyteai in https://github.com/langgenius/dify/pull/30389 * fix(web): enable JSON_OBJECT type support in console UI by @QuantumGhost in https://github.com/langgenius/dify/pull/30412 * fix: correct useEducationStatus query cache configuration by @lyzno1 in https://github.com/langgenius/dify/pull/30416 * fix: fix create app xss issue by @fatelei in https://github.com/langgenius/dify/pull/30305 * chore: lint for react compiler by @hyoban in https://github.com/langgenius/dify/pull/30417 * chore: update knip config and include in CI by @hyoban in https://github.com/langgenius/dify/pull/30410 * feat: support image extraction in PDF RAG extractor by @yangzq50 in https://github.com/langgenius/dify/pull/30399 * test: unify i18next mocks into centralized helpers by @hyoban in https://github.com/langgenius/dify/pull/30376 * feat: add archive storage client and env config by @hjlarry in https://github.com/langgenius/dify/pull/30422 * build: bring back babel-loader, add build check by @hyoban in https://github.com/langgenius/dify/pull/30427 * chore: add jotai store by @hyoban in https://github.com/langgenius/dify/pull/30432 * fix(web): stop thinking timer when user clicks stop button by @majiayu000 in https://github.com/langgenius/dify/pull/30442 * refactor: migrate some ns.model to BaseModel by @asukaminato0721 in https://github.com/langgenius/dify/pull/30388 * fix: fix when vision is disabled delete the configs by @fatelei in https://github.com/langgenius/dify/pull/30420 * feat: add AgentMaxIterationError exc by @fatelei in https://github.com/langgenius/dify/pull/30423 * chore: Standardized the OpenAI icon by @hjlarry in https://github.com/langgenius/dify/pull/30471 * chore: remove icon_large of models by @hjlarry in https://github.com/langgenius/dify/pull/30466 * feat: optimize for migration versions by @longbingljw in https://github.com/langgenius/dify/pull/28787 * chore: remove redundant web/app/page.module.css by @lyzno1 in https://github.com/langgenius/dify/pull/30482 * chore: integrate @tanstack/eslint-plugin-query and fix service layer lint errors by @lyzno1 in https://github.com/langgenius/dify/pull/30444 * feat(refactoring): Support Structured Logging (JSON) by @41tair in https://github.com/langgenius/dify/pull/30170 * feat: model total credits by @CodingOnStar in https://github.com/langgenius/dify/pull/26942 * fix(plugins): enhance search to match name, label and description by @zhsama in https://github.com/langgenius/dify/pull/30501 * ci: fix translate, allow manual dispatch by @hyoban in https://github.com/langgenius/dify/pull/30505 * chore(i18n): translate i18n files based on en-US changes by @github-actions[bot] in https://github.com/langgenius/dify/pull/30508 * refactor: more ns.model to BaseModel by @asukaminato0721 in https://github.com/langgenius/dify/pull/30445 * chore: upgrade fickling to 0.1.6 by @laipz8200 in https://github.com/langgenius/dify/pull/30495 * test: add unit tests for RagPipeline components by @CodingOnStar in https://github.com/langgenius/dify/pull/30429 * feat: revert model total credits by @CodingOnStar in https://github.com/langgenius/dify/pull/30518 * feat: add Ralph Wiggum plugin support by @lyzno1 in https://github.com/langgenius/dify/pull/30525 * feat: add frontend code review skills by @iamjoel in https://github.com/langgenius/dify/pull/30520 * refactor(web): align signup mail submit and tests by @lyzno1 in https://github.com/langgenius/dify/pull/30456 * feat: enhance squid config by @fatelei in https://github.com/langgenius/dify/pull/30146 * feat: skip rerank if only one dataset is retrieved by @fatelei in https://github.com/langgenius/dify/pull/30075 * fix: when first setup after auto login error by @sszaodian in https://github.com/langgenius/dify/pull/30523 * refactor(code_node): implement DI for the code node by @laipz8200 in https://github.com/langgenius/dify/pull/30519 * docs: update comments in docker/.env.example by @longbingljw in https://github.com/langgenius/dify/pull/30516 * chore: Update PR template lint command by @laipz8200 in https://github.com/langgenius/dify/pull/30533 * refactor(workflow): add Jinja2 renderer abstraction for template transform by @laipz8200 in https://github.com/langgenius/dify/pull/30535 * chore(deps-dev): bump intersystems-irispython from 5.3.0 to 5.3.1 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/30540 * chore: Add a new rule for import lint by @laipz8200 in https://github.com/langgenius/dify/pull/30526 * feat: add flask command file-usage by @fatelei in https://github.com/langgenius/dify/pull/30500 * chore: update dockerignore by @hsiong in https://github.com/langgenius/dify/pull/30460 * fix: fix WorkflowExecution.outputs containing non-JSON-serializable o… by @fatelei in https://github.com/langgenius/dify/pull/30464 * fix(api): surface subscription deletion errors to users by @Mairuis in https://github.com/langgenius/dify/pull/30333 * fix: support to change NEXT_PUBLIC_BASE_PATH env using `--build-arg` in docker build by @darkelf21cn in https://github.com/langgenius/dify/pull/29836 * feat: return data_source_info and data_source_detail_dict by @fatelei in https://github.com/langgenius/dify/pull/29912 * fix: INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH settings by @hsiong in https://github.com/langgenius/dify/pull/30463 * fix: fix db env not work by @fatelei in https://github.com/langgenius/dify/pull/30541 * chore(deps): bump @amplitude/analytics-browser from 2.31.4 to 2.33.1 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/30538 * fix: #30511 [Bug] knowledge_retrieval_node fails when using Rerank Model: "Working outside of application context" and add regression test by @hsiong in https://github.com/langgenius/dify/pull/30549 * refactor: use contains_any instead of Chaining where = where | f by @fatelei in https://github.com/langgenius/dify/pull/30559 * chore(web): add ESLint rules for i18n JSON validation by @hyoban in https://github.com/langgenius/dify/pull/30491 * refactor(models): Add mapped type hints to MessageAnnotation by @laipz8200 in https://github.com/langgenius/dify/pull/27751 * chore(docker): update nltk data download process to include unstructured download_nltk_packages by @lework in https://github.com/langgenius/dify/pull/28876 * chore: fix lint in i18n by @hyoban in https://github.com/langgenius/dify/pull/30571 * feat(logstore): make `graph` field optional via env variable LOGSTORE… by @scdeng in https://github.com/langgenius/dify/pull/30554 * feat(graph-engine): make layer runtime state non-null and bound early by @laipz8200 in https://github.com/langgenius/dify/pull/30552 * feat(graph-engine): add command to update variables at runtime by @laipz8200 in https://github.com/langgenius/dify/pull/30563 * chore: Harden API image Node.js runtime install by @laipz8200 in https://github.com/langgenius/dify/pull/30497 * fix(api): refactors the SQL LIKE pattern escaping logic to use a centralized utility function, ensuring consistent and secure handling of special characters across all database queries. by @NeatGuyCoding in https://github.com/langgenius/dify/pull/30450 * refactor: split changes for api/controllers/web/saved_message.py by @asukaminato0721 in https://github.com/langgenius/dify/pull/30583 * refactor: split changes for api/controllers/web/conversation.py by @asukaminato0721 in https://github.com/langgenius/dify/pull/30582 * fix: system model selector loading state flash by @lyzno1 in https://github.com/langgenius/dify/pull/30572 * refactor: split changes for api/controllers/console/datasets/hit_test… by @asukaminato0721 in https://github.com/langgenius/dify/pull/30581 * chore: remove unused link icon type by @GKTOKWR in https://github.com/langgenius/dify/pull/30469 * feat: unified management stop event by @fatelei in https://github.com/langgenius/dify/pull/30479 * refactor: port controllers/console/app/app.py by @asukaminato0721 in https://github.com/langgenius/dify/pull/30522 * fix: correct docx hyperlink extraction by @yangzq50 in https://github.com/langgenius/dify/pull/30360 * fix: allow unauthenticated CORS preflight for embedded bots by @Thebinary110 in https://github.com/langgenius/dify/pull/30587 * feat: init rsc support for translation by @hyoban in https://github.com/langgenius/dify/pull/30596 * feat: Add conversation variable persistence layer by @laipz8200 in https://github.com/langgenius/dify/pull/30531 * fix: _model_to_insertion_dict missing id by @fatelei in https://github.com/langgenius/dify/pull/30603 * refactor: clean type: ignore comments in login.py and template_transformer.py by @majiayu000 in https://github.com/langgenius/dify/pull/30510 * refactor(api): inject sessionmaker into conversation variable updater by @laipz8200 in https://github.com/langgenius/dify/pull/30609 * refactor: generate_url to support scenario to build url by @fatelei in https://github.com/langgenius/dify/pull/30598 * fix(db): parameterize sessionmaker with Session by @laipz8200 in https://github.com/langgenius/dify/pull/30612 * chore: bump pnpm version in packageManager by @lyzno1 in https://github.com/langgenius/dify/pull/30605 * feat: use more universal C.UTF-8 instead of en_US.UTF-8 by @fatelei in https://github.com/langgenius/dify/pull/30621 * feat: implement dataset creation step one with preview functionality by @CodingOnStar in https://github.com/langgenius/dify/pull/30507 * refactor(web): migrate legacy forms to TanStack Form by @lyzno1 in https://github.com/langgenius/dify/pull/30631 * fix: prevent empty state flash and add skeleton loading for app list by @lyzno1 in https://github.com/langgenius/dify/pull/30616 * fix: flask db check fails due to nullable mismatch between migrations and models by @ltoppyl in https://github.com/langgenius/dify/pull/30474 * refactor: restructure DatasetCard component for improved readability and maintainability by @CodingOnStar in https://github.com/langgenius/dify/pull/30617 * refactor(api): clarify published RAG pipeline invoke naming by @laipz8200 in https://github.com/langgenius/dify/pull/30644 * refactor: port api/fields/file_fields.py by @asukaminato0721 in https://github.com/langgenius/dify/pull/30638 * chore: use from __future__ import annotations by @sarxxt in https://github.com/langgenius/dify/pull/30254 * chore: add skill creator for create agent skills by @lyzno1 in https://github.com/langgenius/dify/pull/30652 * fix: add DB_TYPE environment variable to unit tests by @fghpdf in https://github.com/langgenius/dify/pull/30660 * fix: fix not record access token by @fatelei in https://github.com/langgenius/dify/pull/30654 * chore: rename ralph-wiggum plugin to ralph-loop by @lyzno1 in https://github.com/langgenius/dify/pull/30664 * refactor(web): remove useMixedTranslation, better resource loading by @hyoban in https://github.com/langgenius/dify/pull/30630 * fix: signin page stuck on loading when refresh token valid but access token expired by @lyzno1 in https://github.com/langgenius/dify/pull/30675 * refactor: remove unnecessary type: ignore from rag_pipeline_fields.py by @fghpdf in https://github.com/langgenius/dify/pull/30666 * fix: fix assign value stand as default by @fatelei in https://github.com/langgenius/dify/pull/30651 * refactor(web): remove unused type alias VoiceLanguageKey by @fghpdf in https://github.com/langgenius/dify/pull/30694 * feat(i18n): Migrate translation workflow to Claude Code GitHub Actions by @lyzno1 in https://github.com/langgenius/dify/pull/30692 * refactor: split changes for api/controllers/console/workspace/trigger… by @asukaminato0721 in https://github.com/langgenius/dify/pull/30627 * fix(workflow): pass correct user_from/invoke_from into graph init by @laipz8200 in https://github.com/langgenius/dify/pull/30637 * fix(i18n): resolve Claude Code sandbox path issues in workflow by @lyzno1 in https://github.com/langgenius/dify/pull/30710 * fix(web): resolve key-value input box height inconsistency on focus/blur (#30715) by @JunIce in https://github.com/langgenius/dify/pull/30716 * feat: add decryption decorators for password and code fields in webapp by @GareArc in https://github.com/langgenius/dify/pull/30704 * fix: web app login code encrypt by @douxc in https://github.com/langgenius/dify/pull/30705 * feat: credit pool by @zyssyz123 in https://github.com/langgenius/dify/pull/30720 * feat: model total credits by @CodingOnStar in https://github.com/langgenius/dify/pull/30727 * fix(web): restrict postMessage targetOrigin from wildcard to specific origins by @xuwei95 in https://github.com/langgenius/dify/pull/30690 * fix(web): resolve chat message loading race conditions and infinite loops by @MkDev11 in https://github.com/langgenius/dify/pull/30695 * fix(ci): use repository_dispatch for i18n sync workflow by @lyzno1 in https://github.com/langgenius/dify/pull/30744 * chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/30750 * feat: implement step two of dataset creation with comprehensive UI components and hooks by @CodingOnStar in https://github.com/langgenius/dify/pull/30681 * feat(embedding-process): implement embedding process components and polling logic by @CodingOnStar in https://github.com/langgenius/dify/pull/30622 * feat(workflows): add agent-dev deploy workflow by @Mairuis in https://github.com/langgenius/dify/pull/30774 * fix: fix enhance app mode check by @fatelei in https://github.com/langgenius/dify/pull/30758 * fix(web): invalidate app list cache after deleting app from detail page by @majiayu000 in https://github.com/langgenius/dify/pull/30751 * refactor: marketplace state management by @hyoban in https://github.com/langgenius/dify/pull/30702 * revert: "fix: fix assign value stand as default (#30651)" by @QuantumGhost in https://github.com/langgenius/dify/pull/30717 * feat: enhance start node object value check by @fatelei in https://github.com/langgenius/dify/pull/30732 * feat(web): migrate PWA to Serwist by @hyoban in https://github.com/langgenius/dify/pull/30808 * refactor(models): Refine MessageAgentThought SQLAlchemy typing by @laipz8200 in https://github.com/langgenius/dify/pull/27749 * fix: Broken import in .storybook/preview.tsx by @fatelei in https://github.com/langgenius/dify/pull/30812 * fix: fix refresh token deadlock by @fatelei in https://github.com/langgenius/dify/pull/30828 * fix: drop useless pyrefly in ci by @yihong0618 in https://github.com/langgenius/dify/pull/30826 * chore(deps-dev): bump @storybook/react from 9.1.13 to 9.1.17 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/30833 * chore(deps-dev): bump tos from 2.7.2 to 2.9.0 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/30834 * docs(web): add corepack recommendation by @hyoban in https://github.com/langgenius/dify/pull/30837 * feat: add block-no-verify hook for Claude Code by @Lemonadeccc in https://github.com/langgenius/dify/pull/30839 * refactor(web): extract isServer/isClient utility & upgrade Node.js to 22.12.0 by @lyzno1 in https://github.com/langgenius/dify/pull/30803 * ci: add HITL test env deployment action by @QuantumGhost in https://github.com/langgenius/dify/pull/30846 * build: limit esbuild, glob, docker base version to avoid cve by @hyoban in https://github.com/langgenius/dify/pull/30848 * feat: clear free plan workflow run logs by @hjlarry in https://github.com/langgenius/dify/pull/29494 * fix(api): defer streaming response until referenced variables are updated by @QuantumGhost in https://github.com/langgenius/dify/pull/30832 * fix: use node factory for single-step workflow nodes by @hjlarry in https://github.com/langgenius/dify/pull/30859 * feat(ops): set root span kind for AliyunTrace to enable service-level metrics aggregation by @hieheihei in https://github.com/langgenius/dify/pull/30728 * fix: entrypoint.sh overrides NEXT_PUBLIC_TEXT_GENERATION_TIMEOUT_MS when TEXT_GENERATION_TIMEOUT_MS is unset (#30864) by @hsiong in https://github.com/langgenius/dify/pull/30865 * fix: fix formatNumber accuracy by @fatelei in https://github.com/langgenius/dify/pull/30877 * fix(amplitude): update sessionReplaySampleRate default value to 0.5 by @CodingOnStar in https://github.com/langgenius/dify/pull/30880 * fix: missing content if assistant message with tool_calls by @leslie2046 in https://github.com/langgenius/dify/pull/30083 * fix: fix object value is optional should skip validate by @fatelei in https://github.com/langgenius/dify/pull/30894 * chore: rename the migration file by @hjlarry in https://github.com/langgenius/dify/pull/30893 * fix(web): add null check for SSE stream bufferObj to prevent TypeError by @majiayu000 in https://github.com/langgenius/dify/pull/30131 * fix: In the LLM model in dify, when a message is added, the first cli… by @zhichenghouse in https://github.com/langgenius/dify/pull/29540 * chore: case insensitive email by @hjlarry in https://github.com/langgenius/dify/pull/29978 * refactor(web): setup status caching by @lyzno1 in https://github.com/langgenius/dify/pull/30798 * chore: Bump Dify version to 1.11.3 by @laipz8200 in https://github.com/langgenius/dify/pull/30903 ## New Contributors * @sarxxt made their first contribution in https://github.com/langgenius/dify/pull/30226 * @devbyteai made their first contribution in https://github.com/langgenius/dify/pull/30223 * @sangyun-han made their first contribution in https://github.com/langgenius/dify/pull/30347 * @yangzq50 made their first contribution in https://github.com/langgenius/dify/pull/30399 * @sszaodian made their first contribution in https://github.com/langgenius/dify/pull/30523 * @darkelf21cn made their first contribution in https://github.com/langgenius/dify/pull/29836 * @lework made their first contribution in https://github.com/langgenius/dify/pull/28876 * @scdeng made their first contribution in https://github.com/langgenius/dify/pull/30554 * @Thebinary110 made their first contribution in https://github.com/langgenius/dify/pull/30587 * @ltoppyl made their first contribution in https://github.com/langgenius/dify/pull/30474 * @fghpdf made their first contribution in https://github.com/langgenius/dify/pull/30660 * @xuwei95 made their first contribution in https://github.com/langgenius/dify/pull/30690 * @MkDev11 made their first contribution in https://github.com/langgenius/dify/pull/30695 * @Lemonadeccc made their first contribution in https://github.com/langgenius/dify/pull/30839 * @zhichenghouse made their first contribution in https://github.com/langgenius/dify/pull/29540 **Full Changelog**: https://github.com/langgenius/dify/compare/1.11.2...1.11.3

v1.11.0 - Your knowledge base just went from mono to full HD1.11.0
? · 2025-12-10

![multimodal-knowledge-base](https://github.com/user-attachments/assets/8ff9dd71-667f-45a2-a1d3-3a39f70fd093) ## 🧠 Multimodal Knowledge Base Dify can now understand **both text and images** in your knowledge base. Before, embeddings only cared about words. But real docs? They’re full of screenshots, diagrams, memes (don’t lie), and markdown with embedded images. Now those visuals count too. ### What’s Actually Happening 1. **Auto‑Image Extraction** Drop a doc with Markdown images — like `![vibe](https://cats.png)` — and Dify grabs them automatically (JPG, PNG, GIF ≤ 2 MB). 2. **Smart Attachment Handling** Each image is linked to its matching text chunk, so context stays tight. 3. **Embedding Behavior** - Using a **multimodal embedding model**? Then both text + image get vectorized. You can: - search text ↔ image, - image ↔ image, - or image ↔ text. Basically, everything ↔ everything. - Sticking with a regular text‑only model? Cool — the images still go along for the ride and will appear in prompts when you use a Vision‑enabled LLM. 4. **Developer Candy** Knowledge Pipeline’s `KnowledgeBase` node speaks two new dialects — - `multimodal‑Parent‑Child` - `multimodal‑General` Perfect for plugin devs who want to feed Dify structured mixed‑modality data without headaches. 5. **Supported Multimodal Models** - **AWS Bedrock:** `nova‑2‑multimodal‑embeddings‑v1:0` - **Google Vertex AI:** `multimodalembedding@001` - **Jina:** `jina‑embedding‑v4`, `jina‑clip‑v1`, `jina‑clip‑v2`, `jina‑reranker‑m0` - **Tongyi (Qwen):** `multimodal‑embedding‑v1` Once everything’s embedded, you’ll see a shiny new **Multimodal** tag in your knowledge base — because now your data’s two‑dimensional (and twice as cool). Huge thanks to [@JohnJyong](https://github.com/JohnJyong) ([#29115](https://github.com/langgenius/dify/pull/29115)) and [@WTW0313](https://github.com/WTW0313) ([#27793](https://github.com/langgenius/dify/pull/27793)) for bringing visual intelligence to Dify. Absolute legends. ## 🧩 Other New Features - **Zen Mode** — disappear into your flow; fewer buttons, more focus. use `cmd + k` to enter. *thanks [@ZeroZ‑lab](https://github.com/ZeroZ-lab) ([#28794](https://github.com/langgenius/dify/pull/28794))* - **“Open Workflow” shortcut for WorkflowTool** — hop straight into editing like a boss. *props [@CrabSAMA](https://github.com/CrabSAMA) ([#28898](https://github.com/langgenius/dify/pull/28898))* - **Start Node JSON Schema** — keeps your workflows honest. *thanks [@fatelei](https://github.com/fatelei) ([#29053](https://github.com/langgenius/dify/pull/29053))* - **Admin API Keys skip CSRF** — automation now flows smoother than espresso. *thanks [@kenwoodjw](https://github.com/kenwoodjw) ([#29139](https://github.com/langgenius/dify/pull/29139))* - **Dark‑mode icons, ReactScan, and spicy color polish** all landed too. *shoutout [@hjlarry](https://github.com/hjlarry) ([#28858](https://github.com/langgenius/dify/pull/28858)) and [@zhsama](https://github.com/zhsama) ([#29086](https://github.com/langgenius/dify/pull/29086))* ## ⚙️ Performance & Infrastructure A whole lot of behind‑the‑curtain magic here: - **GraphEngine** got chill pause/resume handling — no more jumping gears mid‑flow. *thanks [@QuantumGhost](https://github.com/QuantumGhost) ([#28196](https://github.com/langgenius/dify/pull/28196))* - **Automatic Storage Permission Repair** Introduced an **init container** that automatically fixes file system permissions on startup, removing the need for manual intervention when deploying with different storage backends. *thanks to [@kurokobo](https://github.com/kurokobo) and [@zhutong6688](https://github.com/zhutong6688) ([#29297](https://github.com/langgenius/dify/pull/29297)).* - **Redis caching** makes tool provider listings zoom. *thanks [@yangzheli](https://github.com/yangzheli) ([#29101](https://github.com/langgenius/dify/pull/29101))* - **Milvus 2.6.0** upgrade in Docker — fewer installation freak‑outs. *cheers [@majinghe](https://github.com/majinghe) ([#26618](https://github.com/langgenius/dify/pull/26618))* - **Pydantic upgrade** cleaned up node hydration code. *thanks [@asukaminato0721](https://github.com/asukaminato0721) ([#28993](https://github.com/langgenius/dify/pull/28993))* - **Less UI lag** — fewer unnecessary re‑renders across Workflow and Marketplace. *props [@iamjoel](https://github.com/iamjoel) ([#28776](https://github.com/langgenius/dify/pull/28776), [#28783](https://github.com/langgenius/dify/pull/28783))* - **Massive test overhaul** — embeddings, datasets, plugins, workflows… you name it. *thanks [@codomposer](https://github.com/codomposer), [@SmartDever02](https://github.com/SmartDever02), [@hsparks‑codes](https://github.com/hsparks-codes)* ## 🐞 Key Fixes - **Webhook Node Conversion Error Resolved** Fixed an issue where converting an existing node into a webhook node could cause a 404 error. _thanks to [@hjlarry](https://github.com/hjlarry) ([#28686](https://github.com/langgenius/dify/pull/28686))._ - **Chat Auto‑Scroll Stability Restored** Addressed a problem that caused the chat interface to stop auto‑scrolling during active conversations. _thanks to [@utsumi‑fj](https://github.com/utsumi-fj) ([#28690](https://github.com/langgenius/dify/pull/28690))._ - **OceanBase Vector Search Accuracy Improved** Implemented proper handling of the `score_threshold` parameter to ensure consistent and relevant retrieval results. _thanks to [@connermo](https://github.com/connermo) ([#28536](https://github.com/langgenius/dify/pull/28536))._ - **Dark Theme Rendering Adjustments** Corrected tooltip display and text color inconsistencies in dark mode for a more stable visual experience. _thanks to [@hjlarry](https://github.com/hjlarry) ([#29186](https://github.com/langgenius/dify/pull/29186))._ - **MySQL Query Compatibility Fixes** Resolved issues with UUID queries and unsupported `returning` statements when using MySQL drivers. _thanks to [@wangype](https://github.com/wangype) ([#28941](https://github.com/langgenius/dify/pull/28941)) and [@longbingljw](https://github.com/longbingljw) ([#29069](https://github.com/langgenius/dify/pull/29069))._ - **Database Session Management** Fixed errors that could occur when database sessions were initialized multiple times during workflow execution. _thanks to [@fatelei](https://github.com/fatelei) ([#29160](https://github.com/langgenius/dify/pull/29160))._ - **UI Consistency Enhancements** Addressed several minor rendering and layout issues, including small‑screen text visibility and tooltip behavior. 🤘 A ton of folks touched this release — whether you built features, fixed a typo, or added a single test, thank you. You made Dify 1.11.0 faster, funnier, and just plain better. --- ## Upgrade Guide ### Docker Compose Deployments 1. Back up your customized docker-compose YAML file (optional) ```bash cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak ``` 2. Get the latest code from the main branch ```bash git checkout main git pull origin main ``` 3. Stop the service. Please execute in the docker directory ```bash docker compose down ``` 4. Back up data ```bash tar -cvf volumes-$(date +%s).tgz volumes ``` 5. Upgrade services ```bash docker compose up -d ``` > [!NOTE] > > If you encounter errors like below > > ```bash > 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 > ```bash > docker compose --profile postgresql up -d > ``` ### Source Code Deployments 1. Stop the API server, Worker, and Web frontend Server. 2. Get the latest code from the release branch: ```bash git checkout 1.11.0 ``` 3. Update Python dependencies: ```bash cd api uv sync ``` 4. Then, let's run the migration script: ```bash uv run flask db upgrade ``` 5. Finally, run the API server, Worker, and Web frontend Server again. --- ## What's Changed * Enhanced GraphEngine Pause Handling by @QuantumGhost in https://github.com/langgenius/dify/pull/28196 * chore: update packageManager version to pnpm@10.23.0 by @ZeroZ-lab in https://github.com/langgenius/dify/pull/28708 * fix: prevent auto-scrolling from stopping in chat by @utsumi-fj in https://github.com/langgenius/dify/pull/28690 * fix: change existing node to a webhook node raise 404 by @hjlarry in https://github.com/langgenius/dify/pull/28686 * test: add comprehensive unit tests for HitTestingService Fix: #28667 by @SmartDever02 in https://github.com/langgenius/dify/pull/28668 * add unit tests for list operator node by @0xsatoshi99 in https://github.com/langgenius/dify/pull/28597 * Pydantic models by @asukaminato0721 in https://github.com/langgenius/dify/pull/28697 * fix(ops): add streaming metrics and LLM span for agent-chat traces by @minimAluminiumalism in https://github.com/langgenius/dify/pull/28320 * feat: complete test script of dataset service by @codomposer in https://github.com/langgenius/dify/pull/28710 * add unit tests for template transform node by @0xsatoshi99 in https://github.com/langgenius/dify/pull/28595 * add: badges by @crazywoola in https://github.com/langgenius/dify/pull/28722 * test: add comprehensive unit tests for ExternalDatasetService (external knowledge API integration) by @SmartDever02 in https://github.com/langgenius/dify/pull/28716 * fix: use default_factory for callable defaults in ORM dataclasses by @laipz8200 in https://github.com/langgenius/dify/pull/28730 * feat: Add comprehensive unit tests for DatasetCollectionBindingService (dataset collection binding methods) by @SmartDever02 in https://github.com/langgenius/dify/pull/28724 * chore: enhance the test script of conversation service by @codomposer in https://github.com/langgenius/dify/pull/28739 * add unit tests for code node by @0xsatoshi99 in https://github.com/langgenius/dify/pull/28717 * add unit tests for iteration node by @0xsatoshi99 in https://github.com/langgenius/dify/pull/28719 * chore: enhance the test script of current billing service by @codomposer in https://github.com/langgenius/dify/pull/28747 * feat: add APP_DEFAULT_ACTIVE_REQUESTS as the default value for APP_AC… by @jiangbo721 in https://github.com/langgenius/dify/pull/26930 * hotfix: fix _extract_filename for rfc 5987 by @NeatGuyCoding in https://github.com/langgenius/dify/pull/26230 * fix: querying webhook trigger issue by @IthacaDream in https://github.com/langgenius/dify/pull/28753 * fix: querying and setting the system default model by @IthacaDream in https://github.com/langgenius/dify/pull/28743 * Add comprehensive API/controller tests for dataset endpoints (list, create, update, delete, documents, segments, hit testing, external datasets) by @SmartDever02 in https://github.com/langgenius/dify/pull/28750 * Add comprehensive unit tests for MetadataService (dataset metadata CRUD operations and filtering) by @SmartDever02 in https://github.com/langgenius/dify/pull/28748 * upgrade docker compose milvus version to 2.6.0 to fix installation error by @majinghe in https://github.com/langgenius/dify/pull/26618 * fix: MCP tool time configuration not work by @hjlarry in https://github.com/langgenius/dify/pull/28740 * Use naive_utc_now in graph engine tests by @laipz8200 in https://github.com/langgenius/dify/pull/28735 * Feat/test script of workflow service by @codomposer in https://github.com/langgenius/dify/pull/28726 * feat: complete test script of dataset retrieval by @codomposer in https://github.com/langgenius/dify/pull/28762 * chore: remove outdated model config doc by @hjlarry in https://github.com/langgenius/dify/pull/28765 * test: add unit tests for dataset permission service by @SmartDever02 in https://github.com/langgenius/dify/pull/28760 * test: add unit tests for dataset service update/delete operations by @SmartDever02 in https://github.com/langgenius/dify/pull/28757 * feat: creates logs immediately when workflows start (not at completion) by @fatelei in https://github.com/langgenius/dify/pull/28701 * Refactor: centralize node data hydration by @laipz8200 in https://github.com/langgenius/dify/pull/27771 * perf: reduce reRender in candidate node by @iamjoel in https://github.com/langgenius/dify/pull/28776 * feat(workflow): workflow as tool output schema by @CrabSAMA in https://github.com/langgenius/dify/pull/26241 * edit analyze-component by @CodingOnStar in https://github.com/langgenius/dify/pull/28781 * pref: reduce next step components reRender by @iamjoel in https://github.com/langgenius/dify/pull/28783 * refactor: rename VariableAssignerNodeData to VariableAggregatorNodeData by @laipz8200 in https://github.com/langgenius/dify/pull/28780 * Feat zen mode by @ZeroZ-lab in https://github.com/langgenius/dify/pull/28794 * chore: translate i18n files and update type definitions by @github-actions[bot] in https://github.com/langgenius/dify/pull/28784 * Refactor workflow nodes to use generic node_data by @laipz8200 in https://github.com/langgenius/dify/pull/28782 * feat: complete test script of reranker by @codomposer in https://github.com/langgenius/dify/pull/28806 * test: add unit tests for document service validation and configuration by @SmartDever02 in https://github.com/langgenius/dify/pull/28810 * feat: complete test script of text splitter by @codomposer in https://github.com/langgenius/dify/pull/28813 * chore: update packageManager version in package.json to pnpm@10.24.0 by @lyzno1 in https://github.com/langgenius/dify/pull/28820 * fix(ci): use dynamic branch name for i18n workflow to prevent race condition by @lyzno1 in https://github.com/langgenius/dify/pull/28823 * feat: add comprehensive unit tests for provider models by @0xsatoshi99 in https://github.com/langgenius/dify/pull/28702 * feat: complete test script of embedding service by @codomposer in https://github.com/langgenius/dify/pull/28817 * test: add unit tests for document service status management by @SmartDever02 in https://github.com/langgenius/dify/pull/28804 * docker: use `COPY --chown` in api Dockerfile to avoid adding layers by explicit `chown` calls by @bowenliang123 in https://github.com/langgenius/dify/pull/28756 * test: add comprehensive unit tests for FeedbackService by @hsparks-codes in https://github.com/langgenius/dify/pull/28771 * test: add comprehensive unit tests for VectorService and Vector classes by @SmartDever02 in https://github.com/langgenius/dify/pull/28834 * feat: complete test script of notion provider by @codomposer in https://github.com/langgenius/dify/pull/28833 * test: add comprehensive unit tests for DocumentIndexingTaskProxy by @SmartDever02 in https://github.com/langgenius/dify/pull/28830 * feat: complete test script of website crawl by @codomposer in https://github.com/langgenius/dify/pull/28826 * feat: add comprehensive unit tests for MessageService by @hsparks-codes in https://github.com/langgenius/dify/pull/28837 * chore: assign code owners to frontend and backend modules in CODEOWNERS by @laipz8200 in https://github.com/langgenius/dify/pull/28713 * chore: bump dify plugin version in docker.middleware by @hjlarry in https://github.com/langgenius/dify/pull/28847 * feat: complete test script of indexing runner by @codomposer in https://github.com/langgenius/dify/pull/28828 * test: add comprehensive unit tests for EndUserService by @hsparks-codes in https://github.com/langgenius/dify/pull/28840 * fix: the consistency of the go-to-anything interaction by @hjlarry in https://github.com/langgenius/dify/pull/28857 * Fix CODEOWNERS workflow owner handle by @laipz8200 in https://github.com/langgenius/dify/pull/28866 * test: add comprehensive unit tests for TagService by @hsparks-codes in https://github.com/langgenius/dify/pull/28854 * test: add comprehensive unit tests for SavedMessageService by @hsparks-codes in https://github.com/langgenius/dify/pull/28845 * test: add comprehensive unit tests for AudioService by @hsparks-codes in https://github.com/langgenius/dify/pull/28860 * feat: complete test script of file upload by @codomposer in https://github.com/langgenius/dify/pull/28843 * test: add comprehensive unit tests for RecommendedAppService by @hsparks-codes in https://github.com/langgenius/dify/pull/28869 * refactor(workflow): remove redundant get_base_node_data() method by @laipz8200 in https://github.com/langgenius/dify/pull/28803 * test: add comprehensive unit tests for `ExternalDatasetService` by @hsparks-codes in https://github.com/langgenius/dify/pull/28872 * feat: complete test script of sensitive word filter by @codomposer in https://github.com/langgenius/dify/pull/28879 * feat: Add comprehensive unit tests for TagService with extensive docu… by @SmartDever02 in https://github.com/langgenius/dify/pull/28885 * fix: add explicit default to httpx.timeout by @CourTeous33 in https://github.com/langgenius/dify/pull/28836 * feat: complete test script of dataset indexing task by @codomposer in https://github.com/langgenius/dify/pull/28897 * fix: ensure "No apps found" text is visible on small screens by @mxs114514 in https://github.com/langgenius/dify/pull/28929 * Feat: Add "Open Workflow" link in workflow side panel by @CrabSAMA in https://github.com/langgenius/dify/pull/28898 * fix: implement score_threshold filtering for OceanBase vector search by @connermo in https://github.com/langgenius/dify/pull/28536 * chore(i18n): translate i18n files and update type definitions by @github-actions[bot] in https://github.com/langgenius/dify/pull/28933 * fix(web): prevent navbar clearing app state on cmd+click by @lequocbinh04 in https://github.com/langgenius/dify/pull/28935 * Feat/ implement test script of content moderation by @codomposer in https://github.com/langgenius/dify/pull/28923 * refactor: port reqparse to Pydantic model by @asukaminato0721 in https://github.com/langgenius/dify/pull/28913 * chore(deps): bump echarts-for-react from 3.0.2 to 3.0.5 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/28958 * feat: complete test script of plugin runtime by @codomposer in https://github.com/langgenius/dify/pull/28955 * feat: enhance OceanBase vector database with SQL injection fixes, unified processing, and improved error handling by @connermo in https://github.com/langgenius/dify/pull/28951 * chore(web): upgrade zustand from v4.5.7 to v5.0.9 by @lyzno1 in https://github.com/langgenius/dify/pull/28943 * fix: moving focus after navigations by @hyoban in https://github.com/langgenius/dify/pull/28937 * chore(deps): bump @lexical/text from 0.36.2 to 0.38.2 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/28960 * feat(api): automatically `NODE_TYPE_CLASSES_MAPPING` generation from node class definitions by @fatelei in https://github.com/langgenius/dify/pull/28525 * chore(deps): bump @lexical/list from 0.36.2 to 0.38.2 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/28961 * feat: complete test script of mail send task by @codomposer in https://github.com/langgenius/dify/pull/28963 * chore(deps): bump faker from 32.1.0 to 38.2.0 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/28964 * fix(web): use atomic selectors to fix Zustand v5 infinite loop by @lyzno1 in https://github.com/langgenius/dify/pull/28977 * fix(web): use atomic selectors in AccessControlItem by @lyzno1 in https://github.com/langgenius/dify/pull/28983 * Fix validation by @fatelei in https://github.com/langgenius/dify/pull/28985 * feat: complete test script of plugin manager by @codomposer in https://github.com/langgenius/dify/pull/28967 * Stop showing slash commands in general Go to Anything search by @lyzno1 in https://github.com/langgenius/dify/pull/29012 * [Bugfix] Fixed an issue with UUID type queries in MySQL databases by @wangype in https://github.com/langgenius/dify/pull/28941 * Refactor apps service toward TanStack Query by @lyzno1 in https://github.com/langgenius/dify/pull/29004 * feat: http response add x-trace-id by @fatelei in https://github.com/langgenius/dify/pull/29015 * chore: enhance test by @fatelei in https://github.com/langgenius/dify/pull/29002 * fix: CVE-2025-64718 by @kenwoodjw in https://github.com/langgenius/dify/pull/29027 * fix: improve chat message log feedback by @hjlarry in https://github.com/langgenius/dify/pull/29045 * integrate Amplitude analytics into the application by @CodingOnStar in https://github.com/langgenius/dify/pull/29049 * chore: remove useless mock files by @iamjoel in https://github.com/langgenius/dify/pull/29068 * fix: check education verify api slow may cause page redirects when modal closes by @iamjoel in https://github.com/langgenius/dify/pull/29078 * feat: add ReactScan component for enhanced development scanning by @zhsama in https://github.com/langgenius/dify/pull/29086 * refactor/marketplace react query by @lyzno1 in https://github.com/langgenius/dify/pull/29028 * refactor: simplify marketplace component structure by removing unused… by @zhsama in https://github.com/langgenius/dify/pull/29095 * feat: dark theme icon support by @hjlarry in https://github.com/langgenius/dify/pull/28858 * fix: remove chat conversation api dead arg message_count_gte by @hj24 in https://github.com/langgenius/dify/pull/29097 * fix: trigger call workflow_as_tool error by @hjlarry in https://github.com/langgenius/dify/pull/29058 * fix:mysql does not support 'returning' by @longbingljw in https://github.com/langgenius/dify/pull/29069 * chore: ignore redis lock not owned error by @fatelei in https://github.com/langgenius/dify/pull/29064 * chore(deps): bump next from 15.5.6 to 15.5.7 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/29105 * fix: catch error in response converter by @wylswz in https://github.com/langgenius/dify/pull/29056 * feat: Unify environment variables for database connection and authentication by @BorisPolonsky in https://github.com/langgenius/dify/pull/29092 * chore: update Next.js dev dependencies to 15.5.7 by @douxc in https://github.com/langgenius/dify/pull/29120 * fix(web): disable tooltip delay to avoid tooltip flickering by @yangzheli in https://github.com/langgenius/dify/pull/29104 * Fix/app list compatible by @zyssyz123 in https://github.com/langgenius/dify/pull/29123 * chore: upgrade React to 19.2.1,fix cve-2025-55182 by @douxc in https://github.com/langgenius/dify/pull/29121 * fix: bump pyarrow to 17.0.0, werkzeug to 3.1.4, urllib3 to 2.5.0 by @kenwoodjw in https://github.com/langgenius/dify/pull/29089 * perf: decrease heavy db operation by @fatelei in https://github.com/langgenius/dify/pull/29125 * fix: incorrect last run result by @hjlarry in https://github.com/langgenius/dify/pull/29128 * fix: modify usePluginTaskList initialization and dependencies in use-plugins.ts by @WTW0313 in https://github.com/langgenius/dify/pull/29130 * chore: ESLint add react hooks deps check rule by @iamjoel in https://github.com/langgenius/dify/pull/29132 * feat: add api mock for test by @iamjoel in https://github.com/langgenius/dify/pull/29140 * feat: start node support json schema by @fatelei in https://github.com/langgenius/dify/pull/29053 * fix: fix db session already begin by @fatelei in https://github.com/langgenius/dify/pull/29160 * fix: remove duplicated slash in webapp redirect_url by @douxc in https://github.com/langgenius/dify/pull/29161 * Fix ops_trace delete err by @hieheihei in https://github.com/langgenius/dify/pull/29134 * perf: optimize generate conversation name by @fatelei in https://github.com/langgenius/dify/pull/29131 * add gen_ai feature tag for aliyun_trace by @hieheihei in https://github.com/langgenius/dify/pull/29084 * fix: treat empty default values for optional file inputs as unset by @yatotm in https://github.com/langgenius/dify/pull/28948 * feat: using charset_normalizer instead of chardet by @fatelei in https://github.com/langgenius/dify/pull/29022 * refactor: clean up translation files by removing unused keys and optimizing existing entries by @lyzno1 in https://github.com/langgenius/dify/pull/29172 * refactor: port reqparse to Pydantic model by @asukaminato0721 in https://github.com/langgenius/dify/pull/28949 * chore: bump version to 1.10.1-fix.1 by @laipz8200 in https://github.com/langgenius/dify/pull/29176 * refactor: simplify plugin marketplace link construction in ProviderCard component by @WTW0313 in https://github.com/langgenius/dify/pull/29178 * chore: update TypeScript type-check command and add native-preview dependency for faster performance by @zhsama in https://github.com/langgenius/dify/pull/29179 * fix: incorrect text color under dark theme by @hjlarry in https://github.com/langgenius/dify/pull/29186 * fix: Variable Assigner node silently fails for legacy V1 data format by @kinglisky in https://github.com/langgenius/dify/pull/28867 * fix: add missing documentProcessingPriorityTip translation key by @lyzno1 in https://github.com/langgenius/dify/pull/29192 * refactor: update useNodes import to use reactflow across multiple components by @WTW0313 in https://github.com/langgenius/dify/pull/29195 * chore: detect rules from .oxlintrc.json by @hyoban in https://github.com/langgenius/dify/pull/29147 * add service layer OTel Span by @hieheihei in https://github.com/langgenius/dify/pull/28582 * feat: add new WEAVIATE_DISABLE_TELEMETRY env to disable telemetry collection for weaviate by @kurokobo in https://github.com/langgenius/dify/pull/29212 * chore(web): run oxlint before eslint by @lyzno1 in https://github.com/langgenius/dify/pull/29224 * chore: update AGENTS guidance for frontend tooling by @lyzno1 in https://github.com/langgenius/dify/pull/29228 * fix: hide Dify branding in webapp signin page when branding is enabled by @douxc in https://github.com/langgenius/dify/pull/29200 * fix: hide supplementary text for platform logo properly in Safari by @nite-knite in https://github.com/langgenius/dify/pull/29238 * feat(api): Implement EventManager error logging and add coverage by @QuantumGhost in https://github.com/langgenius/dify/pull/29204 * chore(deps): bump types-gevent from 24.11.0.20250401 to 25.9.0.20251102 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/29251 * fix: make remove-orphaned-files-on-storage management command work and safer by @kurokobo in https://github.com/langgenius/dify/pull/29247 * chore(deps): bump @lexical/code from 0.36.2 to 0.38.2 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/29250 * fix: account dropdown obscured by empty state overlay (#29241) by @lyzno1 in https://github.com/langgenius/dify/pull/29242 * hotfix(otel): replace hardcoded span attributes with shared constants by @NeatGuyCoding in https://github.com/langgenius/dify/pull/29227 * fix: remove 1px border from knowledge pipeline editor by @kurokobo in https://github.com/langgenius/dify/pull/29232 * fix: view log detail clear query params by @hjlarry in https://github.com/langgenius/dify/pull/29256 * feat: allow admin api key to bypass csrf validation by @kenwoodjw in https://github.com/langgenius/dify/pull/29139 * feat: support suggested_questions_after_answer to be configed by @fatelei in https://github.com/langgenius/dify/pull/29254 * Fix(#29181): convert uuid route param to str in DatasetDocumentListApi.get by @yodhcn in https://github.com/langgenius/dify/pull/29207 * chore(deps): update @lexical packages to version 0.38.2 in package.json and pnpm-lock.yaml by @WTW0313 in https://github.com/langgenius/dify/pull/29260 * perf: optimize marketplace card re-renders with memoization by @lyzno1 in https://github.com/langgenius/dify/pull/29263 * refactor: port reqparse to BaseModel by @asukaminato0721 in https://github.com/langgenius/dify/pull/28993 * perf(api): optimize tool provider list API with Redis caching by @yangzheli in https://github.com/langgenius/dify/pull/29101 * fix(web): resolve no-unused-vars lint warning in index.spec.ts by @lyzno1 in https://github.com/langgenius/dify/pull/29273 * chore: add provider context mock by @iamjoel in https://github.com/langgenius/dify/pull/29201 * chore: remove log in test case by @iamjoel in https://github.com/langgenius/dify/pull/29284 * feat: enable tenant isolation on duplicate document indexing tasks by @hj24 in https://github.com/langgenius/dify/pull/29080 * feat: charset_normalizer for better encoding detection than httpx's d… by @fatelei in https://github.com/langgenius/dify/pull/29264 * fix: Weaviate was not closed properly by @fatelei in https://github.com/langgenius/dify/pull/29301 * feat: Allow Editor role to use Trigger Plugin subscriptions by @fatelei in https://github.com/langgenius/dify/pull/29292 * chore: not slient call external service error by @fatelei in https://github.com/langgenius/dify/pull/29290 * fix: try-to-ask misalign by @hjlarry in https://github.com/langgenius/dify/pull/29309 * chore: find more redirect to correct category by @hjlarry in https://github.com/langgenius/dify/pull/29303 * feat: multimodal support (image) by @WTW0313 in https://github.com/langgenius/dify/pull/27793 * chore(i18n): translate i18n files and update type definitions by @github-actions[bot] in https://github.com/langgenius/dify/pull/29312 * chore: remove python sdk from dify repo by @fatelei in https://github.com/langgenius/dify/pull/29318 * Feat/support multimodal embedding by @JohnJyong in https://github.com/langgenius/dify/pull/29115 * refactor: remove isMobile prop from Chat and TryToAsk components by @lyzno1 in https://github.com/langgenius/dify/pull/29319 * chore: update the error message by @fatelei in https://github.com/langgenius/dify/pull/29325 * feat: make billing management entry prominent and enable current plan portal by @lyzno1 in https://github.com/langgenius/dify/pull/29321 * chore(i18n): translate i18n files and update type definitions by @github-actions[bot] in https://github.com/langgenius/dify/pull/29329 * fix: admin dislike feedback lose content by @hjlarry in https://github.com/langgenius/dify/pull/29327 * fix: agent app add tool hasn't add default params config by @iamjoel in https://github.com/langgenius/dify/pull/29330 * chore: not set empty tool config to default value by @iamjoel in https://github.com/langgenius/dify/pull/29338 * Add MCP backend codeowners by @laipz8200 in https://github.com/langgenius/dify/pull/29354 * feat: Add startup parameters for language-specific Weaviate tokenizer by @linancn in https://github.com/langgenius/dify/pull/29347 * Update refactor issue template and remove tracker by @laipz8200 in https://github.com/langgenius/dify/pull/29357 * adding llm_usage and error_type by @jubinsoni in https://github.com/langgenius/dify/pull/26546 * chore: set is_multimodal db define default = false by @fatelei in https://github.com/langgenius/dify/pull/29362 * fix: Parent instance <DocumentSegment at 0x7955b5572c90> is not bound… by @fatelei in https://github.com/langgenius/dify/pull/29377 * fix: workflow log missing trigger icon by @hjlarry in https://github.com/langgenius/dify/pull/29379 * fix(App.deleted_tools): incorrect compare between UUID and map with string-typed key. by @NieRonghua in https://github.com/langgenius/dify/pull/29340 * fix: 'list' object has no attribute 'find' by @fatelei in https://github.com/langgenius/dify/pull/29384 * fix: prevent popup blocker from blocking async window.open by @lyzno1 in https://github.com/langgenius/dify/pull/29391 * add @testing-library/user-event and create tests for external-knowledge-base/ by @CodingOnStar in https://github.com/langgenius/dify/pull/29323 * refactor: simplify plugin task handling and improve UI feedback by @ZeroZ-lab in https://github.com/langgenius/dify/pull/26293 * chore(i18n): translate i18n files and update type definitions by @github-actions[bot] in https://github.com/langgenius/dify/pull/29395 * fix: session unbound during parent-child retrieval by @JohnJyong in https://github.com/langgenius/dify/pull/29396 * fix: improve compatibility of @headlessui/react with happy-dom by ensuring HTMLElement.prototype.focus is writable by @CodingOnStar in https://github.com/langgenius/dify/pull/29399 * fix dataset multimodal field not update by @JohnJyong in https://github.com/langgenius/dify/pull/29403 * fix: Add dataset file upload restrictions by @WTW0313 in https://github.com/langgenius/dify/pull/29397 * fix: harden async window open placeholder logic by @lyzno1 in https://github.com/langgenius/dify/pull/29393 * Using SonarJS to analyze components' complexity by @CodingOnStar in https://github.com/langgenius/dify/pull/29412 * fix parent-child check when child chunk is not exist by @JohnJyong in https://github.com/langgenius/dify/pull/29426 * fix(i18n): remove unused credentialSelector translations from dataset-pipeline files by @WTW0313 in https://github.com/langgenius/dify/pull/29423 * Fix immediate window open defaults and error handling by @lyzno1 in https://github.com/langgenius/dify/pull/29417 * fix: handle potential undefined values in query_attachment_selector across multiple components by @WTW0313 in https://github.com/langgenius/dify/pull/29429 * chore: bump dify release to 1.11.0 by @laipz8200 in https://github.com/langgenius/dify/pull/29355 ## New Contributors * @0xsatoshi99 made their first contribution in https://github.com/langgenius/dify/pull/28597 * @majinghe made their first contribution in https://github.com/langgenius/dify/pull/26618 * @hsparks-codes made their first contribution in https://github.com/langgenius/dify/pull/28771 * @mxs114514 made their first contribution in https://github.com/langgenius/dify/pull/28929 * @connermo made their first contribution in https://github.com/langgenius/dify/pull/28536 * @lequocbinh04 made their first contribution in https://github.com/langgenius/dify/pull/28935 * @hyoban made their first contribution in https://github.com/langgenius/dify/pull/28937 * @yatotm made their first contribution in https://github.com/langgenius/dify/pull/28948 * @kinglisky made their first contribution in https://github.com/langgenius/dify/pull/28867 * @yodhcn made their first contribution in https://github.com/langgenius/dify/pull/29207 * @NieRonghua made their first contribution in https://github.com/langgenius/dify/pull/29340 **Full Changelog**: https://github.com/langgenius/dify/compare/1.10.1...1.11.0

v1.10.1 – Multi-Database Era Begins: MySQL Joins the Family1.10.1
? · 2025-11-26

🎉 Major new capabilities, critical stability fixes 🧩 And the long-awaited **MySQL support** finally arrives! ## 🚀 New Features ### **Infrastructure & DevOps** **MySQL adaptation for MetaDB (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:** > > ```bash > # 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) ```bash cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak ``` 2. Get the latest code from the main branch ```bash git checkout main git pull origin main ``` 3. Stop the service. Please execute in the docker directory ```bash docker compose down ``` 4. Back up data ```bash tar -cvf volumes-$(date +%s).tgz volumes ``` 5. Upgrade services ```bash 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: ```bash git checkout 1.10.1 ``` 3. Update Python dependencies: ```bash cd api uv sync ``` 4. Then, let's run the migration script: ```bash uv run flask db upgrade ``` 5. 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()` raises `AssertionError` for `SegmentType.GROUP` by @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_PROFILES` param 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

v2.0.0-beta.22.0.0-beta.2预发布
? · 2025-09-08

## Fixes - Fixed an issue in Workflow / Chatflow where using an LLM node with Memory could cause errors. - Fixed a blocking issue in non-pipeline mode when adding new Notion pages to the document list. - Fixed dark mode styling issues. --- ## Upgrade Guide > [!IMPORTANT] > If upgrading from 0.x or 1.x, you **must** run the following migration to transform existing datasource credentials. This step is required to ensure compatibility with the new version: > ```bash > uv run flask transform-datasource-credentials > ``` ### Docker Compose Deployments 1. Back up your customized docker-compose YAML file (optional) ```bash cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak ``` 2. Get the latest code from the main branch ```bash git checkout 2.0.0-beta.1 git pull origin 2.0.0-beta.1 ``` 3. Stop the service. Please execute in the docker directory ```bash docker compose down ``` 4. Back up data ```bash tar -cvf volumes-$(date +%s).tgz volumes ``` 5. Upgrade services ```bash docker compose up -d ``` 6. Migrate data after the container starts ```bash docker exec -it docker-api-1 uv run flask transform-datasource-credentials ``` ### Source Code Deployments 1. Stop the API server, Worker, and Web frontend Server. 2. Get the latest code from the release branch: ```bash git checkout 2.0.0-beta.1 ``` 3. Update Python dependencies: ```bash cd api uv sync ``` 4. Then, let's run the migration script: ```bash uv run flask db upgrade uv run flask transform-datasource-credentials ``` 5. Finally, run the API server, Worker, and Web frontend Server again.

v2.0.0-beta.22.0.0-beta.2预发布
? · 2025-09-08

## Fixes - Fixed an issue in Workflow / Chatflow where using an LLM node with Memory could cause errors. - Fixed a blocking issue in non-pipeline mode when adding new Notion pages to the document list. - Fixed dark mode styling issues. --- ## Upgrade Guide > [!IMPORTANT] > If upgrading from 0.x or 1.x, you **must** run the following migration to transform existing datasource credentials. This step is required to ensure compatibility with the new version: > ```bash > uv run flask transform-datasource-credentials > ``` ### Docker Compose Deployments 1. Back up your customized docker-compose YAML file (optional) ```bash cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak ``` 2. Get the latest code from the main branch ```bash git checkout 2.0.0-beta.1 git pull origin 2.0.0-beta.1 ``` 3. Stop the service. Please execute in the docker directory ```bash docker compose down ``` 4. Back up data ```bash tar -cvf volumes-$(date +%s).tgz volumes ``` 5. Upgrade services ```bash docker compose up -d ``` 6. Migrate data after the container starts ```bash docker exec -it docker-api-1 uv run flask transform-datasource-credentials ``` ### Source Code Deployments 1. Stop the API server, Worker, and Web frontend Server. 2. Get the latest code from the release branch: ```bash git checkout 2.0.0-beta.1 ``` 3. Update Python dependencies: ```bash cd api uv sync ``` 4. Then, let's run the migration script: ```bash uv run flask db upgrade uv run flask transform-datasource-credentials ``` 5. Finally, run the API server, Worker, and Web frontend Server again.