github langgenius/dify 1.10.0
v1.10.0 - Event-Driven Workflows

21 hours ago

Introduce Trigger Functionality

A trigger is a type of Start node that allows your workflow to run automatically—either on a schedule or in response to events from external systems (such as GitHub, Gmail, or your internal services)—without requiring a user action or API call.
Triggers are ideal for automating repetitive processes and integrating workflows with third-party applications to enable seamless data synchronization and processing.

⚡️ Trigger = When something happens → then do something

Triggers form the foundation of event-driven Workflow capabilities and currently support the following types:

  • Schedule — time-based triggers
  • SaaS Integration Event — events from external SaaS platforms (e.g., Slack, GitHub, Linear) integrated through Plugins
  • Webhook — HTTP callbacks from external systems

These trigger features are only available for Workflows. Chatflow, Agent, and BasicChat currently do not support triggers.

🧩 Marketplace

We provide several popular trigger plugins, which you can explore in our Marketplace.

image

😎 Enjoy the Experience

Sit back, relax, and let your workflows run themselves.

image

A big thanks to our contributor !

Thanks so much for the contributors in #23981 who helps us developed this feature! It's a big deal made by you guys! @ACAne0320 @hjlarry @lyzno1 @CathyL0 @zhangxuhe1

Upgrade Guide

Docker Compose Deployments

  1. Back up your customized docker-compose YAML file (optional)

    cd docker
    cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak
  2. Get the latest code from the main branch

    git checkout main
    git pull origin main
  3. Stop the service. Please execute in the docker directory

    docker compose down
  4. Back up data

    tar -cvf volumes-$(date +%s).tgz volumes
  5. Upgrade services

    docker compose up -d

Source Code Deployments

  1. Stop the API server, Worker, and Web frontend Server.

  2. Get the latest code from the release branch:

    git checkout 1.10.0
  3. Update Python dependencies:

    cd api
    uv sync
  4. Then, let's run the migration script:

    uv run flask db upgrade
  5. Finally, run the API server, Worker, and Web frontend Server again.


What's Changed

  • feat: add flatten_output configuration to iteration node by @Nov1c444 in #27502
  • feat: implement MCP specification 2025-06-18 by @Nov1c444 in #25766
  • feat: introduce RAG tool recommendations and refactor related components for improved plugin management by @WTW0313 in #27259
  • feat: enhance tencent trace integration with LLM core metrics by @minimAluminiumalism in #27126
  • feat: use id for webapp by @GareArc in #27576
  • feat: enhance pipeline template list with marketplace feature toggle by @WTW0313 in #27604
  • feat(api): Introduce workflow pause state management by @QuantumGhost in #27298
  • feat: localization for hi-IN by @SmartDever02 in #27783
  • feat: Add Audio Content Support for MCP Tools by @IthacaDream in #27979
  • feat(api): Introduce Broadcast Channel by @QuantumGhost in #27835
  • feat(api): Introduce WorkflowResumptionContext for pause state management by @QuantumGhost in #28122
  • feat: introduce trigger functionality by @Yeuoly in #27644
  • feat: add segments max number limit for SegmentApi.post by @ruanimal in #27745
  • feat: enhance annotation API to support optional message_id and content fields by @liugddx in #27460
  • feat: add validation to prevent saving empty opening statement in conversation opener modal by @Nov1c444 in #27843
  • feat: change feedback to forum by @crazywoola in #27862
  • feat: add draft trigger detection to app model and UI by @zhsama in #28163
  • feat: enhance start node metadata to be undeletable in chat mode by @zhsama in #28173
  • fix issues 27388, add missing env variable: ENFORCE_LANGGENIUS_PLUGIN… by @MaoJianwei in #27545
  • fix: resolve 500 error when updating document chunk settings (#27551) by @quicksandznzn in #27574
  • fix: iteration node cannot be viewed(#27759) by @redSun64 in #27786
  • fix agent putout the output of workflow-tool twice (#26835) by @Cursx in #27706
  • fix:knowledge base reference information is overwritten when using mu… by @zhengchangchun in #27799
  • fix: installation_id is missing when in tools page by @crazywoola in #27849
  • fix: avoid passing empty uniqueIdentifier to InstallFromMarketplace by @johnny0120 in #27802
  • fix: python package vulnerability by @kenwoodjw in #27645
  • fix(api): return timestamp as integer in document api by @invzhi in #27761
  • fix: File model add known extra fields, fix issue about the tool of… by @CrabSAMA in #27607
  • FIX Issue #27697: Add env variable in docker-compose(template) and make it take effect. by @Dave0126 in #27704
  • fix: datasets weight settings embedding model does not change by @lcedaw in #27694
  • fix: bump pyobvector to 0.2.17 by @kenwoodjw in #27791
  • fix: elasticsearch_vector version by @huangzhuo1949 in #28028
  • fix workflow default updated_at by @IthacaDream in #28047
  • fix(api): Trace Hierarchy, Span Status, and Broken Workflow for Arize & Phoenix Integration by @ialisaleh in #27937
  • fix Version 2.0.0-beta.2: Chat annotations Api Error #25506 by @Cursx in #27206
  • fix: prevent fetch version info in enterprise edition by @douxc in #27923
  • fix(api): fix VariablePool.get adding unexpected keys to variable_dictionary by @QuantumGhost in #26767
  • fix: bump brotli to 1.2.0 resloved CVE-2025-6176 by @kenwoodjw in #27950
  • refactor: update installed app component to handle missing params and improve type safety by @ZeroZ-lab in #27331
  • refactor:Decouple Domain Models from Direct Database Access by @hieheihei in #27316
  • refactor: update install status handling in plugin installation process by @WTW0313 in #27594
  • refactor(api): add SQLAlchemy 2.x Mapped type hints to Message model by @laipz8200 in #27709
  • refactor: replace hardcoded user plan strings with CloudPlan enum by @laipz8200 in #27675
  • refactor: Use Repository Pattern for Model Layer by @hieheihei in #27663
  • refactor(api): set default value for EasyUIBasedAppGenerateEntity.query by @laipz8200 in #27712
  • refactor(web): reuse the same edit-custom-collection-modal component, and fix the pop up error by @yangzheli in #28003
  • refactor(web): remove redundant add-tool-modal components and related code by @yangzheli in #27996
  • chore: translate i18n files and update type definitions by @github-actions[bot] in #27423
  • 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
  • chore: add more stories by @hjlarry in #27403
  • chore: improve mcp server url validation by @Nov1c444 in #27558
  • 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
  • chore: warning messages too long in model config caused ui issue by @iamjoel in #27542
  • chore: add type-check to pre-commit by @lyzno1 in #28005
  • chore(deps): bump tablestore from 6.2.0 to 6.3.7 in /api by @dependabot[bot] in #27736
  • chore(deps): bump dayjs from 1.11.18 to 1.11.19 in /web by @dependabot[bot] in #27735
  • chore(deps): bump scipy-stubs from 1.16.2.3 to 1.16.3.0 in /api by @dependabot[bot] in #28025
  • chore: disable workflow logs auto-cleanup by default by @laipz8200 in #28136
  • chore: not SaaS version can query long log time range by @iamjoel in #28109
  • chore: improve the user experience of not login into apps by @iamjoel in #28120
  • chore: Remove trailing space from migration filename by @IthacaDream in #28040
  • chore: translate i18n files and update type definitions by @github-actions[bot] in #28054
  • chore: remove unused enterprise bot from the readme by @crazywoola in #28073

New Contributors

Full Changelog: 1.9.2...1.10.0

Don't miss a new dify release

NewReleases is sending notifications on new releases.