Introduce Trigger Funtionality
Trigger = When something → then do something
This is the foundation for event-driven Workflow capabilities, covering the following types:
- Schedule (time-based triggers)
- SaaS Integration Event (events from external SaaS platforms like Slack/Github/Linear, integrated by Plugins)
- Webhook (external http callbacks)
- Something to be discuss
All of those features are only designed for Workflow, Chatflow / Agent / BasicChat are not supported.
Design Premise
After careful consideration, we concluded that the start node design cannot fully embody the philosophy behind Triggers.
Therefore, we have redesigned the start node as a component bound to WebApp or Service API.
This means:
- The workflow input parameters are equivalent to the form defined by the start node.
- Trigger types can define their own input formats instead of following Dify’s start node format:
- Webhook: users can freely define the HTTP payload structure they need.
- Plugins: predefine workflow input parameters for specific third-party platforms.
- Schedule: only needs a single $current_timeparameter.
 
As a result, we introduced 3 kinds of start nodes, they are all the trigger nodes, and we've already completed the product design, and the UI/UX design is also finished.
The implementation of Trigger will be divided into:
- WebHook — configuration of webhook-related information in Canvas
- Schedule — time-based triggers
- Plugins — plugin system (most third-party platform integrations will depend on this)
| WebHook | Schedule | Plugins | 
|---|---|---|
Why
- Enable more scenarios
 Currently, if you want to build something like a Discord ticket bot → Linear in an enterprise setup, you need custom glue code, pre-published extensions, and manual token retrieval from the Discord developer console instead of simple one-click OAuth binding.
 Similar pain points exist for GitHub PR plugin review, Hello Dify email replies, etc., all requiring manual download/upload/trigger actions.
- Reduce fragmented experiences
 While it’s possible to achieve similar outcomes using external automation platforms with Dify API calls, the cross-platform experience is fragmented, and many external automation platforms are adding their own LLM orchestration capabilities.
- Centralize configuration and management
 Developers often have to host multiple services to poll for events. Endpoints can help, but they are not purpose-built for trigger scenarios, making the configuration flow unintuitive.
