1.9.2
v1.9.2 - Sharper, Faster, and More Reliable
This release focuses on improving stability, async performance, and developer experience. Expect cleaner internals, better workflow control, and improved observability across the stack.
[!WARNING]
A recent change has modernized the Dify integration for Weaviate (see PR #25447 and related update in PR #26964). The upgrade switches the Weaviate Python client from v3 to v4 and raises the minimum required Weaviate server version to 1.24.0 or newer. With this update:
- If you are running an older Weaviate server (e.g., v1.19.0), you must upgrade your server to at least v1.24.0 before updating Dify.
- The code now uses the new client API and supports gRPC for faster operations, which may require opening port 50051 in your Docker Compose files.
- Data migration between server versions may require re-indexing using Weaviate’s Cursor API or standard backup/restore procedures.
- The Dify documentation will be updated to provide migration steps and compatibility guidance.
Action required:
- Upgrade your Weaviate server to v1.24.0 or higher.
- Follow the migration guide to update your data and Docker configuration as described in the latest official Dify documentation.
- Ensure your environment meets the new version requirements before deploying Dify updates.
✨ Highlights
Workflow & Agents
- Pause and resume workflow graph executions (by @laipz8200 in #26585)
- Structured output now supported during LLM node streaming (by @white‑loub in #27089)
- Agent variables support drag‑and‑drop, just like workflow start nodes (by @yangzheli in #26899)
- Workflow runs can be filtered by status or re‑executed from logs (by @twjackysu in #26850, @wellCh4n in #26787)
Integrations & SDK
- OpenTelemetry + HTTPX tracing for better observability (by @qiqizjl in #26651)
- CORS config now accepts custom headers (by @laipz8200 in #27133)
Web & UI
- Faster load times by splitting and lazy‑loading constant files (by @yangzheli in #26794)
- Improved DataSources with marketplace plugin integration and filtering (by @WTW0313 in #26810)
- Added tax tooltips to pricing footer (by @CodingOnStar in #26705)
- Account creation now syncs interface language with display settings (by @feelshana in #27042)
⚙️ Core Improvements
- Enabled Pyright across multiple modules and fixed typing issues (by @asukaminato0721 in #26425, #26462, #26461)
- Refined HTTP timeout configurations and input validation (by @linancn in #26685)
- Redis queue efficiency improvements via cached checks and explicit key cleanup (by @Blackoutta in #26406)
- App models now track
updated_byandupdated_atfields (by @liugddx in #26736) - Structured output for non‑streaming and single‑step runs (by @goofy‑z in #26430)
🧩 Fixes
- Fixed duplicate chunks and dataset pagination duplication (by @kenwoodjw in #26360, @zlyszx in #25783)
- Fixed workflow token usage, LLM usage tracking, and detached user sessions (by @kenwoodjw in #26723, @laipz8200 in #27021, @liugddx in #27162)
- Resolved missing module and logical errors in Weaviate vector distance calculation (by @DhruvGorasiya in #26964, #27019)
- Fixed multi‑auth credential collisions (by @dickens88 in #26615)
- Fixed chat flickers, infinite reloads, login redirects, and loader visibility (by @DavideDelbianco in #26829, @iamjoel in #27150, #27178)
- Fixed SSRF validation in external knowledge URLs (by @mrdear in #26789)
- Corrected missing LLM output var descriptions, variable truncation logic, and EndUser relationship loading (by @hjlarry in #26648, @hj24 in #27129, @liugddx in #27162)
- Fixed dataset deselection issue when deleting a single file (by @HyaCiovo in #26502)
- Ensured correct JSON serialization and payload indentation across APIs (by @QuantumGhost in #27097, @ZeroZ‑lab in #26871)
🧹 Cleanup & DevX
- Removed unused dependencies, redundant DB commits, and dead templates (by @asukaminato0721, @yihong0618, @IthacaDream)
- Added Knip configuration for dead code detection (by @ZeroZ‑lab in #26758)
- Improved internal observability with HTTPX tracing and async telemetry (by @qiqizjl in #26651)
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).bakGet the latest code from the main branch
git checkout main git pull origin mainStop the service. Please execute in the docker directory
docker compose downBack up data
tar -cvf volumes-$(date +%s).tgz volumesUpgrade 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.2Update Python dependencies:
cd api uv syncThen, let's run the migration script:
uv run flask db upgradeFinally, run the API server, Worker, and Web frontend Server again.
What's Changed
- [Chore/Refactor] Implement lazy initialization for useState calls to prevent re-computation by @Copilot in https://github.com/langgenius/dify/pull/26252
- Refactor: Use @ns.route for tags API by @asukaminato0721 in https://github.com/langgenius/dify/pull/26357
- chore: translate i18n files and update type definitions by @github-actions[bot] in https://github.com/langgenius/dify/pull/26440
- Fix: Enable Pyright and Fix Typing Errors in Datasets Controller by @asukaminato0721 in https://github.com/langgenius/dify/pull/26425
- minor fix: fix some translations: trunk should use native, and some translation typos by @NeatGuyCoding in https://github.com/langgenius/dify/pull/26469
- Fix typing errors in core/model_runtime by @asukaminato0721 in https://github.com/langgenius/dify/pull/26462
- fix single-step runs support user input as structured_output variable values by @goofy-z in https://github.com/langgenius/dify/pull/26430
- Refactor: Enable type checking for core/ops and fix type errors by @asukaminato0721 in https://github.com/langgenius/dify/pull/26414
- improve: Explicitly delete task Redis key on completion in AppQueueManager by @Blackoutta in https://github.com/langgenius/dify/pull/26406
- chore: bump pnpm version by @lyzno1 in https://github.com/langgenius/dify/pull/26010
- Fix a typo in prompt by @casio12r in https://github.com/langgenius/dify/pull/25583
- fix: duplicate chunks by @kenwoodjw in https://github.com/langgenius/dify/pull/26360
- support returning structured output when using LLM API non streaming invocation by @goofy-z in https://github.com/langgenius/dify/pull/26451
- fix: duplicate data in datasets pagination list by @zlyszx in https://github.com/langgenius/dify/pull/25783
- fix: document is not bound to a session by @quicksandznzn in https://github.com/langgenius/dify/pull/26480
- feat(web): remove dead dependencies by @asukaminato0721 in https://github.com/langgenius/dify/pull/26484
- fix: style with self-start by @crazywoola in https://github.com/langgenius/dify/pull/26492
- add back babel/core by @asukaminato0721 in https://github.com/langgenius/dify/pull/26489
- minor fix: improve check_upgradable_plugin_task.py by @NeatGuyCoding in https://github.com/langgenius/dify/pull/26468
- Fix: Remove workflow/nodes from pyright exclusion by @asukaminato0721 in https://github.com/langgenius/dify/pull/26461
- chore: remove pnpm build from dev-setup command by @laipz8200 in https://github.com/langgenius/dify/pull/26504
- fix(datasets): Resolve issue where selected list is not updated when deleting a single file by @HyaCiovo in https://github.com/langgenius/dify/pull/26502
- fix: add missing key prop to TabPanel and initialize useRef with null by @lyzno1 in https://github.com/langgenius/dify/pull/26517
- chore(devcontainer): update Python base image from bullseye to bookworm in Dockerfile by @rluncasu in https://github.com/langgenius/dify/pull/26519
- Feature add test containers enable segments to index task by @NeatGuyCoding in https://github.com/langgenius/dify/pull/26539
- chore(web): update Next.js to 15.5.4 and unify Lexical to 0.36.2 by @lyzno1 in https://github.com/langgenius/dify/pull/26541
- Revert "fix: sync FileUploader context with props to fix inconsistent file parameter state in “View cached variables”." by @crazywoola in https://github.com/langgenius/dify/pull/26548
- Exclude tests directory from pyright type checking by @asukaminato0721 in https://github.com/langgenius/dify/pull/26496
- fix: delete useless db session commit by @yihong0618 in https://github.com/langgenius/dify/pull/26572
- Feature add test containers mail email code login task by @NeatGuyCoding in https://github.com/langgenius/dify/pull/26580
- Feature add test containers mail account deletion task 1858 by @NeatGuyCoding in https://github.com/langgenius/dify/pull/26555
- refactor(docs): Reorganize documentation with standard language codes by @lyzno1 in https://github.com/langgenius/dify/pull/26534
- chore: update Dockerfile to use Python 3.12-bookworm and refactor layout logic to utilize ELK for improved node layout by @ZeroZ-lab in https://github.com/langgenius/dify/pull/26522
- Removes the 'extensions' directory from pyrightconfig.json and fixes … by @asukaminato0721 in https://github.com/langgenius/dify/pull/26512
- chore: fix basedwright style warning for opendal.layers imports by @bowenliang123 in https://github.com/langgenius/dify/pull/26596
- chore: Raise default string length limits by @laipz8200 in https://github.com/langgenius/dify/pull/26592
- chore: Avoid directly using OpenAI dependencies by @IthacaDream in https://github.com/langgenius/dify/pull/26590
- chore: remove explicit dependency on the fastapi framework by @IthacaDream in https://github.com/langgenius/dify/pull/26609
- chore(deps): bump react-easy-crop from 5.5.0 to 5.5.3 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/26602
- chore(deps): bump azure-storage-blob from 12.13.0 to 12.26.0 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/26603
- delete unnecessary db merge by @IthacaDream in https://github.com/langgenius/dify/pull/26588
- Feature add test containers mail change mail task by @NeatGuyCoding in https://github.com/langgenius/dify/pull/26570
- Feature add test containers mail inner task by @NeatGuyCoding in https://github.com/langgenius/dify/pull/26622
- fix bug 26613: get wrong credentials with multiple authorizations plugin by @dickens88 in https://github.com/langgenius/dify/pull/26615
- fix: two functions comments doc is not right by @yihong0618 in https://github.com/langgenius/dify/pull/26624
- chore(deps-dev): bump babel-loader from 9.2.1 to 10.0.0 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/26601
- chore(deps): bump esdk-obs-python from 3.24.6.1 to 3.25.8 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/26604
- feat: optimize the page jump logic to prevent unnecessary jumps. by @ruanimal in https://github.com/langgenius/dify/pull/26481
- perf(web): improve app workflow build performance. by @zhyd1997 in https://github.com/langgenius/dify/pull/26310
- refactor: Enable type checking for dataset config manager by @asukaminato0721 in https://github.com/langgenius/dify/pull/26494
- feat: remove unused python dependency by @asukaminato0721 in https://github.com/langgenius/dify/pull/26629
- Feature add test containers mail invite task by @NeatGuyCoding in https://github.com/langgenius/dify/pull/26637
- chore: improve bool input of start node by @hjlarry in https://github.com/langgenius/dify/pull/26647
- fix: missing LLM node output var description by @hjlarry in https://github.com/langgenius/dify/pull/26648
- fix oxlint warnings by @asukaminato0721 in https://github.com/langgenius/dify/pull/26634
- fix: drop useless logger code by @yihong0618 in https://github.com/langgenius/dify/pull/26650
- feat: add HTTPX client instrumentation for OpenTelemetry by @qiqizjl in https://github.com/langgenius/dify/pull/26651
- fix: check allowed file extensions in rag transform pipeline and use set type instead of list for performance in file extensions by @bowenliang123 in https://github.com/langgenius/dify/pull/26593
- Refactor: Remove reportUnnecessaryContains from pyrightconfig.json by @asukaminato0721 in https://github.com/langgenius/dify/pull/26626
- fix: add missing toType to
toolCredentialToFormSchemasby @jingfelix in https://github.com/langgenius/dify/pull/26681 - refactor(types): remove
anyusages and strengthen typings across web and base by @ZeroZ-lab in https://github.com/langgenius/dify/pull/26677 - Refactor: Remove unnecessary casts and tighten type checking by @asukaminato0721 in https://github.com/langgenius/dify/pull/26625
- feat: update HTTP timeout configurations and enhance timeout input handling in UI by @linancn in https://github.com/langgenius/dify/pull/26685
- fix: restore array flattening behavior in iteration node by @Nov1c444 in https://github.com/langgenius/dify/pull/26695
- fix: drop useless logic by @yihong0618 in https://github.com/langgenius/dify/pull/26678
- fix: issue w/ timepicker by @crazywoola in https://github.com/langgenius/dify/pull/26696
- feat(billing): add tax information tooltips in pricing footer by @CodingOnStar in https://github.com/langgenius/dify/pull/26705
- Fix/tool provider tag internationalization by @qiaofenlin in https://github.com/langgenius/dify/pull/26710
- Update deploy-dev.yml by @JohnJyong in https://github.com/langgenius/dify/pull/26712
- chore: translate i18n files and update type definitions by @github-actions[bot] in https://github.com/langgenius/dify/pull/26709
- refactor(api): add new endpoints for workspace management and update routing by @liugddx in https://github.com/langgenius/dify/pull/26465
- fix chunks 2 by @jubinsoni in https://github.com/langgenius/dify/pull/26623
- Refactor account models to use SQLAlchemy 2.0 dataclass mapping by @asukaminato0721 in https://github.com/langgenius/dify/pull/26415
- feat: Refactor api.add_resource to @console_ns.route decorator by @asukaminato0721 in https://github.com/langgenius/dify/pull/26386
- Fix/token exp when exchange main by @GareArc in https://github.com/langgenius/dify/pull/26708
- use model_validate by @asukaminato0721 in https://github.com/langgenius/dify/pull/26182
- fix: restore None guards for _environment_variables/_conversation_variables getters by @ACAne0320 in https://github.com/langgenius/dify/pull/25633
- removing horus eye and adding mcp icon by @jubinsoni in https://github.com/langgenius/dify/pull/25323
- pan and zoom during workflow execution by @jubinsoni in https://github.com/langgenius/dify/pull/24254
- chore: bump ruff to 0.14 by @bowenliang123 in https://github.com/langgenius/dify/pull/26063
- fix: #26668 restore manual tool parameter values by @Zedk42 in https://github.com/langgenius/dify/pull/26733
- chore: update packageManager version in package.json to pnpm@10.18.2 by @ZeroZ-lab in https://github.com/langgenius/dify/pull/26731
- fix: sync aliyun icon SVG files by @hieheihei in https://github.com/langgenius/dify/pull/26719
- fix: add z-index class to PortalToFollowElemContent for proper layering in dataset extra info component by @ZeroZ-lab in https://github.com/langgenius/dify/pull/26729
- fix: Set ApiTool’s do_http_request to do not retry. by @jiangbo721 in https://github.com/langgenius/dify/pull/26721
- part of add type to orm by @asukaminato0721 in https://github.com/langgenius/dify/pull/26262
- change all to httpx by @asukaminato0721 in https://github.com/langgenius/dify/pull/26119
- remove .value by @asukaminato0721 in https://github.com/langgenius/dify/pull/26633
- Feature integrate alibabacloud mysql vector by @wangype in https://github.com/langgenius/dify/pull/25994
- chore(workflows): update deployment configurations for trigger dev by @Mairuis in https://github.com/langgenius/dify/pull/26753
- chore: remove unused dependencies for dagre from package.json and pnpm-lock.yaml by @ZeroZ-lab in https://github.com/langgenius/dify/pull/26755
- feat: add tracking for updated_by and updated_at fields in app models by @liugddx in https://github.com/langgenius/dify/pull/26736
- feat: add InlineDeleteConfirm base component by @lyzno1 in https://github.com/langgenius/dify/pull/26762
- chore: translate i18n files and update type definitions by @github-actions[bot] in https://github.com/langgenius/dify/pull/26763
- feat: migrate Python SDK to httpx with async/await support by @lyzno1 in https://github.com/langgenius/dify/pull/26726
- fix enum and type by @NeatGuyCoding in https://github.com/langgenius/dify/pull/26756
- refactor: simplify InlineDeleteConfirm component structure by @lyzno1 in https://github.com/langgenius/dify/pull/26771
- fix: happy-dom version by @crazywoola in https://github.com/langgenius/dify/pull/26764
- chore(deps): bump @lexical/utils from 0.36.2 to 0.37.0 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/26801
- chore(deps-dev): bump knip from 5.64.1 to 5.64.3 in /web by @dependabot[bot] in https://github.com/langgenius/dify/pull/26802
- chore(deps): bump opik from 1.7.43 to 1.8.72 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/26804
- Fix typo: reponse to response by @opeco17 in https://github.com/langgenius/dify/pull/26792
- Issue 23579 by @asukaminato0721 in https://github.com/langgenius/dify/pull/26777
- perf(web): split constant files to improve web performance by @yangzheli in https://github.com/langgenius/dify/pull/26794
- refactor: use dynamic max characters for chunking in extractors by @liugddx in https://github.com/langgenius/dify/pull/26782
- fix RetrievalMethod StrEnum by @asukaminato0721 in https://github.com/langgenius/dify/pull/26768
- refactor: use libs.login current_user in console controllers by @AsperforMias in https://github.com/langgenius/dify/pull/26745
- feat: enhance DataSources component with marketplace plugin integration and search filtering by @WTW0313 in https://github.com/langgenius/dify/pull/26810
- fix: update tooltip for chunk structure in knowledge base component by @WTW0313 in https://github.com/langgenius/dify/pull/26808
- fix: invalid data source list in plugin refresh hook by @WTW0313 in https://github.com/langgenius/dify/pull/26813
- fix: external knowledge url check ssrf by @mrdear in https://github.com/langgenius/dify/pull/26789
- fix: use enum .value strings in retrieval-setting API to fix JSON serialization error by @qiaofenlin in https://github.com/langgenius/dify/pull/26785
- Fix/web app permission check by @douxc in https://github.com/langgenius/dify/pull/26821
- chore: Correct padding in embedded chatbot by @DavideDelbianco in https://github.com/langgenius/dify/pull/26832
- fix: Don't hide chat streaming loader on '\n' content by @DavideDelbianco in https://github.com/langgenius/dify/pull/26829
- fix: avoid closing shared session during embeddings by @minglu7 in https://github.com/langgenius/dify/pull/26830
- chore: Fix chat-input-area resize by @DavideDelbianco in https://github.com/langgenius/dify/pull/26824
- feat: Cache AppQueueManager.is_stopped() to reduce unnecessary Redis … by @ruanimal in https://github.com/langgenius/dify/pull/26778
- chore: Don't show chat input area scrollbar overflow by @DavideDelbianco in https://github.com/langgenius/dify/pull/26828
- chore: Fix 25795 by @DavideDelbianco in https://github.com/langgenius/dify/pull/26823
- fix: files/support-type JSON serialization error by @hieheihei in https://github.com/langgenius/dify/pull/26842
- Use hook to get userid by @asukaminato0721 in https://github.com/langgenius/dify/pull/26839
- fix: Chat Opener visibility flickering by @DavideDelbianco in https://github.com/langgenius/dify/pull/26836
- refactor: streamline database session usage in batch_create_segment_to_index_task by @liugddx in https://github.com/langgenius/dify/pull/26795
- Add timeout so any plugin daemon call (including the SSE path) that legitimately takes longer than 5s would right. by @Eric-Guo in https://github.com/langgenius/dify/pull/26852
- Feature add test containers mail owner transfer task by @NeatGuyCoding in https://github.com/langgenius/dify/pull/26854
- fix: Validate transfer method in file mapping and improve file input handling by @liugddx in https://github.com/langgenius/dify/pull/26848
- fix: Do not show the toggle button for chat input when all input hidden by @DavideDelbianco in https://github.com/langgenius/dify/pull/26826
- feat: add Tencent Cloud APM tracing integration by @minimAluminiumalism in https://github.com/langgenius/dify/pull/25657
- Weaviate update version by @DhruvGorasiya in https://github.com/langgenius/dify/pull/25447
- chore: translate i18n files and update type definitions by @github-actions[bot] in https://github.com/langgenius/dify/pull/26859
- fix: use account id in workflow app log filter by @hj24 in https://github.com/langgenius/dify/pull/26811
- feat: add Knip configuration for dead code detection and remove unused icon components by @ZeroZ-lab in https://github.com/langgenius/dify/pull/26758
- fix: correct indentation in JSON payloads by @ZeroZ-lab in https://github.com/langgenius/dify/pull/26871
- fix: when create provider credential set the provider record to vaild by @hjlarry in https://github.com/langgenius/dify/pull/26868
- example to auto rollback by @asukaminato0721 in https://github.com/langgenius/dify/pull/26200
- Remove unused after_request hooks from console API keys by @laipz8200 in https://github.com/langgenius/dify/pull/26896
- Fix/remove logo in withoutbrand template by @TonloOO in https://github.com/langgenius/dify/pull/26882
- minor fix: test cases for alibabacloud mysql and chinese translations by @NeatGuyCoding in https://github.com/langgenius/dify/pull/26902
- Normalize null metadata handling in tool entities by @laipz8200 in https://github.com/langgenius/dify/pull/26890
- fix: replace CodeGroup's POST /meta with GET /site by @yamachu in https://github.com/langgenius/dify/pull/26886
- chore: bump pnpm version by @lyzno1 in https://github.com/langgenius/dify/pull/26905
- chore: remove redundant dependencies by @Nov1c444 in https://github.com/langgenius/dify/pull/26907
- fix: workflow token usage by @kenwoodjw in https://github.com/langgenius/dify/pull/26723
- refactor: Update Firecrawl to use v2 API by @ftonato in https://github.com/langgenius/dify/pull/24734
- allow editing of hidden inputs in preview by @jubinsoni in https://github.com/langgenius/dify/pull/24370
- feat(agent): similar to the start node of workflow, agent variables also support drag-and-drop by @yangzheli in https://github.com/langgenius/dify/pull/26899
- chore: translate i18n files and update type definitions by @github-actions[bot] in https://github.com/langgenius/dify/pull/26916
- chore: add type-check script to package.json for TypeScript validation by @ZeroZ-lab in https://github.com/langgenius/dify/pull/26929
- fix: enhance dataset menu and add service API translations by @WTW0313 in https://github.com/langgenius/dify/pull/26931
- Fix: check external commands after node completion by @laipz8200 in https://github.com/langgenius/dify/pull/26891
- chore: remove unused icon components and related features from the co… by @ZeroZ-lab in https://github.com/langgenius/dify/pull/26933
- add app mode for message by @zyssyz123 in https://github.com/langgenius/dify/pull/26876
- fix plugin installation permissions when using a local pkg by @zhangx1n in https://github.com/langgenius/dify/pull/26822
- feat: run with params from logs by @wellCh4n in https://github.com/langgenius/dify/pull/26787
- fix: update load balancing configurations with new credential IDs and… by @GareArc in https://github.com/langgenius/dify/pull/26900
- use deco to avoid current_user by @asukaminato0721 in https://github.com/langgenius/dify/pull/26077
- refactor: update TypeScript definitions for custom JSX elements and clean up global declarations in emoji picker by @ZeroZ-lab in https://github.com/langgenius/dify/pull/26985
- Fix: avoid duplicate response_chunk update in
convert_stream_simple_responseby @hyongtao-code in
These notes run past the length kept in the archive. The rest is on the publisher’s page.