1.8.1
版本发布时间: 2025-09-03 19:07:18
langgenius/dify最新发布版本:1.14.0-rc1(2026-02-14 17:28:47)
🌟 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
-
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.8.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
- 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:
filesparameter in JavaScript sdk incorrectly annotated as theFiletype 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
DetachedInstanceErrorfor 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