1.9.1

langgenius/dify1.9.1Sep 29, 2025by laipz8200

Upgrading?

Release notes summary

Dify 1.9.1 celebrates the project's 1,000th contributor and delivers infrastructure, pipeline, graph engine, SDK, and UI improvements. It upgrades Next.js to 15.5 with Turbopack in development, adds language support to built-in pipeline templates, and includes many stability fixes.

Key Highlights

  • Next.js upgraded to 15.5 with Turbopack for faster development builds.
  • Built-in pipeline templates now support language configuration.
  • Graph engine blocks response nodes during streaming to avoid unintended outputs.
  • Python SDK gains 27 new Service API endpoints.
  • Marketplace API requests include X-Dify-Version headers for traceability.

New Features

  • Next.js 15.5 and Turbopack development mode
  • Language support for built-in pipeline templates
  • Graph engine response-node blocking during streaming
  • Python SDK expansion with 27 Service API endpoints
  • X-Dify-Version marketplace API headers

Full Release Notes

## Congratulations on having our 1000th contributor!

<img width="319" height="168" alt="image" src="https://github.com/user-attachments/assets/10a7a78a-a49e-4886-a1fc-f44e233f76d3" />

## 🚀 New Features

- **Infrastructure & DevOps**:
  - Next.js upgraded to 15.5, now leveraging Turbopack in development for a faster, more modern build pipeline by @17hz in #24346.
  - Provided `X-Dify-Version` headers in marketplace API access for better traceability by @RockChinQ in #26210.
  - Security reporting improvements, with new sec report workflow added by @crazywoola in #26313.

- **Pipelines & Engines**:
  - Built-in pipeline templates now support language configuration, unlocking multilingual deployments by @WTW0313 in #26124.
  - Graph engine now blocks response nodes during streaming to avoid unintended outputs by @laipz8200 in #26364 / #26377.

- **Community & Documentation**:
  - Streamlined `AGENTS.md` contribution guidelines by @laipz8200 in #26308.
  - Updated Graph Engine README docs for clarity by @hjlarry in #26337.

## 🛠 Fixes & Improvements

- **Debugging & Logging**:
  - Fixed NodeRunRetryEvent debug logging not working properly in Graph Engine by @quicksandznzn in #26085.
  - Fixed LLM node losing Flask context during parallel iterations, ensuring stable concurrent runs by @quicksandznzn in #26098.
  - Fixed agent-strategy prompt generator error by @quicksandznzn in #26278.

- **Search & Parsing**:
  - Fixed `full_text_search` name reliability by @JohnJyong in #26104.
  - Corrected value extraction handling in IME composition for search input fields by @yangzheli in #26147.
  - OceanBase parser selection explanation clarified by @longbingljw in #26071.

- **Pipeline & Workflow**:
  - Fixed workflow variable splitting logic (requires ≥2 parts) by @zhanluxianshen in #26355.
  - Fixed tool node attribute `tool_node_version` judgment error causing compatibility issues by @goofy-z in #26274.
  - Fixed iteration conversation variables not syncing correctly by @laipz8200 in #26368.
  - Fixed Knowledge Base node crash when `retrieval_model` is null by @quicksandznzn in #26397.
  - Fixed workflow node mutation issues, preventing props from being incorrectly altered by @hyongtao-code in #26266.
  - Removed restrictions on adding workflow nodes by @zxhlyh in #26218.

