dify/web/app/components/workflow
yyh 12ca422c8a
fix(app-assets): restore atomic batch upload for nested folder targets
The previous nested folder upload flow bypassed the backend batch-upload
contract when parentId was set. Instead of creating the whole metadata
tree in one backend operation, the frontend recursively called
createFolder/getFileUploadUrl for each node.

That introduced two regressions for uploads into subfolders:

- consistency regression: mid-sequence failures could leave partially
  created folder trees under the destination folder
- performance regression: metadata creation degraded from a single
  batch request to O(files + folders) round-trips before file bytes
  were uploaded

This change moves nested uploads back to the original batch semantics:

- add optional parent_id support to app asset batch-upload payload
- create the whole nested tree under the target parent in
  AppAssetService.batch_create_from_tree
- pass parentId through useBatchUpload instead of using per-node
  createFolder/getFileUploadUrl calls
- remove the now-unnecessary useBatchUploadOperation wrapper
- add a backend unit test covering batch tree creation under an
  existing parent folder

After this change, both root uploads and subfolder uploads use the same
single-request metadata creation path, preserving atomic tree creation
semantics and avoiding avoidable metadata round-trips.
2026-03-26 15:16:55 +08:00
..
__tests__ tix test 2026-03-25 19:25:22 +08:00
block-selector Merge remote-tracking branch 'origin/main' into feat/support-agent-sandbox 2026-03-25 12:45:48 +08:00
collaboration chore: use console.warn instead of toast 2026-02-12 10:07:47 +08:00
comment refactor(web): simplify avatar composition api 2026-03-25 13:53:54 +08:00
constants fix: pass all CI quality checks - ESLint, TypeScript, basedpyright, pyrefly, lint-imports 2026-03-24 10:54:58 +08:00
datasets-detail-store test(workflow): add unit tests for workflow components (#33910) 2026-03-23 16:37:03 +08:00
header tix test 2026-03-25 19:25:22 +08:00
help-line feat(workflow): add selection context menu helpers and integrate with context menu component (#34013) 2026-03-25 17:21:48 +08:00
hooks fix(web): align data contracts with backend schema 2026-03-26 14:34:06 +08:00
hooks-store Merge branch 'main' into sandboxed-agent-rebase 2026-03-24 11:19:50 +08:00
nodes fix(web): align data contracts with backend schema 2026-03-26 14:34:06 +08:00
note-node use base ui toast 2026-03-25 20:38:44 +08:00
operator Merge main HEAD (segment 5) into sandboxed-agent-rebase 2026-03-23 14:20:06 +08:00
panel use base ui toast 2026-03-25 20:38:44 +08:00
plugin-dependency test(workflow): add unit tests for workflow components (#33910) 2026-03-23 16:37:03 +08:00
run Merge remote-tracking branch 'origin/main' into feat/support-agent-sandbox 2026-03-25 17:49:36 +08:00
simple-node Merge branch 'main' into sandboxed-agent-rebase 2026-03-24 11:19:50 +08:00
skill fix(app-assets): restore atomic batch upload for nested folder targets 2026-03-26 15:16:55 +08:00
store refactor(skill): migrate file tree menus to base ui overlays 2026-03-24 19:57:29 +08:00
utils fix: pass all CI quality checks - ESLint, TypeScript, basedpyright, pyrefly, lint-imports 2026-03-24 10:54:58 +08:00
variable-inspect Revert "Refactor variable inspect panel layout and scrolling" 2026-03-26 13:32:18 +08:00
workflow-preview refactor(web): remove tooltip-plus and migrate to ui tooltip 2026-03-25 13:35:43 +08:00
block-icon.tsx fix: pass all CI quality checks - ESLint, TypeScript, basedpyright, pyrefly, lint-imports 2026-03-24 10:54:58 +08:00
candidate-node-main.tsx Merge remote-tracking branch 'myori/main' into feat/collaboration2 2026-01-17 10:22:41 +08:00
candidate-node.tsx chore(web): new lint setup (#30020) 2025-12-23 16:58:55 +08:00
comment-manager.tsx feat: mouse right click can add new comment 2026-01-29 09:13:12 +08:00
constants.ts fix: pass all CI quality checks - ESLint, TypeScript, basedpyright, pyrefly, lint-imports 2026-03-24 10:54:58 +08:00
context.tsx chore(web): new lint setup (#30020) 2025-12-23 16:58:55 +08:00
custom-connection-line.tsx chore(web): new lint setup (#30020) 2025-12-23 16:58:55 +08:00
custom-edge-linear-gradient-render.tsx chore(web): new lint setup (#30020) 2025-12-23 16:58:55 +08:00
custom-edge.tsx chore: remove block code 2026-03-23 16:32:48 +08:00
dsl-export-confirm-modal.tsx fix: pass all CI quality checks - ESLint, TypeScript, basedpyright, pyrefly, lint-imports 2026-03-24 10:54:58 +08:00
edge-contextmenu.tsx feat(workflow): add edge context menu with delete support (#33391) 2026-03-13 15:11:24 +08:00
features.tsx feat: Exclude reasoning_format from LLM nodes when sandbox enabled 2026-02-11 21:16:58 +08:00
index.tsx use base ui toast 2026-03-25 20:38:44 +08:00
interaction-mode.ts fix: pass all CI quality checks - ESLint, TypeScript, basedpyright, pyrefly, lint-imports 2026-03-24 10:54:58 +08:00
node-contextmenu.tsx feat(workflow): add edge context menu with delete support (#33391) 2026-03-13 15:11:24 +08:00
panel-contextmenu.tsx Merge commit 'fb41b215' into sandboxed-agent-rebase 2026-03-23 10:52:06 +08:00
selection-contextmenu.tsx Merge remote-tracking branch 'origin/main' into feat/support-agent-sandbox 2026-03-25 17:49:36 +08:00
shortcuts-name.tsx Merge remote-tracking branch 'origin/main' into feat/support-agent-sandbox 2026-02-09 18:43:04 +08:00
style.css
syncing-data-modal.tsx chore(web): new lint setup (#30020) 2025-12-23 16:58:55 +08:00
types.ts fix: pass all CI quality checks - ESLint, TypeScript, basedpyright, pyrefly, lint-imports 2026-03-24 10:54:58 +08:00
update-dsl-modal.helpers.ts fix(workflow): tighten tsgo types in workflow editor 2026-03-25 18:35:51 +08:00
update-dsl-modal.tsx tix test 2026-03-25 19:25:22 +08:00
view-picker.tsx chore: change copywriting 2026-03-26 15:00:04 +08:00
workflow-history-store.tsx feat(web): migrate from es-toolkit/compat to native es-toolkit (#30244) (#30246) 2025-12-31 11:13:22 +08:00