9fe089d355
Merge remote-tracking branch 'origin/main' into feat/support-agent-sandbox
2026-03-25 17:52:16 +08:00
7636e3a3bb
Merge remote-tracking branch 'origin/main' into feat/support-agent-sandbox
2026-03-25 17:49:36 +08:00
0e6d97acf9
fix: HumanInput node should unable to paste into container ( #34077 )
2026-03-25 17:22:21 +08:00
7fbb1c96db
feat(workflow): add selection context menu helpers and integrate with context menu component ( #34013 )
...
Co-authored-by: CodingOnStar <hanxujiang@dify.com >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: lif <1835304752@qq.com >
Co-authored-by: hjlarry <hjlarry@163.com >
Co-authored-by: Stephen Zhou <hi@hyoban.cc >
Co-authored-by: tmimmanuel <14046872+tmimmanuel@users.noreply.github.com >
Co-authored-by: Desel72 <pedroluiscolmenares722@gmail.com >
Co-authored-by: Renzo <170978465+RenzoMXD@users.noreply.github.com >
Co-authored-by: Krishna Chaitanya <krishnabkc15@gmail.com >
Co-authored-by: yyh <92089059+lyzno1@users.noreply.github.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-03-25 17:21:48 +08:00
6189d3f778
fix: populate sequence in workflow LLM generation and render outputs_as_generation
2026-03-25 16:47:50 +08:00
ede716fca3
Merge remote-tracking branch 'origin/main' into feat/support-agent-sandbox
2026-03-25 12:45:48 +08:00
d7e49c388c
refactor(workflow): migrate legacy toast usage to ui toast ( #34002 )
...
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
2026-03-25 12:42:18 +08:00
21bdb6da47
Merge remote-tracking branch 'origin/main' into feat/support-agent-sandbox
2026-03-25 11:50:33 +08:00
c6c2715395
fix(workflow): clear loop/iteration metadata when pasting node outside container ( #29983 )
...
Co-authored-by: hjlarry <hjlarry@163.com >
2026-03-25 11:14:12 +08:00
27f32ce383
Merge remote-tracking branch 'origin/main' into feat/support-agent-sandbox
2026-03-24 19:30:56 +08:00
a408a5d87e
test(workflow): add helper specs and raise targeted workflow coverage ( #33995 )
...
Co-authored-by: CodingOnStar <hanxujiang@dify.com >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-03-24 17:51:07 +08:00
d594365a45
feat: enhance configuration and environment setup for SSH sandbox and Creators Platform; update local excludes and improve component logic in the web app
2026-03-24 17:05:56 +08:00
499d237b7e
fix: pass all CI quality checks - ESLint, TypeScript, basedpyright, pyrefly, lint-imports
...
Frontend:
- Migrate deprecated imports: modal→dialog, toast→ui/toast, tooltip→tooltip-plus,
portal-to-follow-elem→portal-to-follow-elem-plus, select→ui/select, confirm→alert-dialog
- Replace next/* with @/next/* wrapper modules
- Convert TypeScript enums to const objects (erasable-syntax-only)
- Replace all `any` types with `unknown` or specific types in workflow types
- Fix unused vars, react-hooks-extra, react-refresh/only-export-components
- Extract InteractionMode to separate module, tool-block commands to commands.ts
Backend:
- Fix pyrefly errors: type narrowing, null guards, getattr patterns
- Remove unused TYPE_CHECKING imports in LLM node
- Add ignore_imports entries to .importlinter for dify_graph boundary violations
Made-with: Cursor
2026-03-24 10:54:58 +08:00
ed1bd338f1
refactor: update model attribute references from 'model' to 'model_name' across multiple files and introduce new fetch_model_config function in llm_utils.py
2026-03-23 21:17:43 +08:00
ee81ea882b
Merge branch 'feat/support-agent-sandbox' into sandboxed-agent-rebase
2026-03-23 20:19:16 +08:00
2cbc8da9cb
chore: remove block code
2026-03-23 16:32:48 +08:00
fd124e6d32
Merge main HEAD (segment 5) into sandboxed-agent-rebase
...
Resolve 83 conflicts: 10 backend, 62 frontend, 11 config/lock files.
Preserve sandbox/agent/collaboration features while adopting main's
UI refactorings (Dialog/AlertDialog/Popover), model provider updates,
and enterprise features.
Made-with: Cursor
2026-03-23 14:20:06 +08:00
5041d96bb1
Merge commit 'fb41b215' into sandboxed-agent-rebase
...
Made-with: Cursor
# Conflicts:
# .devcontainer/post_create_command.sh
# api/commands.py
# api/core/agent/cot_agent_runner.py
# api/core/agent/fc_agent_runner.py
# api/core/app/apps/workflow_app_runner.py
# api/core/app/entities/queue_entities.py
# api/core/app/entities/task_entities.py
# api/core/workflow/workflow_entry.py
# api/dify_graph/enums.py
# api/dify_graph/graph/graph.py
# api/dify_graph/graph_events/node.py
# api/dify_graph/model_runtime/entities/message_entities.py
# api/dify_graph/node_events/node.py
# api/dify_graph/nodes/agent/agent_node.py
# api/dify_graph/nodes/base/__init__.py
# api/dify_graph/nodes/base/entities.py
# api/dify_graph/nodes/base/node.py
# api/dify_graph/nodes/llm/entities.py
# api/dify_graph/nodes/llm/node.py
# api/dify_graph/nodes/tool/tool_node.py
# api/pyproject.toml
# api/uv.lock
# web/app/components/base/avatar/__tests__/index.spec.tsx
# web/app/components/base/avatar/index.tsx
# web/app/components/base/date-and-time-picker/time-picker/__tests__/index.spec.tsx
# web/app/components/base/file-uploader/file-from-link-or-local/index.tsx
# web/app/components/base/prompt-editor/index.tsx
# web/app/components/datasets/metadata/edit-metadata-batch/modal.tsx
# web/app/components/header/account-dropdown/index.spec.tsx
# web/app/components/share/text-generation/index.tsx
# web/app/components/workflow/block-selector/tool/action-item.tsx
# web/app/components/workflow/block-selector/trigger-plugin/action-item.tsx
# web/app/components/workflow/hooks/use-edges-interactions.ts
# web/app/components/workflow/hooks/use-nodes-interactions.ts
# web/app/components/workflow/index.tsx
# web/app/components/workflow/nodes/_base/components/editor/code-editor/index.tsx
# web/app/components/workflow/nodes/http/components/key-value/key-value-edit/index.tsx
# web/app/components/workflow/nodes/human-input/components/delivery-method/recipient/email-item.tsx
# web/app/components/workflow/nodes/loop/use-interactions.ts
# web/contract/router.ts
# web/env.ts
# web/eslint-suppressions.json
# web/package.json
# web/pnpm-lock.yaml
2026-03-23 10:52:06 +08:00
6b75188ddc
fix: resolve import migrations and test failures after segment 3 merge
...
- Migrate core.model_runtime -> dify_graph.model_runtime across 20+ files
- Migrate core.workflow.file -> dify_graph.file across 15+ files
- Migrate core.workflow.enums -> dify_graph.enums in service files
- Fix SandboxContext phantom import in dify_graph/context/__init__.py
- Fix core.app.workflow.node_factory -> core.workflow.node_factory
- Fix toast import paths (useToastContext from toast/context)
- Fix app-info.tsx import paths for relocated app-operations
- Fix 15 frontend test files for API changes, missing QueryClientProvider,
i18n key renames, and component behavior changes
Made-with: Cursor
2026-03-23 10:31:11 +08:00
94b01f6821
Merge commit '92bde350' into sandboxed-agent-rebase
...
Made-with: Cursor
# Conflicts:
# api/controllers/console/app/workflow_draft_variable.py
# api/core/agent/cot_agent_runner.py
# api/core/agent/cot_chat_agent_runner.py
# api/core/agent/cot_completion_agent_runner.py
# api/core/agent/fc_agent_runner.py
# api/core/app/apps/advanced_chat/app_generator.py
# api/core/app/apps/advanced_chat/app_runner.py
# api/core/app/apps/agent_chat/app_runner.py
# api/core/app/apps/workflow/app_generator.py
# api/core/app/apps/workflow/app_runner.py
# api/core/app/entities/app_invoke_entities.py
# api/core/app/entities/queue_entities.py
# api/core/llm_generator/output_parser/structured_output.py
# api/core/workflow/workflow_entry.py
# api/dify_graph/context/__init__.py
# api/dify_graph/entities/tool_entities.py
# api/dify_graph/file/file_manager.py
# api/dify_graph/graph_engine/response_coordinator/coordinator.py
# api/dify_graph/graph_events/node.py
# api/dify_graph/node_events/node.py
# api/dify_graph/nodes/agent/agent_node.py
# api/dify_graph/nodes/llm/entities.py
# api/dify_graph/nodes/llm/llm_utils.py
# api/dify_graph/nodes/llm/node.py
# api/dify_graph/nodes/question_classifier/question_classifier_node.py
# api/dify_graph/runtime/graph_runtime_state.py
# api/dify_graph/variables/segments.py
# api/factories/variable_factory.py
# api/services/variable_truncator.py
# api/tests/unit_tests/utils/structured_output_parser/test_structured_output_parser.py
# api/uv.lock
# web/app/components/app-sidebar/app-info.tsx
# web/app/components/app-sidebar/app-sidebar-dropdown.tsx
# web/app/components/app/create-app-modal/index.spec.tsx
# web/app/components/apps/__tests__/list.spec.tsx
# web/app/components/apps/app-card.tsx
# web/app/components/apps/list.tsx
# web/app/components/header/account-dropdown/compliance.tsx
# web/app/components/header/account-dropdown/index.tsx
# web/app/components/header/account-dropdown/support.tsx
# web/app/components/workflow-app/components/workflow-onboarding-modal/index.tsx
# web/app/components/workflow/panel/debug-and-preview/hooks.ts
# web/contract/console/apps.ts
# web/contract/router.ts
# web/eslint-suppressions.json
# web/next.config.ts
# web/pnpm-lock.yaml
2026-03-23 09:39:49 +08:00
c8ed584c0e
fix: adding a restore API for version control on workflow draft ( #33582 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com >
2026-03-20 14:54:23 +08:00
4df602684b
test(workflow): add unit tests for workflow components ( #33741 )
...
Co-authored-by: CodingOnStar <hanxujiang@dify.com >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-03-19 18:35:16 +08:00
bbe975c6bc
feat: enhance model plugin workflow checks and model provider management UX ( #33289 )
...
Signed-off-by: yyh <yuanyouhuilyz@gmail.com >
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: CodingOnStar <hanxujiang@dify.com >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Coding On Star <447357187@qq.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: -LAN- <laipz8200@outlook.com >
Co-authored-by: statxc <tyleradams93226@gmail.com >
2026-03-18 10:16:15 +08:00
fe561ef3d0
feat(workflow): add edge context menu with delete support ( #33391 )
2026-03-13 15:11:24 +08:00
4a2ba058bb
feat: when copy/paste multi nodes not require reconnect them ( #32631 )
2026-03-09 13:55:12 +08:00
ec5409756e
feat: keep connections when change node ( #31982 )
2026-03-09 13:54:10 +08:00
f487b680f5
refactor: spilt context for better hmr ( #33033 )
2026-03-05 15:54:56 +08:00
5385ec3023
test(workflow): add comprehensive hooks unit tests and refactor test infrastructure (Part 3) ( #32958 )
...
Co-authored-by: CodingOnStar <hanxujiang@dify.com >
2026-03-04 17:24:50 +08:00
0893c8531d
fix(workflow): lock chatflow start node from type change
2026-02-13 12:56:49 +08:00
d876fddab0
Revert "feat(workflow): refine variable validation and scoping for workflow nodes, remove redundant End block checks"
...
This reverts commit 32fcbcdc62 .
2026-02-10 20:00:11 +08:00
32fcbcdc62
feat(workflow): refine variable validation and scoping for workflow nodes, remove redundant End block checks
2026-02-10 16:39:04 +08:00
41b218f427
feat: LLM node to only show generation output var when computer use is
...
enabled, matching the actual output structure.
2026-02-09 23:40:42 +08:00
ca243d7efc
chore(web): pre-align HITL frontend from build/feat/hitl
2026-02-09 15:34:15 +08:00
a1fc280102
feat: Human Input Node ( #32060 )
...
The frontend and backend implementation for the human input node.
Co-authored-by: twwu <twwu@dify.ai >
Co-authored-by: JzoNg <jzongcode@gmail.com >
Co-authored-by: yyh <92089059+lyzno1@users.noreply.github.com >
Co-authored-by: zhsama <torvalds@linux.do >
2026-02-09 14:57:23 +08:00
2b848d7e93
fix(workflow): prevent redundant sandbox download refetch after reset
...
Problem:\n- In variable inspect artifacts view, clicking Reset All invalidates sandbox download query keys.\n- If a previously selected file has been removed, the download-url query may still refetch with stale path and return 400.\n- Default query retry amplifies this into repeated failed requests in this scenario.\n\nSolution:\n- Extend sandbox file invalidation with an option to skip download query refetch.\n- Use that option in Reset All flow so download-url queries are marked stale without immediate refetch.\n- Derive selected file path from latest sandbox flat data and disable download-url query when file no longer exists.\n- Disable retry only for artifacts-tab download-url query to avoid repeated 400 retries in this path.\n- Align tree selectedPath with derived selectedFilePath and add hook tests for invalidation behavior.\n\nValidation:\n- pnpm vitest --run service/use-sandbox-file.spec.tsx
2026-02-07 22:43:13 +08:00
e10996c368
chore: log 20 recent crdt import changes
2026-02-07 10:12:47 +08:00
8235ad9e62
fix: Fix variable availability resolution for child nodes in workflow
2026-02-05 16:57:19 +08:00
aad15a0777
fix: return invalidate promises and parallelize invalidations
2026-02-05 11:42:59 +08:00
740fafc926
feat: show Reset All button on both variable inspect tabs
...
- Change Reset All button visibility from Variables-tab-only to both tabs,
displaying when either variables or artifacts have data
- Invalidate sandbox files cache in deleteAllInspectorVars alongside
existing conversation/system var invalidations
2026-02-05 11:30:53 +08:00
70c887ed5c
fix undo/redo
2026-02-03 18:00:06 +08:00
e2913d9ee1
Revert "refactor!: replace Zustand global store with TanStack Query for systemFeatures"
...
This reverts commit 806ece9a67 .
2026-02-01 19:06:45 +08:00
806ece9a67
refactor!: replace Zustand global store with TanStack Query for systemFeatures
...
Follow-up to SSR prefetch migration (2833965 ). Eliminates the Zustand
middleman that was syncing TanStack Query data into a separate store.
- Remove useGlobalPublicStore Zustand store entirely
- Create hooks/use-global-public.ts with useSystemFeatures,
useSystemFeaturesQuery, useIsSystemFeaturesPending, useSetupStatusQuery
- Migrate all 93 consumers to import from @/hooks/use-global-public
- Simplify global-public-context.tsx to a thin provider component
- Update 18 test files to mock the new hook interface
- Fix SetupStatusResponse.setup_at type from Date to string (JSON)
- Fix setup-status.spec.ts mock target to match consoleClient
BREAKING CHANGE: useGlobalPublicStore is removed. Use useSystemFeatures()
from @/hooks/use-global-public instead.
2026-02-01 19:06:08 +08:00
bc1d3bdf57
refactor: Extract nested node ID parsing into shared utility
2026-01-30 22:24:30 +08:00
90fe9abab7
revert: revert human input relevant code ( #31766 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-01-30 19:18:49 +08:00
fedd097f63
feat: Human Input node (Frontend Part) ( #31631 )
...
Co-authored-by: JzoNg <jzongcode@gmail.com >
Co-authored-by: Joel <iamjoel007@gmail.com >
Co-authored-by: yessenia <yessenia.contact@gmail.com >
Co-authored-by: QuantumGhost <obelisk.reg+git@gmail.com >
2026-01-30 10:16:46 +08:00
ff478b6fef
perf(workflow): optimize plugin installation hooks to reduce unnecessary queries and memo invalidations
...
Only enable the tool query matching the node's provider_type instead of
all four, and use primitive useMemo dependencies instead of the whole
data object to avoid redundant recomputations on every render.
2026-01-30 01:56:07 +08:00
e9c9f0d7cc
perf(workflow): optimize nested-node cascade deletion
2026-01-30 01:53:19 +08:00
c8a0a2c00d
perf(workflow): skip unnecessary query subscriptions for non-plugin nodes
...
Add `enabled` parameter to tool query hooks so non-plugin nodes
(LLM, Code, IfElse, etc.) avoid registering React Query observers.
Extract shared matching functions into plugin-install-check utils to
eliminate duplicate logic between the hook and the checklist.
2026-01-30 01:46:50 +08:00
5d8ba8f8cc
feat: Recursively delete nested children (sub-graph) when removing nodes
2026-01-30 01:40:57 +08:00
03f1197d77
fix(workflow): memoize useCollaborativeWorkflow return value
...
Wrap the returned object in useMemo to maintain referential stability
and prevent unnecessary re-renders in consumers.
2026-01-30 01:31:25 +08:00