1.15.0
promptslab/Promptify1.15.0Jun 25, 2026by wylswz
AI Summary
A comprehensive release introducing a CLI tool (difyctl), significant UX/UI improvements, support for long-running models, and enhanced workflow capabilities, alongside security patches.
Key Highlights
- Introduction of `difyctl` for command-line workflow execution.
- Redesigned landing/onboarding and faster navigation.
- Support for slow, long-running models via polling mechanism.
- Chain of Thought (CoT) streaming in workflows.
Breaking Changes
- Plugin auto-upgrade strategy changed to category-scoped (requires migration command).
- 19 environment variables added, 2 removed, and 1 modified.
- Docker Compose configuration files modified.
- Database migrations required.
New Features
- Richer Human-in-the-Loop forms with dropdowns and file uploads.
- Knowledge import from Excel files (images extracted).
- Deeper observability with custom Phoenix trace session IDs.
- Faster plugin installs via auto-detected PyPI mirrors.
- Refactored session management for consistency.
Full Release Notes
# Dify 1.15.0 Release Note ## What's Changed ### UX & UI Enhancements <img width="1920" height="1044" alt="录屏2026-06-25 21 12 33" src="https://github.com/user-attachments/assets/c3ac7394-2ccf-4a66-873a-b7224a16897a" /> - **Redesigned landing / onboarding** for an easier first-run experience (#37433, #37844, #37800) - **Faster navigation** — improved "go to anything" palette and autofocused search inputs (#32130, #37175) - **Safer deletes** — one-click confirmation before removing an app (#37263) - **Cleaner workflow editor** with collapsible panels (#37276) - **Clearer notifications** — consistent toasts that show long errors in full (#37382, #37581) - **More accessible** — plugin permission hints, restored contact-us menu, skip-nav link, and keyboard focus polish (#37310, #37774, #37644) ### New Features **difyctl — drive Dify from the command line** ([Docs](https://docs.dify.ai/en/cli/overview)) - difyctl is a command-line client for Dify: you can now run apps and workflows straight from your terminal, so personal agents, scripts, and CI pipelines can invoke Dify workflows without opening the web UI (#37036) - Install it on any platform (macOS, Linux, Windows) with a single command and no access token — binaries are published as public releases with checksum verification (#37036, #37454) - Pass scoped environment variables to CLI tool runs, and get clearer, consistent error messages (including friendly rate-limit handling) across both difyctl and the `/openapi/v1` API (#37324, #37285, #37313, #36896) **See CoT in Workflow & Chatflow & CLI** - Chat Flow / Workflow can now stream the model's reasoning into a dedicated live "thinking" panel while keeping the final answer clean and readable. The reasoning is preserved so it's still there after a page refresh, and the same reasoning is visible in CLI and workflow run previews (#37460, #37828) **Richer Human-in-the-Loop forms** - When a workflow pauses to ask a person for input, the form can now include dropdown selects and file / multi-file uploads — not just free text — so people can answer with structured choices and attachments (#36322) **Support for slow, long-running models** - Workflows can now use generation models that take a long time to respond (such as image or video generation) via a polling mechanism: the node patiently waits for the final result instead of timing out (#37462) **Knowledge from richer spreadsheets** - Images embedded inside Excel files are now extracted during knowledge import, so spreadsheet content that relies on pictures (diagrams, screenshots, charts) is no longer lost (#37104) **Deeper observability** - Set your own trace session id for Phoenix so traces line up with your application's sessions, and follow document-retrieval steps in traces to understand how RAG results were produced (#37056, #37283) **Workflow authoring polish** - A refreshed start node makes it clearer how a workflow begins, and a smarter output node gives you more control over what a workflow returns (#37348, #35511) - Friendlier errors when an app or workspace ID is malformed, instead of confusing failures (#37212) **Faster plugin installs in certain regions** - The plugin daemon now auto-detects your region at startup and, where network connectivity to PyPI is poor, automatically picks a nearby package mirror — so installing plugins is faster and more reliable without any manual setup. You can still pin a specific mirror if you prefer (dify-plugin-daemon#750) ### Security Updates This release fixes a path traversal issue in plugin-daemon forwarding (cve-2026-41948). ### Bug Fixes - Hardened outbound HTTP with bounded timeouts for Firecrawl, Jina, Watercrawl, Nacos, and Marketplace requests, and hardened default SSRF proxy egress (#37638, #37637, #37515, #37444, #37424, #36332) - Fixed Lindorm vector store errors caused by the `opensearch-py` update (#37862) and Tongyi credential compatibility (#37942) - Invalidated credential cache after OAuth refresh (#37630) - Improved workflow execution error handling, eagerly validated conversations to prevent hanging, and prevented legacy stop from interrupting GraphEngine runs (#37919, #37224, #37129) - Resolved `DetachedInstanceError` via session management refactoring (#37847) and stabilized deployment state hydration (#37818) - Fixed conversation variable description length validation to prevent `varchar(255)` truncation (#33038) and stored Chinese as unicode so search works (#37446) - Numerous web UI and accessibility/focus-ring polish fixes ### Improvements - Refactored session management across services to accept `db.session` explicitly via dependency injection for consistency (#37639, #37832, #37695, #37694, and related) - Modernized typing (removed redundant `type: ignore`/`cast`, converted ABCs to `Protocol`, replaced `isinstance` chains with `match-case`) - Reduced workflow startup latency for Chatflow (#36773) and lowered workflow termination latency so stopping a run takes effect faster (#37106, #37129) - Upgraded dependencies for CVE fixes (Bleach, PyJWT, starlette, storage group) (#37860, #37008, #37076, #37861) ## Environment Variable Changes ### Added - `DEVICE_FLOW_APPROVE_RATE_LIMIT_PER_HOUR` (`docker/envs/core-services/shared.env.example`) - `DIFY_ENV_NACOS_CONNECT_TIMEOUT`, `DIFY_ENV_NACOS_REQUEST_TIMEOUT` (`api/.env.example`) - `ENABLE_LEARN_APP` (`api/.env.example`) - `ENABLE_OAUTH_BEARER` (`docker/envs/core-services/shared.env.example`) - `MILVUS_SECURE`, `MILVUS_SERVER_NAME`, `MILVUS_SERVER_PEM_PATH` (`docker/envs/vectorstores/milvus.env.example`) - `NEXT_PUBLIC_ENABLE_FEATURE_PREVIEW` (`docker/envs/core-services/web.env.example`) - `OPENAPI_CORS_ALLOW_ORIGINS`, `OPENAPI_ENABLED`, `OPENAPI_KNOWN_CLIENT_IDS`, `OPENAPI_RATE_LIMIT_PER_TOKEN` (`docker/envs/core-services/shared.env.example`) - `PLUGIN_MODEL_PROVIDERS_CACHE_TTL` (`api/.env.example`) - `SERVER_CONSOLE_API_URL` (`docker/.env.example`) - `SSRF_PROXY_ALLOW_PRIVATE_DOMAINS`, `SSRF_PROXY_ALLOW_PRIVATE_IPS`, `SSRF_SANDBOX_PROXY_HOST`, `SSRF_SANDBOX_PROXY_PORT` (`docker/envs/middleware.env.example`) - `PIP_MIRROR_AUTO_DETECT` (plugin daemon; default `true`) — auto-select a nearby PyPI mirror at startup for regions with poor connectivity - `PIP_MIRROR_URL` (plugin daemon; default empty) — manually pin the PyPI mirror; takes precedence over auto-detection ### Removed - `SSRF_REVERSE_PROXY_PORT`, `SSRF_SANDBOX_HOST` (`docker/envs/middleware.env.example`) ### Modified - `UV_CACHE_DIR`: `/tmp/.uv-cache` → `/tmp/uv_cache` ### Docker Compose Files - `docker/docker-compose.yaml` (modified) - `docker/docker-compose.middleware.yaml` (modified) - `docker/docker-compose.pytest.ports.yaml` (added) ## Database Migrations This release includes new database migrations. Run `flask db upgrade` (or `uv run --project api flask db upgrade`) after updating the code. Notable schema additions: - OAuth access tokens (`ENABLE_OAUTH_BEARER`) - Credential visibility - Human Input upload tables and conversation linkage - **Category-scoped plugin auto-upgrade strategy** (`add_plugin_auto_upgrade_category`) - App stars, learn-dify / cloud-only flags on recommended apps - Normalized legacy end-user type ## Upgrade Guide > [!IMPORTANT] > > - This release includes new database migrations. Run them as part of the upgrade. > - **Plugin auto-upgrade is now configured per plugin category.** After running `flask db upgrade`, you MUST also run `flask backfill-plugin-auto-upgrade` to migrate existing tenants' auto-upgrade settings into the new category-scoped model. If you skip this step, plugin auto-upgrade settings users previously configured may stop taking effect. > - Environment variables changed (19 added, 2 removed, 1 modified). Review the Environment Variable Changes section and update your `.env` accordingly. > - Docker Compose configuration files changed. If you maintain a customized `docker-compose.yaml`, review the changes and re-apply local customizations carefully. ### Docker Compose Deployments 1. Back up your customized docker-compose YAML and env files. ```bash cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak cp .env .env.$(date +%s).bak 2>/dev/null || true ``` 2. Get the latest code for the `1.15.0` release. ```bash git fetch --tags git checkout 1.15.0 ``` 3. Stop the services (run inside the `docker` directory). ```bash docker compose down ``` 4. Back up data. ```bash tar -cvf volumes-$(date +%s).tgz volumes ``` 5. Review any env file changes and re-apply local customizations. 6. Upgrade services. ```bash docker compose up -d ``` 7. **Backfill category-scoped plugin auto-upgrade strategies** (required). ```bash docker compose exec api flask backfill-plugin-auto-upgrade ``` ### Source Code Deployments 1. Stop the API server, Worker, and Web frontend server. 2. Get the latest code for the `1.15.0` release. ```bash git fetch --tags git checkout 1.15.0 ``` 3. Update Python dependencies. ```bash cd api uv sync ``` 4. Run database migrations. ```bash uv run flask db upgrade ``` 5. **Backfill category-scoped plugin auto-upgrade strategies** (required). ```bash uv run flask backfill-plugin-auto-upgrade ``` 6. Restart the API server, Worker, and Web frontend server. ## Full Change List * feat(dify-ui): add shared form primitives by @lyzno1 in https://github.com/langgenius/dify/pull/36334 * refactor(web): migrate annotation selection to checkbox group by @lyzno1 in https://github.com/langgenius/dify/pull/36370 * feat(dev-proxy): isolate local auth cookies by target by @lyzno1 in https://github.com/langgenius/dify/pull/36371 * chore(api): annotate simple contract responses by @hyoban in https://github.com/langgenius/dify/pull/36331 * fix(agenton): use AsyncGenerator return annotation for asynccontextmanager by @algojogacor in https://github.com/langgenius/dify/pull/36361 * test(api): manage backend pytest services natively by @laipz8200 in https://github.com/langgenius/dify/pull/36235 * refactor(web): migrate multi-checkbox lists to CheckboxGroup by @lyzno1 in https://github.com/langgenius/dify/pull/36381 * chore: hide model provider setting in default model setting by @iamjoel in https://github.com/langgenius/dify/pull/36383 * feat(dev-proxy): reload env file changes by @lyzno1 in https://github.com/langgenius/dify/pull/36384 * fix: prevent agent tool info popover from jumping on close by @iamjoel in https://github.com/langgenius/dify/pull/36389 * test: stabilize trigger subscription name uniqueness setup by @escape0707 in https://github.com/langgenius/dify/pull/36353 * fix(api): add Phoenix wrapper spans and error tracing by @Blackoutta in https://github.com/langgenius/dify/pull/36388 * feat: add new agent by @zyssyz123 in https://github.com/langgenius/dify/pull/36284 * chore(codeowners): update plugin ownership by @laipz8200 in https://github.com/langgenius/dify/pull/36394 * fix: workflow node selection state not sync caused problem by @iamjoel in https://github.com/langgenius/dify/pull/36390 * chore(web): remove generic tailwind skill by @lyzno1 in https://github.com/langgenius/dify/pull/36402 * fix: fix add uv_cache_dir env by @fatelei in https://github.com/langgenius/dify/pull/36398 * chore: update deps by @hyoban in https://github.com/langgenius/dify/pull/36413 * refactor: convert isinstance chains to match/case pattern by @xxiaoxiong in https://github.com/langgenius/dify/pull/36364 * fix(web): prevent local cloud analytics script errors by @lyzno1 in https://github.com/langgenius/dify/pull/36420 * refactor: migrate to tailwind v4 style by @hyoban in https://github.com/langgenius/dify/pull/36417 * chore(deps): bump the storage group across 1 directory with 4 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/36393 * build: fix api docker build by @hyoban in https://github.com/langgenius/dify/pull/36423 * chore: bump versions for litellm and langsmith by @wylswz in https://github.com/langgenius/dify/pull/36385 * fix: prevent recursion error when SharePoint folder is empty by @EvanYao826 in https://github.com/langgenius/dify/pull/36372 * fix(web): resolve model provider console warnings by @lyzno1 in https://github.com/langgenius/dify/pull/36422 * chore: Check more files by @asukaminato0721 in https://github.com/langgenius/dify/pull/36407 * fix(api): fix invalid token error while changing email by @QuantumGhost in https://github.com/langgenius/dify/pull/36412 * chore: example for [Refactor/Chore] add missing-override-decorator #36406 by @asukaminato0721 in https://github.com/langgenius/dify/pull/36425 * chore(codeowners): assign trigger scheduler ownership by @laipz8200 in https://github.com/langgenius/dify/pull/36430 * fix(web): debounce email check when change email by @JzoNgKVO in https://github.com/langgenius/dify/pull/36421 * chore: move API readiness reporting to terminal output by @hyoban in https://github.com/langgenius/dify/pull/36433 * chore(api): cap non-dev dependency major versions by @laipz8200 in https://github.com/langgenius/dify/pull/36429 * refactor(web): use dropdown data attributes by @lyzno1 in https://github.com/langgenius/dify/pull/36431 * fix(auth): use validity-returned token in ChangePasswordForm reset submit by @GareArc in https://github.com/langgenius/dify/pull/36415 * ci: show web test shard failures by @lyzno1 in https://github.com/langgenius/dify/pull/36436 * chore: update to only SaaS can view template by @iamjoel in https://github.com/langgenius/dify/pull/36440 * fix: allow config pubsub join timeout for lower post-run latency by @wylswz in https://github.com/langgenius/dify/pull/36438 * chore: remove unused pyrefly ignore comments in dataset.py by @xxiaoxiong in https://github.com/langgenius/dify/pull/36443 * chore: upgrade base ui to 1.5.0 by @lyzno1 in https://github.com/langgenius/dify/pull/36442 * feat(ui): migrate radio to Base UI and update web callsites by @lyzno1 in https://github.com/langgenius/dify/pull/36451 * chore: compatiable conversation is not exists by @fatelei in https://github.com/langgenius/dify/pull/33274 * feat: wire workflow agent node runtime by @zyssyz123 in https://github.com/langgenius/dify/pull/36437 * fix: suggested questions API crash on legacy conversation override configs by @leslie2046 in https://github.com/langgenius/dify/pull/36459 * feat: add dify-ui input primitive by @lyzno1 in https://github.com/langgenius/dify/pull/36446 * fix(web): use popup-open selectors for trigger styles by @lyzno1 in https://github.com/langgenius/dify/pull/36471 * fix(ci): bad pyinfra type coverage report comments by @cqjjjzr in https://github.com/langgenius/dify/pull/36482 * refactor: add missing @override decorator to AppGenerateResponseConverter subclasses by @AlsoTheZv3n in https://github.com/langgenius/dify/pull/36486 * refactor(api): migrate console.datasets.metadata to BaseModel by @cqjjjzr in https://github.com/langgenius/dify/pull/36450 * feat(api): Flask-RESTX `response()` vs actual return value checker by @cqjjjzr in https://github.com/langgenius/dify/pull/36488 * fix(api): stop returning 204 with response body and add CI check by @cqjjjzr in https://github.com/langgenius/dify/pull/36489 * refactor: add missing @override decorator to AppQueueManager subclasses by @AlsoTheZv3n in https://github.com/langgenius/dify/pull/36490 * refactor: add missing @override decorator to GraphEngineLayer subclasses by @AlsoTheZv3n in https://github.com/langgenius/dify/pull/36491 * chore: add Type to test by @asukaminato0721 in https://github.com/langgenius/dify/pull/36454 * refactor: add missing @override decorator to code executor providers and transformers by @AlsoTheZv3n in https://github.com/langgenius/dify/pull/36496 * refactor: add missing @override decorator to file access controller and workflow file runtime by @AlsoTheZv3n in https://github.com/langgenius/dify/pull/36495 * refactor: add missing @override decorator to PluginModelRuntime by @AlsoTheZv3n in https://github.com/langgenius/dify/pull/36493 * refactor: add missing @override decorator to datasource plugin classes by @AlsoTheZv3n in https://github.com/langgenius/dify/pull/36494 * refactor: add missing @override decorator to Moderation subclasses by @AlsoTheZv3n in https://github.com/langgenius/dify/pull/36492 * fix(api): pass SSL verify flag to SSRF proxy mounts by @laipz8200 in https://github.com/langgenius/dify/pull/36455 * fix(api): preserve remote file URL query params by @lord-Rheagar in https://github.com/langgenius/dify/pull/36478 * refactor: streamline workflow context menu lifecycle by @lyzno1 in https://github.com/langgenius/dify/pull/36500 * refactor: add missing @override decorator to agent runners, tool caches, and logging extensions by @AlsoTheZv3n in https://github.com/langgenius/dify/pull/36511 * fix(dify-ui): align form label guidance by @lyzno1 in https://github.com/langgenius/dify/pull/36510 * refactor(web): improve retrieval and tag control semantics by @lyzno1 in https://github.com/langgenius/dify/pull/36521 * fix(web): stabilize document picker search focus by @lyzno1 in https://github.com/langgenius/dify/pull/36525 * chore: seprate vector space quota query by @hjlarry in https://github.com/langgenius/dify/pull/36514 * refactor: add missing @override decorator to remaining MCP, Jieba, embeddings, and misc subclasses by @AlsoTheZv3n in https://github.com/langgenius/dify/pull/36528 * refactor(api): migrate console/service_api.dataset to BaseModel by @cqjjjzr in https://github.com/langgenius/dify/pull/36480 * refactor: convert isinstance chains to match/case in otel parser by @liaoyl830 in https://github.com/langgenius/dify/pull/36534 * feat(plugin): cache plugin model providers by tenant by @laipz8200 in https://github.com/langgenius/dify/pull/36449 * refactor: add missing @override decorators to method overrides by @EvanYao826 in https://github.com/langgenius/dify/pull/36501 * fix: handle null summary_index_setting in KnowledgeIndexNodeData by @EvanYao826 in https://github.com/langgenius/dify/pull/36355 * fix(api): use plain Session in RAG pipeline controllers to prevent closed-transaction error by @KurodaKayn in https://github.com/langgenius/dify/pull/36392 * chore: add UUID/str type annotations to api endpoints for files in api/controllers/console/app by @Lillian68 in https://github.com/langgenius/dify/pull/36559 * chore: add UUID/str type annotations to api endpoints for files in api/controllers/files and api/controllers/web by @Lillian68 in https://github.com/langgenius/dify/pull/36562 * chore: add UUID/str type annotations to api endpoints for files in api/controllers/service_api by @Lillian68 in https://github.com/langgenius/dify/pull/36561 * chore: add UUID/str type annotations to api endpoints for files in api/controllers/console/datasets by @Lillian68 in https://github.com/langgenius/dify/pull/36560 * chore: add UUID/str type annotations to api endpoints for files in api/controllers/console by @Lillian68 in https://github.com/langgenius/dify/pull/36563 * refactor: add missing @override decorators to TypeDecorator subclasses in models/types.py by @zhang-liz in https://github.com/langgenius/dify/pull/36565 * feat: add and unify pagination components across UI and app surfaces by @lyzno1 in https://github.com/langgenius/dify/pull/36569 * refactor(dify-ui): refine switch contract by @lyzno1 in https://github.com/langgenius/dify/pull/36539 * chore(web): remove select-auto in body by @lyzno1 in https://github.com/langgenius/dify/pull/36554 * fix(web): clean up header logo accessibility by @lyzno1 in https://github.com/langgenius/dify/pull/36567 * fix: request /api/datasets raise exception by @hjlarry in https://github.com/langgenius/dify/pull/36591 * fix: External retrieval model response rejects empty score threshold bug by @hsiong in https://github.com/langgenius/dify/pull/36577 * chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/36599 * feat(dify-agent): add history layer and structural output layer by @BeautyyuYanli in https://github.com/langgenius/dify/pull/36600 * refactor(dify-ui): rename toggle group to segmented control by @lyzno1 in https://github.com/langgenius/dify/pull/36605 * chore: upgrade dependencies by @lyzno1 in https://github.com/langgenius/dify/pull/36606 * feat: add workflow_version to workflow_agent_node_bindings by @zyssyz123 in https://github.com/langgenius/dify/pull/36603 * fix: replace .distinct() with .group_by(Conversation.id) for PostgreSQL JSON compatibility by @kuishou68 in https://github.com/langgenius/dify/pull/36610 * fix: type mismatches (route says uuid: but handler says str) by @Lillian68 in https://github.com/langgenius/dify/pull/36612 * fix: center align slider thumb by @lyzno1 in https://github.com/langgenius/dify/pull/36614 * fix(api): preserve dataset nested null shapes by @FFXN in https://github.com/langgenius/dify/pull/36611 * feat(dify-ui): add status and progress primitives by @lyzno1 in https://github.com/langgenius/dify/pull/36615 * fix: member invite limits with dedup, locking, and accurate new-member counting by @linw1995 in https://github.com/langgenius/dify/pull/36512 * chore: use dify_config.BILLING_ENABLED by @hjlarry in https://github.com/langgenius/dify/pull/36619 * feat: output declaration and inspector by @zyssyz123 in https://github.com/langgenius/dify/pull/36618 * fix: normalize app icon picker dialog state by @lyzno1 in https://github.com/langgenius/dify/pull/36621 * chore: example of current user id dep injection by @asukaminato0721 in https://github.com/langgenius/dify/pull/36588 * chore: inject current user in console handlers by @Tianlel in https://github.com/langgenius/dify/pull/36628 * fix: normalize summary_index_setting None to fix preview error by @EvanYao826 in https://github.com/langgenius/dify/pull/36626 * chore: dep inject for sql session by @asukaminato0721 in https://github.com/langgenius/dify/pull/36545 * fix(security): reject path traversal sequences before plugin daemon forward (GHSA-gvc6-fh3x-89xh) by @xr843 in https://github.com/langgenius/dify/pull/35796 * fix: remove unused datasource_parameters from Notion pre-import query by @EvanYao826 in https://github.com/langgenius/dify/pull/36627 * feat: adding dify cli by @wylswz in https://github.com/langgenius/dify/pull/36348 * feat(dify-ui): add textarea primitive by @lyzno1 in https://github.com/langgenius/dify/pull/36547 * feat(dify-agent): sync agent progress by @BeautyyuYanli in https://github.com/langgenius/dify/pull/36633 * chore: inject current user in explore message handlers by @Tianlel in https://github.com/langgenius/dify/pull/36652 * chore: inject tenant id in feature handlers by @Tianlel in https://github.com/langgenius/dify/pull/36654 * chore: inject account context in file handlers by @Tianlel in https://github.com/langgenius/dify/pull/36655 * chore: inject tenant id in extension handlers by @Tianlel in https://github.com/langgenius/dify/pull/36656 * chore(deps): bump boto3 from 1.43.10 to 1.43.14 in /api in the storage group by @dependabot[bot] in https://github.com/langgenius/dify/pull/36595 * chore: add dependabot to lts branch by @wylswz in https://github.com/langgenius/dify/pull/36424 * feat(api): Node Output Inspector service + 3 REST endpoints (Stage 4 §8) by @zyssyz123 in https://github.com/langgenius/dify/pull/36644 * fix(dify-ui): align picker stories with Base UI by @lyzno1 in https://github.com/langgenius/dify/pull/36680 * refactor(api): migrate console tags to tenant/user via DI and improve tests by @cqjjjzr in https://github.com/langgenius/dify/pull/36658 * refactor(api): migrate tenant/user via DI: apikey, extension, data_source_bearer, oauth_server by @cqjjjzr in https://github.com/langgenius/dify/pull/36660 * chore: add InstalledApp type annotations to api endpoints by @Lillian68 in https://github.com/langgenius/dify/pull/36678 * chore: backend feature api exclude_vector_space by @hjlarry in https://github.com/langgenius/dify/pull/36642 * fix(chat): close streaming LLM generator when stop response is triggered by @zeus1959 in https://github.com/langgenius/dify/pull/36227 * chore: add EndUser and App type annotations to api endpoints by @Lillian68 in https://github.com/langgenius/dify/pull/36677 * chore: add App type annotations to api endpoints by @Lillian68 in https://github.com/langgenius/dify/pull/36675 * fix(plugin): align local install modal spacing by @lyzno1 in https://github.com/langgenius/dify/pull/36689 * feat(api): introduce model-type migration script by @QuantumGhost in https://github.com/langgenius/dify/pull/36520 * feat: add agent backend plugin layer by @zyssyz123 in https://github.com/langgenius/dify/pull/36686 * fix(tools): improve custom collection modal scrolling by @lyzno1 in https://github.com/langgenius/dify/pull/36694 * feat(openapi,cli): workspace switch + member management by @lin-snow in https://github.com/langgenius/dify/pull/36651 * chore(web): restrict legacy service fetch imports by @lyzno1 in https://github.com/langgenius/dify/pull/36701 * chore(api): polishhelp output for legacy-model-types migration script by @QuantumGhost in https://github.com/langgenius/dify/pull/36707 * refactor: convert isinstance chains to match/case (part 6) by @EvanYao826 in https://github.com/langgenius/dify/pull/36705 * chore: add pnpm-managed node runtime by @escape0707 in https://github.com/langgenius/dify/pull/36531 * fix(web): add loading skeletons for tools and knowledge lists by @Jingyi-Dify in https://github.com/langgenius/dify/pull/36712 * feat(api): support explicit TLS for Milvus vector store by @amr-sheriff in https://github.com/langgenius/dify/pull/36265 * refactor(cli): add kvstore and platform interface by @wylswz in https://github.com/langgenius/dify/pull/36687 * refactor(api): migrate console/service_api.dataset.hit_testing to BaseModel by @cqjjjzr in https://github.com/langgenius/dify/pull/36533 * fix(ui): chip style by @lyzno1 in https://github.com/langgenius/dify/pull/36720 * fix: fix DocumentSegment.keywords can not a valid json by @fatelei in https://github.com/langgenius/dify/pull/36715 * refactor: use match case for draft variable serialization by @zhuiguangzhe2003 in https://github.com/langgenius/dify/pull/36716 * feat(ui): add kbd primitive by @lyzno1 in https://github.com/langgenius/dify/pull/36729 * feat(openapi): redesign auth pipeline with per-token-type routing by @GareArc in https://github.com/langgenius/dify/pull/36693 * test: move delete account task to container integration by @escape0707 in https://github.com/langgenius/dify/pull/36733 * feat(api): agent backend session lifecycle for workflow agent nodes by @zyssyz123 in https://github.com/langgenius/dify/pull/36724 * chore: install dify-agent as editable by @escape0707 in https://github.com/langgenius/dify/pull/36735 * refactor: inject tenant id in tenant-only console handlers by @Tianlel in https://github.com/langgenius/dify/pull/36751 * chore(codeowners): add Riskey for service API docs by @laipz8200 in https://github.com/langgenius/dify/pull/36731 * fix(docker): pin web docker node version by @KurodaKayn in https://github.com/langgenius/dify/pull/36756 * test: migrate workspace members tests to containers by @escape0707 in https://github.com/langgenius/dify/pull/36738 * fix(docker): copy dify-agent source into production stage by @GareArc in https://github.com/langgenius/dify/pull/36757 * refactor: add @override decorators to storage backend subclasses (#36406) by @NishchayMahor in https://github.com/langgenius/dify/pull/36755 * fix: handle null plugin badges by @crazywoola in https://github.com/langgenius/dify/pull/36767 * docs(api): fix typo in vector migration docstrings by @aliyevaladddin in https://github.com/langgenius/dify/pull/36741 * feat: add cross-environment app migration toolkit by @Blackoutta in https://github.com/langgenius/dify/pull/36765 * fix: fix cannot extract elements from a scalar by @fatelei in https://github.com/langgenius/dify/pull/36769 * feat(docker): add missing OPENAPI_* env vars to shared.env.example by @GareArc in https://github.com/langgenius/dify/pull/36752 * refactor(cli): use Store interface as token storage by @wylswz in https://github.com/langgenius/dify/pull/36726 * test: isolate Redis state in container tests by @escape0707 in https://github.com/langgenius/dify/pull/36740 * chore: type check test container tests by @escape0707 in https://github.com/langgenius/dify/pull/36790 * feat: add DTO for agent api by @zyssyz123 in https://github.com/langgenius/dify/pull/36797 * test: stabilize modal context pricing test by @escape0707 in https://github.com/langgenius/dify/pull/36524 * fix: install failed plugin dose not show icon by @iamjoel in https://github.com/langgenius/dify/pull/36811 * fix(api): validate annotation list pagination query by @WOLIKIMCHENG in https://github.com/langgenius/dify/pull/36807 * chore: unified plugin status icon position by @iamjoel in https://github.com/langgenius/dify/pull/36816 * fix(device): surface SSO errors on /device and fix CLI null-account crash on external-SSO login by @GareArc in https://github.com/langgenius/dify/pull/36781 * chore: not store search tag condition in url by @iamjoel in https://github.com/langgenius/dify/pull/36814 * refactor(cli): optimize error handling in flag parsing by @wylswz in https://github.com/langgenius/dify/pull/36810 * chore: deploy saas dev workflow by @hjlarry in https://github.com/langgenius/dify/pull/36819 * fix(cli): fix style by @wylswz in https://github.com/langgenius/dify/pull/36821 * refactor: add ts common style check for web and cli by @wylswz in https://github.com/langgenius/dify/pull/36823 * refactor: convert isinstance chains to match/case (part 7) (#35902) by @EvanYao826 in https://github.com/langgenius/dify/pull/36826 * fix: remove unnecessary # type: ignore comments (#24494) by @EvanYao826 in https://github.com/langgenius/dify/pull/36825 * chore: using single SSH_SCRIPT for saas dev by @hjlarry in https://github.com/langgenius/dify/pull/36827 * refactor(web): remove app initializer and move auth boot logic to route boundaries by @lyzno1 in https://github.com/langgenius/dify/pull/36818 * fix(web): use default profile query cache by @lyzno1 in https://github.com/langgenius/dify/pull/36832 * chore: reuse injected SQLAlchemy sessions in app read paths by @myshkin451 in https://github.com/langgenius/dify/pull/36798 * fix(auth): avoid leaking request origin in refresh redirects by @lyzno1 in https://github.com/langgenius/dify/pull/36847 * refactor(api): migrate console/service_api.dataset.segment to BaseModel by @cqjjjzr in https://github.com/langgenius/dify/pull/36522 * fix(auth): reset profile query after login by @lyzno1 in https://github.com/langgenius/dify/pull/36851 * refactor(api): migrate console/service_api.dataset.document to BaseModel by @cqjjjzr in https://github.com/langgenius/dify/pull/36506 * chore: dep inject for model by @asukaminato0721 in https://github.com/langgenius/dify/pull/36750 * chore: add missing @override decorators to pipeline WorkflowAppGenerateResponseConverter by @krishkantiuj-ren in https://github.com/langgenius/dify/pull/36859 * chore: split to single app_dsl_version API by @hjlarry in https://github.com/langgenius/dify/pull/36864 * fix(web): use generated current workspace query by @lyzno1 in https://github.com/langgenius/dify/pull/36843 * chore: split trial models to a single API by @hjlarry in https://github.com/langgenius/dify/pull/36796 * feat(web): add server oRPC client by @lyzno1 in https://github.com/langgenius/dify/pull/36856 * refactor(web): scope workflow hotkeys by @lyzno1 in https://github.com/langgenius/dify/pull/36860 * fix(web): prefetch workspace and guard routes with contract query by @lyzno1 in https://github.com/langgenius/dify/pull/36870 * refactor: convert isinstance chains to match/case (part 8) by @EvanYao826 in https://github.com/langgenius/dify/pull/36869 * fix: #36585 dep inject current user id by @duongynhi000005-oss in https://github.com/langgenius/dify/pull/36845 * refactor: convert isinstance chains to match/case (part 4) by @EvanYao826 in https://github.com/langgenius/dify/pull/36274 * refactor: inject current user into user-only controllers by @Tianlel in https://github.com/langgenius/dify/pull/36754 * refactor: convert if isinstance chains to match case by @duongynhi000005-oss in https://github.com/langgenius/dify/pull/36846 * refactor: convert isinstance chains to match/case (part 5) by @EvanYao826 in https://github.com/langgenius/dify/pull/36503 * fix(api): dedup EndUser in plugin get_user by session_id for Reverse Invocation by @ShuntaroOkuma in https://github.com/langgenius/dify/pull/36742 * fix: MCP search results include only MCP providers by @1795771535y-cell in https://github.com/langgenius/dify/pull/36871 * refactor: use absolute path for inter dir importing by @wylswz in https://github.com/langgenius/dify/pull/36822 * docs: add security policy by @bmtriet in https://github.com/langgenius/dify/pull/36873 * fix(api): preserve hierarchical estimate rules by @WOLIKIMCHENG in https://github.com/langgenius/dify/pull/36852 * refactor: convert isinstance chains to match/case syntax by @krishkantiuj-ren in https://github.com/langgenius/dify/pull/36862 * chore(cli): move eslint config into cli package by @lyzno1 in https://github.com/langgenius/dify/pull/36878 * chore(web): remove TanStack devtools by @lyzno1 in https://github.com/langgenius/dify/pull/36882 * fix(web): respect marketplace feature flag in model selector by @lyzno1 in https://github.com/langgenius/dify/pull/36883 * chore: update deps by @lyzno1 in https://github.com/langgenius/dify/pull/36884 * refactor(web): mark workflow run props readonly by @meaqua9420 in https://github.com/langgenius/dify/pull/36857 * chore: add override decorators to core repositories by @cupkk in https://github.com/langgenius/dify/pull/36885 * feat: per-credential visibility control for plugin credentials by @ForeignKeyCN in https://github.com/langgenius/dify/pull/35468 * fix(web): read pnpm config env in standalone start by @lyzno1 in https://github.com/langgenius/dify/pull/36887 * refactor(web): migrate local storage access to react hook by @lyzno1 in https://github.com/langgenius/dify/pull/36888 * refactor(web): migrate local storage hook usage by @lyzno1 in https://github.com/langgenius/dify/pull/36890 * refactor(cli/http): replace ky with a self-contained HTTP client by @lin-snow in https://github.com/langgenius/dify/pull/36711 * fix(api): centralize remote file retrieval by @laipz8200 in https://github.com/langgenius/dify/pull/36399 * chore: not request system-features for cloud edition by @hjlarry in https://github.com/langgenius/dify/pull/36891 * feat(web): create system-features vertical by @lyzno1 in https://github.com/langgenius/dify/pull/36894 * test: satisfy strict pyrefly for migrated container tests by @escape0707 in https://github.com/langgenius/dify/pull/36791 * docs: add client state guidelines by @lyzno1 in https://github.com/langgenius/dify/pull/36900 * fix(tools): use short-lived sessions for icon lookups to prevent idle-in-transaction by @goingforstudying-ctrl in https://github.com/langgenius/dify/pull/36903 * chore: update deps by @hyoban in https://github.com/langgenius/dify/pull/36911 * chore(api): adjust migration timestamp metadata for a1b2c3d4e5f6 by @QuantumGhost in https://github.com/langgenius/dify/pull/36910 * chore: ignore .vinext by @hyoban in https://github.com/langgenius/dify/pull/36914 * fix(web): defer react-scan loader by @lyzno1 in https://github.com/langgenius/dify/pull/36920 * refactor(web): migrate workflow featured collapsed storage by @myshkin451 in https://github.com/langgenius/dify/pull/36918 * refactor(web): migrate NOTE_SHOW_AUTHOR_STORAGE_KEY to useLocalStorage/useSetLocalStorage by @kuishou68 in https://github.com/langgenius/dify/pull/36915 * feat(api): Agent App type S1 — AppMode.AGENT + create flow + binding by @zyssyz123 in https://github.com/langgenius/dify/pull/36829 * refactor(cli): unify token storage behind Store + add host/account switching by @GareArc in https://github.com/langgenius/dify/pull/36830 * refactor(web): migrate anthropic quota notice storage by @popsiclelmlm in https://github.com/langgenius/dify/pull/36922 * fix(contracts): include account avatar url in profile schema by @lyzno1 in https://github.com/langgenius/dify/pull/36924 * fix(cli): invalidate app metadata cache on 422 to clear stale data by @GareArc in https://github.com/langgenius/dify/pull/36921 * refactor: inject current user id in stop message endpoints by @likalikali in https://github.com/langgenius/dify/pull/36925 * fix: user token by @zyssyz123 in https://github.com/langgenius/dify/pull/36930 * refactor: remove unused Flask-RESTX field dicts from end_user and conversation_variable fields (#28015) by @EvanYao826 in https://github.com/langgenius/dify/pull/36929 * fix(web): use generated account-profile contracts by @lyzno1 in https://github.com/langgenius/dify/pull/36927 * feat(dify-agent): add shell layer by @BeautyyuYanli in https://github.com/langgenius/dify/pull/36838 * refactor(web): manage goto anything open state with atom by @lyzno1 in https://github.com/langgenius/dify/pull/36938 * refactor(web): migrate NEED_REFRESH_APP_LIST_KEY to useLocalStorage/useSetLocalStorage by @ZongrongLi in https://github.com/langgenius/dify/pull/36908 * refactor(web): migrate rag recommendations collapsed storage by @myshkin451 in https://github.com/langgenius/dify/pull/36940 * refactor(web): migrate question classifier label hint storage by @popsiclelmlm in https://github.com/langgenius/dify/pull/36932 * refactor: improve network error and allow verbose output by @wylswz in https://github.com/langgenius/dify/pull/36923 * ci: ruff cover agent by @asukaminato0721 in https://github.com/langgenius/dify/pull/36949 * refactor(web): migrate education verifying storage to useLocalStorage by @yzhkali in https://github.com/langgenius/dify/pull/36934 * refactor(web): migrate debug-and-preview-panel-width to useSetLocalStorage by @shifang0511 in https://github.com/langgenius/dify/pull/36977 * refactor(web): migrate workflow-variable-inpsect-panel-height to useSetLocalStorage by @shifang0511 in https://github.com/langgenius/dify/pull/36982 * refactor(api): migrate tenant/user via DI for several endpoints by @cqjjjzr in https://github.com/langgenius/dify/pull/36971 * refactor(web): migrate workflow-node-panel-width to useSetLocalStorage by @shifang0511 in https://github.com/langgenius/dify/pull/36983 * fix: normalize json_schema from string to dict in VariableEntity by @EvanYao826 in https://github.com/langgenius/dify/pull/36777 * refactor(web): migrate chat sidebar collapse storage by @popsiclelmlm in https://github.com/langgenius/dify/pull/36963 * chore: add missing @override decorato to `api/extensions` by @eryue0220 in https://github.com/langgenius/dify/pull/36941 * chore: add :str to <path: parameter by @asukaminato0721 in https://github.com/langgenius/dify/pull/36913 * fix: create app from template modal has no backdrop by @iamjoel in https://github.com/langgenius/dify/pull/36987 * fix: configure server console api url by @lyzno1 in https://github.com/langgenius/dify/pull/36958 * refactor(web): migrate account education notice storage by @myshkin451 in https://github.com/langgenius/dify/pull/36991 * fix(api): tighten agent v2 generated contracts by @lyzno1 in https://github.com/langgenius/dify/pull/36989 * refactor: use explicit session in inner api user auth by @WUMIKE233 in https://github.com/langgenius/dify/pull/36995 * fix: pydantic_core._pydantic_core.ValidationError: 2 validation errors for DatasetDetailResponse by @leslie2046 in https://github.com/langgenius/dify/pull/36753 * feat: add Milvus TLS env examples by @laipz8200 in https://github.com/langgenius/dify/pull/36980 * fix(api): enforce workspace membership + role checks in auth pipeline by @GareArc in https://github.com/langgenius/dify/pull/36931 * chore: update Claude skill links by @lyzno1 in https://github.com/langgenius/dify/pull/36997 * refactor(api): migrate tenant/user via DI for several endpoints by @cqjjjzr in https://github.com/langgenius/dify/pull/37004 * fix(web): auth form state management by @lyzno1 in https://github.com/langgenius/dify/pull/37003 * chore: add missing @override decorator to api/configs by @siyux1927 in https://github.com/langgenius/dify/pull/37006 * chore(deps): bump pyjwt to 2.13.0 by @wylswz in https://github.com/langgenius/dify/pull/37008 * chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/37011 * chore: add missing @override decorators to `api/libs` by @eryue0220 in https://github.com/langgenius/dify/pull/37012 * chore: add missing @override decorator to api/core/rag/extractor by @siyux1927 in https://github.com/langgenius/dify/pull/37013 * refactor(api): migrate console.datasets.rag_pipeline partially to BaseModel by @cqjjjzr in https://github.com/langgenius/dify/pull/36649 * refactor(api): migrate console.datasets.data_source to BaseModel by @cqjjjzr in https://github.com/langgenius/dify/pull/36624 * feat(agent): Sandbox / CLI Agent (dify.shell) + read-only sandbox file inspector by @zyssyz123 in https://github.com/langgenius/dify/pull/36984 * feat(api): introduce select, file and file list form input types to Human Input node by @QuantumGhost in https://github.com/langgenius/dify/pull/36322 * chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/37035 * fix(agent): complete CLI-tool + env shell bootstrap & add composer validation (ENG-367/368) by @zyssyz123 in https://github.com/langgenius/dify/pull/37033 * refactor(api): migrate tenant/user via DI for several endpoints by @cqjjjzr in https://github.com/langgenius/dify/pull/37026 * fix: agent tool selector marketplace checks for local and builtin tools by @leslie2046 in https://github.com/langgenius/dify/pull/37037 * feat(cli): unified help system by @lin-snow in https://github.com/langgenius/dify/pull/36896 * fix(api): return agent timestamps as epoch seconds by @lyzno1 in https://github.com/langgenius/dify/pull/37057 * feat: support custom trace session id for Phoenix tracing by @Blackoutta in https://github.com/langgenius/dify/pull/37056 * feat: enhance go to anything by @crazywoola in https://github.com/langgenius/dify/pull/32130 * fix(ui): align form control focus rings by @lyzno1 in https://github.com/langgenius/dify/pull/37069 * feat: improve output node by @hjlarry in https://github.com/langgenius/dify/pull/35511 * fix(api): expose device-flow approve rate limit as env var by @GareArc in https://github.com/langgenius/dify/pull/37083 * fix(explore): render human input preview handles by @lyzno1 in https://github.com/langgenius/dify/pull/37086 * fix(web): attach Amplitude user ID before firing registration event by @CodingOnStar in https://github.com/langgenius/dify/pull/37091 * fix(web): stabilize block selector layout by @lyzno1 in https://github.com/langgenius/dify/pull/37089 * fix: avoid duplicating lines when merging text for summarization by @bymle in https://github.com/langgenius/dify/pull/37093 * fix(workflow): prevent inspect trigger text wrapping by @lyzno1 in https://github.com/langgenius/dify/pull/37099 * feat: update frontend code review skill by @lyzno1 in https://github.com/langgenius/dify/pull/37098 * fix(difyctl): improve auth login host prompt UX by @GareArc in https://github.com/langgenius/dify/pull/37054 * refactor(web): align search input with dify ui by @lyzno1 in https://github.com/langgenius/dify/pull/37101 * feat(web): add Forward-user-identity toggle to MCP provider modal by @CourTeous33 in https://github.com/langgenius/dify/pull/36840 * fix(web): style issue of add input field panel in human input form co… by @JzoNgKVO in https://github.com/langgenius/dify/pull/37102 * chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/37105 * feat: snippet by @FFXN in https://github.com/langgenius/dify/pull/37046 * chore: update frontend code owners by @lyzno1 in https://github.com/langgenius/dify/pull/37109 * refactor(api): migrate tenant/user via DI for several endpoints by @cqjjjzr in https://github.com/langgenius/dify/pull/37114 * refactor(web): mark Props of datasets/hit-testing components as read-only by @archievi in https://github.com/langgenius/dify/pull/37118 * chore(api): Fix several typing errors by @cqjjjzr in https://github.com/langgenius/dify/pull/37119 * refactor(api): remove redundant typing.cast calls by @EvanYao826 in https://github.com/langgenius/dify/pull/37124 * fix(api): normalize empty workflow tool file lists by @PopperLi in https://github.com/langgenius/dify/pull/37125 * chore: add missing @override decorators to `api/repositories` by @eryue0220 in https://github.com/langgenius/dify/pull/37138 * refactor(web): mark Props of explore/try-app/preview components as read-only (#25219) by @archievi in https://github.com/langgenius/dify/pull/37135 * fix: remove unnecessary # type: ignore comments (#24494) by @EvanYao826 in https://github.com/langgenius/dify/pull/37139 * feat(cli): difyctl release pipeline + tokenless installers by @GareArc in https://github.com/langgenius/dify/pull/37036 * feat(api): support embedded Excel images in knowledge import by @leslie2046 in https://github.com/langgenius/dify/pull/37104 * style(dify-ui): align focus rings by @lyzno1 in https://github.com/langgenius/dify/pull/37144 * fix(web): align viewport and overlay accessibility by @lyzno1 in https://github.com/langgenius/dify/pull/37142 * feat(web): gate /create and /refine slash commands behind feature preview flag by @crazywoola in https://github.com/langgenius/dify/pull/37094 * feat(api): add MCP user-identity forwarding by @CourTeous33 in https://github.com/langgenius/dify/pull/36839 * chore: update npm deps by @lyzno1 in https://github.com/langgenius/dify/pull/37156 * ci: add flag for linter by @asukaminato0721 in https://github.com/langgenius/dify/pull/37018 * fix(web): z-index issue of variable picker in prompt editor by @JzoNgKVO in https://github.com/langgenius/dify/pull/37163 * refactor(web): mark Props of base/ components as read-only (#25219) by @EvanYao826 in https://github.com/langgenius/dify/pull/37161 * chore(web): sync i18n by @lyzno1 in https://github.com/langgenius/dify/pull/37169 * feat(web): support search input autofocus by @lyzno1 in https://github.com/langgenius/dify/pull/37175 * feat(cli): adopt generated oRPC contract for unary endpoints by @lin-snow in https://github.com/langgenius/dify/pull/37090 * chore(api): convert MessagesCleanPolicy from ABC to Protocol by @caoergou in https://github.com/langgenius/dify/pull/37171 * chore(api): convert RecommendAppRetrievalBase and WorkflowPauseEntity from ABC to Protocol by @caoergou in https://github.com/langgenius/dify/pull/37182 * refactor(web): migrate code generator model storage by @popsiclelmlm in https://github.com/langgenius/dify/pull/37195 * fix(ui): align scroll area focus styles by @lyzno1 in https://github.com/langgenius/dify/pull/37204 * chore(api): convert BaseTruncator from ABC to Protocol by @caoergou in https://github.com/langgenius/dify/pull/37199 * chore(api): convert BaseQueueDispatcher from ABC to Protocol by @caoergou in https://github.com/langgenius/dify/pull/37200 * chore(api): convert PipelineTemplateRetrievalBase from ABC to Protocol by @caoergou in https://github.com/langgenius/dify/pull/37201 * docs: merge frontend agent guidance by @Jingyi-Dify in https://github.com/langgenius/dify/pull/37121 * chore(api): convert AppContext from ABC to Protocol by @caoergou in https://github.com/langgenius/dify/pull/37203 * feat(agent): Agent Files / agent Cloud storage — api backend (ENG-589) by @zyssyz123 in https://github.com/langgenius/dify/pull/37172 * fix(agent-v2): complete console API contract schemas by @lyzno1 in https://github.com/langgenius/dify/pull/37210 * chore: DI current_user && use inspect by @asukaminato0721 in https://github.com/langgenius/dify/pull/37084 * chore: filter unavailable apps from the installed apps list API by @hjlarry in https://github.com/langgenius/dify/pull/37206 * fix(dataset): include segment created_at in hit testing response by @wylswz in https://github.com/langgenius/dify/pull/37181 * chore(deps): bump the storage group across 1 directory with 5 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/37153 * chore(deps): bump starlette from 1.0.0 to 1.0.1 in /dify-agent by @dependabot[bot] in https://github.com/langgenius/dify/pull/37077 * chore(deps): bump starlette from 1.0.0 to 1.0.1 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/37076 * feat(api,cli): strict UUID validation for app-id and workspace-id by @GareArc in https://github.com/langgenius/dify/pull/37212 * test(cli-e2e): full E2E test suite for difyctl — auth / run / discovery / framework / output / error-handling / agent by @gigglewang0417 in https://github.com/langgenius/dify/pull/36874 * chore(api): Suppress unknown contract checks by default by @cqjjjzr in https://github.com/langgenius/dify/pull/36969 * refactor(web): mark Props of workflow/variable-inspect components as read-only (#25219) by @EvanYao826 in https://github.com/langgenius/dify/pull/37230 * chore: [Refactor/Chore] if isinstance to match case #35902 by @asukaminato0721 in https://github.com/langgenius/dify/pull/37087 * fix: run ci properly on pr by @wylswz in https://github.com/langgenius/dify/pull/37233 * feat(dify-ui): file tree by @lyzno1 in https://github.com/langgenius/dify/pull/37235 * fix: agent mode missing file cards for BINARY_LINK and FILE type tool outputs by @cheatofrom in https://github.com/langgenius/dify/pull/36746 * test: migrate credit pool service tests to Testcontainers by @escape0707 in https://github.com/langgenius/dify/pull/37252 * refactor(web): mark Props of tools/ components as read-only (#25219) by @Rohit-Gahlawat in https://github.com/langgenius/dify/pull/37255 * refactor(web): mark Props of billing/ components as read-only (#25219) by @Rohit-Gahlawat in https://github.com/langgenius/dify/pull/37249 * refactor(openapi): unify request validation behind @accepts/@returns decorators by @lin-snow in https://github.com/langgenius/dify/pull/37216 * feat(dify-agent): sync shell and back proxy updates by @BeautyyuYanli in https://github.com/langgenius/dify/pull/37159 * refactor(web): mark Props of tools/mcp components as read-only (#25219) by @Rohit-Gahlawat in https://github.com/langgenius/dify/pull/37251 * refactor(api): migrate tenant/user via DI for several endpoints by @cqjjjzr in https://github.com/langgenius/dify/pull/37240 * fix(web): unify workflow node single-run actions by @lyzno1 in https://github.com/langgenius/dify/pull/37262 * refactor(web): replace useContext with use() in remaining components (#25193) by @Rohit-Gahlawat in https://github.com/langgenius/dify/pull/37254 * refactor(web): replace useContext with use() in workflow components (#25193) by @Rohit-Gahlawat in https://github.com/langgenius/dify/pull/37253 * refactor(web): replace useContext with use() (React 19) (Issue #25193) by @guangyang1206 in https://github.com/langgenius/dify/pull/36338 * feat: enter the app name that need to be deleted by one click by @HanqingZ in https://github.com/langgenius/dify/pull/37263 * fix: validate conversation variable description length to prevent varchar(255) truncation error by @Nov1c444 in https://github.com/langgenius/dify/pull/33038 * fix(plugin): align plugin list endpoint counts with live endpoint state by @leslie2046 in https://github.com/langgenius/dify/pull/37179 * fix(api): require all selected tags in list filters by @hjlarry in https://github.com/langgenius/dify/pull/37272 * chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/37269 * feat: add dify-ui collapsible primitive and refactor workflow collapse usage by @lyzno1 in https://github.com/langgenius/dify/pull/37276 * fix(e2e): replace non-UUID workspace IDs in auth/use.e2e.ts and global-flags.e2e.ts by @gigglewang0417 in https://github.com/langgenius/dify/pull/37266 * feat: support import / export dsl in CLI by @wylswz in https://github.com/langgenius/dify/pull/37232 * fix: block frozen deleted accounts during invite activation by @hjlarry in https://github.com/langgenius/dify/pull/37281 * feat: agent slash menu backend by @zyssyz123 in https://github.com/langgenius/dify/pull/37268 * refactor(web): compose tab header with dify-ui tabs by @lyzno1 in https://github.com/langgenius/dify/pull/37280 * refactor(web): mark Props of header/account-setting components as read-only (#25219) by @Rohit-Gahlawat in https://github.com/langgenius/dify/pull/37293 * refactor(web): mark Props of misc components as read-only (#25219) by @Rohit-Gahlawat in https://github.com/langgenius/dify/pull/37294 * refactor(web): mark Props of explore/ components as read-only (#25219) by @Rohit-Gahlawat in https://github.com/langgenius/dify/pull/37290 * refactor(web): mark Props of (commonLayout) components as read-only (#25219) by @Rohit-Gahlawat in https://github.com/langgenius/dify/pull/37291 * refactor(web): mark Props of share/ components as read-only (#25219) by @Rohit-Gahlawat in https://github.com/langgenius/dify/pull/37292 * refactor(web): mark Props of datasets/ components as read-only (#25219) by @Rohit-Gahlawat in https://github.com/langgenius/dify/pull/37300 * refactor(web): mark Props of app/ components as read-only (#25219) by @Rohit-Gahlawat in https://github.com/langgenius/dify/pull/37301 * refactor(web): mark Props of base/ components as read-only (#25219) by @Rohit-Gahlawat in https://github.com/langgenius/dify/pull/37302 * refactor(web): mark Props of plugins/ components as read-only (#25219) by @Rohit-Gahlawat in https://github.com/langgenius/dify/pull/37303 * refactor(web): mark Props of workflow/ components as read-only (#25219) by @Rohit-Gahlawat in https://github.com/langgenius/dify/pull/37304 * refactor(web): mark Props of app/annotation components as read-only (#25219) by @Rohit-Gahlawat in https://github.com/langgenius/dify/pull/37299 * refactor: use foxact package for copied hooks by @hyoban in https://github.com/langgenius/dify/pull/37308 * refactor(api): migrate remaining console APIs to use injected user/tenant by @cqjjjzr in https://github.com/langgenius/dify/pull/37288 * feat: trace document retrieval by @wylswz in https://github.com/langgenius/dify/pull/37283 * feat(dify-agent): sync ask-human updates by @BeautyyuYanli in https://github.com/langgenius/dify/pull/37286 * fix(web): show plugin auth permission hint by @Jingyi-Dify in https://github.com/langgenius/dify/pull/37310 * fix(api): handle agent deferred tool events by @BeautyyuYanli in https://github.com/langgenius/dify/pull/37319 * fix(web): typo of creator filter by @JzoNgKVO in https://github.com/langgenius/dify/pull/37321 * fix(web): correct icon of tag by @JzoNgKVO in https://github.com/langgenius/dify/pull/37326 * perf(api): reduce workflow startup latency for chatflow by @leslie2046 in https://github.com/langgenius/dify/pull/36773 * feat(agent): support cli tool scoped env by @zyssyz123 in https://github.com/langgenius/dify/pull/37324 * chore(api): Upgrade graphon to v0.5.1 by @QuantumGhost in https://github.com/langgenius/dify/pull/37168 * test: remove dead helper causing invalid tool provider constructor args by @siewcapital in https://github.com/langgenius/dify/pull/33124 * chore: add integration tests for openapi group by @wylswz in https://github.com/langgenius/dify/pull/37314 * feat: unified ErrorBody contract for /openapi/v1 and difyctl by @GareArc in https://github.com/langgenius/dify/pull/37285 * refactor(web): use React use for context helper by @popsiclelmlm in https://github.com/langgenius/dify/pull/37289 * refactor: convert remaining isinstance chains to match/case (part 9) (#35902) by @EvanYao826 in https://github.com/langgenius/dify/pull/37340 * chore(api): Fix several typing errors by @cqjjjzr in https://github.com/langgenius/dify/pull/37237 * fix(web): correct MCP forward-identity header copy; guard toggle hydration by @CourTeous33 in https://github.com/langgenius/dify/pull/37176 * feat: agent slash menu backend by @zyssyz123 in https://github.com/langgenius/dify/pull/37331 * chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/37351 * chore: add eslint rules for a11y by @lyzno1 in https://github.com/langgenius/dify/pull/37353 * feat: harden /create and /refine workflow generation for edge cases by @crazywoola in https://github.com/langgenius/dify/pull/37336 * refactor(agent): replace workspace inspector with sandbox API by @BeautyyuYanli in https://github.com/langgenius/dify/pull/37349 * refactor(cli): auth/workspace cleanup — record-backed token store by @GareArc in https://github.com/langgenius/dify/pull/37219 * fix: handle GraphRunAbortedEvent in TriggerPostLayer by @linw1995 in https://github.com/langgenius/dify/pull/37350 * fix(web): preserve form state during config refetch by @JzoNgKVO in https://github.com/langgenius/dify/pull/37357 * refactor: agent draft by @zyssyz123 in https://github.com/langgenius/dify/pull/37356 * chore(api): clean redundant type ignores (Fixes #24494) by @gmrnlg1971 in https://github.com/langgenius/dify/pull/37358 * feat(workflow): update start node UI by @Jingyi-Dify in https://github.com/langgenius/dify/pull/37348 * chore(web): support separate public API target for dev proxy by @JzoNgKVO in https://github.com/langgenius/dify/pull/37363 * feat: 429 rate-limit handling on the unified ErrorBody contract (openapi + difyctl) by @lin-snow in https://github.com/langgenius/dify/pull/37313 * feat(api): forward user_type for MCP identity forwarding (webapp end-users) by @CourTeous33 in https://github.com/langgenius/dify/pull/37347 * chore(codeowners): update CLI ownership by @laipz8200 in https://github.com/langgenius/dify/pull/37375 * chore: update to openapi v3 by change dep by @asukaminato0721 in https://github.com/langgenius/dify/pull/37316 * docs(dify-ui): document scroll area content width by @lyzno1 in https://github.com/langgenius/dify/pull/37376 * fix(ui): align infotip popover focus styles by @lyzno1 in https://github.com/langgenius/dify/pull/37377 * fix(agent-v2): filter workflow invite options by @lyzno1 in https://github.com/langgenius/dify/pull/37368 * fix(web): tighten start block preview card spacing by @lyzno1 in https://github.com/langgenius/dify/pull/37379 * fix: GET query parameter OpenAPI contracts by @hyoban in https://github.com/langgenius/dify/pull/37378 * fix: align toast stack with Base UI by @lyzno1 in https://github.com/langgenius/dify/pull/37382 * fix(ui): keep loading buttons focusable by @lyzno1 in https://github.com/langgenius/dify/pull/37383 * chore(api): Fix several typing errors by @cqjjjzr in https://github.com/langgenius/dify/pull/37248 * refactor: fix OpenAPI contract generation schemas by @hyoban in https://github.com/langgenius/dify/pull/37387 * fix(dify-ui): restore pagination jump focus by @lyzno1 in https://github.com/langgenius/dify/pull/37393 * test: migrate recommended app service tests by @escape0707 in https://github.com/langgenius/dify/pull/37398 * feat(agent): Skills & Files effective chain — drive runtime exposure, inspector, lifecycle, infer-tools by @zyssyz123 in https://github.com/langgenius/dify/pull/37370 * fix: render marketplace template icons with AppIcon by @Jingyi-Dify in https://github.com/langgenius/dify/pull/37401 * refactor: replace if isinstance with match case by @gmrnlg1971 in https://github.com/langgenius/dify/pull/37412 * refactor: type remaining bare dict annotations by @yzhkali in https://github.com/langgenius/dify/pull/37422 * refactor(api): remove unnecessary type: ignore in summary_index_service (#24494) by @manan-tech in https://github.com/langgenius/dify/pull/37423 * refactor: normalize search input and dify-ui focus states by @lyzno1 in https://github.com/langgenius/dify/pull/37413 * docs: add drawer stories by @lyzno1 in https://github.com/langgenius/dify/pull/37409 * fix: remove pagination current transition by @lyzno1 in https://github.com/langgenius/dify/pull/37404 * refactor: accept db.session explicitly in RecommendedAppService by @nexiouscaliver in https://github.com/langgenius/dify/pull/37417 * refactor: TagService to accept db.session explicitly by @cn7shi in https://github.com/langgenius/dify/pull/37416 * fix: change store apis to async by @wylswz in https://github.com/langgenius/dify/pull/37329 * chore: update deps by @hyoban in https://github.com/langgenius/dify/pull/37427 * fix: fix remove logo not work by @fatelei in https://github.com/langgenius/dify/pull/37435 * feat: rbac scaffold by @wylswz in https://github.com/langgenius/dify/pull/37443 * fix: align agent app backing roster API by @zyssyz123 in https://github.com/langgenius/dify/pull/37442 * fix(agent-v2): sync node job prompt from draft graph by @lyzno1 in https://github.com/langgenius/dify/pull/37441 * fix: fix store chinese as unicode, let search failed by @fatelei in https://github.com/langgenius/dify/pull/37446 * fix(api): fix incorrect docker build context by @QuantumGhost in https://github.com/langgenius/dify/pull/37438 * fix: keep segmented control focus ring inset by @lyzno1 in https://github.com/langgenius/dify/pull/37448 * fix: fix human input form logo replace by @fatelei in https://github.com/langgenius/dify/pull/37452 * fix: preserve inline image for chatflow messages by @wylswz in https://github.com/langgenius/dify/pull/37455 * feat(web): refine onboarding UI by @Jingyi-Dify in https://github.com/langgenius/dify/pull/37433 * feat(cli): difyctl per-commit edge distribution via Cloudflare R2 by @GareArc in https://github.com/langgenius/dify/pull/37454 * feat: Unify Agent v2 console routes by @zyssyz123 in https://github.com/langgenius/dify/pull/37465 * test(dify-ui): add strict Storybook a11y checks by @lyzno1 in https://github.com/langgenius/dify/pull/37459 * fix: project agent node outputs into draft graph by @zyssyz123 in https://github.com/langgenius/dify/pull/37467 * chore: example to color the session by @asukaminato0721 in https://github.com/langgenius/dify/pull/37402 * fix(workflow): reset block selector tab on reopen by @Jingyi-Dify in https://github.com/langgenius/dify/pull/37469 * chore: example use caplog in test by @asukaminato0721 in https://github.com/langgenius/dify/pull/37470 * test: use caplog for workspace permission logging by @popsiclelmlm in https://github.com/langgenius/dify/pull/37473 * fix(api): add bounded timeouts to Marketplace POST requests by @citizen204 in https://github.com/langgenius/dify/pull/37424 * feat(api): Agent ask_human HITL (phase-1) — workflow node + Agent v2 chat — ENG-635 by @zyssyz123 in https://github.com/langgenius/dify/pull/37437 * test: example of make db.session pass from parameter. #37403 by @asukaminato0721 in https://github.com/langgenius/dify/pull/37471 * refactor: replace isinstance chains with match-case (#24487) by @EvanYao826 in https://github.com/langgenius/dify/pull/37482 * refactor: remove unnecessary # type: ignore for yaml imports (#24494) by @EvanYao826 in https://github.com/langgenius/dify/pull/37481 * fix(workflow): refine tool picker copy by @Jingyi-Dify in https://github.com/langgenius/dify/pull/37477 * fix: replace patch logger with caplog in test_remove_app_and_related_data_task (#37468) by @EvanYao826 in https://github.com/langgenius/dify/pull/37480 * fix(workflow): clamp file list upload limit by @Jingyi-Dify in https://github.com/langgenius/dify/pull/37474 * fix(agent): support agent-id chat and inline draft bindings by @zyssyz123 in https://github.com/langgenius/dify/pull/37483 * fix(agent): include app display fields in published references by @zyssyz123 in https://github.com/langgenius/dify/pull/37485 * ci: add deploy-agent workflow triggered on deploy/agent branch by @MRZHUH in https://github.com/langgenius/dify/pull/37496 * fix(api): add bounded timeouts to Nacos remote settings HTTP requests by @manan-tech in https://github.com/langgenius/dify/pull/37444 * fix(api): Agent v2 chat ask_human — resume on timeout + skip input guards on resume by @zyssyz123 in https://github.com/langgenius/dify/pull/37492 * fix(watercrawl): bound result download timeout by @luochen211 in https://github.com/langgenius/dify/pull/37495 * fix(watercrawl): accept content type parameters by @luochen211 in https://github.com/langgenius/dify/pull/37500 * fix(watercrawl): handle non-json auth errors by @luochen211 in https://github.com/langgenius/dify/pull/37498 * fix(jina): handle non-json auth errors by @luochen211 in https://github.com/langgenius/dify/pull/37502 * test: use caplog for mail task logging by @popsiclelmlm in https://github.com/langgenius/dify/pull/37493 * fix(cli/e2e): remove LLM nodes from fixture DSLs and fix test assertions by @gigglewang0417 in https://github.com/langgenius/dify/pull/37463 * fix: issue by @zyssyz123 in https://github.com/langgenius/dify/pull/37508 * chore: audit deps by @hyoban in https://github.com/langgenius/dify/pull/37516 * fix(docker): remove duplicate inline styles env by @laipz8200 in https://github.com/langgenius/dify/pull/37510 * test(dify-ui): add Storybook interaction coverage by @lyzno1 in https://github.com/langgenius/dify/pull/37519 * feat: refine snippet layout by @JzoNgKVO in https://github.com/langgenius/dify/pull/37517 * fix: support Agent v2 plugin tool runtime params by @zyssyz123 in https://github.com/langgenius/dify/pull/37526 * test: replace logger patch with caplog in test_telemetry_log by @WaterDimension in https://github.com/langgenius/dify/pull/37533 * fix(agent): persist Agent App prompt message by @zyssyz123 in https://github.com/langgenius/dify/pull/37534 * fix(agent): align config detail and output contracts by @zyssyz123 in https://github.com/langgenius/dify/pull/37535 * fix: align app and knowledge detail shell styles by @Jingyi-Dify in https://github.com/langgenius/dify/pull/37555 * test: replace logger patch with caplog in version and rag pipeline tests by @jithu2111 in https://github.com/langgenius/dify/pull/37554 * refactor: replace mock.patch logger with pytest caplog in tests by @EvanYao826 in https://github.com/langgenius/dify/pull/37560 * refactor: optimize free plan workflow run cleanup batching by @zhaohao1004 in https://github.com/langgenius/dify/pull/37227 * test: replace logger patch with caplog in remaining test files by @jithu2111 in https://github.com/langgenius/dify/pull/37562 * feat: add agent roster observability APIs by @zyssyz123 in https://github.com/langgenius/dify/pull/37566 * fix(agent-v2): include workflow references in agent list by @lyzno1 in https://github.com/langgenius/dify/pull/37567 * fix(api): allow inline workflow agent soul saves by @zyssyz123 in https://github.com/langgenius/dify/pull/37563 * fix(api): hide agent apps from installed apps by @zyssyz123 in https://github.com/langgenius/dify/pull/37570 * chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/37557 * chore: workflow restore sandbox upgrade by @hjlarry in https://github.com/langgenius/dify/pull/37568 * fix(agent): add agent app duplicate endpoint by @zyssyz123 in https://github.com/langgenius/dify/pull/37571 * fix(web): prevent workspace trigger focus ring clipping by @lyzno1 in https://github.com/langgenius/dify/pull/37576 * feat: app deploy by @hyoban in https://github.com/langgenius/dify/pull/35670 * feat(agent): wire knowledge base retrieval into runtime by @BeautyyuYanli in https://github.com/langgenius/dify/pull/37577 * fix: toast long error message may caused not show all by @iamjoel in https://github.com/langgenius/dify/pull/37581 * fix(api): enforce document creation limits in pipeline generator by @linw1995 in https://github.com/langgenius/dify/pull/37586 * chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/37587 * feat(agent): add Agent Stub drive commands by @BeautyyuYanli in https://github.com/langgenius/dify/pull/37593 * fix: improve Service API OpenAPI contracts by @hyoban in https://github.com/langgenius/dify/pull/37592 * fix(agent): align roster observability logs contract by @zyssyz123 in https://github.com/langgenius/dify/pull/37578 * fix(agent): sync generated observability contracts by @zyssyz123 in https://github.com/langgenius/dify/pull/37597 * fix: add service api openapi descriptions by @hyoban in https://github.com/langgenius/dify/pull/37595 * feat(api): LLM polling support by @QuantumGhost in https://github.com/langgenius/dify/pull/37462 * chore: port isinstance to match case by @asukaminato0721 in https://github.com/langgenius/dify/pull/37271 * fix: stream Agent App backend deltas by @zyssyz123 in https://github.com/langgenius/dify/pull/37600 * fix: require Agent App role by @zyssyz123 in https://github.com/langgenius/dify/pull/37601 * fix: clean unnecessary | None type annotations (#35557) by @EvanYao826 in https://github.com/langgenius/dify/pull/36824 * chore: example of make db.session pass from parameter. by @asukaminato0721 in https://github.com/langgenius/dify/pull/37561 * test(cli/e2e): add ErrorBody contract tests for error.server structure by @gigglewang0417 in https://github.com/langgenius/dify/pull/37518 * feat(agent-v2): sync nightly updates to main by @BeautyyuYanli in https://github.com/langgenius/dify/pull/37599 * ci: build and push dify-agent-backend image by @MRZHUH in https://github.com/langgenius/dify/pull/37606 * chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/37611 * chore: improve invite member flow by @hjlarry in https://github.com/langgenius/dify/pull/37479 * fix(docker): harden default SSRF proxy egress by @laipz8200 in https://github.com/langgenius/dify/pull/36332 * refactor(web): centralize main nav route access by @lyzno1 in https://github.com/langgenius/dify/pull/37612 * test: use caplog for annotation service logging by @WaterDimension in https://github.com/langgenius/dify/pull/37618 * refactor(tests): replace mock_logger with caplog in service tests (#37468) by @EvanYao826 in https://github.com/langgenius/dify/pull/37617 * fix(agent): keep debugger session across soul saves by @zyssyz123 in https://github.com/langgenius/dify/pull/37620 * docs: enrich generated service API descriptions by @hyoban in https://github.com/langgenius/dify/pull/37615 * fix(agent): decouple roster from app quota by @zyssyz123 in https://github.com/langgenius/dify/pull/37625 * chore(deps): bump the github-actions-dependencies group across 1 directory with 13 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/37234 * fix(web): nav link focus ring style by @lyzno1 in https://github.com/langgenius/dify/pull/37633 * fix(agent): resolve roster file downloads versions and log filters by @zyssyz123 in https://github.com/langgenius/dify/pull/37626 * chore(agent-v2): sync nightly updates to main (2026-06-18) by @BeautyyuYanli in https://github.com/langgenius/dify/pull/37610 * feat: RBAC by @WTW0313 in https://github.com/langgenius/dify/pull/37107 * chore: Caplog type by @asukaminato0721 in https://github.com/langgenius/dify/pull/37603 * chore: add more type in test by @asukaminato0721 in https://github.com/langgenius/dify/pull/37609 * refactor(api): type end user records with enum by @laipz8200 in https://github.com/langgenius/dify/pull/36945 * fix: use f-string for error messages in resume_workflow_execution by @EvanYao826 in https://github.com/langgenius/dify/pull/37666 * refactor(web): migrate shared localStorage to createLocalStorageState by @SukkaW in https://github.com/langgenius/dify/pull/37408 * chore: add Type to test by @asukaminato0721 in https://github.com/langgenius/dify/pull/37191 * chore: move one db.session by @asukaminato0721 in https://github.com/langgenius/dify/pull/37656 * test: migrate hit testing dump record tests by @escape0707 in https://github.com/langgenius/dify/pull/37672 * fix(agent): return conflict for duplicate agent names by @zyssyz123 in https://github.com/langgenius/dify/pull/37686 * refactor: accept db.session explicitly in SavedMessageService by @Rohit-Gahlawat in https://github.com/langgenius/dify/pull/37682 * fix(watercrawl): bound client request timeouts by @luochen211 in https://github.com/langgenius/dify/pull/37515 * refactor: accept db.session explicitly in FeedbackService by @Rohit-Gahlawat in https://github.com/langgenius/dify/pull/37694 * refactor: accept db.session explicitly in APIBasedExtensionService by @Rohit-Gahlawat in https://github.com/langgenius/dify/pull/37693 * refactor: accept db.session explicitly in FileService.get_upload_files_by_ids by @Rohit-Gahlawat in https://github.com/langgenius/dify/pull/37695 * refactor(test): replace logger mock with caplog in billing and vector service tests by @MeloMei in https://github.com/langgenius/dify/pull/37697 * refactor: replace patch logger with caplog in core/rag tests (#37468) by @WaterDimension in https://github.com/langgenius/dify/pull/37621 * fix: skip empty tool entries in legacy dataset config extraction by @he-yufeng in https://github.com/langgenius/dify/pull/37669 * feat(web): add app shell skip navigation by @lyzno1 in https://github.com/langgenius/dify/pull/37644 * chore(deps): bump base-ui to v1.6.0 by @lyzno1 in https://github.com/langgenius/dify/pull/37663 * fix(web): simplify completed drawer dismissal by @lyzno1 in https://github.com/langgenius/dify/pull/37664 * test(dify-ui): align select form story with field primitives by @lyzno1 in https://github.com/langgenius/dify/pull/37670 * fix: invalidate credential cache after OAuth refresh by @hjlarry in https://github.com/langgenius/dify/pull/37630 * chore: remove legacy CI configurations by @QuantumGhost in https://github.com/langgenius/dify/pull/37721 * fix: add bounded timeout to Jina credential validation requests by @EvanYao826 in https://github.com/langgenius/dify/pull/37637 * fix: add bounded timeout to Firecrawl credential validation by @EvanYao826 in https://github.com/langgenius/dify/pull/37638 * fix(watercrawl): don't disable request timeouts with timeout=None by @he-yufeng in https://github.com/langgenius/dify/pull/37685 * chore: clean some isinstance by @asukaminato0721 in https://github.com/langgenius/dify/pull/37602 * feat(cli): recover omitted and length-aware command suggestions by @lin-snow in https://github.com/langgenius/dify/pull/37624 * fix(cli): align difyctl help text with actual flags and error envelope by @lin-snow in https://github.com/langgenius/dify/pull/37728 * feat(web): hide snippets by @JzoNgKVO in https://github.com/langgenius/dify/pull/37729 * feat(agent): add skill inspect API by @zyssyz123 in https://github.com/langgenius/dify/pull/37726 * chore(deps): upgrade npm dependencies by @lyzno1 in https://github.com/langgenius/dify/pull/37731 * fix: add legacy snippet permissions by @hjlarry in https://github.com/langgenius/dify/pull/37718 * refactor(tests): replace mock_logger with caplog in 5 service tests (#37468) by @EvanYao826 in https://github.com/langgenius/dify/pull/37715 * fix(cli): document HITL pause exit code as 0, not 2 by @GareArc in https://github.com/langgenius/dify/pull/37737 * fix(hitl): stop confusing 404 when resuming forms via CLI by @GareArc in https://github.com/langgenius/dify/pull/37556 * fix(agent): support restoring roster versions by @zyssyz123 in https://github.com/langgenius/dify/pull/37734 * fix(cli): align run app --conversation mode list with runtime gate by @GareArc in https://github.com/langgenius/dify/pull/37733 * fix: bound OperationService billing requests by @he-yufeng in https://github.com/langgenius/dify/pull/37425 * chore: remove duplicate code by @fatelei in https://github.com/langgenius/dify/pull/37724 * fix: add RBAC feature across various components by @WTW0313 in https://github.com/langgenius/dify/pull/37732 * fix(cli): apply --think filtering to workflow app outputs by @lin-snow in https://github.com/langgenius/dify/pull/37736 * fix(cli): make auth devices revoke --yes a real flag by @GareArc in https://github.com/langgenius/dify/pull/37740 * refactor(openapi/cli): split app usage-face from studio-app build-face by @GareArc in https://github.com/langgenius/dify/pull/37641 * fix: disable deployment DSL imports by @hyoban in https://github.com/langgenius/dify/pull/37745 * fix: prevent legacy stop from interrupting GraphEngine runs by @Blackoutta in https://github.com/langgenius/dify/pull/37129 * fix(agent): add stable debug conversation by @zyssyz123 in https://github.com/langgenius/dify/pull/37744 * fix: add the outlined button of notification by @hjlarry in https://github.com/langgenius/dify/pull/37741 * fix: Add tenant-level Redis lock for credit pool deduction by @linw1995 in https://github.com/langgenius/dify/pull/37753 * feat: guard openapi with rbac by @wylswz in https://github.com/langgenius/dify/pull/37752 * fix(agent): switch roster node to inline by @zyssyz123 in https://github.com/langgenius/dify/pull/37754 * fix(tests): enhance toast mock and add preview-only app warning test by @WTW0313 in https://github.com/langgenius/dify/pull/37749 * fix(web): derive publish shortcut display from hotkey by @lyzno1 in https://github.com/langgenius/dify/pull/37758 * fix: replace mock_logger with caplog in tests by @EvanYao826 in https://github.com/langgenius/dify/pull/37757 * refactor(web): manage create release form with Jotai by @hyoban in https://github.com/langgenius/dify/pull/37762 * feat(agent): add roster service api access by @zyssyz123 in https://github.com/langgenius/dify/pull/37759 * chore: not use request.scoped session by @fatelei in https://github.com/langgenius/dify/pull/37421 * fix(web): restore contact us support menu by @Jingyi-Dify in https://github.com/langgenius/dify/pull/37774 * fix: isolate agent debug conversations by account by @zyssyz123 in https://github.com/langgenius/dify/pull/37766 * refactor(web): consolidate create release state by @hyoban in https://github.com/langgenius/dify/pull/37765 * refactor: adapt docs links for product prefixes by @hyoban in https://github.com/langgenius/dify/pull/37565 * chore: add ENTERPRISE_RBAC_API_URL check and update permission key by @fatelei in https://github.com/langgenius/dify/pull/37777 * refactor: improve stream close 2 by @wylswz in https://github.com/langgenius/dify/pull/37106 * feat: add agent debug conversation refresh API by @zyssyz123 in https://github.com/langgenius/dify/pull/37784 * fix(app): derive get-app --mode whitelist from listable app types by @GareArc in https://github.com/langgenius/dify/pull/37761 * refactor: pass session into hit testing service by @myshkin451 in https://github.com/langgenius/dify/pull/37785 * fix: support agent duplicate role and skill file preview by @zyssyz123 in https://github.com/langgenius/dify/pull/37788 * feat(retention): add V2 workflow run archive bundlesa by @41tair in https://github.com/langgenius/dify/pull/37747 * refactor(web): consolidate deployment state atoms by @hyoban in https://github.com/langgenius/dify/pull/37783 * feat: support query catalog add billing enabled by @fatelei in https://github.com/langgenius/dify/pull/37791 * feat(agent-v2): sync nightly updates to main (2026-06-22) by @BeautyyuYanli in https://github.com/langgenius/dify/pull/37651 * feat(cli): prepare for alpha release by @GareArc in https://github.com/langgenius/dify/pull/37794 * fix: snippet history detail includes input fields by @FFXN in https://github.com/langgenius/dify/pull/37797 * fix(web): polish main nav and deployment tooltip styles by @hyoban in https://github.com/langgenius/dify/pull/37800 * fix(agent): agent composer publish validation by @linw1995 in https://github.com/langgenius/dify/pull/37803 * fix: correct misleading password length validation message by @xiaweiwei67-stack in https://github.com/langgenius/dify/pull/37796 * chore: compatiable old role update by @fatelei in https://github.com/langgenius/dify/pull/37804 * fix(api): disable gunicorn control sock by @wylswz in https://github.com/langgenius/dify/pull/37806 * feat(chatflow): stream LLM reasoning to a live thinking panel by @lin-snow in https://github.com/langgenius/dify/pull/37460 * refactor(web): sync deployment route state from next route by @hyoban in https://github.com/langgenius/dify/pull/37811 * chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/37802 * fix: fix logic by @fatelei in https://github.com/langgenius/dify/pull/37812 * fix(agent): inject env inline per-command instead of persisting workspace file by @linw1995 in https://github.com/langgenius/dify/pull/37815 * fix(web): stabilize deployment state hydration by @hyoban in https://github.com/langgenius/dify/pull/37818 * feat(agent): copy roster agent into workflow inline agent by @zyssyz123 in https://github.com/langgenius/dify/pull/37813 * chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/37760 * refactor(web): manage deployment async state with atoms by @hyoban in https://github.com/langgenius/dify/pull/37819 * refactor(web): simplify deployment async ownership by @hyoban in https://github.com/langgenius/dify/pull/37823 * refactor: for db.session feedback service.export feedbacks by @Kunal152000 in https://github.com/langgenius/dify/pull/37763 * refactor(web): reuse infinite scroll hook in deployments by @hyoban in https://github.com/langgenius/dify/pull/37825 * refactor: accept db.session explicitly in ApiKeyAuthService by @Kunal152000 in https://github.com/langgenius/dify/pull/37832 * fix(agent): save workflow agents as console roster apps by @zyssyz123 in https://github.com/langgenius/dify/pull/37848 * fix: add RBAC feature toggle to environment configuration by @WTW0313 in https://github.com/langgenius/dify/pull/37853 * refactor(web): simplify deployment action state by @hyoban in https://github.com/langgenius/dify/pull/37851 * refactor: inject session into audio TTS by @myshkin451 in https://github.com/langgenius/dify/pull/37849 * fix(web): align marketplace i18n terminology by @Jingyi-Dify in https://github.com/langgenius/dify/pull/37837 * fix: resolve DetachedInstanceError via session management refactoring by @gmrnlg1971 in https://github.com/langgenius/dify/pull/37847 * refactor: pass session as parameter in knowledge_retrieval_inner_service and agent_app_feature_service by @EvanYao826 in https://github.com/langgenius/dify/pull/37639 * fix(web): polish onboarding main nav and preferences tab by @Jingyi-Dify in https://github.com/langgenius/dify/pull/37844 * chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/37855 * chore: Update permission keys and descriptions for multiple languages to simplify application and dataset management phrases by @WTW0313 in https://github.com/langgenius/dify/pull/37859 * chore: rm all mock_logger by @asukaminato0721 in https://github.com/langgenius/dify/pull/37786 * chore(web): clean up unused production code by @hyoban in https://github.com/langgenius/dify/pull/37854 * chore: make AccountService.load_user use passed session by @asukaminato0721 in https://github.com/langgenius/dify/pull/37764 * fix(cli): make app-info cache resilient to corrupt entries + route errors through structured envelope (WTA-257) by @GareArc in https://github.com/langgenius/dify/pull/37852 * feat: surface separated-mode LLM reasoning in CLI and workflow run preview by @lin-snow in https://github.com/langgenius/dify/pull/37828 * chore(deps): bump dep versions for CVE fixes by @wylswz in https://github.com/langgenius/dify/pull/37861 * fix: add is_cloud_only for templates by @hjlarry in https://github.com/langgenius/dify/pull/37846 * fix: align switch focus outline by @lyzno1 in https://github.com/langgenius/dify/pull/37870 * chore(web): remove unused frontend code by @hyoban in https://github.com/langgenius/dify/pull/37866 * fix: Lindorm vector store errors caused by the update of opensearch-py by @AlwaysBluer in https://github.com/langgenius/dify/pull/37862 * feat: filter dataset operator and add miss permission key by @fatelei in https://github.com/langgenius/dify/pull/37867 * fix: banner has ui problem in small screen by @iamjoel in https://github.com/langgenius/dify/pull/37879 * chore(knip): add mdx support clean unused code by @hyoban in https://github.com/langgenius/dify/pull/37882 * refactor(tests): use caplog in web login tests by @lin-hongkuan in https://github.com/langgenius/dify/pull/37889 * chore(web): prune unused i18n translations by @hyoban in https://github.com/langgenius/dify/pull/37888 * refactor: replace logger patches with pytest caplog in tests by @Oxygen56 in https://github.com/langgenius/dify/pull/37890 * fix: respect legacy plugin permissions without RBAC by @Jingyi-Dify in https://github.com/langgenius/dify/pull/37903 * feat: delete member delete rbac binding by @fatelei in https://github.com/langgenius/dify/pull/37904 * fix: keep body background consistent on overscroll by @hyoban in https://github.com/langgenius/dify/pull/37909 * fix: eagerly validate conversation before generator to prevent hanging by @functionkiller in https://github.com/langgenius/dify/pull/37224 * chore: add type to test by @asukaminato0721 in https://github.com/langgenius/dify/pull/37876 * chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/37891 * docs: add Dify Cloud support contact by @Jingyi-Dify in https://github.com/langgenius/dify/pull/37913 * fix: Fix frontend rbac issues by @WTW0313 in https://github.com/langgenius/dify/pull/37872 * build(deps): update Bleach sanitizer security fix by @gateway in https://github.com/langgenius/dify/pull/37860 * chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/37916 * fix: remove redundant snippets permissions by @FFXN in https://github.com/langgenius/dify/pull/37921 * fix: improve error handling for workflow execution by @QuantumGhost in https://github.com/langgenius/dify/pull/37919 * feat: enhance app permissions and access controls by @WTW0313 in https://github.com/langgenius/dify/pull/37933 * refactor(test): replace SimpleNamespace with real UploadFile model in test_dataset_models.py by @manan-tech in https://github.com/langgenius/dify/pull/37935 * feat: update monitor permission key and plugin permission key by @fatelei in https://github.com/langgenius/dify/pull/37937 * refactor(tests): replace logger mocks with caplog (#37468) by @xiejl001 in https://github.com/langgenius/dify/pull/37922 * fix: polish tool provider selection and detail drawer by @lyzno1 in https://github.com/langgenius/dify/pull/37940 * fix(api): tongyi credential compatibility by @linw1995 in https://github.com/langgenius/dify/pull/37942 * feat: add hydration support and fallback for Countdown component by @WTW0313 in https://github.com/langgenius/dify/pull/37943 * chore: bump versions to 1.15.0 by @wylswz in https://github.com/langgenius/dify/pull/37929 ## New Contributors * @algojogacor made their first contribution in https://github.com/langgenius/dify/pull/36361 * @lord-Rheagar made their first contribution in https://github.com/langgenius/dify/pull/36478 * @liaoyl830 made their first contribution in https://github.com/langgenius/dify/pull/36534 * @Lillian68 made their first contribution in https://github.com/langgenius/dify/pull/36559 * @zhang-liz made their first contribution in https://github.com/langgenius/dify/pull/36565 * @Tianlel made their first contribution in https://github.com/langgenius/dify/pull/36628 * @zeus1959 made their first contribution in https://github.com/langgenius/dify/pull/36227 * @amr-sheriff made their first contribution in https://github.com/langgenius/dify/pull/36265 * @zhuiguangzhe2003 made their first contribution in https://github.com/langgenius/dify/pull/36716 * @NishchayMahor made their first contribution in https://github.com/langgenius/dify/pull/36755 * @aliyevaladddin made their first contribution in https://github.com/langgenius/dify/pull/36741 * @WOLIKIMCHENG made their first contribution in https://github.com/langgenius/dify/pull/36807 * @myshkin451 made their first contribution in https://github.com/langgenius/dify/pull/36798 * @krishkantiuj-ren made their first contribution in https://github.com/langgenius/dify/pull/36859 * @duongynhi000005-oss made their first contribution in https://github.com/langgenius/dify/pull/36845 * @ShuntaroOkuma made their first contribution in https://github.com/langgenius/dify/pull/36742 * @1795771535y-cell made their first contribution in https://github.com/langgenius/dify/pull/36871 * @bmtriet made their first contribution in https://github.com/langgenius/dify/pull/36873 * @meaqua9420 made their first contribution in https://github.com/langgenius/dify/pull/36857 * @cupkk made their first contribution in https://github.com/langgenius/dify/pull/36885 * @ForeignKeyCN made their first contribution in https://github.com/langgenius/dify/pull/35468 * @goingforstudying-ctrl made their first contribution in https://github.com/langgenius/dify/pull/36903 * @popsiclelmlm made their first contribution in https://github.com/langgenius/dify/pull/36922 * @likalikali made their first contribution in https://github.com/langgenius/dify/pull/36925 * @ZongrongLi made their first contribution in https://github.com/langgenius/dify/pull/36908 * @yzhkali made their first contribution in https://github.com/langgenius/dify/pull/36934 * @shifang0511 made their first contribution in https://github.com/langgenius/dify/pull/36977 * @eryue0220 made their first contribution in https://github.com/langgenius/dify/pull/36941 * @WUMIKE233 made their first contribution in https://github.com/langgenius/dify/pull/36995 * @siyux1927 made their first contribution in https://github.com/langgenius/dify/pull/37006 * @bymle made their first contribution in https://github.com/langgenius/dify/pull/37093 * @archievi made their first contribution in https://github.com/langgenius/dify/pull/37118 * @PopperLi made their first contribution in https://github.com/langgenius/dify/pull/37125 * @gigglewang0417 made their first contribution in https://github.com/langgenius/dify/pull/36874 * @cheatofrom made their first contribution in https://github.com/langgenius/dify/pull/36746 * @Rohit-Gahlawat made their first contribution in https://github.com/langgenius/dify/pull/37255 * @siewcapital made their first contribution in https://github.com/langgenius/dify/pull/33124 * @gmrnlg1971 made their first contribution in https://github.com/langgenius/dify/pull/37358 * @manan-tech made their first contribution in https://github.com/langgenius/dify/pull/37423 * @nexiouscaliver made their first contribution in https://github.com/langgenius/dify/pull/37417 * @cn7shi made their first contribution in https://github.com/langgenius/dify/pull/37416 * @citizen204 made their first contribution in https://github.com/langgenius/dify/pull/37424 * @MRZHUH made their first contribution in https://github.com/langgenius/dify/pull/37496 * @luochen211 made their first contribution in https://github.com/langgenius/dify/pull/37495 * @WaterDimension made their first contribution in https://github.com/langgenius/dify/pull/37533 * @jithu2111 made their first contribution in https://github.com/langgenius/dify/pull/37554 * @zhaohao1004 made their first contribution in https://github.com/langgenius/dify/pull/37227 * @SukkaW made their first contribution in https://github.com/langgenius/dify/pull/37408 * @MeloMei made their first contribution in https://github.com/langgenius/dify/pull/37697 * @he-yufeng made their first contribution in https://github.com/langgenius/dify/pull/37669 * @xiaweiwei67-stack made their first contribution in https://github.com/langgenius/dify/pull/37796 * @Kunal152000 made their first contribution in https://github.com/langgenius/dify/pull/37763 * @lin-hongkuan made their first contribution in https://github.com/langgenius/dify/pull/37889 * @Oxygen56 made their first contribution in https://github.com/langgenius/dify/pull/37890 * @functionkiller made their first contribution in https://github.com/langgenius/dify/pull/37224 * @gateway made their first contribution in https://github.com/langgenius/dify/pull/37860 * @xiejl001 made their first contribution in https://github.com/langgenius/dify/pull/37922 **Full Changelog**: https://github.com/langgenius/dify/compare/1.14.2...1.15.0