🚀 What's New in v1.14.0?
Collaboration
Collaboration allows workspace members to edit the same workflow together, with synced graph updates, online presence, and shared visibility into who is working where.
On self-hosted deployments, collaboration is turned off by default. Enable it by setting:
ENABLE_COLLABORATION_MODE = true
SERVER_WORKER_CLASS = geventwebsocket.gunicorn.workers.GeventWebSocketWorker
NEXT_PUBLIC_SOCKET_URL = your deployment’s WebSocket URL (e.g., wss://dify.example.com)
For more details, see Full Documentation
Human-in-the-loop (HITL)
- Service API for HITL — programmatic support for human-in-the-loop flows alongside existing console behavior.
MCP and plugins
- MCP tool metadata — refresh after updates so the UI stays in sync.
- MCP server URL — fix double
/v1that could break OAuth and authorization (404). - MCP OAuth discovery — handle malformed JSON safely.
- MCP schema publishing — map
checkboxandjson_objecttypes correctly. - Plugins — auto-upgrade strategy persistence, local installer and file-input behavior, tenant scoping for inner API end-user lookup.
Marketplace and OAuth
- Marketplace and OAuth — targeted fixes for marketplace flows and OAuth sign-in (including edge cases such as null email on GitHub OAuth).
UI kit and front-end platform
@langgenius/dify-ui— shared primitives (for example PreviewCard, Meter), design tokens, and broad migration from ad-hocweb/base/uitoward the package.- Accessibility — date and time pickers, auto-update strategy picker, scrollbars in plugin and model selectors, and related polish.
- Goto Anything — recent items,
/gocommand, deeper app sub-sections; fix for Cmd+K (removed problematic dynamic import). - Prompt editor — slash-triggered variable filtering; keyboard up/down in variable lists.
- Follow-up questions — improved settings and token limits for suggested questions.
- Modals — ApiKey, provider config, and others refactored toward a shared Dialog pattern with tests.
Observability and analytics
- Langfuse — optional time-to-first-token (TTFT) reporting.
- Explore — banner impression tracking; app preview event tracking on cards.
Billing and quotas
- Quota v3 integration in the product stack.
- Billing UI — Meter-based usage presentation; more resilient cleanup when billing APIs fail.
- File uploader — billing-aware behavior and copy updates.
Data, RAG, and knowledge
- Summary index and Weaviate — compatibility fixes when using the summary index with Weaviate.
- Vector projection — include
is_summaryandoriginal_chunk_idin default projection where relevant. - External and bound datasets — stronger tenant checks on knowledge APIs.
Infrastructure and operations
- Docker Compose — healthchecks for
api,worker, andworker_beat; template and env example updates (for example S3 address style). - Celery — default worker concurrency raised to 4; missing queue fix.
- PostgreSQL — higher default max connections (200) for the updated app DB path.
- Redis — configurable key prefix; retry logic for Redis operations.
- TiDB — endpoint support and related auth binding migration (Qdrant endpoint on TiDB auth bindings).
- Markdown — optional
ALLOW_INLINE_STYLESenvironment variable to allow inline CSS in rendered Markdown when needed.
Security
- Change-email flow — stricter phase-bound token handling (GHSA-4q3w-q5mc-45rq).
- IDOR hardening — tenant validation on data-source binding; dataset and API ownership checks where gaps were found.
Performance
- Optimized performance of graph initialization.
API and platform internals
- Graphon — upgrade to standalone Graphon 0.2.2 (replacing in-tree
dify_graphnaming and packaging). - OpenAPI — script to generate OpenAPI v2 JSON and documentation pointer.
- Deprecation — some legacy console APIs marked deprecated in favor of newer patterns.
- Large SQLAlchemy 2.0
select()migration, PydanticBaseModelfor many console and service responses, and testcontainers-based tests for stability.
What's Changed
- test: migrate restore archived workflow run tests to testcontainers by @YB0y in #34083
- refactor(api): continue decoupling dify_graph from API concerns by @laipz8200 in #33580
- refactor: replace dict with BedrockRetrievalSetting BaseModel in knowledge_service by @faizkhairi in #34080
- test: migrate workflow converter tests to testcontainers by @Desel72 in #34038
- refactor(api): rename dify_graph to graphon by @WH-2099 in #34095
- refactor: select in service API wraps, file_preview, and site controllers by @RenzoMXD in #34086
- test: migrate database retrieval tests to testcontainers by @YB0y in #34087
- test: migrate account deletion sync tests to testcontainers by @YB0y in #34091
- test: migrate metadata partial update tests to testcontainers by @YB0y in #34088
- test: migrate plugin parameter service tests to testcontainers by @YB0y in #34090
- test: Unit test case for services.dataset_services.py by @rajatagarwal-oss in #33212
- fix: handle null email in GitHub OAuth sign-in by @Krishnachaitanyakc in #34043
- fix: datasource api-key modal z-index incorrect by @hjlarry in #34103
- fix(prompt-editor): fix unexpected blur effect in prompt editor by @WTW0313 in #34069
- refactor: select in service API dataset document and segment controllers by @RenzoMXD in #34101
- chore(deps): bump pypdf from 6.9.1 to 6.9.2 in /api by @dependabot[bot] in #34099
- refactor: use ungh for github api by @hyoban in #34108
- fix: dataset query created_by empty UUID in iteration subgraph (#34004) by @Achieve3318 in #34044
- chore: enable no-barrel-files by @hyoban in #34121
- chore(deps): update picomatch version in nodejs-client and web packages by @WTW0313 in #34123
- fix: the menu of multi nodes always display on left top corner by @hjlarry in #34120
- refactor(web): convert 7 enums to as-const objects (batch 5) by @mahmoodhamdi in #33960
- fix: import path by @QuantumGhost in #34124
- chore: Support merge queue status checks in required CI workflows by @laipz8200 in #34133
- chore(api): remove backend utcnow usage by @laipz8200 in #34131
- chore: Keep main CI lane checks stable when skipped by @laipz8200 in #34143
- chore: remove stale mypy suppressions and align dataset service tests by @WH-2099 in #34130
- test: migrate human input delivery test service tests to testcontainers by @YB0y in #34092
- chore(deps-dev): bump nltk from 3.9.3 to 3.9.4 in /api by @dependabot[bot] in #34117
- test: migrate api key auth service tests to testcontainers by @YB0y in #34147
- refactor: use EnumText for model_type and WorkflowNodeExecution.status by @tmimmanuel in #34093
- test: migrate plugin service tests to testcontainers by @YB0y in #34098
- chore(deps): bump requests from 2.32.5 to 2.33.0 in /api by @dependabot[bot] in #34116
- test: migrate api token service tests to testcontainers by @YB0y in #34148
- chore(deps): bump brace-expansion from 5.0.4 to 5.0.5 in /sdks/nodejs-client by @dependabot[bot] in #34159
- test: migrate auth integration tests to testcontainers by @YB0y in #34089
- feat: add copy/delete to multi nodes context menu by @hjlarry in #34138
- test: use happy dom by @hyoban in #34154
- chore(ci): remove Python 3.11 from CI test workflows by @1Ckpwee in #34164
- ci: skip duplicate actions by @hyoban in #34168
- feat: return correct dify-plugin-daemon error message by @fatelei in #34171
- feat: enterprise otel exporter by @GareArc in #33138
- refactor: use EnumText for credential_type in TriggerSubscription by @tmimmanuel in #34174
- refactor: select in core/ops trace manager and trace providers by @RenzoMXD in #34197
- refactor(api): use standalone graphon package by @WH-2099 in #34209
- refactor: use EnumText for prompt_type and customize_token_strategy by @tmimmanuel in #34204
- chore(deps): bump cryptography from 44.0.3 to 46.0.6 in /api by @dependabot[bot] in #34210
- test: migrate messages clean service retention tests to testcontainers by @YB0y in #34207
- refactor: use select for API key auth lookups by @Maa-ly in #34146
- test: migrate metadata service tests to testcontainers by @YB0y in #34220
- test: migrate workspace service tests to testcontainers by @YB0y in #34218
- test: migrate tag service tests to testcontainers by @YB0y in #34219
- refactor: core/tools, agent, callback_handler, encrypter, llm_generator, plugin, inner_api by @RenzoMXD in #34205
- chore(ci): reduce web test shard fan-out by @laipz8200 in #34215
- chore(ci): remove duplicate pyrefly work from style lane by @laipz8200 in #34213
- fix: Fix docker-compose.yaml's ENV variables by @jasonfish568 in #31101
- test: init e2e by @hyoban in #34193
- chore(deps-dev): bump happy-dom from 20.8.8 to 20.8.9 in /web by @dependabot[bot] in #34243
- test: migrate workflow service tests to testcontainers by @YB0y in #34206
- chore(ci): split API unit and integration coverage reporting by @laipz8200 in #34211
- chore(ci): tighten backend workflow path filters by @laipz8200 in #34217
- Docs: unify language switch links across root and localized README files by @Fronut in #34201
- chore(web): remove stale i18n check test by @lyzno1 in #34237
- chore(ci): simplify i18n translation workflow by @lyzno1 in #34238
- fix(ci): tighten Claude i18n workflow scope by @lyzno1 in #34262
- chore(deps): bump boto3 from 1.42.73 to 1.42.78 in /api in the storage group by @dependabot[bot] in #34248
- chore(deps): update redis requirement from ~=7.3.0 to ~=7.4.0 in /api in the database group by @dependabot[bot] in #34247
- chore(deps): bump the google group in /api with 2 updates by @dependabot[bot] in #34252
- chore(deps): bump opik from 1.10.45 to 1.10.54 in /api in the llm group by @dependabot[bot] in #34254
- chore(deps-dev): update types-regex requirement from ~=2026.2.28 to ~=2026.3.32 in /api in the dev group by @dependabot[bot] in #34249
- chore(deps-dev): bump the dev group in /api with 7 updates by @dependabot[bot] in #34258
- feat(api): add delete workflow functionality with error handling by @ZeroZ-lab in #33657
- chore(deps): update gunicorn requirement from ~=25.1.0 to ~=25.3.0 in /api in the flask group by @dependabot[bot] in #34244
- chore(deps): bump the storage group in /api with 3 updates by @dependabot[bot] in #34256
- chore(deps-dev): bump the vdb group in /api with 5 updates by @dependabot[bot] in #34257
- chore(i18n): sync translations with en-US by @github-actions[bot] in #34267
- chore(deps): bump the github-actions-dependencies group across 1 directory with 2 updates by @dependabot[bot] in #34261
- refactor: core/rag docstore, datasource, embedding, rerank, retrieval by @RenzoMXD in #34203
- refactor(api): replace json.loads with Pydantic validation in services layer by @eureka0928 in #33704
- fix: enrich Service API segment responses with summary content by @jigangz in #34221
- refactor: introduce pnpm workspace by @hyoban in #34241
- fix: upgrade langfuse SDK to v3+ for LLM-as-judge support by @majiayu000 in #34265
- fix(workflow): improve node organization by @WTW0313 in #34276
- test: migrate trigger providers controller tests to testcontainers by @YB0y in #34295
- fix(i18n): translate "nodes.note.addNote" as "メモを追加" in ja-JP by @t-daisuke in #34294
- test: migrate data source controller tests to testcontainers by @YB0y in #34292
- test: migrate app apis controller tests to testcontainers by @YB0y in #34291
- test: migrate web forgot password controller tests to testcontainers by @YB0y in #34288
- fix: map checkbox and json_object types in MCP schema publishing by @majiayu000 in #34226
- test: migrate workspace wraps controller tests to testcontainers by @YB0y in #34296
- test: migrate web wraps controller tests to testcontainers by @YB0y in #34289
- test: migrate web conversation controller tests to testcontainers by @YB0y in #34287
- test: migrate app import api controller tests to testcontainers by @YB0y in #34290
- chore(deps): bump pygments from 2.19.2 to 2.20.0 in /api by @dependabot[bot] in #34301
- test: migrate tool provider controller tests to testcontainers by @YB0y in #34293
- test: migrate mcp controller tests to testcontainers by @YB0y in #34297
- refactor: use EnumText for Provider.quota_type and consolidate ProviderQuotaType by @tmimmanuel in #34299
- refactor: use EnumText for model_type in provider models by @tmimmanuel in #34300
- chore(ci): move full VDB matrix off the PR path by @laipz8200 in #34216
- fix: bridge Dify design tokens for streamdown table fullscreen by @ZZITE in #34224
- fix(web): fix document detail page status inconsistency with list page by @fisherOne1 in #33740
- fix: silent diff when number count are the same by @asukaminato0721 in #34097
- refactor(api): narrow otel instrumentor typing by @wangji0923 in #33853
- fix(http): expose structured vars in HTTP body selector by @owldev127 in #34185
- fix(dev): load middleware env in start-docker-compose by @dominciyue in #33927
- feat: increase default celery worker concurrency to 4 by @SeasonPilot in #33105
- test: add tests for api/services retention, enterprise, plugin by @cryptus-neoxys in #32648
- chore: try to avoid supply chain security by @hyoban in #34317
- test: migrate rag pipeline controller tests to testcontainers by @YB0y in #34303
- test: migrate rag pipeline datasets controller tests to testcontainers by @YB0y in #34304
- test: migrate rag pipeline import controller tests to testcontainers by @YB0y in #34305
- test: migrate rag pipeline workflow controller tests to testcontainers by @YB0y in #34306
- test: migrate explore conversation controller tests to testcontainers by @YB0y in #34312
- fix(web): internationalize DSL export modal labels by @lyzno1 in #34323
- fix(ci): restore i18n dispatch bridge by @lyzno1 in #34331
- chore: normalize frozenset literals and myscale typing by @WH-2099 in #34327
- refactor(nodejs-sdk): replace axios with fetch transport by @lyzno1 in #34325
- fix(web): localize error boundary copy by @lyzno1 in #34332
- fix(ci): structure i18n sync payload and PR flow by @lyzno1 in #34342
- chore(i18n): sync translations with en-US by @github-actions[bot] in #34339
- chore(i18n): sync translations with en-US by @github-actions[bot] in #34338
- test: migrate apikey controller tests to testcontainers by @Desel72 in #34286
- refactor: use sessionmaker().begin() in console app controllers by @Desel72 in #34282
- refactor: use sessionmaker().begin() in console datasets controllers by @Desel72 in #34283
- refactor: use sessionmaker().begin() in web and mcp controllers by @Desel72 in #34281
- refactor: use sessionmaker().begin() in console workspace and misc co… by @Desel72 in #34284
- refactor(api): clean redundant type ignore in request query parsing 🤖🤖🤖 by @majiayu000 in #34350
- perf: use global httpx client instead of per request create new one by @fatelei in #34311
- feat(docker): add healthcheck for api, worker, and worker_beat services by @majiayu000 in #34345
- refactor: enhance ELK layout handling by @WTW0313 in #34334
- refactor: core/app pipeline, core/datasource, and core/indexing_runner by @RenzoMXD in #34359
- fix: Variable Aggregator cannot click group swich by @hjlarry in #34361
- refactor: select in 13 small service files by @RenzoMXD in #34371
- fix: support qa_preview shape in IndexProcessor preview formatting by @EndlessLucky in #34151
- refactor(api): replace json.loads with Pydantic validation in controllers and infra layers by @eureka0928 in #34277
- fix: apply Baidu Vector DB connection timeout when initializing Mochow client by @jimmyzhuu in #34328
- refactor: select in 10 service files by @RenzoMXD in #34373
- chore: move commit hook to root by @hyoban in #34404
- fix: sqlalchemy.exc.InvalidRequestError: Can't operate on closed tran… by @fatelei in #34407
- refactor: migrate service_api and inner_api to sessionmaker pattern by @xr843 in #34379
- refactor: select in message_service and ops_service by @RenzoMXD in #34414
- chore(deps): bump aiohttp from 3.13.3 to 3.13.4 in /api by @dependabot[bot] in #34425
- refactor(api): type OpsTraceProviderConfigMap with TracingProviderCon… by @YB0y in #34424
- refactor(web): migrate remaining toast usage by @lyzno1 in #34433
- refactor: model_load_balancing_service and api_tools_manage_service by @RenzoMXD in #34434
- fix: fix online_drive is not a valid datasource_type by @fatelei in #34440
- refactor(api): replace test fixture side-effect imports by @WH-2099 in #34421
- refactor: select in tag_service by @RenzoMXD in #34441
- chore(api): align Python support with 3.12 by @WH-2099 in #34419
- fix: add tenant/dataset ownership checks to prevent IDOR vulnerabilities by @LikiosSedo in #34436
- test: added test for api/services/rag_pipeline folder by @akashseth-ifp in #33222
- test: added unit test for remaining files in core helper folder by @akashseth-ifp in #33288
- refactor: update to tailwind v4 by @hyoban in #34415
- refactor: split icon collections by @hyoban in #34453
- test: add unit tests for services and tasks part-4 by @poojanInfocusp in #33223
- refactor(api): tighten login and wrapper typing by @WH-2099 in #34447
- ci: Update pyrefly version to 0.59.1 by @asukaminato0721 in #34452
- chore: clean up useless tailwind reference by @hyoban in #34478
- refactor: select in metadata_service by @RenzoMXD in #34479
- refactor: select in workflow_tools_manage_service by @RenzoMXD in #34477
- fix: remove redundant cast in MCP base session by @majiayu000 in #34461
- fix(security): add tenant_id validation to prevent IDOR in data source binding by @xr843 in #34456
- chore: knip fix by @hyoban in #34481
- fix: fix import dsl failed by @fatelei in #34492
- refactor(api): type get_knowledge_rate_limit with KnowledgeRateLimitD… by @YB0y in #34483
- refactor(api): type webhook data extraction with RawWebhookDataDict TypedDict by @YB0y in #34486
- refactor(api): type hit testing retrieve responses with TypedDict by @YB0y in #34484
- refactor(api): type log identity dict with IdentityDict TypedDict by @YB0y in #34485
- test: migrate service_api dataset controller tests to testcontainers by @YB0y in #34423
- chore: update deps by @hyoban in #34487
- refactor: replace useContext with use in selected batch by @agenthaulk in #34450
- refactor: select in external_knowledge_service by @RenzoMXD in #34493
- refactor: select in rag_pipeline by @RenzoMXD in #34495
- refactor: select in account_service (AccountService class) by @RenzoMXD in #34496
- chore: override lodash by @hyoban in #34502
- fix(web): restore ui select public exports by @lyzno1 in #34501
- chore: update code-inspector-plugin to 1.5.1 by @hyoban in #34506
- refactor: select in account_service (RegisterService class) by @RenzoMXD in #34500
- refactor(api): type annotation service dicts with TypedDict by @YB0y in #34482
- refactor(web): replace react-syntax-highlighter with shiki by @mvanhorn in #33473
- refactor(web): migrate notion page selectors to tanstack virtual by @lyzno1 in #34508
- test: add unit tests for app store and annotation components, enhancing coverage for state management and UI interactions by @CodingOnStar in #34510
- refactor: select in account_service (TenantService class) by @RenzoMXD in #34499
- refactor: select in dataset_service (DatasetService class) by @RenzoMXD in #34525
- refactor(api): type celery sqlcommenter tags with CelerySqlcommenterTagsDict TypedDict by @YB0y in #34526
- refactor(api): type messages cleanup stats with MessagesCleanStatsDict TypedDict by @YB0y in #34527
- build: include packages in docker build by @hyoban in #34532
- refactor: select in annotation_service by @RenzoMXD in #34503
- refactor: select in dataset_service (DocumentService class) by @RenzoMXD in #34528
- refactor: select in datasource_provider_service by @RenzoMXD in #34548
- refactor: select in dataset_service (SegmentService and remaining cla… by @RenzoMXD in #34547
- refactor: convert ProviderQuotaType if/elif to match/case (#30001) by @agenthaulk in #34561
- refactor: convert AppMode if/elif to match/case in service files (#30001) by @agenthaulk in #34562
- refactor: convert AppMode if/elif to match/case in app_generate_service (#30001) by @agenthaulk in #34563
- refactor(api): type workflow run delete/count results with RunsWithRelatedCountsDict TypedDict by @YB0y in #34531
- fix: lighten the health checks for the Worker and Worker Beat services, and disable them by default by @kurokobo in #34572
- chore(deps): bump boto3 from 1.42.78 to 1.42.83 in /api in the storage group by @dependabot[bot] in #34578
- chore(deps): bump the storage group in /api with 2 updates by @dependabot[bot] in #34585
- chore(deps): bump flask-compress from 1.23 to 1.24 in /api in the flask group by @dependabot[bot] in #34580
- chore(deps): bump the google group in /api with 4 updates by @dependabot[bot] in #34581
- chore(deps): bump the github-actions-dependencies group with 4 updates by @dependabot[bot] in #34582
- chore(deps): bump sqlalchemy from 2.0.48 to 2.0.49 in /api in the database group by @dependabot[bot] in #34584
- chore(deps): bump the llm group in /api with 3 updates by @dependabot[bot] in #34583
- refactor(api): reuse IdentityDict TypedDict in logging filters by @YB0y in #34593
- chore(deps): update flask-compress requirement from <1.24,>=1.17 to >=1.17,<1.25 in /api in the flask group by @dependabot[bot] in #34573
- chore(deps): bump google-auth-httplib2 from 0.3.0 to 0.3.1 in /api in the google group by @dependabot[bot] in #34575
- chore(deps-dev): bump the vdb group in /api with 7 updates by @dependabot[bot] in #34586
- refactor(api): type orphaned draft variable stats with TypedDict by @YB0y in #34590
- refactor(api): type upload file serialization with UploadFileDict TypedDict by @jakearmstrong59 in #34589
- refactor(api): type archive manifest with ArchiveManifestDict TypedDict by @YB0y in #34594
- chore(deps-dev): bump the dev group in /api with 6 updates by @dependabot[bot] in #34579
- refactor(api): type workflow run related counts with RelatedCountsDict TypedDict by @YB0y in #34530
- chore(deps-dev): bump the dev group across 1 directory with 20 updates by @dependabot[bot] in #34601
- refactor(api): type storage statistics with StorageStatisticsDict TypedDict by @YB0y in #34609
- refactor(api): type document summary status detail with TypedDict by @YB0y in #34610
- refactor(api): type crawl status dicts with CrawlStatusDict TypedDict by @YB0y in #34611
- refactor(api): type MCP tool schema and arguments with TypedDict by @YB0y in #34612
- refactor(api): type notification response with NotificationResponseDict TypedDict by @jakearmstrong59 in #34616
- refactor(api): type invitation detail with InvitationDetailDict TypedDict by @YB0y in #34613
- refactor(api): type LLM generator results with TypedDict by @statxc in #34621
- refactor(api): enforce strict typing on retrieval_model to resolve FIXME by @iamPulakesh in #34614
- refactor(api): type dataset service dicts with TypedDict by @statxc in #34625
- refactor(api): type plugin migration results with TypedDict by @statxc in #34627
- fix: web app user avatar display incorrect black by @hjlarry in #34624
- refactor: migrate session.query to select API in core misc modules by @RenzoMXD in #34608
- refactor: migrate session.query to select API in small task files by @RenzoMXD in #34617
- refactor: migrate session.query to select API in console controllers by @aliworksx08 in #34607
- fix: simplify pre-commit hook flow by @lyzno1 in #34637
- refactor: replace dict params with BaseModel payloads in TagService by @YB0y in #34422
- refactor: migrate session.query to select API in sync task and services by @RenzoMXD in #34619
- refactor: migrate session.query to select API in end_user_service and small tasks by @RenzoMXD in #34620
- refactor: migrate session.query to select API in retrieval_service by @RenzoMXD in #34638
- fix: improve app delete alert dialog UX by @lyzno1 in #34644
- refactor: migrate session.query to select API in document task files by @RenzoMXD in #34646
- refactor(api): type app parameter feature toggles with FeatureToggleD… by @YB0y in #34651
- refactor: migrate session.query to select API in summary and remove document tasks by @RenzoMXD in #34650
- refactor(api): migrate dict returns to TypedDicts in billing service by @iamPulakesh in #34649
- refactor: migrate session.query to select API in rag pipeline task files by @RenzoMXD in #34648
- refactor(api): type webhook validation result and workflow inputs with TypedDict by @YB0y in #34645
- refactor(api): type aliyun trace utils with TypedDict and tighten return types by @YB0y in #34642
- refactor(api): type error stream response with TypedDict by @statxc in #34641
- refactor(api): type load balancing config dicts with TypedDict by @statxc in #34639
- fix(#34636): replace SimpleNamespace with MagicMock(spec=App) in test_app_dsl_service by @iamPulakesh in #34659
- fix: var input label missing icon by @hjlarry in #34569
- fix(workflow): correct env variable picker validation by @lyzno1 in #34666
- chore: remove unused pnpm overrides by @lyzno1 in #34658
- refactor(api): replace json.loads with Pydantic validation in security and tools layers by @eureka0928 in #34380
- refactor(api): Extract shared ResponseModel by @corevibe555 in #34633
- refactor(api): type VDB to_index_struct with VectorIndexStructDict TypedDict by @statxc in #34674
- refactor(api): type gen_index_struct_dict with VectorIndexStructDict TypedDict by @statxc in #34675
- refactor(api): type single-node graph structure with TypedDicts in workflow_entry by @YB0y in #34671
- refactor(api): type indexing result with IndexingResultDict TypedDict by @statxc in #34672
- refactor(api): type Tenant custom config with TypedDict and tighten MCP headers type by @YB0y in #34670
- refactor(api): type VDB config params dicts with TypedDicts by @statxc in #34677
- refactor(api): type Chroma and AnalyticDB config params dicts with TypedDicts by @statxc in #34678
- refactor(api): extract shared RAG domain entities into core/rag/entity by @corevibe555 in #34685
- refactor(api): deduplicate shared auth request payloads into auth_entities.py by @corevibe555 in #34694
- refactor(api): clean up AssistantPromptMessage typing in CotChatAgentRunner by @iamPulakesh in #34681
- refactor(api): type I18nObject.to_dict with I18nObjectDict TypedDict by @statxc in #34680
- refactor: migrate session.query to select API in small task files batch by @RenzoMXD in #34684
- refactor(api): migrate consumers to shared RAG domain entities from core/rag/entities/ by @corevibe555 in #34692
- refactor(api): remove duplicated RAG entities from services layer by @corevibe555 in #34689
- refactor: use sessionmaker in controllers, events, models, and tasks 1 by @carlos4s in #34693
- refactor: replace untyped dicts with TypedDict in VDB config classes by @RenzoMXD in #34697
- refactor(api): tighten types for Tenant.custom_config_dict and MCPToolProvider.headers by @corevibe555 in #34698
- refactor(api): deduplicate I18nObject in datasource entities by @corevibe555 in #34701
- fix: backendModelConfig.chat_prompt_config.prompt is undefined by @fatelei in #34709
- chore: update deps by @hyoban in #34704
- refactor(api): deduplicate RAG index entities and consolidate import paths by @corevibe555 in #34690
- refactor(api): deduplicate shared controller request schemas into controller_schemas.py by @corevibe555 in #34700
- ci: update web changes scope by @hyoban in #34713
- refactor: enhance billing info response handling by @hj24 in #34340
- fix(web): avoid prehydration script in slider by @lyzno1 in #34676
- refactor: use sessionmaker in small services 2 by @carlos4s in #34696
- fix: legacy model_type deserialization regression by @IthacaDream in #34717
- refactor(api): deduplicate Pydantic models across fields and controllers by @corevibe555 in #34718
- build: include vinext in docker build by @hyoban in #34535
- chore: remove raw vite deps by @hyoban in #34726
- feat(web): add ALLOW_INLINE_STYLES env var to opt-in inline CSS in Markdown rendering by @s-kawamura-upgrade in #34719
- test: add unit tests for access control components to enhance coverage and reliability by @CodingOnStar in #34722
- fix: update how ky handle error by @hyoban in #34735
- fix(ci): repair i18n bridge and translation workflow by @lyzno1 in #34738
- chore(i18n): sync translations with en-US by @github-actions[bot] in #34742
- chore(i18n): sync translations with en-US by @github-actions[bot] in #34745
- chore: align prompt editor var checks with use-check-list checks by @hjlarry in #34715
- fix: add backward-compatible query param for decode_plugin_from_ident… by @zhangbububu in #34720
- fix: fix import error by @fatelei in #34728
- chore(deps): bump cryptography from 46.0.6 to 46.0.7 in /api by @dependabot[bot] in #34776
- refactor: migrate session.query to select API in schedule cleanup task by @aliworksx08 in #34775
- refactor(api): use sessionmaker in trigger provider service & dataset… by @carlos4s in #34774
- refactor(api): tighten types in trivial lint and config fixes by @tmimmanuel in #34773
- refactor: migrate session.query to select API in delete conversation task by @RenzoMXD in #34772
- refactor(api): use sessionmaker in core app generators & pipelines by @carlos4s in #34771
- refactor(api): use sessionmaker in plugin & trigger services by @carlos4s in #34764
- refactor: migrate session.query to select API in delete segment and regenerate summary tasks by @RenzoMXD in #34763
- refactor: migrate session.query to select API in batch clean and disable segments tasks by @RenzoMXD in #34760
- refactor: migrate session.query to select API in add document and clean document tasks by @RenzoMXD in #34761
- refactor(api): use sessionmaker in end user, retention & cleanup services by @carlos4s in #34765
- refactor(api): deduplicate ImportMode and ImportStatus enums from rag_pipeline_dsl_service by @jakearmstrong59 in #34759
- refactor: convert FileTransferMethod if/elif to match/case (#30001) by @dataCenter430 in #34769
- refactor(api): deduplicate workflow controller schemas into controller_schemas.py by @jakearmstrong59 in #34755
- refactor: convert importStatus if/elif to match/case (#30001) by @dataCenter430 in #34780
- refactor: convert webapp auth type if/elif to match/case (#30001) by @dataCenter430 in #34782
- refactor: convert ToolProviderType if/elif to match/case (#30001) by @dataCenter430 in #34768
- refactor: convert segmentType if/elif to match/case in webhook_service.py (#30001) by @dataCenter430 in #34770
- test: migrate recommended_app_service tests to testcontainers by @volcano303 in #34751
- refactor: convert file-transfer-method-tools if/elif to match/case (#30001) by @dataCenter430 in #34783
- refactor: convert segmentType workflow if/elif to match/case by @dataCenter430 in #34785
- refactor: convert SegmentType controllers if/elif to match/case (#30001) by @dataCenter430 in #34784
- refactor: convert file-transfer-method-pipeline if/elif to match/case (#30001) by @dataCenter430 in #34788
- refactor: convert appMode controllers if/elif to match/case (#30001) by @dataCenter430 in #34789
- refactor: convert appmode plugin if/elif to match/case (#30001) by @dataCenter430 in #34790
- refactor: convert ProviderQuota if/elif to match/case (#30001) by @dataCenter430 in #34791
- fix: copy button not working on API Server and API Key pages by @BrianWang1990 in #34515
- feat: redis add retry logic by @fatelei in #34566
- test: add e2e scenarios for app creation and sign-out by @majiayu000 in #34285
- chore(deps): bump litellm from 1.82.6 to 1.83.0 in /api by @dependabot[bot] in #34544
- refactor: convert TelemetryCase if/elif to match/case (#3001) by @dataCenter430 in #34797
- refactor: deduplicate DefaultRetrievalModelDict TypedDict into retrieval_service.py by @jakearmstrong59 in #34758
- refactor(api): use sessionmaker in workflow & RAG pipeline services by @carlos4s in #34805
- refactor(api): use sessionmaker in datasource provider service by @carlos4s in #34811
- refactor: migrate session.query to select API in document indexing sync task by @RenzoMXD in #34813
- refactor: migrate session.query to select API in core tools by @aliworksx08 in #34814
- refactor: convert ToolProviderType if/elif to match/case (#30001) by @dataCenter430 in #34794
- refactor: migrate session.query to select API in clean dataset task by @RenzoMXD in #34815
- refactor(api): use sessionmaker in pgvecto_rs VDB service by @carlos4s in #34818
- refactor: migrate session.query to select API in plugin services by @aliworksx08 in #34817
- refactor: migrate session.query to select API in deal dataset vector index task by @RenzoMXD in #34819
- refactor(api): deduplicate DSL shared entities into dsl_entities.py by @aliworksx08 in #34762
- refactor(api): use sessionmaker in builtin tools manage service by @carlos4s in #34812
- fix(web): use nuqs for log conversation url state by @lyzno1 in #34820
- refactor(api): deduplicate json serialization in AppModelConfig.from_model_config_dict by @jonathanchang31 in #34795
- fix(docker): restore S3_ADDRESS_STYLE env examples by @laipz8200 in #34826
- test: add unit tests for AppPublisher, Sidebar, Chat, FileUploader, Form Demo, Notion Page Selector, Prompt Editor, and Header Navigation components by @CodingOnStar in #34802
- chore: update deps by @hyoban in #34833
- refactor(api): reduce Dify GraphInitParams usage by @laipz8200 in #34825
- fix(web): resolve Dify compact array types in tool output schema by @balancetheworld in #34804
- ci: bump pyrefly version by @asukaminato0721 in #34821
- fix: fix remove_leading_symbols remove [ by @fatelei in https://github.com//pull/34832
- chore: install from npm for vinext by @hyoban in #34840
- fix: fix sqlalchemy.orm.exc.DetachedInstanceError by @fatelei in #34845
- refactor: migrate session.query to select API in webhook service by @aliworksx08 in #34849
- refactor: migrate session.query to select API in file service by @aliworksx08 in #34852
- refactor: migrate session.query to select API in deal dataset index update task by @RenzoMXD in #34847
- refactor(api): deduplicate EnabledConfig property logic in AppModelConfig by @jonathanchang31 in #34793
- refactor: migrate web human_input_form from reqparse to Pydantic BaseModel by @ai-hpc in #34859
- chore: remove commented-out reqparse code from rag_pipeline_workflow by @ai-hpc in #34860
- refactor: migrate console human_input_form from reqparse to PydanticBaseModel by @ai-hpc in #34858
- refactor: migrate TrialApp and AccountTrialAppRecord to TypeBase by @sxxtony in #34806
- refactor(api): type recommend app database retrieval dicts with TypedDicts by @YB0y in #34873
- refactor(api): type Celery SSL options and Sentinel transport dicts with TypedDicts by @dataCenter430 in #34871
- refactor(api): type OpenSearch/Lindorm/Huawei VDB config params dicts with TypedDicts by @dataCenter430 in #34870
- refactor: convert appmode misc if/elif to match/case (#30001) by @dataCenter430 in #34869
- fix(mcp): catch JSONDecodeError in OAuth discovery functions 🤖🤖🤖 by @jeanibarz in #34868
- refactor(api): type DatasourceProviderApiEntity.to_dict with TypedDict by @volcano303 in #34879
- refactor(models): replace Any with precise types in Tenant and MCPToo… by @corevibe555 in #34880
- refactor(api): use sessionmaker in relyt & tidb_vector VDB services by @carlos4s in #34848
- fix(api): replace
assert isinstancewith proper runtime type checks in message transformers by @iamPulakesh in #34865 - fix(api): prevent cross-tenant external API use-check disclosure by @laipz8200 in #34744
- refactor(web): move avatar to base ui by @lyzno1 in #34889
- refactor(api): type format_preview returns with TypedDicts in index processors by @volcano303 in #34893
- refactor(api): modernize type annotations — replace Optional/Union with | syntax by @corevibe555 in #34888
- refactor: migrate TrialApp and AccountTrialAppRecord to TypeBase by @sxxtony in #34897
- refactor(api): replace Optional/Union with | syntax, remove dead AnyFunction by @corevibe555 in #34894
- refactor(mcp): remove unused AnyFunction alias, tighten callback type by @corevibe555 in #34890
- fix(web): assign in-progress tracing items to latest loop/iteration record by @plind-junior in #34661
- refactor(services): replace Union with | syntax in service layer (batch 2) by @corevibe555 in #34906
- fix: fix orm_exc.DetachedInstanceError by @fatelei in #34904
- refactor(otel): replace Any with Tracer and [T] generics by @corevibe555 in #34883
- feat(ci): add pyrefly type coverage reporting to CI by @corevibe555 in #34754
- refactor(services): replace Union with | syntax in service layer by @corevibe555 in #34905
- fix: sqlalchemy.orm.exc.DetachedInstanceError by @leslie2046 in #34910
- test: migrate ops_service tests to testcontainers by @volcano303 in #34749
- test: migrate hit_testing_service tests to testcontainers by @volcano303 in #34750
- refactor(api): type workflow generator args dict with TypedDict by @dataCenter430 in #34876
- refactor(tools): replace redundant dict[str, str] with EmojiIconDict by @YgorLeal in #34786
- refactor: make DefaultFieldsMixin compatible with TypeBase (MappedAsDataclass) by @sxxtony in #34686
- fix(api): default parent_mode to paragraph for hierarchical chunking via API by @plind-junior in #34635
- fix(workflow): correct maximized editor panel layout in execution logs by @HamzaSwitch in #34909
- refactor(api): replace Any with precise types in db_migration_lock by @corevibe555 in #34891
- docs(contributing): move agent attribution guidance to PR template by @laipz8200 in #34919
- chore: should hide change action when node is undeletable by @hjlarry in #34592
- fix: fix outputs share same name var by @fatelei in #34604
- refactor(api): type Redis connection param builder functions with TypedDicts by @dataCenter430 in #34875
- test: add unit tests for workflow components including tools and inspect vars by @CodingOnStar in #34843
- test: migrate SQLAlchemyWorkflowNodeExecutionRepository tests to testcontainers by @bittoby in #34926
- refactor(api): type Document.to_dict with DocumentDict TypedDict by @bittoby in #34924
- chore(deps): bump pypdf from 6.9.2 to 6.10.0 in /api by @dependabot[bot] in #34946
- refactor(api): type ToolInvokeMeta.to_dict with TypedDict by @YB0y in #34942
- refactor(api): type get_prompt_template with TypedDict by @YB0y in #34943
- refactor(api): type DatasourceInvokeMeta.to_dict with TypedDict by @YB0y in #34940
- refactor(api): type SQLALCHEMY_ENGINE_OPTIONS with TypedDict by @YB0y in #34941
- refactor: replace inline api.model with Pydantic BaseModel in model_config by @ai-hpc in #34930
- test: remove dataset service update/delete mock tests superseded by testcontainers by @bittoby in #34937
- test: remove dataset metadata mock tests superseded by testcontainers by @bittoby in #34931
- refactor: replace inline api.model with register_schema_models in billing by @ai-hpc in #34928
- test: remove dataset permission mock tests superseded by testcontainers by @bittoby in #34936
- refactor: remove base ui i18n dependency by @lyzno1 in #34921
- fix: fix tool output duplicate by @fatelei in #34962
- refactor(api): migrate controllers to SQLAlchemy 2.0 select() API by @wdeveloper16 in #34960
- test: migrate Conversation/Message inputs tenant resolution SQL tests to Testcontainers by @wdeveloper16 in #34957
- test: migrate WorkflowNodeExecutionModel creator property SQL tests to Testcontainers by @wdeveloper16 in #34958
- refactor(api): migrate core RAG layer to SQLAlchemy 2.0 select() API by @wdeveloper16 in #34965
- test: migrate RagPipelineService DB operation SQL tests to Testcontainer by @wdeveloper16 in #34959
- refactor: migrate verify_subscription_credentials return type to TypedDict by @AlsoTheZv3n in #34967
- test: migrate Conversation.status_count and Site.generate_code SQL tests to Testcontainers by @wdeveloper16 in #34955
- refactor(services): migrate dataset_service and clear_free_plan_tenant_expired_logs to SQLAlchemy 2.0 select() API by @wdeveloper16 in #34970
- refactor(services): migrate datasource_provider_service to SQLAlchemy 2.0 select() API by @wdeveloper16 in #34974
- test: update TestContainers integration tests and unit test fixtures to SQLAlchemy 2.0 select() API by @wdeveloper16 in #34969
- refactor(services): migrate builtin_tools_manage_service to SQLAlchemy 2.0 select() API by @wdeveloper16 in #34973
- refactor(services): migrate trigger_provider_service to SQLAlchemy 2.0 select() API by @wdeveloper16 in #34972
- refactor(services): migrate summary_index_service to SQLAlchemy 2.0 select() API by @wdeveloper16 in #34971
- refactor(api): migrate tools, account, workflow and plugin services to SQLAlchemy 2.0 by @wdeveloper16 in #34966
- refactor(tasks): migrate document_indexing_task and remove_app_and_related_data_task to SQLAlchemy 2.0 select() API by @wdeveloper16 in #34968
- test: migrate test_remove_app_and_related_data_task to SQLAlchemy 2.0 select() API by @dataCenter430 in #34985
- test: migrate conftest and plugin lifecycle tests to SQLAlchemy 2.0 select() API by @dataCenter430 in #34979
- test: migrate test_messages_clean_service to SQLAlchemy 2.0 select() API by @dataCenter430 in #34984
- refactor: migrate _model_to_insertion_dict return type to TypedDict by @thegdsks in #34988
- refactor(api): type DataSourceApiKeyAuthBinding.to_dict with TypedDict by @YB0y in #35001
- refactor(api): type _serialize_full_content with FullContentDict TypedDict by @YB0y in #35000
- refactor(api): type _get_cluster_connection_health_params with TypedDict by @YB0y in #34999
- refactor: replace bare dict with ActionDict TypedDict in cot_agent_runner by @wdeveloper16 in #34997
- test: migrate conversation rename/delete edge cases to Testcontainers integration tests by @wdeveloper16 in #34991
- test: migrate test_workflow_draft_variable_service to SQLAlchemy 2.0 select() API by @dataCenter430 in #34986
- refactor: replace bare dict with typed annotations in external_data_tool by @wdeveloper16 in #34996
- refactor(api): type _build_log_dict return with LogDict TypedDict by @aviu16 in #34983
- fix: external dataset tenant checks for bound knowledge APIs by @laipz8200 in #34734
- chore(deps): bump the flask group in /api with 3 updates by @dependabot[bot] in #35007
- chore(deps): bump the google group in /api with 5 updates by @dependabot[bot] in #35010
- chore(deps): bump the database group in /api with 2 updates by @dependabot[bot] in #35013
- chore(deps): bump the storage group in /api with 3 updates by @dependabot[bot] in #35014
- chore(deps): bump the llm group in /api with 4 updates by @dependabot[bot] in #35019
- chore(deps-dev): bump the dev group in /api with 40 updates by @dependabot[bot] in #35022
- chore(deps): bump the storage group in /api with 2 updates by @dependabot[bot] in #35020
- chore(deps-dev): bump the vdb group in /api with 4 updates by @dependabot[bot] in #35021
- chore(deps): bump opentelemetry-propagator-b3 from 1.40.0 to 1.41.0 in /api in the opentelemetry group by @dependabot[bot] in #35017
- chore(deps): bump the github-actions-dependencies group with 4 updates by @dependabot[bot] in #35018
- chore(deps): bump the python-packages group across 1 directory with 18 updates by @dependabot[bot] in #35023
- fix(rag): include is_summary and original_chunk_id in default vector projection by @HamzaSwitch in #34950
- refactor(api): enable reportUntypedFunctionDecorator in pyright config (#26412) by @YgorLeal in #35031
- chore(deps): bump the opentelemetry group across 1 directory with 16 updates by @dependabot[bot] in #35028
- test: implement Account/Tenant model integration tests to replace db-mocked unit tests by @wdeveloper16 in #34994
- test: migrate BillingService permission-check tests to Testcontainers integration tests by @wdeveloper16 in #34993
- refactor: replace bare dict with TypedDicts in annotation_service by @wdeveloper16 in #34998
- refactor: use sessionmaker in workflow_tools_manage_service.py by @HeYin-OS in #34896
- chore: refine .github configs for dependabot, PR template, and stale workflow by @crazywoola in #35035
- chore(deps): bump weave from 0.52.17 to 0.52.36 in /api in the llm group by @dependabot[bot] in #35038
- chore(deps-dev): bump mypy from 1.20.0 to 1.20.1 in /api in the dev group by @dependabot[bot] in #35039
- refactor: remove marshal_with and inline api.model from app_import by @ai-hpc in #34934
- refactor: migrate mcp_server from marshal_with/api.model to Pydantic BaseModel by @ai-hpc in #34935
- refactor: migrate app site from marshal_with/api.model to Pydantic BaseModel by @ai-hpc in #34933
- refactor: migrate apikey from marshal_with/api.model to Pydantic BaseModel by @ai-hpc in #34932
- refactor: migrate RecommendedApp to TypeBase by @sxxtony in #34808
- refactor: replace inline api.model response schemas with register_schema_models in activate by @ai-hpc in #34929
- refactor: migrate SegmentAttachmentBinding to TypeBase by @sxxtony in #34810
- refactor(api): deduplicate TextToAudioPayload and MessageListQuery into controller_schemas.py by @jakearmstrong59 in #34757
- refactor(api): improve type safety in MCPToolManageService.execute_auth_actions by @dev-miro26 in #34824
- refactor(api): deduplicate dataset controller schemas into controller_schemas.py by @jakearmstrong59 in #34756
- refactor: migrate WorkflowPause and WorkflowPauseReason to TypeBase by @sxxtony in #34688
- refactor(api): type WorkflowAppLog.to_dict with WorkflowAppLogDict TypedDict by @statxc in #34682
- refactor(api): consolidate duplicate RerankingModelConfig and WeightedScoreConfig definitions by @corevibe555 in #34747
- fix: correct typo submision to submission by @LincolnBurrows2017 in #33435
- feat: support ttft report to langfuse by @leslie2046 in #33344
- refactor: migrate MessageAnnotation to TypeBase by @sxxtony in #34807
- test: migrate app_dsl_service tests to testcontainers by @volcano303 in #34429
- test: migrate AudioService TTS message-ID lookup tests to Testcontainers integration tests by @wdeveloper16 in #34992
- fix: fix qdrant delete size is too large by @fatelei in #35042
- fix: optimize trigger long running read transactions by @hj24 in #35046
- refactor(api): type WorkflowRun.to_dict with WorkflowRunDict TypedDict by @KeWang0622 in #35047
- refactor: move vdb implementations to workspaces by @wylswz in #34900
- refactor: improve type annotations in HitTestingService by @xingarr in #27838
- chore: revert react-i18next update by @hyoban in #35058
- refactor(auth): standardize failed login audit logging by @laipz8200 in #35054
- refactor: replace bare dict with dict[str, Any] in ops_service tracin… by @wdeveloper16 in #35064
- refactor: replace bare dict with dict[str, Any] in plugin endpoint_service by @wdeveloper16 in #35065
- refactor: replace bare dict with dict[str, Any] in OpenAPI tools parser by @wdeveloper16 in #35061
- refactor: replace bare dict with dict[str, Any] in watercrawl client by @wdeveloper16 in #35063
- refactor: replace bare dict with dict[str, Any] in datasource_entities by @wdeveloper16 in #35062
- fix: db session expired issue by @hj24 in #35049
- refactor: replace bare dict with UtmInfo TypedDict in operation_service by @wdeveloper16 in #35055
- refactor: replace bare dict with AdvancedPromptTemplateArgs TypedDict by @wdeveloper16 in https://github.com/langgenius/dify/pull/35056
- refactor: replace bare dict with WorkflowRunListArgs TypedDict by @wdeveloper16 in https://github.com/langgenius/dify/pull/35057
- refactor: replace bare dict with dict[str, Any] in helper cache modules by @wdeveloper16 in https://github.com/langgenius/dify/pull/35067
- refactor: replace bare dict with dict[str, Any] in rag extractors by @wdeveloper16 in https://github.com/langgenius/dify/pull/35068
- refactor: replace bare dict with dict[str, Any] in tools message_transformer by @wdeveloper16 in https://github.com/langgenius/dify/pull/35069
- refactor: replace bare dict with dict[str, Any] in ops_trace_manager by @wdeveloper16 in https://github.com/langgenius/dify/pull/35070
- refactor: replace bare dict with dict[str, Any] in pipeline_template module by @wdeveloper16 in https://github.com/langgenius/dify/pull/35071
- fix: click empty http node value may cause blur by @iamjoel in https://github.com/langgenius/dify/pull/35051
- chore(web): upgrade @base-ui/react to v1.4.0 by @lyzno1 in https://github.com/langgenius/dify/pull/35048
- fix: handle URL construction error when switching to Visual Editor by @samrusani in https://github.com/langgenius/dify/pull/35004
- refactor: replace bare dict with dict[str, Any] in website_service by @wdeveloper16 in https://github.com/langgenius/dify/pull/35074
- refactor: replace bare dict with dict[str, Any] in dataset and external_knowledge services by @wdeveloper16 in https://github.com/langgenius/dify/pull/35073
- refactor: replace bare dict with dict[str, Any] in tools manage services by @wdeveloper16 in https://github.com/langgenius/dify/pull/35075
- refactor: replace bare dict with dict[str, Any] in moderation module by @wdeveloper16 in https://github.com/langgenius/dify/pull/35076
- refactor: replace bare dict with dict[str, Any] in provider entities and plugin client by @wdeveloper16 in https://github.com/langgenius/dify/pull/35077
- refactor: replace bare dict with dict[str, Any] in ops trace providers by @wdeveloper16 in https://github.com/langgenius/dify/pull/35082
- refactor: replace bare dict with dict[str, Any] in model_manager and … by @wdeveloper16 in https://github.com/langgenius/dify/pull/35083
- refactor: replace bare dict with dict[str, Any] in app task_entities … by @wdeveloper16 in https://github.com/langgenius/dify/pull/35084
- refactor: replace bare dict with dict[str, Any] in openai_moderation by @jimcody1995 in https://github.com/langgenius/dify/pull/35079
- refactor: replace bare dict with dict[str, Any] in app_config managers by @wdeveloper16 in https://github.com/langgenius/dify/pull/35087
- test: migrate trigger integration tests to SQLAlchemy 2.0 select API by @bohdansolovie in https://github.com/langgenius/dify/pull/35081
- refactor: replace bare dict with typed annotations in controllers by @dataCenter430 in https://github.com/langgenius/dify/pull/35095
- refactor(api): type _jsonify_form_definition payload with FormDefinitionPayload TypedDict by @aviu16 in https://github.com/langgenius/dify/pull/35094
- test: migrate remove_app_and_related_data integration tests to SQLAlchemy 2.0 APIs by @bohdansolovie in https://github.com/langgenius/dify/pull/35092
- test: migrate mail and segment indexing integration tests to SQLAlchemy 2.0 APIs by @bohdansolovie in https://github.com/langgenius/dify/pull/35091
- refactor: replace bare dict with typed annotations in core plugin module by @dataCenter430 in https://github.com/langgenius/dify/pull/35096
- test: migrate mail_human_input_delivery cleanup fixture to SQLAlchemy 2.0 delete API by @bohdansolovie in https://github.com/langgenius/dify/pull/35090
- test(e2e): improve auth coverage and authoring support by @lyzno1 in https://github.com/langgenius/dify/pull/34920
- chore: update deps by @hyoban in https://github.com/langgenius/dify/pull/35066
- fix(web): handle IME composition in DelimiterInput by @plind-junior in https://github.com/langgenius/dify/pull/34660
- refactor: replace bare dict with dict[str, Any] in VDB providers and libs by @wdeveloper16 in https://github.com/langgenius/dify/pull/35123
- refactor: replace bare dict with dict[str, Any] in services grab-bag by @wdeveloper16 in https://github.com/langgenius/dify/pull/35112
- refactor: replace bare dict with dict[str, Any] in rag_pipeline and datasource_provider services by @wdeveloper16 in https://github.com/langgenius/dify/pull/35107
- refactor: replace bare dict with dict[str, Any] in entities, workflow nodes, and tasks by @wdeveloper16 in https://github.com/langgenius/dify/pull/35109
- refactor: replace bare dict with dict[str, Any] in VDB providers by @wdeveloper16 in https://github.com/langgenius/dify/pull/35110
- refactor: replace bare dict with dict[str, Any] in core provider services and misc modules by @wdeveloper16 in https://github.com/langgenius/dify/pull/35124
- refactor: replace bare dict with dict[str, Any] in core tools and runtime by @wdeveloper16 in https://github.com/langgenius/dify/pull/35111
- fix: Compatibility issues with the summary index feature when using the weaviate vector database by @FFXN in https://github.com/langgenius/dify/pull/35052
- feat(goto-anything): recent items, /go navigation command, deep app sub-sections by @crazywoola in https://github.com/langgenius/dify/pull/35078
- chore: Add global fetch mock in vitest.setup.ts to suppress happy-dom ECONNREFUSED errors by @Copilot in https://github.com/langgenius/dify/pull/35131
- chore: remove unused Ruff ignore rules by @WH-2099 in https://github.com/langgenius/dify/pull/35102
- test: split merged API test modules and remove F811 ignore by @WH-2099 in https://github.com/langgenius/dify/pull/35105
- chore(deps): bump pillow from 12.1.1 to 12.2.0 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/35119
- refactor(web): align tooltip content class props by @lyzno1 in https://github.com/langgenius/dify/pull/35135
- refactor(web): remove highPriority modal stacking by @lyzno1 in https://github.com/langgenius/dify/pull/35132
- chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/35134
- chore: allow disabling app-level PostgreSQL timezone injection by @hjlarry in https://github.com/langgenius/dify/pull/35129
- chore(deps): update pyarrow to version 23.0.1 and add override deps by @BenjaminX in https://github.com/langgenius/dify/pull/35137
- refactor: replace bare dict with typed annotations in core tools module by @dataCenter430 in https://github.com/langgenius/dify/pull/35098
- refactor: replace bare dict with typed annotations in app_config/extension/provider by @dataCenter430 in https://github.com/langgenius/dify/pull/35099
- refactor: replace bare dict with typed annotations in llm_generator and prompt by @dataCenter430 in https://github.com/langgenius/dify/pull/35100
- refactor: replace bare dict with typed annotations in core rag module by @dataCenter430 in https://github.com/langgenius/dify/pull/35097
- refactor: convert plugin permission if/elif to match/case (#30001) by @aether-png in https://github.com/langgenius/dify/pull/35140
- refactor: use sessionmaker in tool_label_manager.py by @HeYin-OS in https://github.com/langgenius/dify/pull/34895
- refactor: convert InvokeFrom if/elif to match/case by @aether-png in https://github.com/langgenius/dify/pull/35143
- test: migrate document indexing task tests to SQLAlchemy 2.0 select API by @bohdansolovie in https://github.com/langgenius/dify/pull/35145
- test: migrate clean_dataset integration tests to SQLAlchemy 2.0 APIs by @bohdansolovie in https://github.com/langgenius/dify/pull/35146
- chore: clarify tracing error copy to direct users to the Tracing tab by @iamjoel in https://github.com/langgenius/dify/pull/35153
- fix: doc modal hidden by config modal by @iamjoel in https://github.com/langgenius/dify/pull/35157
- refactor: replace bare dict with dict[str, Any] in model provider service and core modules by @wdeveloper16 in https://github.com/langgenius/dify/pull/35122
- feat: support configurable redis key prefix by @Blackoutta in https://github.com/langgenius/dify/pull/35139
- chore: url in tool description support clicking jump directly by @iamjoel in https://github.com/langgenius/dify/pull/35163
- refactor(web): re-design button api by @lyzno1 in https://github.com/langgenius/dify/pull/35166
- test: migrate task integration tests to SQLAlchemy 2.0 query APIs by @bohdansolovie in https://github.com/langgenius/dify/pull/35170
- test: migrate clean_notion_document integration tests to SQLAlchemy 2… by @bohdansolovie in https://github.com/langgenius/dify/pull/35147
- ci: Fix path in coverage markdown rendering step by @asukaminato0721 in https://github.com/langgenius/dify/pull/35136
- refactor(web): replace Button destructive boolean with tone semantic axis by @lyzno1 in https://github.com/langgenius/dify/pull/35176
- test: migrate conversation read timestamp SQL test to Testcontainers (#32454) by @bohdansolovie in https://github.com/langgenius/dify/pull/35177
- refactor(web): migrate confirm dialogs to base/ui/alert-dialog by @CodingOnStar in https://github.com/langgenius/dify/pull/35127
- refactor: replace bare dict with dict[str, Any] in RAG and service unit tests by @wdeveloper16 in https://github.com/langgenius/dify/pull/35184
- refactor: replace bare dict with dict[str, Any] in enterprise telemetry, external data tool, and moderation tests by @wdeveloper16 in https://github.com/langgenius/dify/pull/35185
- test: migrate web site controller tests to Testcontainers (#32454) by @bohdansolovie in https://github.com/langgenius/dify/pull/35180
- refactor: replace bare dict with dict[str, Any] in controller and core unit tests by @wdeveloper16 in https://github.com/langgenius/dify/pull/35181
- refactor: replace bare dict with dict[str, Any] in models, providers, extensions, libs, and test utilities by @wdeveloper16 in https://github.com/langgenius/dify/pull/35186
- refactor(api): migrate workspace account marshal_with responses to BaseModel by @ai-hpc in https://github.com/langgenius/dify/pull/35190
- refactor(api): migrate console extension endpoint from api.model to BaseModel by @ai-hpc in https://github.com/langgenius/dify/pull/35189
- test: remove document service status mock tests superseded by testcontainers by @jamesrayammons in https://github.com/langgenius/dify/pull/35197
- refactor(api): migrate dataset hit-testing response model to BaseModel by @ai-hpc in https://github.com/langgenius/dify/pull/35192
- refactor(api): add null safety to extractor_processor and firecrawl by @tmimmanuel in https://github.com/langgenius/dify/pull/35209
- refactor: replace bare dict with dict[str, Any] in services unit test helpers by @wdeveloper16 in https://github.com/langgenius/dify/pull/35182
- refactor(api): migrate console installed-app list response to BaseModel by @ai-hpc in https://github.com/langgenius/dify/pull/35202
- refactor(api): migrate console workflow app-log responses to BaseModel by @ai-hpc in https://github.com/langgenius/dify/pull/35201
- refactor: replace bare dict with dict[str, Any] in services and hosti… by @wdeveloper16 in https://github.com/langgenius/dify/pull/35211
- refactor: replace bare dict with dict[str, Any] in response converter… by @wdeveloper16 in https://github.com/langgenius/dify/pull/35212
- refactor(api): migrate service api workflow responses from marshal_with to BaseModel by @ai-hpc in https://github.com/langgenius/dify/pull/35195
- refactor(api): migrate console message responses from marshal_with to BaseModel by @ai-hpc in https://github.com/langgenius/dify/pull/35204
- refactor(api): migrate service conversation-variable responses to BaseModel by @ai-hpc in https://github.com/langgenius/dify/pull/35205
- refactor(api): migrate console recommended-app response to BaseModel by @ai-hpc in https://github.com/langgenius/dify/pull/35206
- refactor(api): migrate workspace current response from marshal_with to BaseModel by @ai-hpc in https://github.com/langgenius/dify/pull/35207
- refactor(api): migrate console conversation variables response model to BaseModel by @ai-hpc in https://github.com/langgenius/dify/pull/35193
- test: migrate dataset service dataset mock tests to testcontainers by @jamesrayammons in https://github.com/langgenius/dify/pull/35194
- refactor(api): migrate console workflow-trigger responses to BaseModel by @ai-hpc in https://github.com/langgenius/dify/pull/35200
- test: migrate schedule service mock tests to testcontainers by @jamesrayammons in https://github.com/langgenius/dify/pull/35196
- test: remove legacy python3 code executor integration test by @jamesrayammons in https://github.com/langgenius/dify/pull/35223
- test: remove legacy code executor integration test by @jamesrayammons in https://github.com/langgenius/dify/pull/35224
- fix: import DSL and copy app not work by @hjlarry in https://github.com/langgenius/dify/pull/35239
- fix: open restore version panel raise 500 by @hjlarry in https://github.com/langgenius/dify/pull/35240
- test: migrate Service API site controller tests to Testcontainers (#32454) by @Eruis2579 in https://github.com/langgenius/dify/pull/35183
- refactor(ui): decouple CSS dependencies and improve test quality by @lyzno1 in https://github.com/langgenius/dify/pull/35242
- fix: Change 'commit' to 'flush' to prevent subsequent transaction fai… by @zyssyz123 in https://github.com/langgenius/dify/pull/35243
- fix(dataset): fix dataset list overlay issue by @WTW0313 in https://github.com/langgenius/dify/pull/35244
- test: migrate webhook service additional mock tests to testcontainers by @jamesrayammons in https://github.com/langgenius/dify/pull/35199
- feat: tidb endpoint by @zyssyz123 in https://github.com/langgenius/dify/pull/35158
- feat(web): unify create_app tracking and persist external attribution by @CodingOnStar in https://github.com/langgenius/dify/pull/35241
- fix: remove enable for get by @zyssyz123 in https://github.com/langgenius/dify/pull/35245
- test: remove legacy storage key loader integration test by @jamesrayammons in https://github.com/langgenius/dify/pull/35225
- test: remove legacy jinja2 code executor integration test by @jamesrayammons in https://github.com/langgenius/dify/pull/35222
- test: remove legacy workflow draft variable api test by @jamesrayammons in https://github.com/langgenius/dify/pull/35226
- test: remove legacy trigger provider permissions test by @jamesrayammons in https://github.com/langgenius/dify/pull/35227
- refactor(api): migrate console tag responses from marshal_with to BaseModel by @ai-hpc in https://github.com/langgenius/dify/pull/35208
- feat(ui): scaffold @langgenius/dify-ui and migrate design tokens by @lyzno1 in https://github.com/langgenius/dify/pull/35256
- fix(web): include dify-ui workspace package in docker install filter by @lyzno1 in https://github.com/langgenius/dify/pull/35268
- refactor(web): align Switch API with Base UI naming convention by @lyzno1 in https://github.com/langgenius/dify/pull/35269
- test(types): replace Account/Tenant status string literals with enum values by @xr843 in https://github.com/langgenius/dify/pull/35267
- chore(api): prune redundant direct dependency declarations by @WH-2099 in https://github.com/langgenius/dify/pull/35272
- feat: collaboration by @hjlarry in https://github.com/langgenius/dify/pull/30781
- fix: add miss celery queue by @fatelei in https://github.com/langgenius/dify/pull/35282
- chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/35283
- chore(deps): bump hono from 4.12.12 to 4.12.14 by @dependabot[bot] in https://github.com/langgenius/dify/pull/35287
- chore(deps): bump langsmith from 0.7.30 to 0.7.31 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/35288
- chore(deps): bump pypdf from 6.10.0 to 6.10.1 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/35273
- test: migrate duplicate and vector index task integration tests to SQLAlchemy 2.0 APIs by @bohdansolovie in https://github.com/langgenius/dify/pull/35292
- chore(deps): upgrade vite-plus to 0.1.18 by @lyzno1 in https://github.com/langgenius/dify/pull/35300
- refactor(api): add BaseModel conversation variable schemas by @ai-hpc in https://github.com/langgenius/dify/pull/35296
- chore(deps): bump dompurify from 3.3.3 to 3.4.0 by @dependabot[bot] in https://github.com/langgenius/dify/pull/35286
- refactor(api): add BaseModel workflow field schemas by @ai-hpc in https://github.com/langgenius/dify/pull/35297
- refactor(web): redesign Select component and migrate WorkplaceSelector by @lyzno1 in https://github.com/langgenius/dify/pull/35293
- refactor(api): migrate console conversation responses to BaseModel by @ai-hpc in https://github.com/langgenius/dify/pull/35294
- refactor(web): migrate base/popoversto ui/dropdown-menu and ui/select by @CodingOnStar in https://github.com/langgenius/dify/pull/35278
- fix(web): set app card dropdown menu to non-modal by @lyzno1 in https://github.com/langgenius/dify/pull/35302
- fix: http node key value type dropdown by @hjlarry in https://github.com/langgenius/dify/pull/35304
- fix: apply score threshold after reranking in hybrid search by @aayushbaluni in https://github.com/langgenius/dify/pull/35263
- refactor(web): unify Base UI component props to namespace types by @lyzno1 in https://github.com/langgenius/dify/pull/35306
- test: migrate clean notion task tests to SQLAlchemy 2.0 APIs by @jimcody1995 in https://github.com/langgenius/dify/pull/35159
- test: migrate conversation service mock tests to testcontainers by @jamesrayammons in https://github.com/langgenius/dify/pull/35198
- chore: reorg imports by @wylswz in https://github.com/langgenius/dify/pull/35308
- perf(web): optimize first-screen rendering performance by @lyzno1 in https://github.com/langgenius/dify/pull/35313
- fix(web): add destructive hover background to menu item components by @lyzno1 in https://github.com/langgenius/dify/pull/35322
- chore: enable noUncheckedIndexedAccess by @hyoban in https://github.com/langgenius/dify/pull/35178
- refactor(web): align UI component APIs with shadcn v4 best practices by @lyzno1 in https://github.com/langgenius/dify/pull/35328
- chore: workspace level typecheck by @hyoban in https://github.com/langgenius/dify/pull/35329
- chore: workspace lint by @hyoban in https://github.com/langgenius/dify/pull/35331
- chore: auto fix for tailwind rules by @hyoban in https://github.com/langgenius/dify/pull/35332
- refactor(web): quality closure pass on base UI primitives by @lyzno1 in https://github.com/langgenius/dify/pull/35333
- feat(web): add tracking for app preview events in AppCard component by @CodingOnStar in https://github.com/langgenius/dify/pull/35347
- chore(deps): bump pypdf from 6.10.1 to 6.10.2 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/35339
- chore(deps): bump mako from 1.3.10 to 1.3.11 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/35340
- chore(deps): bump authlib from 1.6.9 to 1.6.11 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/35341
- chore(api): migrate event handlers to use Session(db.engine) by @jerryzai in https://github.com/langgenius/dify/pull/35234
- refactor(api): migrate console mcp-server responses to BaseModel by @ai-hpc in https://github.com/langgenius/dify/pull/35219
- docs(web): add Storybook stories for overlay and select primitives by @lyzno1 in https://github.com/langgenius/dify/pull/35334
- refactor(api): migrate dataset document response schemas to BaseModel by @ai-hpc in https://github.com/langgenius/dify/pull/35298
- fix(web): stop Splash after useUserProfile errors by @shaun0927 in https://github.com/langgenius/dify/pull/35326
- refactor: use sessionmaker in api_tools_manage_service.py by @HeYin-OS in https://github.com/langgenius/dify/pull/34892
- refactor(web): replace portal component with DropdownMenu in various components by @CodingOnStar in https://github.com/langgenius/dify/pull/35319
- fix: scope plugin inner API end-user lookup by tenant by @shaun0927 in https://github.com/langgenius/dify/pull/35325
- test: add API seeding infrastructure and app creation E2E scenarios by @Jingyi-Dify in https://github.com/langgenius/dify/pull/35276
- refactor: migrate DocumentSegmentSummary to TypeBase by @sxxtony in https://github.com/langgenius/dify/pull/34862
- test: migrate dataset service document mock tests to testcontainers by @jamesrayammons in https://github.com/langgenius/dify/pull/35191
- fix: guard against KeyError in update_prompt_message_tool loop by @kuishou68 in https://github.com/langgenius/dify/pull/35150
- fix(web): stabilize workflow node panel operator dropdown trigger by @CodingOnStar in https://github.com/langgenius/dify/pull/35352
- fix: move remote credential validation outside DB session to prevent … by @zyssyz123 in https://github.com/langgenius/dify/pull/35350
- refactor(api): move trace providers by @wylswz in https://github.com/langgenius/dify/pull/35144
- chore(api): migrate file factory builders and account commands to use Session(db.engine) by @jerryzai in https://github.com/langgenius/dify/pull/35236
- refactor(api): type pipeline template retrieval dicts with TypedDict by @YB0y in https://github.com/langgenius/dify/pull/34874
- fix: raise chat settings select dropdown above dialog by @hyl64 in https://github.com/langgenius/dify/pull/35357
- fix: guard chat file preview rendering when mime type is missing by @hyl64 in https://github.com/langgenius/dify/pull/35355
- refactor(dify-ui): finish primitive migration from web/base/ui to @langgenius/dify-ui by @lyzno1 in https://github.com/langgenius/dify/pull/35349
- chore(api): migrate mail task and OAuth data source to use Session(db… by @jerryzai in https://github.com/langgenius/dify/pull/35235
- fix(web): keep workflow panel operator anchor mounted during menu close animation by @lyzno1 in https://github.com/langgenius/dify/pull/35363
- feat: copy nodes cross apps by @hjlarry in https://github.com/langgenius/dify/pull/33273
- ci: Add conditional comment creation for diff by @asukaminato0721 in https://github.com/langgenius/dify/pull/35179
- feat(explore): implement banner impression tracking and refactor tracking logic by @CodingOnStar in https://github.com/langgenius/dify/pull/35369
- test: browser mode for dify ui by @hyoban in https://github.com/langgenius/dify/pull/35365
- feat(dify-ui): Meter primitive and billing adoption by @lyzno1 in https://github.com/langgenius/dify/pull/35380
- chore(api): adapt Graphon 0.2.2 upgrade by @WH-2099 in https://github.com/langgenius/dify/pull/35377
- chore(web): drop delay={0} from tooltip triggers and retype DocName by @lyzno1 in https://github.com/langgenius/dify/pull/35382
- fix(web): remove dynamic import from Goto Anything to restore cmd+k by @lyzno1 in https://github.com/langgenius/dify/pull/35383
- chore: Replace 'db' with 'sa' for SQLAlchemy compatibility by @asukaminato0721 in https://github.com/langgenius/dify/pull/35373
- ci: Update pyrefly dependency version to 0.61.1 by @asukaminato0721 in https://github.com/langgenius/dify/pull/35391
- fix(web): prevent infinite render loop on /apps page by @lyzno1 in https://github.com/langgenius/dify/pull/35393
- refactor(web): convert file-local Step enum to as-const in website crawlers 🤖🤖🤖 by @jeanibarz in https://github.com/langgenius/dify/pull/34565
- fix: complete assigned variable reference descriptions by @hjlarry in https://github.com/langgenius/dify/pull/35406
- refactor: remove file upload migration tip by @hjlarry in https://github.com/langgenius/dify/pull/35409
- chore: improve conversation opener by @hjlarry in https://github.com/langgenius/dify/pull/35403
- fix: accept icon type in app icon updates by @hyl64 in https://github.com/langgenius/dify/pull/35360
- fix: prevent double /v1 in MCP server URL causing 404 authorization failure by @dev-miro26 in https://github.com/langgenius/dify/pull/34596
- refactor(web): unify app-shell bootstrap on TanStack Query + Next.js route conventions by @lyzno1 in https://github.com/langgenius/dify/pull/35394
- refactor(api): flatten nested conditionals and clean up token helpers by @bitcompass in https://github.com/langgenius/dify/pull/34835
- chore: migrate workflow node title tooltip by @hjlarry in https://github.com/langgenius/dify/pull/35418
- feat(amplitude): integrate AmplitudeProvider and refactor initialization logic by @CodingOnStar in https://github.com/langgenius/dify/pull/35415
- fix: handle numpy scalar types in safe_json_value by @avasis-ai in https://github.com/langgenius/dify/pull/35389
- docs(frontend): align docs and comments by @lyzno1 in https://github.com/langgenius/dify/pull/35364
- fix: missing icon from iconify set by @hyoban in https://github.com/langgenius/dify/pull/35420
- chore: export dsl add loading by @iamjoel in https://github.com/langgenius/dify/pull/35427
- fix(auth): enforce phase-bound change-email token flow (GHSA-4q3w-q5mc-45rq) by @zyssyz123 in https://github.com/langgenius/dify/pull/35425
- chore(deps): bump json-repair from 0.59.2 to 0.59.4 in /api in the python-packages group by @dependabot[bot] in https://github.com/langgenius/dify/pull/35404
- chore(deps): bump google-cloud-aiplatform from 1.147.0 to 1.148.1 in /api in the google group by @dependabot[bot] in https://github.com/langgenius/dify/pull/35397
- chore(deps-dev): bump xinference-client from 2.4.0 to 2.5.0 in /api in the vdb group by @dependabot[bot] in https://github.com/langgenius/dify/pull/35399
- chore(deps): bump the storage group in /api with 3 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/35398
- ci: [codex] Remove anti-slop GitHub Actions workflow by @laipz8200 in https://github.com/langgenius/dify/pull/35432
- chore(deps): bump the github-actions-dependencies group across 1 directory with 7 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/35435
- chore: fix oxlint warnings (unused variables and imports) by @sicnuyudidi in https://github.com/langgenius/dify/pull/35249
- fix: increase maximum PostgreSQL connections to 200 by @Mutantpenguin in https://github.com/langgenius/dify/pull/35439
- refactor(web): continue replacing PortalToFollowElem with Popover components by @CodingOnStar in https://github.com/langgenius/dify/pull/35431
- feat(dify-ui): add PreviewCard primitive by @lyzno1 in https://github.com/langgenius/dify/pull/35434
- fix(workflow): cache provider configurations during graph init by @laipz8200 in https://github.com/langgenius/dify/pull/35447
- refactor(api): tighten core rag typing batch 1 by @tmimmanuel in https://github.com/langgenius/dify/pull/35210
- chore: resolve oxlint warnings across web and SDK by @agenthaulk in https://github.com/langgenius/dify/pull/34540
- refactor(billing): use Infotip for UsageInfo help icon, migrate storage tooltip to dify-ui by @lyzno1 in https://github.com/langgenius/dify/pull/35448
- fix: webscaper sometime not work by @hjlarry in https://github.com/langgenius/dify/pull/35450
- refactor: replace deprecated Iterator with Generator in contextmanagers #35433 by @iAbhi001 in https://github.com/langgenius/dify/pull/35441
- feat: support slash variable filtering in prompt editor by @iamjoel in https://github.com/langgenius/dify/pull/35460
- chore(deps): bump base ui to 1.4.1 by @lyzno1 in https://github.com/langgenius/dify/pull/35459
- chore(deps-dev): bump the dev group in /api with 6 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/35402
- chore(deps): bump vite-plus to 0.1.19 by @lyzno1 in https://github.com/langgenius/dify/pull/35462
- fix(plugin): persist tenant plugin auto-upgrade strategy changes by @zyssyz123 in https://github.com/langgenius/dify/pull/35464
- refactor: migrate from PortalToFollowElem to Popover component across various components by @CodingOnStar in https://github.com/langgenius/dify/pull/35454
- chore: port 2 api as deprecated by @asukaminato0721 in https://github.com/langgenius/dify/pull/35261
- chore(deps): bump lxml from 6.0.2 to 6.1.0 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/35470
- fix: bump pyrefly version by @JiwaniZakir in https://github.com/langgenius/dify/pull/33702
- chore: migrate type-check from tsc to tsgo across all workspaces by @lyzno1 in https://github.com/langgenius/dify/pull/35488
- chore: update 3 api by @asukaminato0721 in https://github.com/langgenius/dify/pull/35481
- fix(web): keep Add model dialog footer visible when form overflows by @crazywoola in https://github.com/langgenius/dify/pull/35490
- feat: improve follow-up settings by @hjlarry in https://github.com/langgenius/dify/pull/35442
- refactor: migrate base/select to dify-ui/select by @CodingOnStar in https://github.com/langgenius/dify/pull/35487
- chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/35492
- refactor: enhance node handle components with opacity transitions and add tests for visibility behavior by @CodingOnStar in https://github.com/langgenius/dify/pull/35494
- fix(plugin): handle file input reset and improve local installer close functionality by @CodingOnStar in https://github.com/langgenius/dify/pull/35506
- chore: add script to generate openapi v2 json and add in README #35474 by @asukaminato0721 in https://github.com/langgenius/dify/pull/35477
- test(auth): add sign-in smoke test and core validation by @Jingyi-Dify in https://github.com/langgenius/dify/pull/35501
- test(e2e): add publish app happy path scenario by @Jingyi-Dify in https://github.com/langgenius/dify/pull/35503
- fix(web): restore "Copied" feedback state on copy buttons by @lyzno1 in https://github.com/langgenius/dify/pull/35513
- fix(web): three small UX fixes on /datasets and /plugins by @lyzno1 in https://github.com/langgenius/dify/pull/35514
- fix: improve collaboration by @hjlarry in https://github.com/langgenius/dify/pull/35309
- test(e2e): add app detail navigation and redirect scenarios by @Jingyi-Dify in https://github.com/langgenius/dify/pull/35502
- fix: improve note node by @hjlarry in https://github.com/langgenius/dify/pull/35461
- fix: update node handle opacity and pointer events behavior in components and tests by @CodingOnStar in https://github.com/langgenius/dify/pull/35525
- refactor(api): fix pyright errors in jieba, milvus, couchbase, oracle, and router by @tmimmanuel in https://github.com/langgenius/dify/pull/34938
- feat: support key up and down to select variable item by @iamjoel in https://github.com/langgenius/dify/pull/35527
- fix: sync 35528 by @wylswz in https://github.com/langgenius/dify/pull/35539
- chore(dify-ui): update tooltip and infotip migration by @lyzno1 in https://github.com/langgenius/dify/pull/35543
- feat: add service api of HITL by @hjlarry in https://github.com/langgenius/dify/pull/32826
- feat: marketplace and oauth fixes by @RockChinQ in https://github.com/langgenius/dify/pull/35509
- fix: app icon could not only change background by @hjlarry in https://github.com/langgenius/dify/pull/35537
- fix: suggest questions more max_tokens by @hjlarry in https://github.com/langgenius/dify/pull/35533
- test(dify-ui): disable base ui animations globally by @lyzno1 in https://github.com/langgenius/dify/pull/35467
- fix: right click node not display the node detail panel by @hjlarry in https://github.com/langgenius/dify/pull/35554
- chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/35552
- chore: fix use select style api in orm by @asukaminato0721 in https://github.com/langgenius/dify/pull/35531
- feat: refactor modals to use Dialog component and add tests for ApiKeyModal and ProviderConfigModal by @CodingOnStar in https://github.com/langgenius/dify/pull/35550
- chore: port 2 api by @asukaminato0721 in https://github.com/langgenius/dify/pull/35542
- docs: fix Kubernetes deployment wording by @MukundaKatta in https://github.com/langgenius/dify/pull/35547
- test: add P0 workflow run, publish, and share scenarios by @Jingyi-Dify in https://github.com/langgenius/dify/pull/35559
- fix(api): declare flask dependency by @WH-2099 in https://github.com/langgenius/dify/pull/35568
- refactor: port ChildChunk by @asukaminato0721 in https://github.com/langgenius/dify/pull/30920
- chore(deps): bump gitpython from 3.1.45 to 3.1.47 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/35570
- refactor: port MessageAnnotation by @asukaminato0721 in https://github.com/langgenius/dify/pull/31005
- chore(ci): move image builds to depot by @goocarlos in https://github.com/langgenius/dify/pull/35575
- refactor: quota v3 integration by @hj24 in https://github.com/langgenius/dify/pull/35436
- chore(deps): bump anthropics/claude-code-action from 1.0.101 to 1.0.107 in the github-actions-dependencies group by @dependabot[bot] in https://github.com/langgenius/dify/pull/35579
- chore(deps-dev): bump the dev group in /api with 5 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/35581
- chore(deps): bump psycopg2-binary from 2.9.11 to 2.9.12 in /api in the database group by @dependabot[bot] in https://github.com/langgenius/dify/pull/35577
- chore(deps): bump the opentelemetry group in /api with 7 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/35576
- chore(deps-dev): bump xinference-client from 2.5.0 to 2.7.0 in /api in the vdb group by @dependabot[bot] in https://github.com/langgenius/dify/pull/35580
- chore(deps): bump the storage group across 1 directory with 3 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/35578
- chore(ci): increase tsslint heap limit by @lyzno1 in https://github.com/langgenius/dify/pull/35591
- refactor(web): migrate simple overlay tooltips by @lyzno1 in https://github.com/langgenius/dify/pull/35588
- fix(web): migrate variable type selector overlay by @hjlarry in https://github.com/langgenius/dify/pull/35590
- fix: improve variable picker text width allocation by @hjlarry in https://github.com/langgenius/dify/pull/35587
- ci: upgrade web test runners by @lyzno1 in https://github.com/langgenius/dify/pull/35593
- fix: enhance file uploader with billing support and update translations by @WTW0313 in https://github.com/langgenius/dify/pull/35583
- fix: school name can not input by @iamjoel in https://github.com/langgenius/dify/pull/35597
- chore: update dependency catalog by @lyzno1 in https://github.com/langgenius/dify/pull/35594
- chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/35595
- fix: keep cleanup tasks resilient to billing API failures by @zyssyz123 in https://github.com/langgenius/dify/pull/35600
- fix: download and upload package before invoking upgrade in auto-upgrade task by @BenjaminX in https://github.com/langgenius/dify/pull/35599
- refactor: move SegmentAttachmentBinding and UploadFile to TypeBase by @asukaminato0721 in https://github.com/langgenius/dify/pull/30218
- test: add Baidu OBS storage unit tests by @jimmyzhuu in https://github.com/langgenius/dify/pull/34330
- fix: show full checklist message tooltip instead of truncated by @hjlarry in https://github.com/langgenius/dify/pull/35613
- fix: align auto update time picker to the right by @hjlarry in https://github.com/langgenius/dify/pull/35621
- fix: align object value remove button of chat variable by @hjlarry in https://github.com/langgenius/dify/pull/35616
- fix(test): register baidu_obs mock as pytest plugin by @lin-snow in https://github.com/langgenius/dify/pull/35618
- fix: prioritize URL conversation_id over localStorage in embedded chatbot by @treekimm in https://github.com/langgenius/dify/pull/35519
- refactor(web): improve a11y and design-system consistency for date/time picker and auto-update strategy picker by @lyzno1 in https://github.com/langgenius/dify/pull/35627
- refactor: improve scrollbar handling in plugin and model selector UI by @lyzno1 in https://github.com/langgenius/dify/pull/35630
- test: cover shared workflow app run by @lyzno1 in https://github.com/langgenius/dify/pull/35634
- fix(web): filter model selector by model name by @WTW0313 in https://github.com/langgenius/dify/pull/35624
- fix(ci): wait for mysql to accept queries before db migration by @lin-snow in https://github.com/langgenius/dify/pull/35631
- chore: port one api by @asukaminato0721 in https://github.com/langgenius/dify/pull/35609
- fix: hit-testing response failed because of Pydantic check. by @FFXN in https://github.com/langgenius/dify/pull/35640
- chore: correction of ru translation by @knyazz in https://github.com/langgenius/dify/pull/35645
- fix: flaky WordExtractor close test in CI by @kenwoodjw in https://github.com/langgenius/dify/pull/35652
- fix: refresh MCP tool metadata after updates and align App DSL test stubs by @hyl64 in https://github.com/langgenius/dify/pull/35354
- fix: improve workflow as tool overlays by @hjlarry in https://github.com/langgenius/dify/pull/35661
- chore: bump version to 1.14.0 by @wylswz in https://github.com/langgenius/dify/pull/35662
New Contributors
- @faizkhairi made their first contribution in #34080
- @Maa-ly made their first contribution in #34146
- @Fronut made their first contribution in #34201
- @jigangz made their first contribution in #34221
- @ZZITE made their first contribution in #34224
- @fisherOne1 made their first contribution in #33740
- @wangji0923 made their first contribution in #33853
- @owldev127 made their first contribution in #34185
- @dominciyue made their first contribution in #33927
- @SeasonPilot made their first contribution in #33105
- @EndlessLucky made their first contribution in #34151
- @jimmyzhuu made their first contribution in #34328
- @LikiosSedo made their first contribution in #34436
- @agenthaulk made their first contribution in #34450
- @mvanhorn made their first contribution in #33473
- @jakearmstrong59 made their first contribution in #34589
- @iamPulakesh made their first contribution in #34614
- @aliworksx08 made their first contribution in #34607
- @corevibe555 made their first contribution in #34633
- @carlos4s made their first contribution in #34693
- @s-kawamura-upgrade made their first contribution in #34719
- @zhangbububu made their first contribution in #34720
- @dataCenter430 made their first contribution in #34769
- @volcano303 made their first contribution in #34751
- @BrianWang1990 made their first contribution in #34515
- @jonathanchang31 made their first contribution in #34795
- @balancetheworld made their first contribution in #34804
- @ai-hpc made their first contribution in #34859
- @sxxtony made their first contribution in #34806
- @jeanibarz made their first contribution in #34868
- @plind-junior made their first contribution in #34661
- @YgorLeal made their first contribution in #34786
- @HamzaSwitch made their first contribution in #34909
- @wdeveloper16 made their first contribution in #34960
- @AlsoTheZv3n made their first contribution in #34967
- @thegdsks made their first contribution in #34988
- @aviu16 made their first contribution in #34983
- @HeYin-OS made their first contribution in #34896
- @dev-miro26 made their first contribution in #34824
- @LincolnBurrows2017 made their first contribution in #33435
- @KeWang0622 made their first contribution in #35047
- @xingarr made their first contribution in #27838
- @samrusani made their first contribution in https://github.com/langgenius/dify/pull/35004
- @jimcody1995 made their first contribution in https://github.com/langgenius/dify/pull/35079
- @bohdansolovie made their first contribution in https://github.com/langgenius/dify/pull/35081
- @aether-png made their first contribution in https://github.com/langgenius/dify/pull/35140
- @jamesrayammons made their first contribution in https://github.com/langgenius/dify/pull/35197
- @Eruis2579 made their first contribution in https://github.com/langgenius/dify/pull/35183
- @aayushbaluni made their first contribution in https://github.com/langgenius/dify/pull/35263
- @jerryzai made their first contribution in https://github.com/langgenius/dify/pull/35234
- @shaun0927 made their first contribution in https://github.com/langgenius/dify/pull/35326
- @kuishou68 made their first contribution in https://github.com/langgenius/dify/pull/35150
- @hyl64 made their first contribution in https://github.com/langgenius/dify/pull/35357
- @bitcompass made their first contribution in https://github.com/langgenius/dify/pull/34835
- @avasis-ai made their first contribution in https://github.com/langgenius/dify/pull/35389
- @sicnuyudidi made their first contribution in https://github.com/langgenius/dify/pull/35249
- @Mutantpenguin made their first contribution in https://github.com/langgenius/dify/pull/35439
- @iAbhi001 made their first contribution in https://github.com/langgenius/dify/pull/35441
- @JiwaniZakir made their first contribution in https://github.com/langgenius/dify/pull/33702
- @MukundaKatta made their first contribution in https://github.com/langgenius/dify/pull/35547
- @treekimm made their first contribution in https://github.com/langgenius/dify/pull/35519
- @knyazz made their first contribution in https://github.com/langgenius/dify/pull/35645
Full Changelog: 1.13.3...1.14.0