Dify 1.8.1stable Released Sep 03, 2025
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.

Compatibility not verified β€” check source notes
πŸ“„ .MD
⚑ 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