1.15.0
Dify 1.15.0 Release Note
What's Changed
UX & UI Enhancements
- 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)
- 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/v1API (#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-pyupdate (#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
DetachedInstanceErrorvia 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.sessionexplicitly via dependency injection for consistency (#37639, #37832, #37695, #37694, and related) - Modernized typing (removed redundant
type: ignore/cast, converted ABCs toProtocol, replacedisinstancechains withmatch-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; defaulttrue) — auto-select a nearby PyPI mirror at startup for regions with poor connectivityPIP_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 runflask backfill-plugin-auto-upgradeto 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
.envaccordingly.- 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
- Back up your customized docker-compose YAML and env files.
cd docker cp docker-compose.yaml docker-compose.yaml.$(date +%s).bak cp .env .env.$(date +%s).bak 2>/dev/null || true - Get the latest code for the
1.15.0release.git fetch --tags git checkout 1.15.0 - Stop the services (run inside the
dockerdirectory).docker compose down - Back up data.
tar -cvf volumes-$(date +%s).tgz volumes - Review any env file changes and re-apply local customizations.
- Upgrade services.
docker compose up -d - Backfill category-scoped plugin auto-upgrade strategies (required).
docker compose exec api flask backfill-plugin-auto-upgrade
Source Code Deployments
- Stop the API server, Worker, and Web frontend server.
- Get the latest code for the
1.15.0release.git fetch --tags git checkout 1.15.0 - Update Python dependencies.
cd api uv sync - Run database migrations.
uv run flask db upgrade - Backfill category-scoped plugin auto-upgrade strategies (required).
uv run flask backfill-plugin-auto-upgrade - 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
These notes run past the length kept in the archive. The rest is on the publisher’s page.