🚀 Introduction
In Dify 1.9.0, we are introducing two major new capabilities: the Knowledge Pipeline and the Queue-based Graph Engine.
This is a beta release, and we hope to explore these improvements together with you and gather your feedback. The Knowledge Pipeline provides a modularized and extensible workflow for knowledge ingestion and processing, while the Queue-based Graph Engine makes workflow execution more robust and controllable. We believe these will help you build and debug AI applications more smoothly, and we look forward to your experiences to help us continuously improve.
📚 Knowledge Pipeline
✨ Introduction
With the brand-new orchestration interface for knowledge pipelines, we introduce a fundamental architectural upgrade that reshapes how document processing are designed and executed, providing a more modular and flexible workflow that enables users to orchestrate every stage of the pipeline. Enhanced with a wide range of powerful plugins available in the marketplace, it empowers users to flexibly integrate diverse data sources and processing tools. Ultimately, this architecture enables building highly customized, domain-specific RAG solutions that meet enterprises’ growing demands for scalability, adaptability, and precision.
❓ Why Do We Need It?
Previously, Dify's RAG users still encounter persistent challenges in real-world adoption — from inaccurate knowledge retrieval and information loss to limited data integration and extensibility. Common pain points include:
- 🔗 restricted integration of data sources
- 🖼️ missing critical elements such as tables and images
- ✂️ suboptimal chunking results
All of them lead to poor answer quality and hinder the model's overall performance.
In response, we reimagined RAG in Dify as an open and modular architecture, enabling developers, integrators, and domain experts to build document processing pipelines tailored to their specific requirements—from data ingestion to chunk storage and retrieval.
🛠️ Core Capabilities
🧩 Knowledge Pipeline Architecture
The Knowledge Pipeline is a visual, node-based orchestration system dedicated to document ingestion. It provides a customizable way to automate complex document processing, enabling fine-grained transformations and bridging raw content with structured, retrievable knowledge. Developers can build workflows step by step, like assembling puzzle pieces, making document handling easier to observe and adjust.
📑 Templates & Pipeline DSL
- ⚡ Start quickly with official templates
- 🔄 Customize and share pipelines by importing/exporting via DSL for easier reusability and collaboration
🔌 Customizable Data Sources & Tools
Each knowledge base can support multiple data sources. You can seamlessly integrate local files, online documents, cloud drives, and web crawlers through a plugin-based ingestion framework. Developers can extend the ecosystem with new data-source plugins, while marketplace processors handle specialized use cases like formulas, spreadsheets, and image parsing — ensuring accurate ingestion and structured representation.
🧾 New Chunking Strategies
In addition to General and Parent-Child modes, the new Q&A Processor plugin supports Q&A structures. This expands coverage for more use cases, balancing retrieval precision with contextual completeness.
🖼️ Image Extraction & Retrieval
Extract images from documents in multiple formats, store them as URLs in the knowledge base, and enable mixed text-image outputs to improve LLM-generated answers.
🧪 Test Run & Debugging Support
Before publishing a pipeline, you can:
- ▶️ Execute a single step or node independently
- 🔍 Inspect intermediate variables in detail
- 👀 Preview string variables as Markdown in the variable inspector
This provides safe iteration and debugging at every stage.
🔄 One-Click Migration from Legacy Knowledge Bases
Seamlessly convert existing knowledge bases into the Knowledge Pipeline architecture with a single action, ensuring smooth transition and backward compatibility.
🌟 Why It Matters
The Knowledge Pipeline makes knowledge management more transparent, debuggable, and extensible. It is not the endpoint, but a foundation for future enhancements such as multimodal retrieval, human-in-the-loop collaboration, and enterprise-level data governance. We’re excited to see how you apply it and share your feedback.
⚙️ Queue-based Graph Engine
❓ Why Do We Need It?
Previously, designing workflows with parallel branches often led to:
- 🌀 Difficulty managing branch states and reproducing errors
- ❌ Insufficient debugging information
- 🧱 Rigid execution logic lacking flexibility
These issues reduced the usability of complex workflows. To solve this, we redesigned the execution engine around queue scheduling, improving management of parallel tasks.
🛠️ Core Capabilities
📋 Queue Scheduling Model
All tasks enter a unified queue, where the scheduler manages dependencies and order. This reduces errors in parallel execution and makes topology more intuitive.
🎯 Flexible Execution Start Points
Execution can begin at any node, supporting partial runs, resumptions, and subgraph invocations.
🌊 Stream Processing Component
A new ResponseCoordinator handles streaming outputs from multiple nodes, such as token-by-token LLM generation or staged results from long-running tasks.
🕹️ Command Mechanism
With the CommandProcessor, workflows can be paused, resumed, or terminated during execution, enabling external control.
🧩 GraphEngineLayer
A new plugin layer that allows extending engine functionality without modifying core code. It can monitor states, send commands, and support custom monitoring.
Quickstart
- Prerequisites
- Dify version:
1.9.0
or higher
- Dify version:
- How to Enable
- Enabled by default, no additional configuration required.
- Debug mode: set
DEBUG=true
to enable DebugLoggingLayer. - Execution limits:
WORKFLOW_MAX_EXECUTION_STEPS=500
WORKFLOW_MAX_EXECUTION_TIME=1200
WORKFLOW_CALL_MAX_DEPTH=10
- Worker configuration (optional):
WORKFLOW_MIN_WORKERS=1
WORKFLOW_MAX_WORKERS=10
WORKFLOW_SCALE_UP_THRESHOLD=3
WORKFLOW_SCALE_DOWN_IDLE_TIME=30
- Applies to all workflows.
More Controllable Parallel Branches
Execution Flow:
Start ─→ Unified Task Queue ─→ WorkerPool Scheduling
├─→ Branch-1 Execution
└─→ Branch-2 Execution
↓
Aggregator
↓
End
Improvements:
1. All tasks enter a single queue, managed by the Dispatcher.
2. WorkerPool auto-scales based on load.
3. ResponseCoordinator manages streaming outputs, ensuring correct order.
Example: Command Mechanism
from core.workflow.graph_engine.manager import GraphEngineManager
# Send stop command
GraphEngineManager.send_stop_command(
task_id="workflow_task_123",
reason="Emergency stop: resource limit exceeded"
)
Note: pause/resume functionality will be supported in future versions.
Example: GraphEngineLayer
FAQ
-
Is this release focused on performance?
No. The focus is on stability, clarity, and correctness of parallel branches. Performance improvements are a secondary benefit. -
What events can be subscribed to?
- Graph-level: GraphRunStartedEvent, GraphRunSucceededEvent, GraphRunFailedEvent, GraphRunAbortedEvent
- Node-level: NodeRunStartedEvent, NodeRunSucceededEvent, NodeRunFailedEvent, NodeRunRetryEvent
- Container nodes: IterationRunStartedEvent, IterationRunNextEvent, IterationRunSucceededEvent, LoopRunStartedEvent, LoopRunNextEvent, LoopRunSucceededEvent
- Streaming output: NodeRunStreamChunkEvent
-
How can I debug workflow execution?
- Enable
DEBUG=true
to view detailed logs. - Use DebugLoggingLayer to record events.
- Add custom monitoring via GraphEngineLayer.
- Enable
Future Plans
This beta release is just the beginning. Upcoming improvements include:
- Debugging Tools: A visual interface to view execution states and variables in real time.
- Intelligent Scheduling: Optimize scheduling strategies using historical data.
- More Complete Command Support: Add Pause/Resume, breakpoint debugging.
- Human in the Loop: Support human intervention during execution.
- Subgraph Functionality: Enhance modularity and reusability.
- Multimodal Embedding: Support richer content types beyond text.
We look forward to your feedback and experiences to make the engine more practical.
Upgrade Guide
Important
After upgrading, you must run the following migration to transform existing datasource credentials. This step is required to ensure compatibility with the new version:
uv run flask transform-datasource-credentials
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 1.9.0
git pull origin 1.9.0
- 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
- Migrate data after the container starts
docker exec -it docker-api-1 uv run flask transform-datasource-credentials
Source Code Deployments
-
Stop the API server, Worker, and Web frontend Server.
-
Get the latest code from the release branch:
git checkout 1.9.0
- Update Python dependencies:
cd api
uv sync
- Then, let's run the migration script:
uv run flask db upgrade
uv run flask transform-datasource-credentials
Important
If you are currently using version v2.0.0-beta.1
or v2.0.0-beta.2
, you must run the following migration script to upgrade.
[WARNING] This is a destructive operation that will result in data loss.
This migration script will permanently delete the following data:
- All existing Knowledge Pipelines
- All related Dataset Credentials
Please ensure you have backed up any necessary information before proceeding.
uv run flask db downgrade cf7c38a32b2d
uv run flask db upgrade
uv run flask transform-datasource-credentials
- Finally, run the API server, Worker, and Web frontend Server again.
What's Changed
- fix: improve error logging for vector search operation in MyScale by @ZeroZ-lab in #25087
- Fix jsonschema compliance: use number instead of float by @hyongtao-code in #25049
- chore: Updated pnpm version to 10.15.1 by @17hz in #25065
- chore: comply to RFC 6750 and improve bearer token split by @NeatGuyCoding in #24955
- db internal server error by @xu15031483273 in #24947
- chore: enhance basedpyright-check script to support path arguments by @laipz8200 in #25108
- [Chore/Refactor] Improve type safety and resolve type checking issues by @laipz8200 in #25104
- make icon consistent in dropdown by @jubinsoni in #25109
- chore: improved trace info for generating conversation name by @IthacaDream in #25118
- Chore: remove dead code in class Graph by @hyongtao-code in #22791
- feat: add test containers based tests for workflow converter by @NeatGuyCoding in #25115
- fix: align text color in dark mode for config var type selector by @qiaofenlin in #25121
- fix: old custom model not display credential name by @hjlarry in #25112
- fix: TypeSelector component style by @17hz in #25124
- fix png jpeg export by @jubinsoni in #25110
- Minor fix: correct get_app_model mode for delete() by @hyongtao-code in #25082
- fix recommended apps reading from db logic by @TonloOO in #25071
- chore: Bump weaviate-client to latest v3 version by @DavideDelbianco in #25096
- fix: EndUser not bound to Session when plugin invokes callback by @IthacaDream in #25132
- feat(workflow): Allow paste node into nested block by @CrabSAMA in #24234
- feat: add TypeScript type safety for i18next with automated maintenance by @lyzno1 in #25152
- fix: update account profile by @IthacaDream in #25150
- fix: reset password by @IthacaDream in #25172
- Remove unused mypy script by @hyongtao-code in #25177
- [Chore/Refactor] Improve type checking configuration by @laipz8200 in #25185
- fix: Ensure the order of execution steps are correct when logging with Weave by W&B by @xprilion in #25183
- example regexp exec by @asukaminato0721 in #25200
- fix: Remove invalid key from firecrawl request payload. by @IMOKURI in #25190
- fix: chunk detail modal answer not wrap line by @lcedaw in #25203
- to RefObject by @asukaminato0721 in #25192
- Chore: clean some # type: ignore by @hyongtao-code in #25157
- refactor: improve plugin version validation to support full semantic versioning by @laipz8200 in #25161
- example of type button by @asukaminato0721 in #25224
- example of readonly by @asukaminato0721 in #25220
- fix: child chunk API 404 due to UUID type comparison by @kenwoodjw in #25234
- fix: loop node doesn't exit when it react the condition #24717 by @coolfinish in #24844
- example of lazy by @asukaminato0721 in #25216
- example of remove useEffect by @asukaminato0721 in #25212
- add type annotations for Python SDK ChatClient Class by @EchterTimo in #24018
- feat: add reasoning format processing to LLMNode for tag handling by @ultramancode in #23313
- Feature add test containers add document to index by @NeatGuyCoding in #25251
- add more dataclass by @asukaminato0721 in #25039
- remove bare list, dict, Sequence, None, Any by @asukaminato0721 in #25058
- feat(web): add Progressive Web App (PWA) support by @laipz8200 in #25274
- fix: standardize text color in install form to text-secondary by @laipz8200 in #25272
- chore: translate i18n files and update type definitions by @github-actions[bot] in #25260
- fix: resolve typing errors in configs module by @laipz8200 in #25268
- Feature add test containers batch clean document by @NeatGuyCoding in #25287
- example of no-unstable-context-value by @asukaminato0721 in #25279
- fix: a failed index to be marked as created by @NeatGuyCoding in #25290
- chore: ignore PWA generated files in version control by @laipz8200 in #25313
- fix: remove workflow file preview docs by @lyzno1 in #25318
- fix: update iteration node to use correct variable segment types by @laipz8200 in #25315
- Fix: correct queryKey in useBatchUpdateDocMetadata and add test case by @hyongtao-code in #25327
- fix: ensure consistent DSL export behavior across UI entry by @Kritoooo in #25317
- [Chore/Refactor] Improve type annotations in models module by @laipz8200 in #25281
- keep add and remove the same by @asukaminato0721 in #25277
- Refactor:upgrade react19 ref as props by @zyileven in #25225
- more assert by @asukaminato0721 in #24996
- fix: 'curr_message_tokens' where it is not associated with a value #25307 by @qxo in #25308
- chore: translate i18n files and update type definitions by @github-actions[bot] in #25334
- Fix: Parameter Extractor Uses Correct Prompt for Prompt Mode in Chat Models by @ding113 in #24636
- add more typing by @asukaminato0721 in #24949
- chore: remove weird account login by @zalcit in #22247
- feat: add test containers based tests for clean dataset task by @NeatGuyCoding in #25341
- feat: add MCP server headers support #22718 by @Cluas in #24760
- Minor fix: correct PrecessRule typo by @hyongtao-code in #25346
- chore: translate i18n files and update type definitions by @github-actions[bot] in #25349
- fix: ensure Performance Tracing button visible when no tracing provid… by @Kritoooo in #25351
- feat: email register refactor by @zyssyz123 in #25344
- Feature add test containers batch create segment to index by @NeatGuyCoding in #25306
- fix: Incorrect URL Parameter Parsing Causes user_id Retrieval Error by @joeyhacker in #25261
- feat: enable dsl export encrypt dataset id or not by @kenwoodjw in #25102
- Revert "feat: email register refactor" by @zyssyz123 in #25367
- refactor: update pyrightconfig.json to use ignore field for better type checking configuration by @laipz8200 in #25373
- Fix/disable no constant binary expression by @MatriQ in #25311
- Fix: use correct maxLength prop for verification code input by @hyongtao-code in #25371
- fix: Fixed the X-axis scroll bar issue in the LLM node settings panel by @hudenghui in #25357
- fix: tenant_id was not specific when retrieval end-user in plugin backwards invocation wraps by @Yeuoly in #25377
- minor fix: some translation mismatch by @NeatGuyCoding in #25386
- Support Anchor Scroll In The Output Node by @yinuu in #25364
- example of uuid by @asukaminato0721 in #25380
- feat: add test containers based tests for clean notion document task by @NeatGuyCoding in #25385
- fix(container-test): batch create segment position sort by @Nov1c444 in #25394
- Feat/credential policy by @GareArc in #25151
- fix: credential not allow to use in load balancing by @zxhlyh in #25401
- fix(mcp): current_user not being set in MCP requests by @Nov1c444 in #25393
- Fix flask response: 200 -> {}, 200 by @hyongtao-code in #25404
- feat: Add customized json schema validation by @WTW0313 in #25408
- Fix:About the error problem of creating an empty knowledge base interface in service_api by @ttz12345 in #25398
- feat: change history by supplementary node information by @AllesOderNicht in #25294
- fix: avatar is not updated after setted by @iamjoel in #25414
- Revert "example of remove useEffect" by @crazywoola in #25418
- add typing to all wraps by @asukaminato0721 in #25405
- Fix: judgement of open in explore by @JzoNgKVO in #25420
- Fix: Use --fix flag instead of --fix-only in autofix workflow by @laipz8200 in #25425
- Add lib test by @ZeroZ-lab in #25410
- refactor: update pyrightconfig to scan all API files by @laipz8200 in #25429
- fix(mcp): properly handle arrays containing both numbers and strings by @Nov1c444 in #25430
- Chore: thanks to bump-pydantic by @hyongtao-code in #25437
- Fix basedpyright type errors by @laipz8200 in #25435
- fix: imporve the condition for stopping the think timer. by @17hz in #25365
- add rule for strenum by @asukaminato0721 in #25445
- Fix: Add Password Validation to Account Creation by @newtonjose in #25382
- Feature add test containers create segment to index task by @NeatGuyCoding in #25450
- fix: inner_api get_user_tenant by @IthacaDream in #25462
- test: imporve by @ZeroZ-lab in #25461
- refactor: Migrate part of the console basic API module to Flask-RESTX by @liugddx in #24732
- update sql in batch by @asukaminato0721 in #24801
- fix: Remove sticky positioning from workflow component fields by @WTW0313 in #25470
- Fix 500 in dataset page. by @Eric-Guo in #25474
- Feat/enteprise cd by @GareArc in #25485
- Feat/enteprise cd by @GareArc in #25508
- chore: support Zendesk widget by @nite-knite in #25517
- security(api): fix privilege escalation vulnerability in model config and chat message APIs by @QuantumGhost in #25518
- feat: add test containers based tests for deal dataset vector index by @NeatGuyCoding in #25545
- fix: app name overflow by @JeeekXY in #25551
- Fix log time display bug by @liqigang63 in #25475
- test: remove print code by @ZeroZ-lab in #25481
- Fix: correct has_more pagination logic in get_conversational_variable by @hyongtao-code in #25484
- feat: add test containers based tests for delete segment from index task by @NeatGuyCoding in #25564
- fix: delete get upload file endpoint by @WTW0313 in #25543
- add autofix pnpm by @asukaminato0721 in #25557
- Fixes #25530 by @zhuzeyu22 in #25531
- chore(deps): bump mermaid from 11.4.1 to 11.10.0 in /web by @dependabot[bot] in #25521
- Remove redundant parse_args call in WorkflowByIdApi.patch by @hyongtao-code in #25498
- use autospec=True in mock by @asukaminato0721 in #25497
- fix: single step system file error by @Nov1c444 in #25533
- fix(date-picker): handle string date to avoid crash by @JarsirLiu in #25522
- Fix/disable no unsafe optional chaining by @MatriQ in #25553
- fix: Support passing the default app mode when creating an app by @Kurumi1997 in #25142
- Force update search method to keyword_search by @ZombieBlue in #25464
- Feat/email register refactor by @zyssyz123 in #25369
- fix: login security issue frontend by @iamjoel in #25571
- refactor: centralize default end user session ID constant by @Yeuoly in #25416
- chore: translate i18n files and update type definitions by @github-actions[bot] in #25575
- fix: filter temporary edges from workflow draft sync by @JQSevenMiao in #25442
- refactor: update API routes and documentation for console endpoints by @liugddx in #25554
- fix segment deletion race condition by @kenwoodjw in #24408
- feat: add type integer to VarType by @jingfelix in #25500
- fix close button cannot be clicked when the browser page is zoomed out by @chengjoey in #25584
- fix: Cannot modify values when startNode has defaultValue by @17hz in #25595
- chore: adopt StrEnum and auto() for some string-typed enums by @Kritoooo in #25129
- feat(stress-test): add comprehensive stress testing suite using Locust by @laipz8200 in #25617
- Feature add test containers disable segment from index task by @NeatGuyCoding in #25631
- fix: Multiple UX improvements for GotoAnything command palette by @lyzno1 in #25637
- [Test] speed up Hypothesis strategies to avoid too_slow by @hyongtao-code in #25623
- feat: add circular scrolling to GotoAnything command menu by @lyzno1 in #25662
- fix: allow empty values in Variable Inspector by @yoichiojima-2 in #25644
- feat: add test containers based tests for disable segments from index task by @NeatGuyCoding in #25660
- feat: enhance Makefile with code quality commands and default help by @laipz8200 in #25655
- example for all by @asukaminato0721 in #25666
- chore: translate i18n files and update type definitions by @github-actions[bot] in #25645
- bugfix: The randomly generated email by Faker actually corresponded to an existing account in the test database, causing the test to fail. by @liugddx in #25646
- improve type hints using typing.Literal and add type annotations by @EchterTimo in #25641
- chore: bump pnpm version to v10.16.0 by @lyzno1 in #25640
- optimize _merge_splits function by using enumerate instead of manual index tracking by @ChasePassion in #25680
- [Chore/Refactor] use all to specify export member. by @ritoban23 in #25681
- feat: user message support generate prompt by @iamjoel in #25689
- refactor: update API routes and documentation for app and datasets endpoints by @liugddx in #25628
- dependabot by @asukaminato0721 in #25677
- chore(deps): bump transformers from 4.53.3 to 4.56.1 in /api by @dependabot[bot] in #25696
- chore(deps): bump clickzetta-connector-python from 0.8.102 to 0.8.104 in /api by @dependabot[bot] in #25697
- chore(deps-dev): bump sass from 1.89.2 to 1.92.1 in /web by @dependabot[bot] in #25698
- chore(deps): bump scheduler from 0.23.2 to 0.26.0 in /web by @dependabot[bot] in #25699
- chore(deps-dev): bump @next/bundle-analyzer from 15.5.0 to 15.5.3 in /web by @dependabot[bot] in #25704
- chore(deps): bump @lexical/text from 0.30.0 to 0.35.0 in /web by @dependabot[bot] in #25705
- chore: add ast-grep rule to convert Optional[T] to T | None by @laipz8200 in #25560
- fix: resolve devalue prototype pollution vulnerability by @laipz8200 in #25709
- Release/e-1.8.1 by @GarfieldDai in #25613
- fix(mcp): prevent masked headers from overwriting real values by @quicksandznzn in #25722
- fix(web): custom-tool output_schema.properties missing type by @chengjoey in #25731
- correct typos . by @zhanluxianshen in #25717
- chore: translate i18n files and update type definitions by @github-actions[bot] in #25713
- fix(tests): resolve order dependency in disable_segments_from_index_task tests by @laipz8200 in #25737
- Bugfix: When i change the loop variable, 'Loop Termination Condition' wi… by @minhuaF in #25695
- Feature: add test containers document indexing task by @NeatGuyCoding in #25684
- chat remove transparency from chat bubble in dark mode by @jubinsoni in #24921
- ruff check preview by @asukaminato0721 in #25653
- Enhance LLM model configuration validation to include active status c… by @GareArc in #25759
- refactor: remove Claude-specific references from documentation files by @laipz8200 in #25760
- Fix/lindorm vdb optimize by @AlwaysBluer in #25748
- Fix incorrect API endpoint routing from PR #25628 by @laipz8200 in #25778
- fix: remove billing cache when add or delete app or member by @zyssyz123 in #25885
- feat: knowledge pipeline by @laipz8200 in #25360
- fix: handle None description in MCP tool transformation by @Nov1c444 in #25872
- feat(api/commands): add migrate-oss to migrate from Local/OpenDAL to … by @quicksandznzn in #25828
- chore: improve opendal storage and ensure closing file after reading files in
load_stream
method by @bowenliang123 in #25874 - chore: add missing template translations in ja-JP by @lyzno1 in #25892
- fix: update Python base image to use bullseye variant by @ZeroZ-lab in #25895
- fix: datasource pinned list by @zxhlyh in #25896
- fix: workflow logs list by @zxhlyh in #25903
- chore(workflows): remove redundant eslint command from style workflow by @17hz in #25900
- perf(web): optimize ESLint performance with concurrency flag and remove oxlint by @17hz in #25899
- chore: Update the value of sys.dialogue_count to start from 1. by @Nov1c444 in #25905
- refactor: simplify portal interactions and manage state in Configure component by @WTW0313 in #25906
- feat: make SQLALCHEMY_POOL_TIMEOUT configurable by @saurabhy27 in #25468
- fix: remote code execution in email endpoints by @wylswz in #25753
- fix: use invalid last run by @zxhlyh in #25911
- fix(api): fix single stepping variable loading by @QuantumGhost in #25908
- fix: workflow header style by @zxhlyh in #25922
- fix: Message => str by @crazywoola in #25876
- fix(datasets): retrieval_model null issue when updating dataset info by @quicksandznzn in #25907
- fix: rollback aliyun_trace icon by @hieheihei in #25921
- refactor: replace useInvalid with useInvalidCustomizedTemplateList by @WTW0313 in #25924
- fix(api): enhance data handling in RagPipelineDslService to filter credentials by @Mairuis in #25926
- refactor: replace print statements with proper logging by @laipz8200 in #25773
- fix(makefile): correct uv project path for lint target by @laipz8200 in #25818
- Fix: replace stdout prints with debug logging by @laipz8200 in #25931
- chore: update post_create_command.sh to use dynamic workspace root for aliases by @ZeroZ-lab in #25913
- Fix: enforce editor-only access to chat message logs by @laipz8200 in #25936
- Chore: correct inconsistent logging and typo by @hyongtao-code in #25945
- style: update GotoAnything component styling by @ZeroZ-lab in #25929
- fix: refresh datasource list after install datasource by @zxhlyh in #25949
- Refactor WorkflowService to handle missing default credentials gracef… by @GareArc in #25960
- fix: update details display to conditionally show creator information by @WTW0313 in #25952
- fix: enhance model parameter handling with advanced mode support and localization updates by @WTW0313 in #25963
- fix: undefined match the wrong output schema by @iamjoel in #25971
- Run import-linter within make lint by @laipz8200 in #25933
- chore: translate i18n files and update type definitions by @github-actions[bot] in #25964
- fix: ensure original response are maintained by yielding text messages in ApiTool (#23456) by @Yeuoly in #25973
- feat(goto-anything): add RAG pipeline node search by @ZeroZ-lab in #25948
- fix: resolve chat sidebar UI bugs for hover panel and dropdown menu by @lyzno1 in #25813
- Chore: remove dead code in
datasource.utils
by @hyongtao-code in #25984 - fix: Statistics, like workflows, do not include debug data. by @jiangbo721 in #25979
- chore(deps): bump authlib from 1.3.1 to 1.6.4 in /api by @dependabot[bot] in #26015
- chore(deps): bump negotiator from 0.6.4 to 1.0.0 in /web by @dependabot[bot] in #26012
- feat:support selecting different ftparser for OceanBase. by @longbingljw in #25970
- Fix: use data.type instead of type when checking datasource node by @hyongtao-code in #25965
- chore(deps-dev): bump eslint-plugin-storybook from 0.11.6 to 9.0.7 in /web by @dependabot[bot] in #26011
- Add Full-Text & Hybrid Search Support to Baidu Vector DB and Update SDK, Closes #25982 by @WayneCao in #25983
- fix: pass operation name to onUpdate callback in StatusItem component by @WTW0313 in #26019
- chore(deps): bump abcjs from 6.5.1 to 6.5.2 in /web by @dependabot[bot] in #26018
- Fix: correct regex for file-preview URL re-signing by @hyongtao-code in #25620
- Align dev workflow branch triggers by @laipz8200 in #26029
- fix: workflow by @zyssyz123 in #26030
- chore(api): upgade Gevent to 25.9.1 by @QuantumGhost in #26026
- chore(deps): bump boto3-stubs from 1.40.29 to 1.40.35 in /api by @dependabot[bot] in #26014
- fix: comment out unused segmentation rule properties in RuleDetail component by @WTW0313 in #26031
- fix: Correctly map source_url to preview_url in file fields by @lei-jia-xing in #25957
- chore: remove mistakenly added trash file by @Stream29 in #26041
- chore(api): adjust monkey patching in gunicorn.conf.py by @QuantumGhost in #26056
- fix: iteration and loop node single step run by @Nov1c444 in #26036
- chore(api): bump version by @QuantumGhost in #25917
- fix: Ensure compatibility with old provider name when updating model credentials by @hjlarry in #26017
- fix preview url by @JohnJyong in #26059
New Contributors
- @xu15031483273 made their first contribution in #24947
- @CrabSAMA made their first contribution in #24234
- @xprilion made their first contribution in #25183
- @IMOKURI made their first contribution in #25190
- @coolfinish made their first contribution in #24844
- @EchterTimo made their first contribution in #24018
- @Kritoooo made their first contribution in #25317
- @qxo made their first contribution in #25308
- @ding113 made their first contribution in #24636
- @Cluas made their first contribution in #24760
- @joeyhacker made their first contribution in #25261
- @yinuu made their first contribution in #25364
- @ttz12345 made their first contribution in #25398
- @AllesOderNicht made their first contribution in #25294
- @newtonjose made their first contribution in #25382
- @JeeekXY made their first contribution in #25551
- @liqigang63 made their first contribution in #25475
- @JarsirLiu made their first contribution in #25522
- @Kurumi1997 made their first contribution in #25142
- @JQSevenMiao made their first contribution in #25442
- @chengjoey made their first contribution in #25584
- @yoichiojima-2 made their first contribution in #25644
- @ChasePassion made their first contribution in #25680
- @ritoban23 made their first contribution in #25681
- @minhuaF made their first contribution in #25695
- @saurabhy27 made their first contribution in #25468
- @longbingljw made their first contribution in #25970
- @lei-jia-xing made their first contribution in #25957
Full Changelog: 1.8.1...1.9.0