- Real user demand
 Multiple community members have requested this feature:
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.10.0-rc1 
- 
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
- Replace export button with more actions button in workflow control panel by @lyzno1 in #24033
- feat: add scroll to selected node button in workflow header by @lyzno1 in #24030
- feat: comprehensive trigger node system with Schedule Trigger implementation by @lyzno1 in #24039
- feat: update workflow run button to Test Run with keyboard shortcut by @lyzno1 in #24071
- feat: Test Run dropdown with dynamic trigger selection by @lyzno1 in #24113
- fix: simplify trigger-schedule hourly mode calculation and improve UI consistency by @lyzno1 in #24082
- Remove workflow features button by @lyzno1 in #24085
- feat: implement Schedule Trigger validation with multi-start node topology support by @lyzno1 in #24134
- fix: resolve merge conflict between Features removal and validation enhancement by @lyzno1 in #24150
- Refactor Start node UI to User Input and optimize EntryNodeContainer by @lyzno1 in #24156
- fix: remove duplicate weekdays keys in i18n workflow files by @lyzno1 in #24157
- UI improvements: fix translation and custom icons for schedule trigger by @lyzno1 in #24167
- fix: initialize recur fields when switching to hourly frequency by @lyzno1 in #24181
- feat: implement multi-select monthly trigger schedule by @lyzno1 in #24247
- feat(workflow): Plugin Trigger Node with Unified Entry Node System by @lyzno1 in #24205
- feat: replace mock data with dynamic workflow options in test run dropdown by @lyzno1 in #24320
- refactor: comprehensive schedule trigger component redesign by @lyzno1 in #24359
- feat/trigger universal entry by @Yeuoly in #24358
- feat/trigger: support specifying root node by @Yeuoly in #24388
- feat: webhook trigger frontend by @CathyL0 in #24311
- fix(trigger-webhook): remove redundant WebhookParam type and simplify parameter handling by @CathyL0 in #24390
- feat(trigger-schedule): simplify timezone handling with user-centric approach by @lyzno1 in #24401
- refactor: Use specific error types for workflow execution by @Yeuoly in #24475
- refactor: rename RunAllTriggers icon to TriggerAll for semantic clarity by @lyzno1 in #24478
- fix: when workflow only has trigger node can't save by @hjlarry in #24546
- fix: when workflow not has start node can't open service api by @hjlarry in #24564
- feat: implement workflow onboarding modal system by @lyzno1 in #24551
- feat: webhook trigger backend api by @hjlarry in #24387
- feat: fix i18n missing keys and merge upstream/main by @lyzno1 in #24615
- refactor(sidebar): Restructure app operations with toggle functionality by @zhangxuhe1 in #24625
- fix: only workflow should display start modal by @hjlarry in #24623
- refactor: optimize TenantDailyRateLimiter to use UTC internally with timezone-aware error messages by @Yeuoly in #24632
- feat: align trigger webhook style with schedule node and fix selection border truncation by @lyzno1 in #24635
- Allow empty workflows and improve workflow validation by @lyzno1 in #24627
- fix: improve code quality in webhook services and controllers by @Yeuoly in #24634
- fix(schedule): correct weekly frequency weekday calculation algorithm by @lyzno1 in #24641
- feat: enhance workflow error handling and internationalization by @lyzno1 in #24648
- UI enhancements for workflow checklist component by @lyzno1 in #24647
- fix(schedule): add time logic to weekly frequency mode for consistent behavior with daily mode by @lyzno1 in #24673
- feat: add app trigger list api by @hjlarry in #24693
- Improve workflow block selector search functionality by @lyzno1 in #24707
- Improve tooltip design for trigger blocks by @lyzno1 in #24724
- feat: implement trigger card component with auto-refresh by @lyzno1 in #24743
- fix: improve trigger card layout spacing and remove dividers by @lyzno1 in #24756
- feat: when add/delete webhook trigger call the API by @hjlarry in #24755
- feat: enhance webhook trigger panel UI consistency and interactivity by @lyzno1 in #24759
- fix: enhance webhook trigger panel UI consistency and user experience by @lyzno1 in #24780
- Fix workflow card toggle logic and implement minimal state UI by @lyzno1 in #24822
- fix: check AppTrigger status before webhook execution by @hjlarry in #24829
- fix: improve schedule trigger and quick settings app-operation btns ui by @lyzno1 in #24843
- fix(webhook): add content-type aware parameter type handling by @CathyL0 in #24865
- fix: improve TimePicker footer layout and button styling by @lyzno1 in #24831
- Fix test run shortcut consistency and improve dropdown styling by @lyzno1 in #24849
- refactor: unify trigger node architecture and clean up technical debt by @lyzno1 in #24886
- feat: implement variable synchronization for webhook node by @hjlarry in #24874
- fix(webhook-trigger): remove error handling by @CathyL0 in #24902
- fix(app-cards): restrict toggle enable to Start nodes only by @lyzno1 in #24918
- fix: webhook http method should case insensitive by @hjlarry in #24957
- feat: add trigger by of app log by @hjlarry in #24973
- feat(workflow-log): enhance workflow logs UI with sorting and status filters by @lyzno1 in #24978
- fix: prevent workflow canvas clearing due to race condition and viewport errors by @lyzno1 in #25003
- fix(webhook-trigger): request array type adjustment by @CathyL0 in #25005
- fix: missing key for translation path by @lyzno1 in #25059
- chore: limit webhook status code 200~399 by @hjlarry in #25045
- fix: delete var of webhook by @hjlarry in #25038
- fix: content type of webhook by @hjlarry in #25032
- chore: validate param type of application/json when call a webhook by @hjlarry in #25074
- feat(workflow): enhance webhook status code input with increment/decrement controls by @lyzno1 in #25099
- fix: uuidv7 by @lyzno1 in #25097
- fix(webhook): selected type ui style by @CathyL0 in #25106
- chore: (webhook) use variable instead of InputVar by @hjlarry in #25119
- chore: (webhook) when content type changed clear the body variables by @hjlarry in #25136
- fix: prevent empty workflow draft sync during page navigation by @lyzno1 in #25140
- feat: (trigger) support file upload in webhook by @hjlarry in #25159
- chore: (trigger)change content type from form to application/octet-stream by @hjlarry in #25167
- feat(trigger): implement trigger plugin block selector following tools pattern by @lyzno1 in #25204
- fix: block selector ui by @lyzno1 in #25228
- chore: (trigger) add WEBHOOK_REQUEST_BODY_MAX_SIZE by @hjlarry in #25217
- feat: improve trigger plugin UI layout and responsiveness by @zhangxuhe1 in #25232
- chore: (trigger) refactor webhook service by @hjlarry in #25229
- feat: add icon support for trigger plugin workflow nodes by @lyzno1 in #25241
- feat: implement trigger plugin frontend integration by @lyzno1 in #25283
- fix: improve test run menu and checklist ui by @lyzno1 in #25300
- feat: implement trigger-plugin support with real-time status sync by @lyzno1 in #25326
- fix: add stable sorting for trigger list to prevent position changes by @lyzno1 in #25328
- feat: implement trigger plugin authentication UI by @lyzno1 in #25310
- feat: initialize trigger status at application level to prevent canvas refresh state issues by @lyzno1 in #25329
- feat: adjust scroll to selected node position to top-left area by @lyzno1 in #25403
- feat/trigger plugin apikey by @lyzno1 in #25388
- fix: workflow header by @lyzno1 in #25411
- fix(webhook): prevent SimpleSelect from resetting user selections by @lyzno1 in #25423
- fix: only workflow use trigger api by @lyzno1 in #25443
- fix/tooltip and onboarding ui by @lyzno1 in #25451
- feat: add workflow schedule trigger support by @ACAne0320 in #24428
- fix: restore id prop passing to node children in BaseNode by @lyzno1 in #25520
- fix/schedule trigger by @lyzno1 in #25914
- feat: schedule trigger default daily midnight by @lyzno1 in #25937
- chore: improve webhook by @hjlarry in #25998
- feat(schedule-trigger): enhance cron parser with mature library and comprehensive testing by @lyzno1 in #26002
- fix(workflow): Fix onboarding node creation after knowledge pipeline refactor by @lyzno1 in #26289
- [Chore/Refactor] Implement lazy initialization for useState calls to prevent re-computation by @Copilot in #26252
- Refactor: Use @ns.route for tags API by @asukaminato0721 in #26357
- chore: translate i18n files and update type definitions by @github-actions[bot] in #26440
- Fix: Enable Pyright and Fix Typing Errors in Datasets Controller by @asukaminato0721 in #26425
- minor fix: fix some translations: trunk should use native, and some translation typos by @NeatGuyCoding in #26469
- Fix typing errors in core/model_runtime by @asukaminato0721 in #26462
- fix single-step runs support user input as structured_output variable values by @goofy-z in #26430
- Refactor: Enable type checking for core/ops and fix type errors by @asukaminato0721 in #26414
- improve: Explicitly delete task Redis key on completion in AppQueueManager by @Blackoutta in #26406
- chore: bump pnpm version by @lyzno1 in #26010
- Fix a typo in prompt by @casio12r in #25583
- fix: duplicate chunks by @kenwoodjw in #26360
- support returning structured output when using LLM API non streaming invocation by @goofy-z in #26451
- fix: duplicate data in datasets pagination list by @zlyszx in #25783
- feat: add output variables display to webhook trigger node by @lyzno1 in #26478
- fix: document is not bound to a session by @quicksandznzn in #26480
- feat(web): remove dead dependencies by @asukaminato0721 in #26484
- fix: style with self-start by @crazywoola in #26492
- add back babel/core by @asukaminato0721 in #26489
- minor fix: improve check_upgradable_plugin_task.py by @NeatGuyCoding in #26468
- Fix: Remove workflow/nodes from pyright exclusion by @asukaminato0721 in #26461
- chore: remove pnpm build from dev-setup command by @laipz8200 in #26504
- fix(datasets): Resolve issue where selected list is not updated when deleting a single file by @HyaCiovo in #26502
- fix: add missing key prop to TabPanel and initialize useRef with null by @lyzno1 in #26517
- chore(devcontainer): update Python base image from bullseye to bookworm in Dockerfile by @rluncasu in #26519
- Feature add test containers enable segments to index task by @NeatGuyCoding in #26539
- chore(web): update Next.js to 15.5.4 and unify Lexical to 0.36.2 by @lyzno1 in #26541
- Revert "fix: sync FileUploader context with props to fix inconsistent file parameter state in “View cached variables”." by @crazywoola in #26548
- Exclude tests directory from pyright type checking by @asukaminato0721 in #26496
- fix: delete useless db session commit by @yihong0618 in #26572
- Feature add test containers mail email code login task by @NeatGuyCoding in #26580
- Feature add test containers mail account deletion task 1858 by @NeatGuyCoding in #26555
- refactor(docs): Reorganize documentation with standard language codes by @lyzno1 in #26534
- chore: update Dockerfile to use Python 3.12-bookworm and refactor layout logic to utilize ELK for improved node layout by @ZeroZ-lab in #26522
- Removes the 'extensions' directory from pyrightconfig.json and fixes … by @asukaminato0721 in #26512
- chore: fix basedwright style warning for opendal.layers imports by @bowenliang123 in #26596
- chore: Raise default string length limits by @laipz8200 in #26592
- chore: Avoid directly using OpenAI dependencies by @IthacaDream in #26590
- chore: remove explicit dependency on the fastapi framework by @IthacaDream in #26609
- chore(deps): bump react-easy-crop from 5.5.0 to 5.5.3 in /web by @dependabot[bot] in #26602
- chore(deps): bump azure-storage-blob from 12.13.0 to 12.26.0 in /api by @dependabot[bot] in #26603
- delete unnecessary db merge by @IthacaDream in #26588
- Feature add test containers mail change mail task by @NeatGuyCoding in #26570
- Feature add test containers mail inner task by @NeatGuyCoding in #26622
- fix bug 26613: get wrong credentials with multiple authorizations plugin by @dickens88 in #26615
- fix: two functions comments doc is not right by @yihong0618 in #26624
- chore(deps-dev): bump babel-loader from 9.2.1 to 10.0.0 in /web by @dependabot[bot] in #26601
- chore(deps): bump esdk-obs-python from 3.24.6.1 to 3.25.8 in /api by @dependabot[bot] in #26604
- feat: optimize the page jump logic to prevent unnecessary jumps. by @ruanimal in #26481
- perf(web): improve app workflow build performance. by @zhyd1997 in #26310
- refactor: Enable type checking for dataset config manager by @asukaminato0721 in #26494
- feat: remove unused python dependency by @asukaminato0721 in #26629
- Feature add test containers mail invite task by @NeatGuyCoding in #26637
- chore: improve bool input of start node by @hjlarry in #26647
- fix: missing LLM node output var description by @hjlarry in #26648
- fix oxlint warnings by @asukaminato0721 in #26634
- fix: drop useless logger code by @yihong0618 in #26650
- feat: add HTTPX client instrumentation for OpenTelemetry by @qiqizjl in #26651
- fix: check allowed file extensions in rag transform pipeline and use set type instead of list for performance in file extensions by @bowenliang123 in #26593
- Refactor: Remove reportUnnecessaryContains from pyrightconfig.json by @asukaminato0721 in #26626
- fix: add missing toType to toolCredentialToFormSchemasby @jingfelix in #26681
- refactor(types): remove anyusages and strengthen typings across web and base by @ZeroZ-lab in #26677
- Refactor: Remove unnecessary casts and tighten type checking by @asukaminato0721 in #26625
- feat: update HTTP timeout configurations and enhance timeout input handling in UI by @linancn in #26685
- fix: restore array flattening behavior in iteration node by @Nov1c444 in #26695
- fix: drop useless logic by @yihong0618 in #26678
- fix: issue w/ timepicker by @crazywoola in #26696
- feat(billing): add tax information tooltips in pricing footer by @CodingOnStar in #26705
- Fix/tool provider tag internationalization by @qiaofenlin in #26710
- Update deploy-dev.yml by @JohnJyong in #26712
- chore: translate i18n files and update type definitions by @github-actions[bot] in #26709
- refactor(api): add new endpoints for workspace management and update routing by @liugddx in #26465
- fix chunks 2 by @jubinsoni in #26623
- Refactor account models to use SQLAlchemy 2.0 dataclass mapping by @asukaminato0721 in #26415
- feat: Refactor api.add_resource to @console_ns.route decorator by @asukaminato0721 in #26386
- Fix/token exp when exchange main by @GareArc in #26708
- use model_validate by @asukaminato0721 in #26182
- fix: restore None guards for _environment_variables/_conversation_variables getters by @ACAne0320 in #25633
- removing horus eye and adding mcp icon by @jubinsoni in #25323
- pan and zoom during workflow execution by @jubinsoni in #24254
- chore: bump ruff to 0.14 by @bowenliang123 in #26063
- fix: #26668 restore manual tool parameter values by @Zedk42 in #26733
- chore: update packageManager version in package.json to pnpm@10.18.2 by @ZeroZ-lab in #26731
- fix: sync aliyun icon SVG files by @hieheihei in #26719
- fix: add z-index class to PortalToFollowElemContent for proper layering in dataset extra info component by @ZeroZ-lab in #26729
- fix: Set ApiTool’s do_http_request to do not retry. by @jiangbo721 in #26721
- part of add type to orm by @asukaminato0721 in #26262
- change all to httpx by @asukaminato0721 in #26119
- remove .value by @asukaminato0721 in #26633
- Feature integrate alibabacloud mysql vector by @wangype in #25994
- chore(workflows): update deployment configurations for trigger dev by @Mairuis in #26753
- chore: remove unused dependencies for dagre from package.json and pnpm-lock.yaml by @ZeroZ-lab in #26755
- feat: add tracking for updated_by and updated_at fields in app models by @liugddx in #26736
- feat: add InlineDeleteConfirm base component by @lyzno1 in #26762
- chore: translate i18n files and update type definitions by @github-actions[bot] in #26763
- feat: migrate Python SDK to httpx with async/await support by @lyzno1 in #26726
- fix enum and type by @NeatGuyCoding in #26756
- refactor: simplify InlineDeleteConfirm component structure by @lyzno1 in #26771
- fix: happy-dom version by @crazywoola in #26764
- chore(deps): bump @lexical/utils from 0.36.2 to 0.37.0 in /web by @dependabot[bot] in #26801
- chore(deps-dev): bump knip from 5.64.1 to 5.64.3 in /web by @dependabot[bot] in #26802
- chore(deps): bump opik from 1.7.43 to 1.8.72 in /api by @dependabot[bot] in #26804
- Fix typo: reponse to response by @opeco17 in #26792
- Issue 23579 by @asukaminato0721 in #26777
- perf(web): split constant files to improve web performance by @yangzheli in #26794
- refactor: use dynamic max characters for chunking in extractors by @liugddx in #26782
- fix RetrievalMethod StrEnum by @asukaminato0721 in #26768
- refactor: use libs.login current_user in console controllers by @AsperforMias in #26745
- feat: enhance DataSources component with marketplace plugin integration and search filtering by @WTW0313 in #26810
- fix: update tooltip for chunk structure in knowledge base component by @WTW0313 in #26808
- fix: invalid data source list in plugin refresh hook by @WTW0313 in #26813
- fix: external knowledge url check ssrf by @mrdear in #26789
- fix: use enum .value strings in retrieval-setting API to fix JSON serialization error by @qiaofenlin in #26785
- Fix/web app permission check by @douxc in #26821
- chore: Correct padding in embedded chatbot by @DavideDelbianco in #26832
- fix: Don't hide chat streaming loader on '\n' content by @DavideDelbianco in #26829
- fix: avoid closing shared session during embeddings by @minglu7 in #26830
- chore: Fix chat-input-area resize by @DavideDelbianco in #26824
- feat: Cache AppQueueManager.is_stopped() to reduce unnecessary Redis … by @ruanimal in #26778
- chore: Don't show chat input area scrollbar overflow by @DavideDelbianco in #26828
- chore: Fix 25795 by @DavideDelbianco in #26823
- fix: files/support-type JSON serialization error by @hieheihei in #26842
- Use hook to get userid by @asukaminato0721 in #26839
- fix: Chat Opener visibility flickering by @DavideDelbianco in #26836
- refactor: streamline database session usage in batch_create_segment_to_index_task by @liugddx in #26795
- Add timeout so any plugin daemon call (including the SSE path) that legitimately takes longer than 5s would right. by @Eric-Guo in #26852
- Feature add test containers mail owner transfer task by @NeatGuyCoding in #26854
- fix: Validate transfer method in file mapping and improve file input handling by @liugddx in #26848
- fix: Do not show the toggle button for chat input when all input hidden by @DavideDelbianco in #26826
- feat: add Tencent Cloud APM tracing integration by @minimAluminiumalism in #25657
- Weaviate update version by @DhruvGorasiya in #25447
- chore: translate i18n files and update type definitions by @github-actions[bot] in #26859
- fix: use account id in workflow app log filter by @hj24 in #26811
- feat: add Knip configuration for dead code detection and remove unused icon components by @ZeroZ-lab in #26758
- fix: correct indentation in JSON payloads by @ZeroZ-lab in #26871
- fix: when create provider credential set the provider record to vaild by @hjlarry in #26868
- example to auto rollback by @asukaminato0721 in #26200
- Remove unused after_request hooks from console API keys by @laipz8200 in #26896
- Fix/remove logo in withoutbrand template by @TonloOO in #26882
- minor fix: test cases for alibabacloud mysql and chinese translations by @NeatGuyCoding in #26902
- Normalize null metadata handling in tool entities by @laipz8200 in #26890
- fix: replace CodeGroup's POST /meta with GET /site by @yamachu in #26886
- chore: bump pnpm version by @lyzno1 in #26905
- chore: remove redundant dependencies by @Nov1c444 in #26907
- fix: workflow token usage by @kenwoodjw in #26723
- refactor: Update Firecrawl to use v2 API by @ftonato in #24734
- allow editing of hidden inputs in preview by @jubinsoni in #24370
- feat(agent): similar to the start node of workflow, agent variables also support drag-and-drop by @yangzheli in #26899
- chore: translate i18n files and update type definitions by @github-actions[bot] in #26916
- chore: add type-check script to package.json for TypeScript validation by @ZeroZ-lab in #26929
- fix: enhance dataset menu and add service API translations by @WTW0313 in #26931
- Fix: check external commands after node completion by @laipz8200 in #26891
- chore: remove unused icon components and related features from the co… by @ZeroZ-lab in #26933
- add app mode for message by @zyssyz123 in #26876
- fix plugin installation permissions when using a local pkg by @zhangx1n in #26822
- feat: run with params from logs by @wellCh4n in #26787
- fix: update load balancing configurations with new credential IDs and… by @GareArc in #26900
- use deco to avoid current_user by @asukaminato0721 in #26077
- refactor: update TypeScript definitions for custom JSX elements and clean up global declarations in emoji picker by @ZeroZ-lab in #26985
- Fix: avoid duplicate response_chunk update in convert_stream_simple_responseby @hyongtao-code in #26965
- Update email templates to improve clarity and consistency in messagin… by @GareArc in #26970
- Fix dispatcher idle hang and add pytest timeouts by @laipz8200 in #26998
- refactor: improve TypeScript types for NodeCardProps and debug configuration context by @ZeroZ-lab in #27001
- Fixed Weaviate no module found issue (issue #26938) by @DhruvGorasiya in #26964
- fix: logical error in Weaviate distance calculation by @DhruvGorasiya in #27019
- Chore: remove unused class-level variables in DatasourceManager by @hyongtao-code in #27011
- Fix: User Context Loss When Invoking Workflow Tool Node in Knowledge … by @quicksandznzn in #26495
- fix 27003 by @asukaminato0721 in #27005
- fix: remove unnecessary properties from condition draft by @liugddx in #27009
- Restore coverage for skipped workflow tests by @laipz8200 in #27018
- Fix type error by @ZeroZ-lab in #27024
- fix: happy-dom security issues by @iamjoel in #27037
- fix: show 'Invalid email or password' error tip when web app login failed by @douxc in #27034
- Feature: add test containers based tests for mail register tasks by @NeatGuyCoding in #27040
- Fix type error by @ZeroZ-lab in #27044
- fix: update TopK and Score Threshold components to use InputNumber and improve value handling by @WTW0313 in #27045
- fix: improve URL validation logic in validateRedirectUrl function by @ZeroZ-lab in #27058
- Chore: remove redundant tenant lookup in APIBasedExtensionAPI.post by @hyongtao-code in #27067
- fix: allow optional config parameter and conditionally include message file ID by @liugddx in #26960
- feat: implement strict type validation for remote file uploads by @liugddx in #27010
- fix: #27063 by @fatelei in #27074
- Sync same logic for datasets. by @Eric-Guo in #27056
- Fix json in md when use quesion classifier node by @rouxiaomin in #26992
- Fix type-check error by @ZeroZ-lab in #27051
- Feat/add status filter to workflow runs by @twjackysu in #26850
- fix(web): resolve TypeScript type errors in workflow components by @ZeroZ-lab in #27086
- doc: add Grafana dashboard template link to docs by @bowenliang123 in #27079
- fluent api by @asukaminato0721 in #27093
- fix(api): ensure JSON responses are properly serialized in ApiTool by @QuantumGhost in #27097
- refactor: replace localStorage with HTTP-only cookies for auth tokens by @laipz8200 in #24365
- feat(graph_engine): Support pausing workflow graph executions by @laipz8200 in #26585
- docs: mention backend lint gate in AGENTS by @laipz8200 in #27102
- chore(deps): bump @lexical/selection from 0.36.2 to 0.37.0 in /web by @dependabot[bot] in #27108
- chore(deps): bump html-to-image from 1.11.11 to 1.11.13 in /web by @dependabot[bot] in #27109
- chore(deps): bump pydantic-settings from 2.9.1 to 2.11.0 in /api by @dependabot[bot] in #27114
- chore(deps-dev): bump cross-env from 7.0.3 to 10.1.0 in /web by @dependabot[bot] in #27112
- chore(deps): bump immer from 9.0.21 to 10.1.3 in /web by @dependabot[bot] in #27113
- chore: improve storybook by @hjlarry in #27111
- Fix frontend type error by @ZeroZ-lab in #27116
- Revert "chore(deps): bump immer from 9.0.21 to 10.1.3 in /web" by @crazywoola in #27119
- fix: handle None values in dataset and document deletion logic by @liugddx in #27083
- fix: update attribute types to allow undefined values in icon utilities by @ZeroZ-lab in #27121
- Ensure suggested questions parser returns typed sequence by @laipz8200 in #27104
- fix: immer version and ref in code base by @crazywoola in #27130
- fix variable-truncator max size comments by @hj24 in #27129
- fix: support structured output in streaming mode for LLM node by @white-loub in #27089
- fix: delete migrate sync data script by @zyssyz123 in #27061
- fix(web): improve UI consistency and remove related unused icons by @yangzheli in #27004
- fix: ensure document re-querying in indexing process for consistency by @liugddx in #27077
- Fix type error 5 by @ZeroZ-lab in #27139
- feat(web): Add parameter rendering to MCP tool item component by @croatialu in #27099
- Allow custom app headers in CORS configuration by @laipz8200 in #27133
- chore: translate i18n files and update type definitions by @github-actions[bot] in #27141
- chore: use new api to check login status by @iamjoel in #27143
- chore: add more stories by @hjlarry in #27142
- fix: parameter extractor instructions placeholder not replaced (#26235) by @fengb3 in #27135
- Fix type error by @ZeroZ-lab in #27152
- fix: infinite reload by @iamjoel in #27150
- rm type ignore by @asukaminato0721 in #25715
- Add workflow graph validation checks by @laipz8200 in #27106
- Fix vs code and using min version after bump @remixicon/react and @monaco-editor/loader by @Eric-Guo in #27008
- fix: passport outdate caused webapp reload by @iamjoel in #27175
- fix: remove login status api by @wylswz in #27177
- fix: infinite jump to login url by @iamjoel in #27178
- Fix: release WorkflowTool database sessions promptly by @laipz8200 in #26893
- fix: handle exceptions during loop break condition evaluation by @liugddx in #26961
- remove built-in pipeline template user field by @JohnJyong in #27184
- chore: update support channels by @nite-knite in #27188
- Feature:during account initialization, set the interface language to be consistent with the display language(#27029) by @feelshana in #27042
- Fix: surface workflow container LLM usage by @laipz8200 in #27021
- Fix variable truncator handling for UpdatedVariable by @laipz8200 in #27197
- chore: switch support channels according to configuration by @nite-knite in #27195
- fix: eagerly load EndUser attributes to prevent DetachedInstanceError by @liugddx in #27162
- fix(storybook): add required handler props and fix TypeScript errors in component stories by @ZeroZ-lab in #27187
- add billing enable check by @JohnJyong in #27213
- Feat/add celery prefetch setting by @JohnJyong in #27218
- chore: align version identifiers with 1.9.2 by @laipz8200 in #27212
- knowledge-pipeline-for-enterprise by @GarfieldDai in #27240
- feat: Enhance knowledge base node validation by adding checks for embedding and reranking models by @WTW0313 in #27241
- chore: adjust the route scope for loading Zendesk scripts by @nite-knite in #27244
- chore: hide useless error info in login page by @iamjoel in #27245
- chore: translate i18n files and update type definitions by @github-actions[bot] in #27243
- Fix type error by @ZeroZ-lab in #27217
- fix: fix OpenAPI Schema Import Pydantic Validation Errors for Complex Default Values by @yinxulai in #27159
- Fix type error by @ZeroZ-lab in #27250
- fix:restore correct numeric values for ParamsAutoGenerated by @cuixiaojun001 in #27252
- fix: preserve share code headers after login redirect by @laipz8200 in #27225
- Fix type error by @ZeroZ-lab in #27274
- Refine variable truncator type hints by @laipz8200 in #27220
- fix: improve plugin invoke error by @Mairuis in #27137
- Add threading option to basedpyright checks by @asukaminato0721 in #27203
- feat: compatible custom avatar url by @zalcit in #26975
- fix: Downgrade @monaco-editor/loader to v1.5.0 by @WTW0313 in #27282
- Optimize workflow tool sync after plugin install by @lyzno1 in #27280
- chore: improve storybooks by @hjlarry in #27306
- fix: rename cookie for webapp by @wylswz in #27264
- Sync log detail drawer with conversation_id query parameter, so that we can share a specific conversation by @badbye in #26980
- fix: enhance checklist functionality with embedding and rerank model lists by @WTW0313 in #27312
- chore: bump pnpm version by @lyzno1 in #27315
- fix: document word_count appear negative by @zlyszx in #27313
- fix: resolve AssertionError in workflows/run endpoint (#27318) by @quicksandznzn in #27323
- fix: missing import dsl version incompatible modal by @hjlarry in #27338
- Promote GraphRuntimeState snapshot loading to class factory by @laipz8200 in #27222
- fix: Render variables in Question Classifier class names by @IthacaDream in #27356
- Fix UpdatedVariable truncation crash by @laipz8200 in #27359
- Revert "Sync log detail drawer with conversation_id query parameter, so that we can share a specific conversation" by @crazywoola in #27382
- fix: remove unnecessary Flask context preservation to avoid circular import in audio service by @Nov1c444 in #27380
- fix(workflow): resolve occasional issues with syncing historical states or clearing DSL in draft mode by @lyzno1 in #27391
- Fix/refresh token by @wylswz in #27381
- fix: support webapp passport token with end_user_id in web API auth by @Nov1c444 in #27396
- chore: disable postgres timeouts for docker workflows by @laipz8200 in #27397
- Fix typo in docker/.env.example: 'defualt' -> 'default' by @massif-01 in #27400
- fix: correct HTML br tags in README.md by @massif-01 in #27399
- fix: workflow can't publish tool when has checkbox parameter by @hjlarry in #27394
- fix(graph_engine): NodeRunRetrieverResourceEvent is not handled by @laipz8200 in #27405
- fix: rag pipeline priority_pipeline always queuing by @quicksandznzn in #27416
- hide brand name in enterprise use by @douxc in #27422
- chore: translate i18n files and update type definitions by @github-actions[bot] in #27423
- Add Swagger docs for file download endpoints by @laipz8200 in #27374
- Bugfix: Windows compatibility issue with 'cp' command not found when running pnpm start. (#25670) by @gin-melodic in #25672
- fix(web): update the tip in the file-uploader component by @yangzheli in #27452
- rm useless router.replace by @badbye in #27386
- fix: dev container warning by @yihong0618 in #27444
- improve opensearch index deletion #27231 by @acro-k-tanaka in #27336
- feat: add env NEXT_PUBLIC_ENABLE_SINGLE_DOLLAR_LATEX by @fatelei in #27070
- chore(deps): bump testcontainers from 4.10.0 to 4.13.2 in /api by @dependabot[bot] in #27469
- chore(deps-dev): bump @happy-dom/jest-environment from 20.0.7 to 20.0.8 in /web by @dependabot[bot] in #27465
- feat: surface featured trigger recommendations in start tab by @lyzno1 in #27319
- fix: serialize workflow draft sync operations by @lyzno1 in #27487
- Fix: upload limit in knowledge by @JzoNgKVO in #27480
- refactor: update installed app component to handle missing params and improve type safety by @ZeroZ-lab in #27331
- feat: add flatten_output configuration to iteration node by @Nov1c444 in #27502
- feat: implement MCP specification 2025-06-18 by @Nov1c444 in #25766
- Feat/mcp authentication by @zxhlyh in #27508
- chore: translate i18n files and update type definitions by @github-actions[bot] in #27503
- example for 24421 doc by @asukaminato0721 in #27511
- fix(api): Disable SSE events truncation for service api by @QuantumGhost in #27484
- Fix/27468 in dify 192 the iframe embed cannot pass the user id in system variable by @crazywoola in #27524
- fix(workflow): resolve note node copy/duplicate errors by @yangzheli in #27528
- fix: knowledge sync from website error by @quicksandznzn in #27534
- Sync log detail drawer with conversation_id query parameter, so that we can share a specific conversation by @badbye in #27518
- refactor:Decouple Domain Models from Direct Database Access by @hieheihei in #27316
- Enabled cross-subdomain console sessions by making the cookie domain configurable and aligning the frontend so it reads the shared CSRF cookie. by @Eric-Guo in #27190
- feat: Introduce RAG tool recommendations and refactor related components for improved plugin management by @WTW0313 in #27259
- fix(command): The vdb migrate command cannot be stopped by @zhaobingshuang in #27536
- chore: warning messages too long in model config caused ui issue by @iamjoel in #27542
- chore: improve mcp server url validation by @Nov1c444 in #27558
- fix sl translation by @NeatGuyCoding in #27555
- fix(workflow): doc extractor node now correctly extracts mdx files by @yangzheli in #27570
- Sync celery queue name list by @Eric-Guo in #27554
- chore: add web type check step to GitHub Actions workflow by @ZeroZ-lab in #27498
- example of use api.model by @asukaminato0721 in #27514
- fix unit test using enum by @NeatGuyCoding in #27575
- fix issues 27388, add missing env variable: ENFORCE_LANGGENIUS_PLUGIN… by @MaoJianwei in #27545
- chore: add more stories by @hjlarry in #27403
- set conditional capabilities upon MCP client session initialization by @Vivecccccc in #26234
- fix: resolve 500 error when updating document chunk settings (#27551) by @quicksandznzn in #27574
- improve: speed up tracing config decryption process by @Blackoutta in #27549
- add uninstalled recommend tools detail by @JohnJyong in #27537
- feat: enhance tencent trace integration with LLM core metrics by @minimAluminiumalism in #27126
- feat: use id for webapp by @GareArc in #27576
- refactor: update install status handling in plugin installation process by @WTW0313 in #27594
- fix(web): add a scrollbar when the setting-modal content overflows by @yangzheli in #27620
- fix(http_request): set response.text if there is no file by @kurokobo in #27610
- fix: resolve stale closure values in LLM node callbacks (#27612) by @issac2e in #27614
- fix(weaviate): skip init checks to prevent PyPI requests on each search by @quicksandznzn in #27624
- feat: enhance pipeline template list with marketplace feature toggle by @WTW0313 in #27604
- feat(api): Introduce workflow pause state management by @QuantumGhost in #27298
- docs(api): update docs about gevent setup in app.py by @QuantumGhost in #27611
- fix: python package vulnerability by @kenwoodjw in #27645
New Contributors
- @zhangxuhe1 made their first contribution in #24625
- @casio12r made their first contribution in #25583
- @zlyszx made their first contribution in #25783
- @rluncasu made their first contribution in #26519
- @ruanimal made their first contribution in #26481
- @zhyd1997 made their first contribution in #26310
- @linancn made their first contribution in #26685
- @CodingOnStar made their first contribution in #26705
- @Zedk42 made their first contribution in #26733
- @wangype made their first contribution in #25994
- @opeco17 made their first contribution in #26792
- @AsperforMias made their first contribution in #26745
- @mrdear made their first contribution in #26789
- @DhruvGorasiya made their first contribution in #25447
- @hj24 made their first contribution in #26811
- @yamachu made their first contribution in #26886
- @fatelei made their first contribution in #27074
- @twjackysu made their first contribution in #26850
- @white-loub made their first contribution in #27089
- @fengb3 made their first contribution in #27135
- @feelshana made their first contribution in #27042
- @yinxulai made their first contribution in #27159
- @cuixiaojun001 made their first contribution in #27252
- @gin-melodic made their first contribution in #25672
- @acro-k-tanaka made their first contribution in #27336
- @MaoJianwei made their first contribution in #27545
- @Vivecccccc made their first contribution in #26234
Full Changelog: 1.9.1...1.10.0-rc1