🚀 What's New in v1.13.3?
Our latest patch release, v1.13.3, focuses on stability and correctness across workflow execution, streaming, and knowledge retrieval. Here's a quick look at the most important updates:
🎬 New Features
- Workflow Configuration: Added variable-reference support for model parameters in LLM, Question Classifier, and Variable Extractor nodes by @scdeng in #33082.
🛠️ Bug Fixes
- Streaming Reliability: Fixed
StreamsBroadcastChannelreplay and concurrency issues to keep frontend/backend event delivery stable by @QuantumGhost in #34030 and #34061. - Workflow Editor Behavior: Fixed pasted nodes retaining Loop/Iteration metadata and prevented
HumanInputnodes from being pasted into invalid containers by @majiayu000 and @hjlarry in #29983 and #34077. - Runtime Execution: Restored prompt message transformation logic and corrected
max_retries=0handling for executor-driven HTTP Request execution by @QuantumGhost, @fatelei, and @kurokobo in #33666, #33619, and #33688. - Knowledge Retrieval: Preserved citation metadata in web responses, fixed crashes when dataset icon metadata is missing, corrected hit-count query filtering, and restored indexed document chunk previews by @Theysua, @copilot-swe-agent, and @fatelei in #33778, #33907, #33757, and #33942.
🔧 Under the Hood
- Patch Stability: This release prioritizes targeted fixes for workflow runtime behavior, real-time streaming, and knowledge base usability for teams upgrading from v1.13.2.
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.13.3
-
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
- refactor(web): number inputs to use Base UI NumberField by @lyzno1 in #33539
- feat(web): add base ui toast by @lyzno1 in #33569
- chore(i18n): sync translations with en-US by @github-actions[bot] in #33585
- chore(i18n): sync translations with en-US by @github-actions[bot] in #33586
- refactor(api): Query API to select function_1 by @RenzoMXD in #33565
- refactor: replace sa.String with EnumText for mapped_columns by @tmimmanuel in #33547
- refactor(api): replace dict/Mapping with TypedDict in core/app by @statxc in #33601
- chore(deps): bump pyasn1 from 0.6.2 to 0.6.3 in /api by @dependabot[bot] in #33611
- refactor(api): replace dict/Mapping with TypedDict in core/tools by @bittoby in #33610
- refactor: use EnumText for dataset and replace string literals 4 by @tmimmanuel in #33606
- chore(deps): bump next packages to 16.1.7 by @lyzno1 in #33616
- fix: tighten toast typing and restore focus visibility by @lyzno1 in #33591
- chore: update deps by @hyoban in #33618
- fix(toast): refine stacked hover and focus styles by @lyzno1 in #33620
- fix: fix max_retries is hardcode by @fatelei in #33619
- feat: enhance model plugin workflow checks and model provider management UX by @lyzno1 in #33289
- refactor: route low-cost next modules through compat re-exports by @lyzno1 in #33622
- refactor(api): replace dict/Mapping with TypedDict in core/rag retrieval_service.py by @bittoby in #33615
- refactor(web): move component tests into sibling tests directories by @CodingOnStar in #33623
- refactor: route next/link through compat re-export by @lyzno1 in #33632
- refactor(api): replace dict with SummaryIndexSettingDict TypedDict in core/rag by @bittoby in #33633
- refactor: use EnumText in provider models by @tmimmanuel in #33634
- refactor: route next/navigation through compat re-export by @lyzno1 in #33636
- fix: add responding error information when obtain pipeline template detail failed by @FFXN in #33628
- fix: clarify webhook debug endpoint behavior by @laipz8200 in #33597
- chore: compatiable end-user and end_user by @fatelei in #33638
- test(workflow): reorganize specs into tests and align with shared test infrastructure by @CodingOnStar in #33625
- refactor(web): migrate core toast call sites to base ui toast by @lyzno1 in #33643
- feat: remove weaviate client del method by @fatelei in #33593
- fix: sync workflow description and name to MCP server on update by @Desel72 in #33637
- fix(api): Preserving the content transform logic in fetch_prompt_messages by @QuantumGhost in #33666
- refactor(api): type default_retrieval_model with DefaultRetrievalModelDict in core/rag by @bittoby in #33676
- chore: bump version to 1.13.2 by @QuantumGhost in #33681
- refactor: move to std-semver by @hyoban in #33682
- ci: revert agent reporter by @hyoban in #33685
- fix: leaked set timeout by @hyoban in #33692
- refactor: EnumText for preferred_provider_type MessageChain, Banner by @tmimmanuel in #33696
- chore(deps): bump ujson from 5.9.0 to 5.12.0 in /api by @dependabot[bot] in #33683
- refactor(api): type Firecrawl API responses with TypedDict by @bittoby in #33691
- chore(deps): bump pypdf from 6.8.0 to 6.9.1 in /api by @dependabot[bot] in #33698
- refactor(api): type WaterCrawl API responses with TypedDict by @bittoby in #33700
- chore: update deps by @hyoban in #33706
- feat(web): add base ui scroll area primitive by @lyzno1 in #33727
- ci: use codecov by @hyoban in #33723
- fix: compatible with emoji/object icons in plugin card icon resolver by @IthacaDream in #33732
- refactor: use EnumText(StorageType) for UploadFile.storage_type by @tmimmanuel in #33728
- feat(confirm): input app name for app deletion confirmation by @bowenliang123 in #33660
- refactor(web): sidebar app list to scroll area component by @lyzno1 in #33733
- refactor: migrate db.session.query to select in infra layer by @RenzoMXD in #33694
- fix: pass default root to OpenDAL Operator for fs scheme by @RickDamon in #33678
- refactor(web): migrate auth toast calls to ui toast by @lyzno1 in #33744
- chore: add pytest XML and branch coverage reports by @laipz8200 in #33730
- style(scroll-bar): align design by @lyzno1 in #33751
- fix(api): add
trigger_infoto WorkflowNodeExecutionMetadataKey by @QuantumGhost in #33753 - fix: use RetrievalModel type for retrieval_model field in HitTestingPayload by @lyfuci in #33750
- fix: preserve timing metrics in parallel iteration by @BeautyyuYanli in #33216
- test(workflow): add unit tests for workflow components by @CodingOnStar in #33741
- fix: Add dataset_id filters to the hit_count's subqueries by @FFXN in #33757
- refactor: simplify the scroll area API for sidebar layouts by @lyzno1 in #33761
- chore(i18n): sync translations with en-US by @github-actions[bot] in #33749
- fix(tests): correct keyword arguments in tool provider test constructors by @xr843 in #33767
- refactor: use EnumText for MessageFeedback and MessageFile columns by @tmimmanuel in #33738
- refactor(api): type bare dict/list annotations in remaining rag folder by @bittoby in #33775
- refactor: migrate db.session.query to select in inner_api and web controllers by @RenzoMXD in #33774
- fix: remove legacy z-index overrides on model config popup by @xr843 in #33769
- fix(api): preserve citation metadata in web responses by @Theysua in #33778
- fix: stop think block timer in historical conversations by @Lubrsy706 in #33083
- refactor: migrate tag filter overlay and remove dead z-index override prop by @lyzno1 in #33791
- refactor(toast): migrate dataset-pipeline to new ui toast API and extract i18n by @lyzno1 in #33794
- fix: add max_retries=0 for executor by @kurokobo in #33688
- refactor: migrate high-risk overlay follow-up selectors by @lyzno1 in #33795
- chore(i18n): sync translations with en-US by @github-actions[bot] in #33796
- refactor(web): migrate tools/MCP/external-knowledge toast usage to UI toast and add i18n by @lyzno1 in #33797
- fix: adding a restore API for version control on workflow draft by @BeautyyuYanli in #33582
- chore(i18n): sync translations with en-US by @github-actions[bot] in #33804
- docs: add automated agent contribution note to CONTRIBUTING.md 🤖🤖🤖 by @yuchengpersonal in #33809
- refactor(web): update frontend toast call sites to use the new shortcut API by @lyzno1 in #33808
- chore: neutral PR opt-in instructions by @asukaminato0721 in #33817
- fix(chat): fix image re-render due to opener remount by @WTW0313 in #33816
- docs(web): update dev guide by @hyoban in #33815
- chore(deps): bump flatted from 3.4.1 to 3.4.2 in /sdks/nodejs-client by @dependabot[bot] in #33821
- chore: enable erasableOnly in lint by @jubinsoni in #31487
- refactor(workspace): optimize /workspaces plan resolution for SaaS and enterprise with resilient fallback by @lin-snow in #33788
- refactor(api): type workflow service dicts with TypedDict by @bittoby in #33829
- refactor: select in console auth, setup and apikey by @RenzoMXD in #33790
- refactor(api): type tool service dicts with TypedDict by @bittoby in #33836
- refactor: use EnumText for Conversation/Message invoke_from and from_source by @tmimmanuel in #33832
- refactor: migrate workflow run repository tests from mocks to … by @YB0y in #33837
- refactor: migrate workflow run repository unit tests from mocks to te… by @Desel72 in #33843
- refactor: select in console explore and workspace controllers by @RenzoMXD in #33842
- chore: use selectinload instead of joinedload in conversation query by @caoergou in #33014
- fix: test error by matching pkg versioin with docker compose by @ckstck in #33857
- perf: tidb_on_qdrant_vector delete_by_ids use batch delete by @fatelei in #33846
- test: added for core module moderation, repositories, schemas by @mahammadasim in #32514
- test: add unit tests for services-part-1 by @poojanInfocusp in #33050
- test: improve code-cov for controller tests by @cryptus-neoxys in #33225
- chore(deps): bump anthropics/claude-code-action from 1.0.75 to 1.0.76 in the github-actions-dependencies group by @dependabot[bot] in #33875
- chore: add guard tests for billing by @hj24 in #33831
- fix(i18n): standardize datetime display to 24-hour format on /apps page by @bowenliang123 in #33847
- feat(build): set root directory for turbopack configuration by @bowenliang123 in #33812
- chore: update deps by @hyoban in #33862
- fix: remove contradictory optional chain in chat/utils.ts by @yoloni-9527 in #33841
- refactor(web): migrate dataset-related toast callsites to base/ui/toast and update tests by @lyzno1 in #33892
- fix: type object 'str' has no attribute 'LLM' by @fatelei in #33899
- chore(i18n): sync translations with en-US by @github-actions[bot] in #33894
- fix: handle null email/name from GitHub API for private-email users by @Copilot in #33882
- docs: EU AI Act compliance guide for Dify deployers by @BipinRimal314 in #33838
- refactor: migrate credit pool service tests to testcontainers by @Desel72 in #33898
- refactor: use EnumText for Conversation/Message invoke_from and from_source by @tmimmanuel in #33901
- refactor: migrate workflow deletion tests to testcontainers by @Desel72 in #33904
- refactor: migrate conversation variable updater tests to testcontainers by @Desel72 in #33903
- test: migrate dataset permission tests to testcontainers by @Desel72 in #33906
- chore(deps): bump boto3 from 1.42.68 to 1.42.73 in /api in the storage group by @dependabot[bot] in #33871
- chore(deps): bump litellm from 1.82.2 to 1.82.6 in /api in the llm group by @dependabot[bot] in #33870
- chore(deps): bump google-api-python-client from 2.192.0 to 2.193.0 in /api in the google group by @dependabot[bot] in #33868
- chore(deps-dev): update pytest-cov requirement from ~=7.0.0 to ~=7.1.0 in /api in the dev group by @dependabot[bot] in #33872
- chore(deps): bump pydantic-extra-types from 2.11.0 to 2.11.1 in /api in the pydantic group by @dependabot[bot] in #33876
- chore: remove log level reset by @fatelei in #33914
- refactor: migrate attachment service tests to testcontainers by @Desel72 in #33900
- refactor(web): remove legacy data-source settings by @lyzno1 in #33905
- fix: crash when dataset icon_info is undefined in Knowledge Retrieval node by @Copilot in #33907
- chore(deps): bump the llm group across 1 directory with 2 updates by @dependabot[bot] in #33916
- chore(deps): bump google-cloud-aiplatform from 1.141.0 to 1.142.0 in /api in the google group across 1 directory by @dependabot[bot] in #33917
- chore(deps): bump the python-packages group in /api with 4 updates by @dependabot[bot] in #33873
- refactor: select in console app message controller by @RenzoMXD in #33893
- refactor: rewrite docker/dify-env-sync.sh in Python for better maintainability by @mahmoodhamdi in #33466
- chore(deps-dev): bump the storage group across 1 directory with 2 updates by @dependabot[bot] in #33915
- chore(dep): move hono and @hono/node-server to devDependencies by @bowenliang123 in #33742
- chore(deps-dev): bump alibabacloud-gpdb20160503 from 3.8.3 to 5.1.0 in /api in the vdb group by @dependabot[bot] in #33879
- chore(deps-dev): bump the dev group across 1 directory with 12 updates by @dependabot[bot] in #33919
- refactor(web): migrate members invite overlays to base ui by @lyzno1 in #33922
- refactor: migrate execution extra content repository tests from mocks to testcontainers by @Desel72 in #33852
- test(workflow): add unit tests for workflow components by @CodingOnStar in #33910
- feat: enhance banner tracking with impression and click events by @CodingOnStar in #33926
- refactor(web): replace MediaType enum with const object by @Desel72 in #33834
- feat: squid force ipv4 by @fatelei in #33556
- test(workflow): improve dataset item tests with edit and remove functionality by @CodingOnStar in #33937
- ci: fix AttributeError: 'Flask' object has no attribute 'login_manager' FAILED #33891 by @asukaminato0721 in #33896
- fix: do not block upsert for baidu vdb by @letterbeezps in #33280
- test: migrate file service zip and lookup tests to testcontainers by @Desel72 in #33944
- test: migrate end user service batch tests to testcontainers by @Desel72 in #33947
- test: remove mock-based tests superseded by testcontainers by @Desel72 in #33946
- test: migrate batch update document status tests to testcontainers by @Desel72 in #33951
- feat(firecrawl): follow pagination when crawl status is completed by @kurokobo in #33864
- fix(i18n): comprehensive Turkish (tr-TR) translation fixes and missing keys by @bakiburakogun in #33885
- test: migrate dataset service create dataset tests to testcontainers by @Desel72 in #33945
- test: migrate api based extension service tests to testcontainers by @Desel72 in #33952
- test: migrate saved message service tests to testcontainers by @Desel72 in #33949
- refactor: use EnumText for WorkflowAppLog.created_from and WorkflowArchiveLog columns by @tmimmanuel in #33954
- refactor: use EnumText for ApiToken.type by @tmimmanuel in #33961
- test: remove mock tests superseded by testcontainers by @Desel72 in #33957
- test: migrate workflow tools manage service tests to testcontainers by @Desel72 in #33955
- refactor: use EnumText for TenantCreditPool.pool_type by @tmimmanuel in #33959
- refactor: select in remaining console app controllers by @RenzoMXD in #33969
- test: migrate api tools manage service tests to testcontainers by @Desel72 in #33956
- test: migrate oauth server service tests to testcontainers by @Desel72 in #33958
- refactor: use EnumText for DocumentSegment.type by @tmimmanuel in #33979
- refactor: use EnumText for TidbAuthBinding.status and MessageFile.type by @tmimmanuel in #33975
- test: migrate password reset tests to testcontainers by @Desel72 in #33974
- fix(web): update account settings header by @lyzno1 in #33965
- fix: fix chunk not display in indexed document by @fatelei in #33942
- ci: update actions version, fix cache by @hyoban in #33950
- fix(sdk): patch flatted vulnerability in nodejs client lockfile by @lyzno1 in #33996
- refactor(api): type auth service credentials with TypedDict by @bittoby in #33867
- refactor: use EnumText for ApiToolProvider.schema_type_str and Docume… by @tmimmanuel in #33983
- refactor(web): migrate plugin toast usage to new UI toast API and update tests by @lyzno1 in #34001
- test: enhance useChat hook tests with additional scenarios by @WTW0313 in #33928
- fix(rate_limit): flush redis cache when init is triggered by changing max_active_requests by @qwedc001 in #33830
- fix: fix omitted app icon_type updates by @QuantumGhost in #33988
- refactor: lazy load large modules by @hyoban in #33888
- feat(web): refactor pricing modal scrolling and accessibility by @lyzno1 in #34011
- feat: configurable model parameters with variable reference support in LLM, Question Classifier and Variable Extractor nodes by @scdeng in #33082
- test(workflow): add helper specs and raise targeted workflow coverage by @CodingOnStar in #33995
- chore: Add initial configuration for Gemini by @asukaminato0721 in #34012
- test: migrate oauth tests to testcontainers by @Desel72 in #33973
- refactor: select in console datasets document controller by @RenzoMXD in #34019
- test: remove feedback service tests superseded by testcontainers by @Desel72 in #34026
- test: migrate retention delete archived workflow run tests to testcon… by @Desel72 in #34020
- test: remove agent service tests superseded by testcontainers by @Desel72 in #34023
- chore: bump pyrefly from 0.55.0 to 0.57.0 by @yuchengpersonal in #33755
- test: migrate email register tests to testcontainers by @Desel72 in #33971
- test: migrate forgot password tests to testcontainers by @Desel72 in #33972
- test: migrate dataset service document indexing tests to testcontainers by @Desel72 in #34022
- refactor: use sessionmaker().begin() in console auth controllers by @Desel72 in #33966
- test: migrate mcp tools manage service tests to testcontainers by @Desel72 in #34024
- fix: SQLAlchemy deprecation warnings for default parameter by @qianchongyang in #33980
- test: unit test cases for sub modules in core.app (except core.app.apps) by @rajatagarwal-oss in #32476
- test: unit test cases for rag.cleaner, rag.data_post_processor and rag.datasource by @rajatagarwal-oss in #32521
- fix: use query params instead of request body for decode_plugin_from_identifier by @minodisk in #31697
- refactor: prefer instrumentation-client by @hyoban in #34009
- fix(api): StreamsBroadcastChannel start reading messages from the end by @QuantumGhost in #34030
- fix(workflow): clear loop/iteration metadata when pasting node outside container by @majiayu000 in #29983
- fix: update docs path by @hyoban in #34052
- test: replace indexing_technique string literals with IndexTechnique by @tmimmanuel in #34042
- test: migrate webapp auth service tests to testcontainers by @Desel72 in #34037
- test: migrate advanced prompt template service tests to testcontainers by @Desel72 in #34034
- refactor: select in console datasets segments and API key controllers by @RenzoMXD in #34027
- refactor: select in console datasets document controller by @tmimmanuel in #34029
- test: migrate app service tests to testcontainers by @Desel72 in #34025
- fix: resolve SADeprecationWarning for callable default in remaining TypeBase models by @Krishnachaitanyakc in #34049
- test: migrate tools transform service tests to testcontainers by @Desel72 in #34035
- refactor(workflow): migrate legacy toast usage to ui toast by @lyzno1 in #34002
- test: migrate workflow app service tests to testcontainers by @Desel72 in #34036
- refactor(web): expose avatar primitives for composition by @lyzno1 in #34057
- chore(i18n): sync translations with en-US by @github-actions[bot] in #34055
- refactor: add composable avatar slot wrappers by @lyzno1 in #34058
- fix(api): fix concurrency issues in StreamsBroadcastChannel by @QuantumGhost in #34061
- feat(web): base-ui slider by @lyzno1 in #34064
- fix: partner stack not recorded when not login by @iamjoel in #34062
- feat(workflow): add selection context menu helpers and integrate with context menu component by @CodingOnStar in #34013
- fix: HumanInput node should unable to paste into container by @hjlarry in #34077
- test(workflow-app): enhance unit tests for workflow components and hooks by @CodingOnStar in #34065
- feat: add inner API endpoints for admin DSL import/export by @zhangx1n in #34059
- chore: bump Dify to 1.13.3 and sandbox to 0.2.13 by @laipz8200 in #34079
New Contributors
- @bittoby made their first contribution in #33610
- @xr843 made their first contribution in #33767
- @Lubrsy706 made their first contribution in #33083
- @yuchengpersonal made their first contribution in #33809
- @ckstck made their first contribution in #33857
- @yoloni-9527 made their first contribution in #33841
- @BipinRimal314 made their first contribution in #33838
- @letterbeezps made their first contribution in #33280
- @bakiburakogun made their first contribution in #33885
- @qwedc001 made their first contribution in #33830
- @qianchongyang made their first contribution in #33980
- @minodisk made their first contribution in #31697
Full Changelog: 1.13.2...1.13.3