- **File Handling**:
  - Fixed remote filename handling so `Content-Disposition: inline` becomes `inline` instead of incorrect parsing by @sorphwer in #25877.
  - Synced FileUploader context with props to fix inconsistent file parameters in cached variable view by @Woo0ood in #26199.
  - Fixed variable not found error (#26144) by @sqewad in #26155.
  - Fixed db connection error in `embed_documents()` by @AkisAya in #26196.
  - Fixed model list refresh when credentials change by @zxhlyh in #26421.
  - Fixed retrieval configuration handling and missing `vector_setting` in dataset components by @WTW0313 in #26361 / #26380.
  - Fixed ChatClient `audio_to_text` `files` keyword bug by @EchterTimo in #26317.
  - Added missing import `IO` in client.py by @EchterTimo in #26389.
  - Removed `FILES_URL` in default .yaml settings by @JoJohanse in #26410.

- **Performance & Networking**:
  - Improved pooling of `httpx` clients for requests to code sandbox and SSRF protection by @Blackoutta in #26052.
  - Distributed plugin auto-upgrade tasks with concurrency control by @RockChinQ in #26282.
  - Switched plugin auto-upgrade cache to Redis for reliability by @RockChinQ in #26356.
  - Fixed plugin detail panel not showing when >100 plugins are installed by @JzoNgKVO in #26405.
  - Debounce reference fix for performance stability by @crazywoola in #26433.

- **UI/UX & Display**:
  - Fixed lingering display-related issues (translations, UI consistency) by @hjlarry in #26335.
  - Fixed broken CSS animations under Turbopack by naming unnamed animations in CSS modules by @lyzno1 in #26408.
  - Fixed verification code input using wrong `maxLength` prop by @hyongtao-code in #26244.
  - Fixed array-only filtering in List Operator picker, removed file-children fallback, aligned child types by @Woo0ood in #26240.
  - Fixed translation inconsistencies in ja-JP: “ナレッジベース” vs. “ナレッジの名前とアイコン” by @mshr-h in #26243 and @NeatGuyCoding in #26270.
  - Improved “time from now” i18n support by @hjlarry in #26328.
  - Standardized dataset-pipeline i18n terminology by @lyzno1 in #26353.

- **Code & Components**:
  - Refactored component exports for consistency by @ZeroZ-lab in #26033.
  - Refactored router to apply `ns.route` style by @laipz8200 in #26339.
  - Refactored lint scripts to remove duplication and simplify naming by @lyzno1 in #26259.
  - Applied `@console_ns.route` decorators to RAG pipeline controllers (internal refactor) by @Copilot in #26348.
  - Added missing `type="button"` attributes in components by @Copilot in #26249.

---

## 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
   ```

### 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.9.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
* fix(api): graph engine debug logging NodeRunRetryEvent not effective by @quicksandznzn in https://github.com/langgenius/dify/pull/26085
* fix full_text_search name by @JohnJyong in https://github.com/langgenius/dify/pull/26104
* bump nextjs to 15.5 and turbopack for development mode by @17hz in https://github.com/langgenius/dify/pull/24346
* chore: refactor component exports for consistency by @ZeroZ-lab in https://github.com/langgenius/dify/pull/26033
* fix:add some explanation for oceanbase parser selection by @longbingljw in https://github.com/langgenius/dify/pull/26071
* feat(pipeline): add language support to built-in pipeline templates and update related components by @WTW0313 in https://github.com/langgenius/dify/pull/26124
* ci: Add hotfix/** branches to build-push workflow triggers by @QuantumGhost in https://github.com/langgenius/dify/pull/26129
* fix(api): Fix variable truncation for `list[File]` value in output mapping by @QuantumGhost in https://github.com/langgenius/dify/pull/26133
* one example of Session by @asukaminato0721 in https://github.com/langgenius/dify/pull/24135
* fix(api):LLM node losing Flask context during parallel iterations by @quicksandznzn in https://github.com/langgenius/dify/pull/26098
* fix(search-input): ensure proper value extraction in composition end handler by @yangzheli in https://github.com/langgenius/dify/pull/26147
* delete end_user check by @JohnJyong in https://github.com/langgenius/dify/pull/26187
* improve: pooling httpx clients for requests to code sandbox and ssrf by @Blackoutta in https://github.com/langgenius/dify/pull/26052
* fix: remote filename will be 'inline' if Content-Disposition: inline by @sorphwer in https://github.com/langgenius/dify/pull/25877
* perf: provide X-Dify-Version for marketplace api access by @RockChinQ in https://github.com/langgenius/dify/pull/26210
* Chore/remove add node restrict of workflow by @zxhlyh in https://github.com/langgenius/dify/pull/26218
* Fix array-only filtering in List Operator picker; remove file children fallback and align child types. by @Woo0ood in https://github.com/langgenius/dify/pull/26240
* fix: sync FileUploader context with props to fix inconsistent file parameter state in “View cached variables”. by @Woo0ood in https://github.com/langgenius/dify/pull/26199
* fix: add echarts and zrender to transpilePackages for ESM compatibility by @lyzno1 in https://github.com/langgenius/dify/pull/26208
* chore: fix inaccurate translation in ja-JP by @mshr-h in https://github.com/langgenius/dify/pull/26243
* aliyun_trace: unify the span attribute & compatible CMS 2.0 endpoint by @hieheihei in https://github.com/langgenius/dify/pull/26194
* fix(api): resolve error in agent‑strategy prompt generator by @quicksandznzn in https://github.com/langgenius/dify/pull/26278
* minor: fix translation with the key value uses 「ナレッジの名前とアイコン」 while the rest of the file uses 「ナレッジベース」 by @NeatGuyCoding in https://github.com/langgenius/dify/pull/26270
* refactor(web): simplify lint scripts, remove duplicates and standardize naming by @lyzno1 in https://github.com/langgenius/dify/pull/26259
* fmt first by @asukaminato0721 in https://github.com/langgenius/dify/pull/26221
* fix: resolve UUID parsing error for default user session lookup by @Cluas in https://github.com/langgenius/dify/pull/26109
* Fix: avoid mutating node props by @hyongtao-code in https://github.com/langgenius/dify/pull/26266
* update gen_ai semconv for aliyun trace by @hieheihei in https://github.com/langgenius/dify/pull/26288
* chore: streamline AGENTS.md guidance by @laipz8200 in https://github.com/langgenius/dify/pull/26308
* rm assigned but unused by @asukaminato0721 in https://github.com/langgenius/dify/pull/25639
* Chore/add sec report by @crazywoola in https://github.com/langgenius/dify/pull/26313
* Fix ChatClient.audio_to_text files keyword to make it work by @EchterTimo in https://github.com/langgenius/dify/pull/26317
* perf: distribute concurrent plugin auto upgrade tasks by @RockChinQ in https://github.com/langgenius/dify/pull/26282
* fix compatibility problem caused by tool node attribute 'tool_node_version' judgement error  by @goofy-z in https://github.com/langgenius/dify/pull/26274
* refactor(router): apply ns.route style by @laipz8200 in https://github.com/langgenius/dify/pull/26339
* fix: some display-related issues by @hjlarry in https://github.com/langgenius/dify/pull/26335
* chore:  time from now i18n support by @hjlarry in https://github.com/langgenius/dify/pull/26328
* doc: fix graph engine readme by @hjlarry in https://github.com/langgenius/dify/pull/26337
* [Chore/Refactor] Add missing 'type' attribute on 'button' components by @Copilot in https://github.com/langgenius/dify/pull/26249
* Fix: use correct maxLength prop for verification code input by @hyongtao-code in https://github.com/langgenius/dify/pull/26244
* fix db connection error in embed_documents() by @AkisAya in https://github.com/langgenius/dify/pull/26196
* refactor: standardize dataset-pipeline i18n terminology consistency by @lyzno1 in https://github.com/langgenius/dify/pull/26353
* fix workflow variable split judge. by @zhanluxianshen in https://github.com/langgenius/dify/pull/26355
* fix(graph_engine): block response nodes during streaming by @laipz8200 in https://github.com/langgenius/dify/pull/26364
* test(graph_engine): block response nodes during streaming by @laipz8200 in https://github.com/langgenius/dify/pull/26377
* [Chore/Refactor] Apply @console_ns.route decorators to RAG pipeline controllers by @Copilot in https://github.com/langgenius/dify/pull/26348
* Fix: Knowledge Base node crash when retrieval_model is null by @quicksandznzn in https://github.com/langgenius/dify/pull/26397
* fix: switch plugin auto upgrade cache to redis by @RockChinQ in https://github.com/langgenius/dify/pull/26356
* Fix plugin detail panel  not show when installed plugins more than 100 by @JzoNgKVO in https://github.com/langgenius/dify/pull/26405
* fix(turbopack): fix animation issues with unnamed animations in CSS modules by @lyzno1 in https://github.com/langgenius/dify/pull/26408
* chore(deps): bump oracledb from 3.0.0 to 3.3.0 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/26396
* chore(deps): bump cos-python-sdk-v5 from 1.9.30 to 1.9.38 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/26395
* chore(deps-dev): bump @testing-library/jest-dom from 6.6.3 to 6.8.0 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/26393
* chore(deps-dev): bump @eslint/js from 9.31.0 to 9.36.0 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/26392
* Add missing import "IO" in client.py by @EchterTimo in https://github.com/langgenius/dify/pull/26389
* fix: model list refresh when change credential by @zxhlyh in https://github.com/langgenius/dify/pull/26421
* Fixes#26332 Remove FILES_URL in default .yaml settings  by @JoJohanse in https://github.com/langgenius/dify/pull/26410
* fix: Fix retrieval configuration handling in dataset components by @WTW0313 in https://github.com/langgenius/dify/pull/26361
* Fix typing errors in dataset API by @asukaminato0721 in https://github.com/langgenius/dify/pull/26424
* fix: Fix vector_setting not found error by @WTW0313 in https://github.com/langgenius/dify/pull/26380
* fix: debounce ref by @crazywoola in https://github.com/langgenius/dify/pull/26433
* fix: variable not found #26144 by @sqewad in https://github.com/langgenius/dify/pull/26155
* fix(workflow): sync iteration conversation variables by @laipz8200 in https://github.com/langgenius/dify/pull/26368
* Fix: Remove core/tools from pyrightconfig.json and fix type errors by @asukaminato0721 in https://github.com/langgenius/dify/pull/26413
* feat(sdk): enhance Python SDK with 27 new Service API endpoints by @lyzno1 in https://github.com/langgenius/dify/pull/26401
* feat(typing): Remove "libs" from pyright exclude and fix typing errors by @asukaminato0721 in https://github.com/langgenius/dify/pull/26423
* Bump release references to 1.9.1 by @laipz8200 in https://github.com/langgenius/dify/pull/26453

## New Contributors
* @Blackoutta made their first contribution in https://github.com/langgenius/dify/pull/26052
* @mshr-h made their first contribution in https://github.com/langgenius/dify/pull/26243
* @Copilot made their first contribution in https://github.com/langgenius/dify/pull/26249
* @JoJohanse made their first contribution in https://github.com/langgenius/dify/pull/26410
* @sqewad made their first contribution in https://github.com/langgenius/dify/pull/26155

**Full Changelog**: https://github.com/langgenius/dify/compare/1.9.0...1.9.1

Related Repositories