Impact Score: 5/10
Dify: v1.8.1
Source available β automated, not human-reviewed
Component: dify Β· Channel: stable. Automated analysis, not a compatibility certification. How this works.
Analysis updated: 2026-11-01.
β‘ Executive Summary (TL;DR)
Dify 1.8.1. Source highlight: π What's New in v1.8.1? π
Who Does This Impact? (Role-Based Analysis)
π» Software Engineers & Devs
Check the source notes against the package and APIs you use before upgrading.
π Product & Engineering Leads
Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.
βοΈ DevOps & Security
Verify the target version, runtime requirements and rollback procedure in the official documentation.
β¨ New Features & Capabilities (6)
- **Export DSL from History**: Able to export workflow DSL directly from version history panel. (See #24939, by *GuanMu*)
- **Downvote with Reason**: Enhanced feedback system allowing users to provide specific reasons when downvoting responses. (See #24922, by *jubinsoni*)
- **Multi-modal/File**: Added filename support to multi-modal prompt messages. (See #24777, by *-LAN-*)
- **Advanced Chat File Handling**: Improved assistant content parts and file handling in advanced chat mode. (See #24663, by *QIN2DIM*)
- **Indonesian Language Support**: Added Indonesian (id-ID) language support. (See #24951, by *lyzno1*)
- feat: datasets hit-testing retrieve chunking detail answer when documβ¦
β‘ Performance & Enhancements (5)
- **DB Query**: Optimized SQL queries that were performing partial full table scans. (See #24786, by *Novice*)
- **Type Checking**: Migrated from MyPy to Basedpyright. (See #25047, by *-LAN-*)
- **Jinja2 Template**: LLM prompt Jinja2 templates now support more variables. (See #24944, by *17hz*)
- chore: use orjson in streaming event JSON serialisation for performance improvement
- chore: optimize SQL queries that perform partial full table scans
π§ Bug Fixes & Patches (6)
- **Security/XSS**: Fixed XSS vulnerability in block-input and support-var-input components. (See #24835, by *lyzno1*)
- **Persistence Session Management**: Resolved critical database session binding issues that were causing "not bound to a Session" errors. (See #25010, #24966, by *Will*)
- **Workflow & UI Issues**: Fixed workflow publishing problems, resolved UUID v7 conflicts, and addressed various UI component issues including modal handling and input field improvements. (See #25030, #24643, #25034, #24864, by *Will, -LAN-, 17hz & Atif*)
- Fix/web app auth error
- Fix token expiry miscalculation
- fix: `files` parameter in JavaScript sdk incorrectly annotated as the `File` type in WebAPI
π View Raw Release Notes (Original Developer Log)
# π What's New in v1.8.1? π
Welcome to version 1.8.1! πππ This release focuses on stability, performance improvements, and developer experience enhancements. We've built great features and resolved critical database issues based on community feedback.
## π Features
- **Export DSL from History**: Able to export workflow DSL directly from version history panel. (See #24939, by *GuanMu*)
- **Downvote with Reason**: Enhanced feedback system allowing users to provide specific reasons when downvoting responses. (See #24922, by *jubinsoni*)
- **Multi-modal/File**: Added filename support to multi-modal prompt messages. (See #24777, by *-LAN-*)
- **Advanced Chat File Handling**: Improved assistant content parts and file handling in advanced chat mode. (See #24663, by *QIN2DIM*)
## β‘ Enhancements
- **DB Query**: Optimized SQL queries that were performing partial full table scans. (See #24786, by *Novice*)
- **Type Checking**: Migrated from MyPy to Basedpyright. (See #25047, by *-LAN-*)
- **Indonesian Language Support**: Added Indonesian (id-ID) language support. (See #24951, by *lyzno1*)
- **Jinja2 Template**: LLM prompt Jinja2 templates now support more variables. (See #24944, by *17hz*)
## π Fixes
- **Security/XSS**: Fixed XSS vulnerability in block-input and support-var-input components. (See #24835, by *lyzno1*)
- **Persistence Session Management**: Resolved critical database session binding issues that were causing "not bound to a Session" errors. (See #25010, #24966, by *Will*)
- **Workflow & UI Issues**: Fixed workflow publishing problems, resolved UUID v7 conflicts, and addressed various UI component issues including modal handling and input field improvements. (See #25030, #24643, #25034, #24864, by *Will, -LAN-, 17hz & Atif*)
Version 1.8.1 represents a significant step forward in platform stability and developer experience. The migration to modern type checking and database systems, combined with comprehensive bug fixes, creates a more robust foundation for future features.
Huge thanks to all our contributors who made this release possible! We welcome your ongoing feedback to help us continue improving the platform together.
---
## 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.8.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: datasets hit-testing retrieve chunking detail answer when docum⦠by @lcedaw in https://github.com/langgenius/dify/pull/24600
* feat: migrate part of the web API module to Flask-RESTX by @liugddx in https://github.com/langgenius/dify/pull/24577
* chore: optimize pnpm version management and migrate from next lint to eslint cli by @lyzno1 in https://github.com/langgenius/dify/pull/24514
* Refactor: replace count() > 0 check with exists() by @hyongtao-code in https://github.com/langgenius/dify/pull/24583
* Fix/web app auth error by @douxc in https://github.com/langgenius/dify/pull/24637
* add more current_user typing by @asukaminato0721 in https://github.com/langgenius/dify/pull/24612
* Fix token expiry miscalculation by @hyongtao-code in https://github.com/langgenius/dify/pull/24639
* fix: `files` parameter in JavaScript sdk incorrectly annotated as the `File` type in WebAPI by @sheey11 in https://github.com/langgenius/dify/pull/24644
* fix: workflow log panel's round style by @ZeroZ-lab in https://github.com/langgenius/dify/pull/24658
* feat: migrate part of the web chat module to Flask-RESTX by @liugddx in https://github.com/langgenius/dify/pull/24664
* refactor: Migrate part of the web API module to Flask-RESTX by @liugddx in https://github.com/langgenius/dify/pull/24659
* Feature add test containers workflow service by @NeatGuyCoding in https://github.com/langgenius/dify/pull/24666
* example try rm ignore by @asukaminato0721 in https://github.com/langgenius/dify/pull/24649
* Typing test by @asukaminato0721 in https://github.com/langgenius/dify/pull/24651
* example for rm extra cast by @asukaminato0721 in https://github.com/langgenius/dify/pull/24646
* chore: Plugin_daemon Service Add Sentry configuration by @Hwting in https://github.com/langgenius/dify/pull/24516
* chore: bump supabase and pyjwt versions and added tests by @chazzhou in https://github.com/langgenius/dify/pull/24681
* fix_trace_config by @mr0609 in https://github.com/langgenius/dify/pull/24669
* fix: can not choose file type var in aggreggator node by @iamjoel in https://github.com/langgenius/dify/pull/24689
* feat: add MCP configuration for Claude Code optimization by @lyzno1 in https://github.com/langgenius/dify/pull/24679
* refactor: relocate China npm registry config to base image by @17hz in https://github.com/langgenius/dify/pull/24678
* β¨fix: has_more logic in ChatMessageListApi to ensure correct on behavior when no more messages are available. by @Eric-Guo in https://github.com/langgenius/dify/pull/24661
* clean typos words. by @zhanluxianshen in https://github.com/langgenius/dify/pull/24667
* fix: Default value for input variable is null when starting new conversations on the web app by @17hz in https://github.com/langgenius/dify/pull/24709
* chore: simplify the workflow details logic by @crazywoola in https://github.com/langgenius/dify/pull/24714
* chore: fix some api desc by @zalcit in https://github.com/langgenius/dify/pull/24715
* feat: Add support for slash commands, optimize command selector logic. by @ZeroZ-lab in https://github.com/langgenius/dify/pull/24723
* chore: use DataFrame.map instead of deprecated DataFrame.applymap by @IthacaDream in https://github.com/langgenius/dify/pull/24726
* chore: cleanup unnecessary mypy suppressions on imports by @bowenliang123 in https://github.com/langgenius/dify/pull/24712
* chore: translate i18n files by @github-actions[bot] in https://github.com/langgenius/dify/pull/24727
* fix: unclosing tag by @crazywoola in https://github.com/langgenius/dify/pull/24733
* Chore: remove dead func AppModelConfig.copy() with wrong logic by @hyongtao-code in https://github.com/langgenius/dify/pull/24747
* feat: add test containers based tests for workspace service by @NeatGuyCoding in https://github.com/langgenius/dify/pull/24752
* fix: inconsistent text color for settings button in webapp cards by @lyzno1 in https://github.com/langgenius/dify/pull/24754
* feat: orchestrate CI workflows to prevent duplicate runs when autofix makes changes by @laipz8200 in https://github.com/langgenius/dify/pull/24758
* chore: use orjson in streaming event JSON serialisation for performance improvement by @bowenliang123 in https://github.com/langgenius/dify/pull/24763
* feat: oauth provider by @RockChinQ in https://github.com/langgenius/dify/pull/24206
* Chore: remove dupliacte logic in DatasetApi.get() by @kenwoodjw in https://github.com/langgenius/dify/pull/24769
* chore: translate i18n files by @github-actions[bot] in https://github.com/langgenius/dify/pull/24770
* feat(api): maintain assistant content parts and file handling in advanced chat by @QIN2DIM in https://github.com/langgenius/dify/pull/24663
* fix(web): fix error notify when tagInput component is not required (#β¦ by @zyileven in https://github.com/langgenius/dify/pull/24774
* refactor: Promote basepath to environment variable by @17hz in https://github.com/langgenius/dify/pull/24445
* feat: add filename support to multi-modal prompt messages by @laipz8200 in https://github.com/langgenius/dify/pull/24777
* fix(web): improve floating UI positioning when scrolling (#24595) by @zyileven in https://github.com/langgenius/dify/pull/24782
* chore: change the oauth_provider_apps table to uuidV7 by @hjlarry in https://github.com/langgenius/dify/pull/24792
* fix: change the mcp server strucutre to support github copilot by @Nov1c444 in https://github.com/langgenius/dify/pull/24788
* fix(api): fix `DetachedInstanceError` for Account.current_tenant_id by @QuantumGhost in https://github.com/langgenius/dify/pull/24789
* chore(api): fix Alembic offline migration compatibility by @QuantumGhost in https://github.com/langgenius/dify/pull/24795
* fix: add missing statuses permission to main CI workflow by @laipz8200 in https://github.com/langgenius/dify/pull/24809
* refactor: remove duplicate pull_request triggers from workflow files by @laipz8200 in https://github.com/langgenius/dify/pull/24814
* refactor: reorganize the CI pipeline by @laipz8200 in https://github.com/langgenius/dify/pull/24817
* fix: workflow_finish_to_stream_response assert exception with celery β¦ by @horochx in https://github.com/langgenius/dify/pull/24674
* Fix: rm invalid errorMessage on e.toString() by @hyongtao-code in https://github.com/langgenius/dify/pull/24805
* chore[docker]: Fix Redis health check error but display healthy by @Hwting in https://github.com/langgenius/dify/pull/24778
* poc of validate config by @asukaminato0721 in https://github.com/langgenius/dify/pull/24837
* Remove redundant from_variable_selector null-check by @hyongtao-code in https://github.com/langgenius/dify/pull/24842
* Feature add test containers mcp tools manage service by @NeatGuyCoding in https://github.com/langgenius/dify/pull/24840
* fix: XSS vulnerability in block-input and support-var-input components by @lyzno1 in https://github.com/langgenius/dify/pull/24835
* chore: remove duplicate Python style checks handled by autofix CI by @laipz8200 in https://github.com/langgenius/dify/pull/24833
* feat: add test containers based tests for api tool manage service by @NeatGuyCoding in https://github.com/langgenius/dify/pull/24821
* fix: Variable Aggregator cannot select conversation variables by @17hz in https://github.com/langgenius/dify/pull/24793
* Update ast-grep pattern for session.query by @asukaminato0721 in https://github.com/langgenius/dify/pull/24828
* chore: remove unused i18n keys by @lyzno1 in https://github.com/langgenius/dify/pull/24803
* refactor: replace clsx with classnames by @17hz in https://github.com/langgenius/dify/pull/24776
* model_config = ConfigDict(extra='allow') by @asukaminato0721 in https://github.com/langgenius/dify/pull/24859
* Fix never hit `(!code || code.length === 0)` by @hyongtao-code in https://github.com/langgenius/dify/pull/24860
* fix translation of all oauth.ts by @NeatGuyCoding in https://github.com/langgenius/dify/pull/24855
* example of decorator typing by @asukaminato0721 in https://github.com/langgenius/dify/pull/24857
* remove duplicated authorization header handling and bearer should be case-insensitive by @NeatGuyCoding in https://github.com/langgenius/dify/pull/24852
* the conversion OAuthGrantType(parsed_args["grant_type"]) can raise ValueError for invalid values which is not caught and will produce a 500 by @NeatGuyCoding in https://github.com/langgenius/dify/pull/24854
* fix: basepath did not read from the environment variable by @17hz in https://github.com/langgenius/dify/pull/24870
* [CHORE]: remove redundant-cast by @Gnomeek in https://github.com/langgenius/dify/pull/24807
* refactor: migrate marketplace.py from requests to httpx by @KinomotoMio in https://github.com/langgenius/dify/pull/24015
* chore: pnpx deprecation by @17hz in https://github.com/langgenius/dify/pull/24868
* fix: Fix database connection leak in EasyUIBasedGenerateTaskPipeline by @qiqizjl in https://github.com/langgenius/dify/pull/24815
* fix: add missing form for boolean types by @jingfelix in https://github.com/langgenius/dify/pull/24812
* CI: add TS indentation check via esLint by @hyongtao-code in https://github.com/langgenius/dify/pull/24810
* example enum to StrEnum by @asukaminato0721 in https://github.com/langgenius/dify/pull/24877
* fix:hard-coded top-k fallback issue. by @Frederick2313072 in https://github.com/langgenius/dify/pull/24879
* fix wrong filter handle for saved messages by @zalcit in https://github.com/langgenius/dify/pull/24891
* fix: prevent database connection leaks in chatflow mode by using Session-managed queries by @qiqizjl in https://github.com/langgenius/dify/pull/24656
* fix close session twice. by @zhanluxianshen in https://github.com/langgenius/dify/pull/24917
* FEAT: Tencent Vector optimize BM25 initialization to reduce loading time by @wlleiiwang in https://github.com/langgenius/dify/pull/24915
* fix:score threshold by @Frederick2313072 in https://github.com/langgenius/dify/pull/24897
* fix: remove duplicated code by @jiangbo721 in https://github.com/langgenius/dify/pull/24893
* replace the secret field from obfuscated to full-masked value by @dickens88 in https://github.com/langgenius/dify/pull/24800
* fix: npx typo error by @17hz in https://github.com/langgenius/dify/pull/24929
* Feature add test containers tool transform service by @NeatGuyCoding in https://github.com/langgenius/dify/pull/24927
* fix: email input cannot scroll by @17hz in https://github.com/langgenius/dify/pull/24930
* fix: API key input uses password type and no autocomplete by @atif09 in https://github.com/langgenius/dify/pull/24864
* downvote with reason by @jubinsoni in https://github.com/langgenius/dify/pull/24922
* fix(i18n): align zh-Hant indexMethodEconomyTip with zh-Hans by @aopstudio in https://github.com/langgenius/dify/pull/24933
* chore: translate i18n files by @github-actions[bot] in https://github.com/langgenius/dify/pull/24934
* Migrate SQLAlchemy from 1.x to 2.0 with automated and manual adjustments by @hyongtao-code in https://github.com/langgenius/dify/pull/23224
* chore: optimize SQL queries that perform partial full table scans by @Nov1c444 in https://github.com/langgenius/dify/pull/24786
* feat: LLM prompt Jinja2 template now support more variables by @17hz in https://github.com/langgenius/dify/pull/24944
* Fix: ensure InstalledApp deletion uses model instances instead of Row by @hyongtao-code in https://github.com/langgenius/dify/pull/24942
* Fix: Resolve workflow_node_execution primary key conflicts with UUID v7 by @laipz8200 in https://github.com/langgenius/dify/pull/24643
* fix: add Indonesian (id-ID) language support and improve language selector by @lyzno1 in https://github.com/langgenius/dify/pull/24951
* make clean() function in index_processor_base abstractmethod by @zhanluxianshen in https://github.com/langgenius/dify/pull/24959
* fix: API Key Authorization Configuration Model Form render default value by @17hz in https://github.com/langgenius/dify/pull/24963
* refactor: update radio component to handle boolean values instead of numeric by @17hz in https://github.com/langgenius/dify/pull/24956
* feat: make secretInput type field prevent browser auto-fill by @17hz in https://github.com/langgenius/dify/pull/24971
* chore: apply ty checks on api code with script and ci action by @bowenliang123 in https://github.com/langgenius/dify/pull/24653
* fix: workflow log status filter add parial success status by @Nov1c444 in https://github.com/langgenius/dify/pull/24977
* feat: add development environment setup commands to Makefile by @laipz8200 in https://github.com/langgenius/dify/pull/24976
* chore: run ty check CI action only when api code changed by @bowenliang123 in https://github.com/langgenius/dify/pull/24986
* fix: ensure the modal closed by level by @17hz in https://github.com/langgenius/dify/pull/24984
* fix: remove unnecessary modal visibility toggle on error in name save by @17hz in https://github.com/langgenius/dify/pull/25001
* fix: refresh UI after user profile change by @17hz in https://github.com/langgenius/dify/pull/24998
* example add more type check by @asukaminato0721 in https://github.com/langgenius/dify/pull/24999
* minor fix: fix the check of subscription capacity limit by @NeatGuyCoding in https://github.com/langgenius/dify/pull/24991
* Post fix of #23224 by @hyongtao-code in https://github.com/langgenius/dify/pull/25007
* Export DSL from history by @ZeroZ-lab in https://github.com/langgenius/dify/pull/24939
* fix: xxx is not bound to a Session by @IthacaDream in https://github.com/langgenius/dify/pull/24966
* fix: EndUser is not bound to a Session by @IthacaDream in https://github.com/langgenius/dify/pull/25010
* chore: remove duplicate test helper classes from api root directory by @laipz8200 in https://github.com/langgenius/dify/pull/25024
* chore: remove ty type checker from reformat script and pre-commit hooks by @laipz8200 in https://github.com/langgenius/dify/pull/25021
* Refactor: use DatasourceType.XX.value instead of hardcoded by @hyongtao-code in https://github.com/langgenius/dify/pull/25015
* feat: add test containers based tests for tools manage service by @NeatGuyCoding in https://github.com/langgenius/dify/pull/25028
* fix: workflow not published by @IthacaDream in https://github.com/langgenius/dify/pull/25030
* fix: remove redundant z-index from Field component by @17hz in https://github.com/langgenius/dify/pull/25034
* chore: translate Chinese comments to English in ClickZetta Volume storage module by @laipz8200 in https://github.com/langgenius/dify/pull/25037
* clean console apis and rag cleans. by @zhanluxianshen in https://github.com/langgenius/dify/pull/25042
* [Chore/Refactor] Switch from MyPy to Basedpyright for type checking by @laipz8200 in https://github.com/langgenius/dify/pull/25047
* [Chore/Refactor] Update .gitignore to exclude pyrightconfig.json while preserving api/pyrightconfig.json by @laipz8200 in https://github.com/langgenius/dify/pull/25055
* chore: consolidate type checking in style workflow by @laipz8200 in https://github.com/langgenius/dify/pull/25053
* Refactor/model credential by @zxhlyh in https://github.com/langgenius/dify/pull/24994
* feat: improve multi model credentials by @hjlarry in https://github.com/langgenius/dify/pull/25009
* fix: Solve the problem of opening remarks appearing in the chat cont⦠by @zyileven in https://github.com/langgenius/dify/pull/25067
* chore: translate i18n files by @github-actions[bot] in https://github.com/langgenius/dify/pull/25061
* typevar example by @asukaminato0721 in https://github.com/langgenius/dify/pull/25064
* Fix: handle 204 No Content response in MCP client by @dswl23 in https://github.com/langgenius/dify/pull/25040
* Hotfix translation error by @NeatGuyCoding in https://github.com/langgenius/dify/pull/25035
* fix: Boolean type control is not displayed by @17hz in https://github.com/langgenius/dify/pull/25031
* Fix advanced chat workflow event handler signature mismatch by @laipz8200 in https://github.com/langgenius/dify/pull/25078
* fix: model credential name by @zxhlyh in https://github.com/langgenius/dify/pull/25081
* chore(version): bump version to 1.8.1 by @Stream29 in https://github.com/langgenius/dify/pull/25060
## New Contributors
* @lcedaw made their first contribution in https://github.com/langgenius/dify/pull/24600
* @sheey11 made their first contribution in https://github.com/langgenius/dify/pull/24644
* @Hwting made their first contribution in https://github.com/langgenius/dify/pull/24516
* @mr0609 made their first contribution in https://github.com/langgenius/dify/pull/24669
* @zyileven made their first contribution in https://github.com/langgenius/dify/pull/24774
* @KinomotoMio made their first contribution in https://github.com/langgenius/dify/pull/24015
* @Frederick2313072 made their first contribution in https://github.com/langgenius/dify/pull/24879
* @dickens88 made their first contribution in https://github.com/langgenius/dify/pull/24800
* @atif09 made their first contribution in https://github.com/langgenius/dify/pull/24864
* @dswl23 made their first contribution in https://github.com/langgenius/dify/pull/25040
**Full Changelog**: https://github.com/langgenius/dify/compare/1.8.0...1.8.1