1.8.0
v1.8.0 - Async workflows meet multi-model management with OAuth-powered integrations.
π Dify v1.8.0 Release Notes π
Hello, Dify community! We're excited to bring you version 1.8.0, packed with significant improvements across the board - from enhanced security and performance optimizations to a revamped UI and powerful new workflow features. Let's dive into what's new!
π New Features
Workflow & Agent Capabilities
- Multi-Model Credentials System: Implemented a comprehensive multi-model credentials system with new database tables, enabling more flexible model management. Thanks to @hjlarry! (#24451)
- MCP Support with OAuth: Added Model Context Protocol (MCP) support for resource discovery with OAuth authentication, expanding integration possibilities. Kudos to @CodeSpaceiiii! (#24223)
- Default Values for Workflow Variables: All workflow start node variable types now support default values, making workflows more robust. Thanks to @17hz! (#24129)
- Agent Node Token Usage: Exposed agent node usage metrics for better monitoring and optimization. Thanks to @DavideDelbianco! (#24355)
UI/UX Enhancements
- Document Sorting in Knowledge Base: Added sorting functionality for document status in the Knowledge base, improving document management. Thanks to @jubinsoni! (#24252)
- Delete Avatar Functionality: Users can now delete their avatars with a confirmation modal for safety. Thanks to @Zhehao-P! (#24099)
- Extensible Goto-Anything Commands: Improved goto-anything commands with an extensible architecture for better navigation. Thanks to @ZeroZ-lab! (#24091)
- Document Name Tooltips: Added helpful tooltips to document names in lists for better visibility. Thanks to @aopstudio! (#24467)
- Auto-login After Setup: Implemented secure auto-login after admin account setup. Thanks to @laipz8200! (#24395)
API & Backend
- Redis SSL/TLS Authentication: Added support for Redis SSL/TLS certificate authentication for enhanced security. Thanks to @laipz8200! (#23624)
- Flask-RESTX Migration: Successfully migrated from Flask-RESTful to Flask-RESTX for better API documentation and structure. Thanks to @asukaminato0721! (#24310)
- Swagger Authorization: Added authorization configuration support to Swagger documentation. Thanks to @hjlarry! (#24518)
π Bug Fixes
Critical Fixes
- Database Performance: Fixed major performance issue by removing provider table updates on every message creation. Thanks to @QuantumGhost! (#24520)
- Authentication Error Handling: Fixed login error handling by properly raising exceptions instead of returning. Thanks to @laipz8200! (#24452)
- OAuth Redis Compatibility: Resolved OAuth Redis compatibility issues. Thanks to @Mairuis! (#23959)
- HTTP Request Node File Access: Fixed file access from Start Node with remote URLs in HTTP Request Node. Thanks to @dlmu-lq! (#24293)
Workflow Improvements
- Loop Exit Conditions: Fixed loop exit condition to accept variables from nodes inside loops. Thanks to @baonudesifeizhai! (#24257)
- Agent Node Token Counting: Properly separated prompt and completion tokens in agent node token counting. Thanks to @laipz8200! (#24368)
- Number Input in Tool Configure: Fixed number input behavior in agent node tool configuration. Thanks to @Stream29! (#24152)
- Delete Conversations via API: Fixed conversation deletion through API to properly remove from database. Thanks to @jubinsoni! (#23591)
UI/UX Fixes
- Dark Mode Improvements: Multiple dark mode fixes including backdrop-blur for plugin dropdowns, hover button contrast, and embedded modal icons. Thanks to @lyzno1 and team!
- React Warnings: Fixed Next.js React warnings by properly moving shareCode updates to useEffect. Thanks to @Eric-Guo! (#24468)
- Border Radius Consistency: Fixed UI border radius inconsistencies across components. Thanks to @jubinsoni! (#24486)
π Security Enhancements
- User Enumeration Prevention: Standardized authentication error messages to prevent user enumeration attacks. Thanks to @laipz8200! (#24324)
- Custom Headers Fix: Fixed custom headers being ignored when using bearer or basic authorization. Thanks to @liugddx! (#23584)
- Fix SQL Injection in Oracle VDB.
β‘ Performance & Infrastructure
Workflow Performance Breakthrough
- Async WorkflowRun/WorkflowNodeRun Repositories: Implemented asynchronous repositories for workflow execution, delivering dramatic performance improvements. This architectural change enables non-blocking operations during workflow runs, with early testing showing execution times nearly halved in typical workflows. This optimization particularly benefits complex workflows with multiple nodes and parallel operations. Thanks to @xinlmain for this game-changing performance enhancement! (#20050)
Database Optimizations
- Semantic Version Comparison: Implemented semantic version comparison for vector database version checks. Thanks to @MatriQ! (#24416)
- AnalyticDB Improvements: Fixed rollback issues when AnalyticDB create zhparser failed. Thanks to @lpdink! (#24260)
- Dataset Cleanup: Optimized dataset cleanup task for better performance. Thanks to @aopstudio! (#24467)
Testing Infrastructure
- Comprehensive Test Coverage: Added testcontainers-based integration tests for multiple services including workflow app, website, auth, conversation, and more. Massive thanks to @NeatGuyCoding for this extensive testing effort!
- Rate Limiting Tests: Added comprehensive test suite for rate limiting module. Thanks to @farion1231! (#23765)
Docker & Deployment
- Docker Build Optimization: Optimized Docker build process with cleanup script for Jest work files. Thanks to @WTW0313! (#24450)
- Amazon ECS Deployment: Added deployment pattern documentation using Amazon ECS and CDK. Thanks to @tmokmss! (#23985)
- Configurable Plugin Buffer Sizes: Added configurable stdio buffer sizes for plugins in compose file. Thanks to @crazywoola! (#23980)
π Documentation
- CLAUDE.md for LLM Development: Added comprehensive CLAUDE.md file for LLM-assisted development guidance. Thanks to @laipz8200! (#23946)
- API Documentation: Enhanced API documentation for files endpoint, MCP, and service API. Thanks to @laipz8200!
- Localized Documentation: Updated localized README files to link to corresponding localized CONTRIBUTING.md files. Thanks to @aopstudio! (#24504)
- Markdown Auto-formatting: Implemented auto-formatting for markdown files using mdformat tool. Thanks to @asukaminato0721! (#24242)
π§Ή Code Quality & Refactoring
- Type Safety Improvements: Major improvements to type annotations and static type checking across the codebase. Thanks to @Gnomeek, @hyongtao-code, and @asukaminato0721!
- AST-Grep Integration: Added ast-grep tool for maintaining codebase consistency. Thanks to @asukaminato0721! (#24149)
- Dead Code Removal: Cleaned up empty files and unused code throughout the project. Thanks to @hyongtao-code! (#23990)
- Import Optimization: Replaced deprecated functions and optimized imports across the codebase.
π Internationalization
- Automated Translation Updates: Continuous updates to i18n translation files with improved accuracy
- Japanese Translation Corrections: Fixed Japanese translation issues. Thanks to @kurokobo! (#24041)
- Translation Synchronization: Better synchronization of translations across all supported languages
This release represents a major step forward in Dify's evolution, with substantial improvements to performance, security, and developer experience. We're particularly excited about the enhanced workflow capabilities and the comprehensive testing infrastructure that will help us maintain high quality standards going forward.
Thank you to all contributors who made this release possible! Your dedication to improving Dify continues to drive us forward.
Happy building with Dify 1.8.0! π
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.8.0Update 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
- test(api): fix flaky tests in TestWorkflowDraftVariableService by @QuantumGhost in https://github.com/langgenius/dify/pull/23749
- refactor: simplify variable pool key structure and improve type safety by @laipz8200 in https://github.com/langgenius/dify/pull/23732
- refactor: Change _queue_manager to public attribute queue_manager in task pipelines by @laipz8200 in https://github.com/langgenius/dify/pull/23747
- Chore: remove unused var in
ModelProviderFactoryby @hyongtao-code in https://github.com/langgenius/dify/pull/23690 - feat: add filtering support for @ command selector in goto-anything by @lyzno1 in https://github.com/langgenius/dify/pull/23763
- hotfix: fix translation by @NeatGuyCoding in https://github.com/langgenius/dify/pull/23757
- feat: add select-none class to tag filter components to prevent text selection by @lyzno1 in https://github.com/langgenius/dify/pull/23774
- fix(api): fix flaky tests by generating unique variable names by @QuantumGhost in https://github.com/langgenius/dify/pull/23768
- fix: update integration tests to use 2-element variable selectors by @farion1231 in https://github.com/langgenius/dify/pull/23766
- Fix: expose MAX_TREE_DEPTH in env by @lslzl3000 in https://github.com/langgenius/dify/pull/23743
- test: add comprehensive test suite for rate limiting module by @farion1231 in https://github.com/langgenius/dify/pull/23765
- fix issue #23758 by @engchina in https://github.com/langgenius/dify/pull/23764
- feat: If combining text and files, place the text prompt after the fi⦠by @jiangbo721 in https://github.com/langgenius/dify/pull/23779
- feat: add highPriority option to Modal for goto-anything layering by @lyzno1 in https://github.com/langgenius/dify/pull/23783
- fix: add MAX_TREE_DEPTH in env.service.web by @lslzl3000 in https://github.com/langgenius/dify/pull/23785
- fix: prevent X button flying to screen corners in dataset settings modal by @lyzno1 in https://github.com/langgenius/dify/pull/23788
- Feat/improved mcp timeout configs by @IthacaDream in https://github.com/langgenius/dify/pull/23605
- chore: translate i18n files by @github-actions[bot] in https://github.com/langgenius/dify/pull/23789
- fix: remove misleading clear buttons and improve SimpleSelect UX by @lyzno1 in https://github.com/langgenius/dify/pull/23791
- chore: restore @mdx-js dependencies in package.json and pnpm-lock.yaml by @WTW0313 in https://github.com/langgenius/dify/pull/23792
- Fix node search by @ZeroZ-lab in https://github.com/langgenius/dify/pull/23795
- fix: add missing translation keys for goto anything command selector by @lyzno1 in https://github.com/langgenius/dify/pull/23815
- Add Test Containers Based Tests for File Service by @NeatGuyCoding in https://github.com/langgenius/dify/pull/23771
- chore: goto anything mouse keyboard interaction by @CathyL0 in https://github.com/langgenius/dify/pull/23805
- Fix missing import in app.ts by @hyongtao-code in https://github.com/langgenius/dify/pull/23831
- chore: update uv to 0.8.9 by @bowenliang123 in https://github.com/langgenius/dify/pull/23833
- Feature/run cmd by @ZeroZ-lab in https://github.com/langgenius/dify/pull/23822
- chore: translate i18n files by @github-actions[bot] in https://github.com/langgenius/dify/pull/23841
- feat: Add an asynchronous repository to improve workflow performance by @xinlmain in https://github.com/langgenius/dify/pull/20050
- chore: rename misleading 'chore.yaml' issue template to 'refactor.yml' by @laipz8200 in https://github.com/langgenius/dify/pull/23847
- refactor: improve Redis wrapper type hints and fix None value handling by @laipz8200 in https://github.com/langgenius/dify/pull/23845
- fix: goto-anything highlighting consistency improvements by @lyzno1 in https://github.com/langgenius/dify/pull/23843
- feat(api): auto-delete WorkflowDraftVariable when app is deleted by @QuantumGhost in https://github.com/langgenius/dify/pull/23737
- fix: update modal component to use relative positioning by @WTW0313 in https://github.com/langgenius/dify/pull/23855
- Add more comprehensive Test Containers Based Tests for advanced prompt service by @NeatGuyCoding in https://github.com/langgenius/dify/pull/23850
- fix: optimize dataset cleanup task by @kenwoodjw in https://github.com/langgenius/dify/pull/23828
- fix: SimpleSelect chevron icon state sync and add notClearable to monitoring selector by @lyzno1 in https://github.com/langgenius/dify/pull/23858
- fix: goto-anything command filter should only match shortcut by @lyzno1 in https://github.com/langgenius/dify/pull/23862
- Fix misleading Studio button in account header by @lyzno1 in https://github.com/langgenius/dify/pull/23842
- feat: support to upload files for visual model call when running LLM node for debugging in a single step by @goofy-z in https://github.com/langgenius/dify/pull/23521
- style: update dark and light theme colors and add new color variables by @WTW0313 in https://github.com/langgenius/dify/pull/23865
- fix: messages updated_at by @IthacaDream in https://github.com/langgenius/dify/pull/23869
- Restructure the File errors in controller by @hyongtao-code in https://github.com/langgenius/dify/pull/23801
- chore(cmdk): Resolve default option selection issue in GotoAnything component (#23878) by @HyaCiovo in https://github.com/langgenius/dify/pull/23813
- fix translation by @NeatGuyCoding in https://github.com/langgenius/dify/pull/23873
- Update use-document-title.ts to fix favicon.ico path by @xb565517830 in https://github.com/langgenius/dify/pull/23872
- fix: add dark mode support for embedded modal option icons by @lyzno1 in https://github.com/langgenius/dify/pull/23893
- Remove redundant acceptedKeys check by @hyongtao-code in https://github.com/langgenius/dify/pull/23891
- Fix: narrow beforeRequest hook type to avoid boolean in array by @hyongtao-code in https://github.com/langgenius/dify/pull/23860
- fix(api): "Message not exists" error while creating feedback by admin by @QuantumGhost in https://github.com/langgenius/dify/pull/23232
- fix(web): resolve TypeScript errors in app overview components by @lyzno1 in https://github.com/langgenius/dify/pull/23901
- Fix multipart/form-data boundary issue in HTTP Call node by @liugddx in https://github.com/langgenius/dify/pull/23903
- fix: resolve text clipping issues in overview chart components by @lyzno1 in https://github.com/langgenius/dify/pull/23907
- Add Test Containers Based Tests for App Generation Services by @NeatGuyCoding in https://github.com/langgenius/dify/pull/23899
- fix: ensure custom headers are ignored when using bearer or basic authorization by @liugddx in https://github.com/langgenius/dify/pull/23584
- fix: mime_type could be None by @crazywoola in https://github.com/langgenius/dify/pull/23880
- Fix: replace deprecated String.prototype.substr with slice by @hyongtao-code in https://github.com/langgenius/dify/pull/23915
- Revert "feat: support to upload files for visual model call when running LLM node for debugging in a single step" by @crazywoola in https://github.com/langgenius/dify/pull/23922
- Fixes #23921 by @AlexChim1231 in https://github.com/langgenius/dify/pull/23924
- feat: integrate flask-orjson for improved JSON serialization performance by @laipz8200 in https://github.com/langgenius/dify/pull/23935
- fix: resolve user profile dropdown cache sync issue across layouts by @lyzno1 in https://github.com/langgenius/dify/pull/23937
- Fix: remove redundant allowed_keys check in jsonable_encoder by @hyongtao-code in https://github.com/langgenius/dify/pull/23931
- fix(workflow/if-else): keep conditions in sync on variable rename by @iamrajhans in https://github.com/langgenius/dify/pull/23611
- chore: remove redundant .env.example from root directory by @laipz8200 in https://github.com/langgenius/dify/pull/23948
- refactor: unify pnpm version management with packageManager field by @lyzno1 in https://github.com/langgenius/dify/pull/23943
- feature: add test for tool engine serialization by @NeatGuyCoding in https://github.com/langgenius/dify/pull/23951
- Feat: External_trace_id compatible with OpenTelemetry by @hieheihei in https://github.com/langgenius/dify/pull/23918
- Fix hover button contrast in dark mode for app and dataset cards by @lyzno1 in https://github.com/langgenius/dify/pull/23955
- fix: 504 Gateway Time-out error on /console/api/version endpoint by @xb565517830 in https://github.com/langgenius/dify/pull/23961
- update: GitHub star fallback count to current value by @lyzno1 in https://github.com/langgenius/dify/pull/23957
- fix comparison with callable by @IthacaDream in https://github.com/langgenius/dify/pull/23978
- doc: add deployment pattern using Amazon ECS and CDK by @tmokmss in https://github.com/langgenius/dify/pull/23985
- chore: improved type annotations in MCP-related codes by @IthacaDream in https://github.com/langgenius/dify/pull/23984
- chore: add configurable stdio buffer sizes for plugins in compose file by @crazywoola in https://github.com/langgenius/dify/pull/23980
- Chore: remove empty files and unused code by @hyongtao-code in https://github.com/langgenius/dify/pull/23990
- fix: move database service call inside session context in workflow draft variable API by @qiqizjl in https://github.com/langgenius/dify/pull/23996
- Fix missing user_id in trace_manager by @hyongtao-code in https://github.com/langgenius/dify/pull/24024
- Fix: add 'api_key' alias for backward compatibility by @hyongtao-code in https://github.com/langgenius/dify/pull/24022
- Update mypy.ini by @hyongtao-code in https://github.com/langgenius/dify/pull/24014
- chore(i18n): correct japanese translation by @kurokobo in https://github.com/langgenius/dify/pull/24041
- no used function for message_queue. by @zhanluxianshen in https://github.com/langgenius/dify/pull/24027
- Revert "Fix: Correct file variable handling for custom tools in workflow" by @kurokobo in https://github.com/langgenius/dify/pull/24061
- Restore useLabelStore mistakenly removed in commit 403e2d58 by @hyongtao-code in https://github.com/langgenius/dify/pull/24052
- chore: synchronize translations by @lyzno1 in https://github.com/langgenius/dify/pull/24044
- feat: add testcontainers based tests for metadata service by @NeatGuyCoding in https://github.com/langgenius/dify/pull/24048
- feat: add testcontainers based tests for model loadbalancing service by @NeatGuyCoding in https://github.com/langgenius/dify/pull/24066
- feat: add select input support to the conversation opener by @Zhehao-P in https://github.com/langgenius/dify/pull/24043
- feat: add CLAUDE.md for LLM-assisted development guidance by @laipz8200 in https://github.com/langgenius/dify/pull/23946
- feat: add Redis SSL/TLS certificate authentication support by @laipz8200 in https://github.com/langgenius/dify/pull/23624
- Fix sticky table header transparency with backdrop-filter blur in dark mode by @lyzno1 in https://github.com/langgenius/dify/pull/23999
- fix: update first_id logic to use the oldest answer item in chat messages by @liugddx in https://github.com/langgenius/dify/pull/23992
- refactor: improve loading animation and debug panel styles by @WTW0313 in https://github.com/langgenius/dify/pull/24075
- fix(oauth): redis compatibility by @Mairuis in https://github.com/langgenius/dify/pull/23959
- feat: enchance prompt and code by @iamjoel in https://github.com/langgenius/dify/pull/23633
- fix: return empty list instead of raising exception for qdrant search when score_threshold is 1 by @BoWuGit in https://github.com/langgenius/dify/pull/24032
- chore: translate i18n files by @github-actions[bot] in https://github.com/langgenius/dify/pull/24081
- fix: no current code caused code generation show error by @iamjoel in https://github.com/langgenius/dify/pull/24086
- fix(ui): Optimize UI component styles and layouts (#24090) by @HyaCiovo in https://github.com/langgenius/dify/pull/24092
- feat: no longer enable auto upgrade when marketplace is disabled (#24β¦ by @RockChinQ in https://github.com/langgenius/dify/pull/24101
- Feature/improve goto anything commands by @ZeroZ-lab in https://github.com/langgenius/dify/pull/24091
- chore: translate i18n files by @github-actions[bot] in https://github.com/langgenius/dify/pull/24102
- fix pg_vector extension requires SUPERUSER, but not available on Huawei Cloud RDS by @ElvisWai in https://github.com/langgenius/dify/pull/24093
- Revert "fix pg_vector extension requires SUPERUSER, but not availabl⦠by @crazywoola in https://github.com/langgenius/dify/pull/24108
- fix: validate checklist before publishing workflow by @laipz8200 in https://github.com/langgenius/dify/pull/24104
- Chore: remove some dead code in experience-enhance-group by @hyongtao-code in https://github.com/langgenius/dify/pull/24110
- fix: treat default template of code as empty by @Stream29 in https://github.com/langgenius/dify/pull/24106
- Bump pyobvector to 0.2.15 by @whhe in https://github.com/langgenius/dify/pull/24120
- Use typing.Literal to replace str places by @Zhehao-P in https://github.com/langgenius/dify/pull/24099
- feat: add delete avatar functionality with confirmation modal by @liugddx in https://github.com/langgenius/dify/pull/24127
- chore: translate i18n files by @github-actions[bot] in https://github.com/langgenius/dify/pull/24131
- an example of suppress by @asukaminato0721 in https://github.com/langgenius/dify/pull/24136
- feat: add testcontainers based tests for feature service by @NeatGuyCoding in https://github.com/langgenius/dify/pull/24026
- feat: Implements periodic deletion of workflow run logs that exceed t⦠by @9527MrLi in https://github.com/langgenius/dify/pull/23881
- try ast-grep by @asukaminato0721 in https://github.com/langgenius/dify/pull/24149
- fix: correct behaviour of code fix by @Stream29 in https://github.com/langgenius/dify/pull/24152
- Fix number input in tool configure form of agent node tool item by @JzoNgKVO in https://github.com/langgenius/dify/pull/24154
- Remove the second
if self.runtime is None:check by @hyongtao-code in https://github.com/langgenius/dify/pull/24171 - Fix: correctly match http/https URLs in image upload file by @hyongtao-code in https://github.com/langgenius/dify/pull/24180
- feat: add testcontainers based tests for model provider service by @NeatGuyCoding in https://github.com/langgenius/dify/pull/24193
- Fix: replace
get_builtin_providerwithget_plugin_providerby @hyongtao-code in https://github.com/langgenius/dify/pull/24191 - docs: format all md files by @yihong0618 in https://github.com/langgenius/dify/pull/24195
- hotfix: fix multiple case match syntax by @NeatGuyCoding in https://github.com/langgenius/dify/pull/24204
- feat: notice of the expire of education verify by @iamjoel in https://github.com/langgenius/dify/pull/24210
- Feat: Education by @GareArc in https://github.com/langgenius/dify/pull/24208
- chore: translate i18n files by @github-actions[bot] in https://github.com/langgenius/dify/pull/24211
- Httpx example by @asukaminato0721 in https://github.com/langgenius/dify/pull/24151
- add tyck tool (currently ignore the error) by @asukaminato0721 in https://github.com/langgenius/dify/pull/22592
- Fix the bug of automatically appending basepath to image resource. by @17hz in https://github.com/langgenius/dify/pull/24201
- fix: keep idempotent when init AnalyticdbVectorBySql by @lpdink in https://github.com/langgenius/dify/pull/24239
- fix: dataset doc-form compatible by @huangzhuo1949 in https://github.com/langgenius/dify/pull/24177
- feature: add test containers base tests for saved message service by @NeatGuyCoding in https://github.com/langgenius/dify/pull/24259
- Mcp support resource discovery by @CodeSpaceiiii in https://github.com/langgenius/dify/pull/24223
- fix: loop exit condition accepts variables from nodes inside the loop #24183: by @baonudesifeizhai in https://github.com/langgenius/dify/pull/24257
- feat: show the start time with seconds of the app logs by @skayliu in https://github.com/langgenius/dify/pull/24267
- fix(api):Fix the issue of empty and not empty operations failing in k⦠by @rouxiaomin in https://github.com/langgenius/dify/pull/24276
- fix: rollback when AnalyticDB create zhparser failed by @lpdink in https://github.com/langgenius/dify/pull/24260
- fix: value_type check failed when updating variables by @me0106 in https://github.com/langgenius/dify/pull/24274
- [Test] add unit tests for ProviderConfigEncrypter encrypt/mask/decrypt by @hyongtao-code in https://github.com/langgenius/dify/pull/24280
- refactor: replace try-except blocks with contextlib.suppress for cleaner exception handling by @liugddx in https://github.com/langgenius/dify/pull/24284
- style: replace
h-[1px]withh-pxto unify the writing format of Tailwind CSS by @rookie-orange in https://github.com/langgenius/dify/pull/24146 - Fix: safe defaults for BaseModel dict fields by @hyongtao-code in https://github.com/langgenius/dify/pull/24098
- [CHORE]: x: T = None to x: Optional[T] = None by @Gnomeek in https://github.com/langgenius/dify/pull/24217
- feature: add test containers base tests for tag service by @NeatGuyCoding in https://github.com/langgenius/dify/pull/24313
- [Test] add unit tests for web_reader_tool.py by @hyongtao-code in https://github.com/langgenius/dify/pull/24309
- Annotations example by @asukaminato0721 in https://github.com/langgenius/dify/pull/24304
- an example of sessionmaker by @asukaminato0721 in https://github.com/langgenius/dify/pull/24246
- feat: implement TooltipManager for managing tooltip lifecycle by @ARRY7686 in https://github.com/langgenius/dify/pull/24236
- Flask 3.1.2 upgrade fix by Avoids using current_user in background thread by @Eric-Guo in https://github.com/langgenius/dify/pull/24290
- fix: Optimize scrolling experience on plugin page (#24314) by @HyaCiovo in https://github.com/langgenius/dify/pull/24322
- auto format md files by @asukaminato0721 in https://github.com/langgenius/dify/pull/24242
- Feat/chat message image first for agent and advanced_chat APP by @jiangbo721 in https://github.com/langgenius/dify/pull/23796
- Update knowledge_retrieval_node.py by @AuditAIH in https://github.com/langgenius/dify/pull/24111
- example of next(, None) by @asukaminato0721 in https://github.com/langgenius/dify/pull/24345
- feat: Add default value support for all workflow start node variable types by @17hz in https://github.com/langgenius/dify/pull/24129
- refactor: simplify repository factory with Django-style import_string by @laipz8200 in https://github.com/langgenius/dify/pull/24354
- Fix missing database commit in provider update handler by @laipz8200 in https://github.com/langgenius/dify/pull/24357
- Node search supports model and name search by @ZeroZ-lab in https://github.com/langgenius/dify/pull/24331
- [Chore/Refactor] Use centralized naive_utc_now for UTC datetime operations by @laipz8200 in https://github.com/langgenius/dify/pull/24352
- Expose agent node usage by @DavideDelbianco in https://github.com/langgenius/dify/pull/243
These notes run past the length kept in the archive. The rest is on the publisherβs page.