Congratulations on having our 1000th contributor!

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