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
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
a28f22e59d
fix: resolve import errors and test failures after segment 4 merge
...
- Update BaseNodeData import path to dify_graph.entities.base_node_data
- Change NodeType.COMMAND/FILE_UPLOAD to BuiltinNodeTypes constants
- Fix system_oauth_encryption -> system_encryption rename in commands
- Remove tests for deleted agent runner modules
- Fix Avatar: named import + string size API in collaboration files
- Add missing skill feature deps: @monaco-editor/react, react-arborist,
@tanstack/react-virtual
- Fix frontend test mocks: add useUserProfile, useLeaderRestoreListener,
next/navigation mock, and nodeOutputVars to expected payload
Made-with: Cursor
2026-03-23 13:59:09 +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
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
cccff6768a
Merge commit '9c339239' into sandboxed-agent-rebase
...
Made-with: Cursor
# Conflicts:
# api/README.md
# api/controllers/console/app/workflow_draft_variable.py
# api/core/agent/cot_agent_runner.py
# api/core/agent/fc_agent_runner.py
# api/core/app/apps/advanced_chat/app_runner.py
# api/core/plugin/backwards_invocation/model.py
# api/core/prompt/advanced_prompt_transform.py
# api/core/workflow/nodes/base/node.py
# api/core/workflow/nodes/llm/llm_utils.py
# api/core/workflow/nodes/llm/node.py
# api/core/workflow/nodes/parameter_extractor/parameter_extractor_node.py
# api/core/workflow/nodes/question_classifier/question_classifier_node.py
# api/core/workflow/runtime/graph_runtime_state.py
# api/extensions/storage/base_storage.py
# api/factories/variable_factory.py
# api/pyproject.toml
# api/services/variable_truncator.py
# api/uv.lock
# web/app/account/oauth/authorize/page.tsx
# web/app/components/app/configuration/config-var/config-modal/field.tsx
# web/app/components/base/alert.tsx
# web/app/components/base/chat/chat/answer/human-input-content/executed-action.tsx
# web/app/components/base/chat/chat/answer/more.tsx
# web/app/components/base/chat/chat/answer/operation.tsx
# web/app/components/base/chat/chat/answer/workflow-process.tsx
# web/app/components/base/chat/chat/citation/index.tsx
# web/app/components/base/chat/chat/citation/popup.tsx
# web/app/components/base/chat/chat/citation/progress-tooltip.tsx
# web/app/components/base/chat/chat/citation/tooltip.tsx
# web/app/components/base/chat/chat/question.tsx
# web/app/components/base/chat/embedded-chatbot/inputs-form/index.tsx
# web/app/components/base/chat/embedded-chatbot/inputs-form/view-form-dropdown.tsx
# web/app/components/base/markdown-blocks/form.tsx
# web/app/components/base/prompt-editor/plugins/hitl-input-block/component-ui.tsx
# web/app/components/base/tag-management/panel.tsx
# web/app/components/base/tag-management/trigger.tsx
# web/app/components/header/account-setting/index.tsx
# web/app/components/header/account-setting/members-page/transfer-ownership-modal/index.tsx
# web/app/components/header/account-setting/model-provider-page/provider-added-card/index.tsx
# web/app/signin/utils/post-login-redirect.ts
# web/eslint-suppressions.json
# web/package.json
# web/pnpm-lock.yaml
2026-03-23 09:00:45 +08:00
27ed40225d
refactor(web): update frontend toast call sites to use the new shortcut API ( #33808 )
...
Signed-off-by: yyh <yuanyouhuilyz@gmail.com >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-03-20 16:02:22 +08:00
93f9546353
refactor(web): migrate core toast call sites to base ui toast ( #33643 )
2026-03-18 16:53:55 +08:00
296b7044af
refactor: route next/navigation through compat re-export ( #33636 )
2026-03-18 12:57:03 +08:00
69d1ccb7a7
refactor: route next/link through compat re-export ( #33632 )
2026-03-18 12:14:59 +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
5d0c3d58ac
refactor(avatar): migrate to Base UI primitives with Record size variants ( #33268 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-03-11 14:26:04 +08:00
f487b680f5
refactor: spilt context for better hmr ( #33033 )
2026-03-05 15:54:56 +08:00
a4373d8b7b
chore: i18n hmr support, fix hmr for app context ( #32997 )
2026-03-05 10:45:16 +08:00
46d45e4c39
fix: remove REDIRECT_URL_KEY from url ( #32770 )
2026-03-01 14:29:23 +08:00
ae59074c59
refactor(web): preserve all OAuth query params and remove legacy storage fallback
...
- Use searchParams.toString() to forward all query params instead of
manually encoding only client_id and redirect_uri
- Remove legacy localStorage fallback since storage utility is now
the sole persistence layer
- Add tests for OAuth authorize page, home page, and post-login redirect
2026-02-10 14:39:05 +08:00
868423a138
refactor(web): migrate OAuth redirect storage to utility and preserve query params
...
- Use storage utility instead of raw localStorage for OAuth pending
redirect with legacy fallback for backward compatibility
- Forward search params from root page to /apps so query strings
(e.g. redirect_url) are not lost during server-side redirect
2026-02-10 14:23:47 +08:00
4d439028e5
refactor(web): simplify home page redirect and replace dayjs with native Date API
...
Move OAuth pending redirect check out of page.tsx since AppInitializer
already handles it globally. Simplify home page to a server-side redirect
and remove dayjs dependency in favor of native Date.now().
2026-02-10 13:53:46 +08:00
db0c527ce8
Merge remote-tracking branch 'origin/main' into feat/support-agent-sandbox
2026-02-09 18:43:04 +08:00
871ec3b0ca
Merge remote-tracking branch 'origin/main' into feat/support-agent-sandbox
...
# Conflicts:
# api/controllers/console/app/app.py
# web/eslint-suppressions.json
# web/eslint.config.mjs
2026-02-06 14:40:44 +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
2aaaa4bd34
feat(web): migrate from es-toolkit/compat to native es-toolkit ( #30244 ) ( #30246 )
2025-12-31 11:13:22 +08:00
3505516e8e
fix: missing i18n translation for Trans ( #30353 )
2025-12-30 10:46:52 +08:00
6d0e36479b
refactor(i18n): use JSON with flattened key and namespace ( #30114 )
...
Co-authored-by: yyh <yuanyouhuilyz@gmail.com >
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2025-12-29 14:52:32 +08:00
09be869f58
refactor(web): drop swr and migrate share/chat hooks to tanstack query ( #30232 )
...
Co-authored-by: Joel <iamjoel007@gmail.com >
2025-12-29 14:04:01 +08:00
3cbbb06dc4
chore(web): migrate lodash-es to es-toolkit compat ( #30126 )
2025-12-25 09:44:57 +08:00
403adefc07
chore: lint require and how to import react ( #30041 )
2025-12-23 18:02:10 +08:00
f2842da397
chore(web): new lint setup ( #30020 )
...
Co-authored-by: yyh <yuanyouhuilyz@gmail.com >
2025-12-23 16:58:55 +08:00
a26881cb24
refactor: unified cn utils ( #29916 )
...
Co-authored-by: yyh <yuanyouhuilyz@gmail.com >
Co-authored-by: yyh <92089059+lyzno1@users.noreply.github.com >
2025-12-19 12:08:34 +08:00
fbb2d076f4
integrate Amplitude analytics into the application ( #29049 )
...
Co-authored-by: CodingOnStar <hanxujiang@dify.ai >
Co-authored-by: Joel <iamjoel007@gmail.com >
2025-12-03 14:22:12 +08:00
f8b10c2272
Refactor apps service toward TanStack Query ( #29004 )
2025-12-02 15:18:33 +08:00
43bcf40f80
refactor: update installed app component to handle missing params and improve type safety ( #27331 )
2025-10-27 14:38:58 +08:00
9a5f214623
refactor: replace localStorage with HTTP-only cookies for auth tokens ( #24365 )
...
Signed-off-by: NeatGuyCoding <15627489+NeatGuyCoding@users.noreply.github.com >
Signed-off-by: lyzno1 <yuanyouhuilyz@gmail.com >
Signed-off-by: kenwoodjw <blackxin55+@gmail.com >
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Yunlu Wen <wylswz@163.com >
Co-authored-by: Joel <iamjoel007@gmail.com >
Co-authored-by: GareArc <chen4851@purdue.edu >
Co-authored-by: NFish <douxc512@gmail.com >
Co-authored-by: Davide Delbianco <davide.delbianco@outlook.com >
Co-authored-by: minglu7 <1347866672@qq.com >
Co-authored-by: Ponder <ruan.lj@foxmail.com >
Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com >
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: heyszt <270985384@qq.com >
Co-authored-by: Asuka Minato <i@asukaminato.eu.org >
Co-authored-by: Guangdong Liu <liugddx@gmail.com >
Co-authored-by: Eric Guo <eric.guocz@gmail.com >
Co-authored-by: NeatGuyCoding <15627489+NeatGuyCoding@users.noreply.github.com >
Co-authored-by: XlKsyt <caixuesen@outlook.com >
Co-authored-by: Dhruv Gorasiya <80987415+DhruvGorasiya@users.noreply.github.com >
Co-authored-by: crazywoola <427733928@qq.com >
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: lyzno1 <92089059+lyzno1@users.noreply.github.com >
Co-authored-by: hj24 <mambahj24@gmail.com >
Co-authored-by: GuanMu <ballmanjq@gmail.com >
Co-authored-by: 非法操作 <hjlarry@163.com >
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com >
Co-authored-by: Tonlo <123lzs123@gmail.com >
Co-authored-by: Yusuke Yamada <yamachu.dev@gmail.com >
Co-authored-by: Novice <novice12185727@gmail.com >
Co-authored-by: kenwoodjw <blackxin55+@gmail.com >
Co-authored-by: Ademílson Tonato <ademilsonft@outlook.com >
Co-authored-by: znn <jubinkumarsoni@gmail.com >
Co-authored-by: yangzheli <43645580+yangzheli@users.noreply.github.com >
2025-10-19 21:29:04 +08:00
4c92e63b0b
fix: avatar is not updated after setted ( #25414 )
2025-09-09 16:00:50 +08:00
32972b45db
fix: remove unnecessary modal visibility toggle on error in name save ( #25001 )
2025-09-02 18:57:24 +08:00
208ce4e774
CI: add TS indentation check via esLint ( #24810 )
2025-09-01 15:31:59 +08:00
f32e176d6a
feat: oauth provider ( #24206 )
...
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: yessenia <yessenia.contact@gmail.com >
2025-08-29 14:10:51 +08:00
aa71f88e1b
chore: hide delete action when avatar is none ( #24512 )
2025-08-26 10:25:55 +08:00
a3a041ef6f
feat: add delete avatar functionality with confirmation modal ( #24127 )
...
Co-authored-by: crazywoola <427733928@qq.com >
2025-08-18 21:35:20 +08:00
2da00bb4ec
Fix misleading Studio button in account header ( #23842 )
2025-08-13 13:56:06 +08:00
cb5e2ad9b2
lint: fix tailwind lint issues ( #23367 )
...
Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com >
2025-08-08 09:25:41 +08:00
d6b980a2dd
Feat: change user email freezes limit ( #22912 )
...
Co-authored-by: Yansong Zhang <916125788@qq.com >
2025-07-25 08:48:23 +08:00
a83e4ed9a4
Perf: remove user profile loading ( #22710 )
2025-07-21 16:35:52 +08:00
fafb1d5fd7
feat: validate email according to RFC 5322 ( #22540 )
2025-07-17 14:20:44 +08:00
a4f421028c
Feat/change user email ( #22213 )
...
Co-authored-by: NFish <douxc512@gmail.com >
Co-authored-by: JzoNg <jzongcode@gmail.com >
Co-authored-by: Garfield Dai <dai.hai@foxmail.com >
2025-07-17 10:55:59 +08:00
7f5087c6db
reject whitespace characters in password regexp ( #22232 )
2025-07-11 19:18:18 +08:00
57ece83c30
Fix/branding broken ( #20375 )
...
Co-authored-by: zxhlyh <jasonapring2015@outlook.com >
2025-05-28 20:06:58 +08:00
d186daa131
E-300 ( #19726 )
...
Signed-off-by: -LAN- <laipz8200@outlook.com >
Co-authored-by: Hash Brown <hi@xzd.me >
Co-authored-by: crazywoola <427733928@qq.com >
Co-authored-by: GareArc <chen4851@purdue.edu >
Co-authored-by: Byron.wang <byron@dify.ai >
Co-authored-by: Joel <iamjoel007@gmail.com >
Co-authored-by: -LAN- <laipz8200@outlook.com >
Co-authored-by: Garfield Dai <dai.hai@foxmail.com >
Co-authored-by: KVOJJJin <jzongcode@gmail.com >
Co-authored-by: Alexi.F <654973939@qq.com >
Co-authored-by: Xiyuan Chen <52963600+GareArc@users.noreply.github.com >
Co-authored-by: kautsar_masuara <61046989+izon-masuara@users.noreply.github.com >
Co-authored-by: achmad-kautsar <achmad.kautsar@insignia.co.id >
Co-authored-by: Xin Zhang <sjhpzx@gmail.com >
Co-authored-by: kelvintsim <83445753+kelvintsim@users.noreply.github.com >
Co-authored-by: zxhlyh <jasonapring2015@outlook.com >
Co-authored-by: Zixuan Cheng <61724187+Theysua@users.noreply.github.com >
2025-05-20 12:07:50 +08:00
dc75a10989
feat: update branding ( #19719 )
...
Co-authored-by: twwu <twwu@dify.ai >
2025-05-15 12:38:20 +08:00