{"url":"https://api.github.com/repos/langgenius/dify/releases/360820489","assets_url":"https://api.github.com/repos/langgenius/dify/releases/360820489/assets","upload_url":"https://uploads.github.com/repos/langgenius/dify/releases/360820489/assets{?name,label}","html_url":"https://github.com/langgenius/dify/releases/tag/1.16.1","id":360820489,"author":{"login":"wylswz","id":12965714,"node_id":"MDQ6VXNlcjEyOTY1NzE0","avatar_url":"https://avatars.githubusercontent.com/u/12965714?v=4","gravatar_id":"","url":"https://api.github.com/users/wylswz","html_url":"https://github.com/wylswz","followers_url":"https://api.github.com/users/wylswz/followers","following_url":"https://api.github.com/users/wylswz/following{/other_user}","gists_url":"https://api.github.com/users/wylswz/gists{/gist_id}","starred_url":"https://api.github.com/users/wylswz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/wylswz/subscriptions","organizations_url":"https://api.github.com/users/wylswz/orgs","repos_url":"https://api.github.com/users/wylswz/repos","events_url":"https://api.github.com/users/wylswz/events{/privacy}","received_events_url":"https://api.github.com/users/wylswz/received_events","type":"User","user_view_type":"public","site_admin":false},"node_id":"RE_kwDOJVxJus4Vga8J","tag_name":"1.16.1","target_commitish":"main","name":"Release v1.16.1 - Bug Fixes and Security Enhancements","draft":false,"immutable":false,"prerelease":false,"created_at":"2026-07-28T02:31:18Z","updated_at":"2026-07-28T03:46:06Z","published_at":"2026-07-28T03:43:51Z","assets":[{"url":"https://api.github.com/repos/langgenius/dify/releases/assets/492250938","id":492250938,"node_id":"RA_kwDOJVxJus4dVyc6","name":"difyctl-v0.2.0-alpha-checksums.txt","label":"","uploader":{"login":"github-actions[bot]","id":41898282,"node_id":"MDM6Qm90NDE4OTgyODI=","avatar_url":"https://avatars.githubusercontent.com/in/15368?v=4","gravatar_id":"","url":"https://api.github.com/users/github-actions%5Bbot%5D","html_url":"https://github.com/apps/github-actions","followers_url":"https://api.github.com/users/github-actions%5Bbot%5D/followers","following_url":"https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github-actions%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/github-actions%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/github-actions%5Bbot%5D/repos","events_url":"https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/github-actions%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"content_type":"text/plain; charset=utf-8","state":"uploaded","size":497,"digest":"sha256:e952f7939f92e36d36aaaa092588d1e1e8f177926271b5a5c11c8b841788057c","download_count":544,"created_at":"2026-07-28T03:45:59Z","updated_at":"2026-07-28T03:45:59Z","browser_download_url":"https://github.com/langgenius/dify/releases/download/1.16.1/difyctl-v0.2.0-alpha-checksums.txt"},{"url":"https://api.github.com/repos/langgenius/dify/releases/assets/492250937","id":492250937,"node_id":"RA_kwDOJVxJus4dVyc5","name":"difyctl-v0.2.0-alpha-darwin-arm64","label":"","uploader":{"login":"github-actions[bot]","id":41898282,"node_id":"MDM6Qm90NDE4OTgyODI=","avatar_url":"https://avatars.githubusercontent.com/in/15368?v=4","gravatar_id":"","url":"https://api.github.com/users/github-actions%5Bbot%5D","html_url":"https://github.com/apps/github-actions","followers_url":"https://api.github.com/users/github-actions%5Bbot%5D/followers","following_url":"https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github-actions%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/github-actions%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/github-actions%5Bbot%5D/repos","events_url":"https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/github-actions%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"content_type":"application/octet-stream","state":"uploaded","size":62225056,"digest":"sha256:2aeedd9ca6f6ebe5eeed8c2799cf9efcef5e7561337aac00c2792e15c542f770","download_count":344,"created_at":"2026-07-28T03:45:59Z","updated_at":"2026-07-28T03:46:06Z","browser_download_url":"https://github.com/langgenius/dify/releases/download/1.16.1/difyctl-v0.2.0-alpha-darwin-arm64"},{"url":"https://api.github.com/repos/langgenius/dify/releases/assets/492250935","id":492250935,"node_id":"RA_kwDOJVxJus4dVyc3","name":"difyctl-v0.2.0-alpha-darwin-x64","label":"","uploader":{"login":"github-actions[bot]","id":41898282,"node_id":"MDM6Qm90NDE4OTgyODI=","avatar_url":"https://avatars.githubusercontent.com/in/15368?v=4","gravatar_id":"","url":"https://api.github.com/users/github-actions%5Bbot%5D","html_url":"https://github.com/apps/github-actions","followers_url":"https://api.github.com/users/github-actions%5Bbot%5D/followers","following_url":"https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github-actions%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/github-actions%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/github-actions%5Bbot%5D/repos","events_url":"https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/github-actions%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"content_type":"application/octet-stream","state":"uploaded","size":67308096,"digest":"sha256:49bbdb284066c5a45f282379b6be45743830f4bd1fc3f02c5092ef8fd00ee7d5","download_count":161,"created_at":"2026-07-28T03:45:59Z","updated_at":"2026-07-28T03:46:01Z","browser_download_url":"https://github.com/langgenius/dify/releases/download/1.16.1/difyctl-v0.2.0-alpha-darwin-x64"},{"url":"https://api.github.com/repos/langgenius/dify/releases/assets/492250940","id":492250940,"node_id":"RA_kwDOJVxJus4dVyc8","name":"difyctl-v0.2.0-alpha-linux-arm64","label":"","uploader":{"login":"github-actions[bot]","id":41898282,"node_id":"MDM6Qm90NDE4OTgyODI=","avatar_url":"https://avatars.githubusercontent.com/in/15368?v=4","gravatar_id":"","url":"https://api.github.com/users/github-actions%5Bbot%5D","html_url":"https://github.com/apps/github-actions","followers_url":"https://api.github.com/users/github-actions%5Bbot%5D/followers","following_url":"https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github-actions%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/github-actions%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/github-actions%5Bbot%5D/repos","events_url":"https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/github-actions%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"content_type":"application/octet-stream","state":"uploaded","size":102148151,"digest":"sha256:81b2ed2773acb2153fce17ba12393897d4f0a2b409911b4431554d5c96b1c543","download_count":133,"created_at":"2026-07-28T03:45:59Z","updated_at":"2026-07-28T03:46:02Z","browser_download_url":"https://github.com/langgenius/dify/releases/download/1.16.1/difyctl-v0.2.0-alpha-linux-arm64"},{"url":"https://api.github.com/repos/langgenius/dify/releases/assets/492250936","id":492250936,"node_id":"RA_kwDOJVxJus4dVyc4","name":"difyctl-v0.2.0-alpha-linux-x64","label":"","uploader":{"login":"github-actions[bot]","id":41898282,"node_id":"MDM6Qm90NDE4OTgyODI=","avatar_url":"https://avatars.githubusercontent.com/in/15368?v=4","gravatar_id":"","url":"https://api.github.com/users/github-actions%5Bbot%5D","html_url":"https://github.com/apps/github-actions","followers_url":"https://api.github.com/users/github-actions%5Bbot%5D/followers","following_url":"https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github-actions%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/github-actions%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/github-actions%5Bbot%5D/repos","events_url":"https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/github-actions%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"content_type":"application/octet-stream","state":"uploaded","size":102174871,"digest":"sha256:e8f825647ac9e10439c513d2ce96275ad0d85c9b41cb1eff16b22c350fc67386","download_count":456,"created_at":"2026-07-28T03:45:59Z","updated_at":"2026-07-28T03:46:02Z","browser_download_url":"https://github.com/langgenius/dify/releases/download/1.16.1/difyctl-v0.2.0-alpha-linux-x64"},{"url":"https://api.github.com/repos/langgenius/dify/releases/assets/492250954","id":492250954,"node_id":"RA_kwDOJVxJus4dVydK","name":"difyctl-v0.2.0-alpha-windows-x64.exe","label":"","uploader":{"login":"github-actions[bot]","id":41898282,"node_id":"MDM6Qm90NDE4OTgyODI=","avatar_url":"https://avatars.githubusercontent.com/in/15368?v=4","gravatar_id":"","url":"https://api.github.com/users/github-actions%5Bbot%5D","html_url":"https://github.com/apps/github-actions","followers_url":"https://api.github.com/users/github-actions%5Bbot%5D/followers","following_url":"https://api.github.com/users/github-actions%5Bbot%5D/following{/other_user}","gists_url":"https://api.github.com/users/github-actions%5Bbot%5D/gists{/gist_id}","starred_url":"https://api.github.com/users/github-actions%5Bbot%5D/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/github-actions%5Bbot%5D/subscriptions","organizations_url":"https://api.github.com/users/github-actions%5Bbot%5D/orgs","repos_url":"https://api.github.com/users/github-actions%5Bbot%5D/repos","events_url":"https://api.github.com/users/github-actions%5Bbot%5D/events{/privacy}","received_events_url":"https://api.github.com/users/github-actions%5Bbot%5D/received_events","type":"Bot","user_view_type":"public","site_admin":false},"content_type":"application/octet-stream","state":"uploaded","size":117276672,"digest":"sha256:a6de73d350f5f003452c1d49b7e99e81a5dfbc9ba1134a99eb22f649a94a2bdc","download_count":1914,"created_at":"2026-07-28T03:45:59Z","updated_at":"2026-07-28T03:46:02Z","browser_download_url":"https://github.com/langgenius/dify/releases/download/1.16.1/difyctl-v0.2.0-alpha-windows-x64.exe"}],"tarball_url":"https://api.github.com/repos/langgenius/dify/tarball/1.16.1","zipball_url":"https://api.github.com/repos/langgenius/dify/zipball/1.16.1","body":"## What's Changed\r\n\r\n### New Features\r\n**Tool Multi-Select Input**\r\n- Workflow tool nodes now support multi-select dropdown inputs, allowing users to choose multiple values from a predefined list when configuring tool parameters. (#39346)\r\n\r\n**Workflow Node Locator**\r\n- You can now click a node_id in workflow run logs or error messages to locate and highlight the corresponding node in the workflow editor canvas. (#38187)\r\n\r\n**Workflow Block Selector Improvements**\r\n- The block selector panel now features improved keyboard navigation, category previews, and a more intuitive search experience when adding nodes to workflows. (#39212)\r\n\r\n**Export Agent DSL from Sidebar**\r\n- Agent apps can now be exported as DSL YAML directly from the app sidebar menu, making it easy to back up or version-control agent configurations. (#39299)\r\n\r\n**Knowledge Tracing**\r\n- Added more observability traces to knowledge/RAG document processing operations, improving visibility into indexing pipelines. (#38959)\r\n\r\n\r\n---\r\n\r\n### Bug Fixes\r\n\r\n**Workflow & Collaboration**\r\n- Fixed hidden-tab collaboration leader saving stale drafts when the tab is inactive (#38997)\r\n- Fixed unsaved edits being dropped when collaboration never connects (#39579)\r\n- Preserved latest collaboration session after reconnection (#39646)\r\n- Fixed false draft save error during Strict Mode initialization (#39353)\r\n- Show persistent error notification when workflow draft save fails (#39293)\r\n- Wait for workflow worker threads to finish before Celery tasks complete, preventing orphaned executions (#39614)\r\n- Lazy-load Loro collaboration runtime to reduce initial bundle size (#39631)\r\n- Don't open node settings panel when clicking a node in comment mode (#39500)\r\n- Don't close active comment panel when a different comment is resolved (#39491)\r\n\r\n**RAG & Knowledge**\r\n- Fixed document cleaner stripping valid characters ï (U+00EF), ¿ (U+00BF), ¾ (U+00BE) (#39215)\r\n- Preserved spaces during recursive text splitting (#39498)\r\n- Used `flush()` instead of `commit()` in dataset service to preserve caller transaction boundaries (#39223)\r\n- Sent valid body in external knowledge validation probe (#39410)\r\n\r\n**Agent**\r\n- Fixed agent preview: start new Preview conversations without inheriting an old ID (#39463)\r\n- Fixed agent chat input being replaced when conversation history updates (#39289)\r\n- Preserved complete model usage pricing in agent logs (#39201)\r\n- Show workflow node runs in agent execution logs (#39471)\r\n- Include workflow runs in agent monitoring stats (#39354)\r\n- Block unpublished agents from being used in workflows (#39532)\r\n- Prevent agent preview actions from being clipped (#39510)\r\n- Prevent build reset from clearing preview chat history (#39490)\r\n- Fixed agent build draft UI flashing during apply (#39642)\r\n\r\n**Web App & UI**\r\n- Fixed webapp JWT expiration time being incorrectly set (#39537)\r\n- Fixed TTS playback in Safari and Firefox (#39444)\r\n- Fixed clipboard writes failing in embedded apps (#39511)\r\n- Fixed text generation web app showing infinite loading after timeout (#39268)\r\n- Fixed chat not passing document if model doesn't support vision (#39461)\r\n- Stopped chunk length/overlap inputs collapsing to unusable width in narrow containers (#39600)\r\n- Fixed search hotkey hydration mismatch (#39574)\r\n- Improved DSL import/export dialog states (#39432, #39409)\r\n- Fixed basePath doubling in auth refresh redirects (#39273)\r\n- Show unavailable state for disabled Web Apps (#39392)\r\n- Fixed permission selector semantics (#39269)\r\n- Fixed customization page horizontal overflow (#39557)\r\n\r\n**API & Backend**\r\n- Fixed MCP tool `output_schema` being treated as required when it's optional (#39453)\r\n- Honored array-element limit and byte budget for `list[File]` in VariableTruncator (#39220)\r\n- Prevented identity logging deadlock (#39449)\r\n- Rejected `host:port`-shaped `PLUGIN_REMOTE_INSTALL_PORT` values with an actionable hint (#39329)\r\n- Fixed `PaginatedResult.pages` returning 1 instead of 0 for empty result sets (#39229)\r\n- Used resource tenant for draft variable files (#39307)\r\n- Scoped HITL snapshot message lookup to utilize database index (#39351)\r\n- Returned 400 instead of 500 when `file` field is missing from audio-to-text endpoints (#39303, #39322)\r\n- Fixed tool_meta missing `tool_provider_type` during tool execution (#39513)\r\n- Applied configured timeout to enterprise inner API requests (#39335)\r\n- Returned disabled auto-upgrade settings when strategy is missing (#39494)\r\n- Enforced tool provider type contracts (#39380)\r\n- Fixed WaterCrawl website crawler handling non-JSON error responses (#37514)\r\n- Fixed can't create chat app when tenant default model schema errors (#39266)\r\n\r\n---\r\n### Security Enhancements\r\n\r\n- The Agent local sandbox now runs behind a dedicated Squid forward proxy with strict ACL rules, preventing the sandbox from reaching internal services directly. Only the `/files/` endpoint on the API and `/agent-stub/` on agent_backend are permitted, both protected with short-lived access tokens. This significantly reduces the blast radius of arbitrary code execution in the agent sandbox. (#39544)\r\n- Communication between the Dify API and the agent backend now uses token-based authentication via `DIFY_AGENT_API_TOKEN` / `AGENT_BACKEND_API_TOKEN`, hardening the internal service boundary. (#39622)\r\n- Switched Jinja2 template rendering to use `SandboxedEnvironment`, preventing template injection attacks in workflow code nodes (#39609)\r\n- Patched React Server Components DoS vulnerability (#39539)\r\n- Used `re.fullmatch` in email validator to reject trailing newlines, preventing bypass attacks (#39320)\r\n- Validated account status before accepting workspace invitations (#39438)\r\n\r\n---\r\n\r\n### Performance\r\n\r\n- **Lightweight recent apps endpoint** — New `GET /console/api/apps/recent` endpoint reduces the home page \"Continue Work\" section latency by ~69% (3.2× faster), cutting SQL queries from 19+ to 1 projection SELECT and response size by ~50% (#39625)\r\n- **Lazy-load Home creation modals** — Deferred loading of creation modal code until interaction, reducing initial JavaScript bundle (#39634)\r\n\r\n---\r\n\r\n### Improvements\r\n\r\n- Made agent composer save and publish state consistent (#39637)\r\n- Simplified Dify logo theming (#39580)\r\n- Improved workflow block selector UI (#39377)\r\n- Improved web accessibility semantics (#39505)\r\n- Nodes are no longer draggable when previewing a workflow (#39131)\r\n- Display non-LLM settings in integration tool details (#39295)\r\n\r\n---\r\n\r\n## Environment Variable Changes\r\n\r\n### New Variables\r\n\r\n| Variable | Default | Description |\r\n|----------|---------|-------------|\r\n| `DIFY_AGENT_API_TOKEN` | `dify-agent-run-token-for-dev-only` | Shared bearer token for API → agent_backend authentication. **Change this in production.** |\r\n| `AGENT_BACKEND_API_TOKEN` | `dify-agent-run-token-for-dev-only` | Same token on the agent backend side. Must match `DIFY_AGENT_API_TOKEN`. |\r\n| `PLUGIN_MODEL_PROVIDERS_CACHE_ENABLED` | `true` | Set to `false` if plugins are installed externally and the cache cannot be invalidated. |\r\n\r\n> [!IMPORTANT]\r\n> `DIFY_AGENT_API_TOKEN` is a **new required variable** for secure communication between the Dify API and agent backend. The default value (`dify-agent-run-token-for-dev-only`) is insecure and **must be replaced in production**. Generate one with:\r\n> ```bash\r\n> python -c 'import secrets; print(secrets.token_urlsafe(32))'\r\n> ```\r\n> Set the same value as `AGENT_BACKEND_API_TOKEN` on the agent backend side.\r\n\r\n### Docker Compose Changes\r\n\r\n- **Agent sandbox network isolation**: `local_sandbox` is moved off the `default` network to dedicated `agent_sandbox_network` + `local_sandbox_proxy_network`. A new `agent_ssrf_proxy` service (Squid) is added.\r\n- **Bearer auth**: `AGENT_BACKEND_API_TOKEN` / `DIFY_AGENT_API_TOKEN` are now passed to `api`, `worker`, and `agent_backend` services.\r\n- Image tags updated to `1.16.1`.\r\n\r\n---\r\n\r\n## Database Migrations\r\n\r\nThis release includes **4 new migrations**:\r\n\r\n1. `2026_07_15_1600-3c9f8e2a1d7b_add_workflow_run_archive_bundle_cursor_indexes.py` — Add indexes to `workflow_run_archive_bundles` (concurrent on PostgreSQL)\r\n2. `2026_06_29_1200-b8c9d0e1f2a3_add_step_by_step_tour_state.py` — Create `account_step_by_step_tour_states` table\r\n3. `2026_07_22_1500-d2825e7b9c10_scope_agent_debug_conversations.py` — Add `draft_type` column to `agent_debug_conversations` and update unique constraint\r\n4. `2026_07_23_1200-6f5a9c2d8e1b_add_telemetry_fields_to_dify_setups.py` — Add telemetry fields (`instance_id`, `install_reported_at`, `last_heartbeat_at`) to `dify_setups`\r\n\r\nAll migrations are additive (new tables, columns, indexes) and are safe to run without downtime.\r\n\r\n---\r\n\r\n## Upgrade Guide\r\n\r\n### Docker Compose (Recommended)\r\n\r\n```bash\r\ncd docker\r\ndocker compose down\r\ngit pull origin main\r\ndocker compose pull\r\ndocker compose up -d\r\n```\r\n\r\nThe database migrations will run automatically on startup.\r\n\r\n> [!IMPORTANT]\r\n> Review the new `DIFY_AGENT_API_TOKEN` variable in `.env`. The default value is insecure — generate a secure token for production:\r\n> ```bash\r\n> python -c 'import secrets; print(secrets.token_urlsafe(32))'\r\n> ```\r\n\r\n### Source Code\r\n\r\n```bash\r\ngit pull origin main\r\ncd api\r\nflask db upgrade\r\n```\r\n\r\n---\r\n\r\n## What's Changed\r\n* refactor(web): use generated dataset card queries by @lyzno1 in https://github.com/langgenius/dify/pull/39203\r\n* refactor(web): use generated OAuth query options by @lyzno1 in https://github.com/langgenius/dify/pull/39204\r\n* refactor(web): align integrations sidebar components by @lyzno1 in https://github.com/langgenius/dify/pull/39202\r\n* feat(workflow): improve block selector navigation and previews by @lyzno1 in https://github.com/langgenius/dify/pull/39212\r\n* fix(dataset_service): use flush() instead of commit() to preserve caller transaction by @sergioperezcheco in https://github.com/langgenius/dify/pull/39223\r\n* ci: route default Depot jobs to 4-core runners by @lyzno1 in https://github.com/langgenius/dify/pull/39277\r\n* chore: the node should not draggable when preview a workflow by @hjlarry in https://github.com/langgenius/dify/pull/39131\r\n* test(web): align test state boundaries by @lyzno1 in https://github.com/langgenius/dify/pull/39239\r\n* refactor(web): avoid setState in website crawler effects by @wanxiankai in https://github.com/langgenius/dify/pull/39237\r\n* fix: text generation web app keeps loading after timeout by @iamjoel in https://github.com/langgenius/dify/pull/39268\r\n* refactor(web): avoid direct setState in effect in jina reader crawler (#25194) by @pepepeboom in https://github.com/langgenius/dify/pull/39216\r\n* fix(web): restore permission selector semantics by @lyzno1 in https://github.com/langgenius/dify/pull/39269\r\n* chore: bump the github-actions-dependencies group with 5 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/39247\r\n* fix: can't create chat app when get tenant default model schema error by @hjlarry in https://github.com/langgenius/dify/pull/39266\r\n* fix: prevent hidden-tab collaboration leader from saving stale drafts by @Kevin9703 in https://github.com/langgenius/dify/pull/38997\r\n* fix(api, web): scope trial app file uploads to the app tenant by @linw1995 in https://github.com/langgenius/dify/pull/39149\r\n* refactor: use catalog for workflow archive maintenance by @zhaohao1004 in https://github.com/langgenius/dify/pull/39001\r\n* fix(agent): preserve complete model usage pricing by @zyssyz123 in https://github.com/langgenius/dify/pull/39201\r\n* feat(web): add webapp access control to agent access point by @GareArc in https://github.com/langgenius/dify/pull/39285\r\n* fix: the input of  agent chat would be replaced if conversation history updated by @iamjoel in https://github.com/langgenius/dify/pull/39289\r\n* feat(dataset): proxy KnowledgeFS Console requests by @hyoban in https://github.com/langgenius/dify/pull/39158\r\n* docs: refine frontend testing guidance by @lyzno1 in https://github.com/langgenius/dify/pull/39290\r\n* chore(deps): update pnpm and workspace dependencies by @lyzno1 in https://github.com/langgenius/dify/pull/39292\r\n* fix: show persistent error when workflow draft save fails by @iamjoel in https://github.com/langgenius/dify/pull/39293\r\n* feat(web): add step-by-step tour shell by @Jingyi-Dify in https://github.com/langgenius/dify/pull/38785\r\n* chore: display non-LLM settings in integration tool details by @iamjoel in https://github.com/langgenius/dify/pull/39295\r\n* chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/39296\r\n* revert(ci): restore default Depot runners by @lyzno1 in https://github.com/langgenius/dify/pull/39297\r\n* test: use SQLite sessions in unit misc by @asukaminato0721 in https://github.com/langgenius/dify/pull/39123\r\n* test: use SQLite sessions in unit misc by @asukaminato0721 in https://github.com/langgenius/dify/pull/39121\r\n* test: use SQLite sessions in unit misc by @asukaminato0721 in https://github.com/langgenius/dify/pull/39122\r\n* feat: support export agent dsl in sidebar by @iamjoel in https://github.com/langgenius/dify/pull/39299\r\n* fix(web): stop doubling basePath in auth refresh redirects by @sergioperezcheco in https://github.com/langgenius/dify/pull/39273\r\n* chore: when dataset permission is not all team, update rbac config to… by @fatelei in https://github.com/langgenius/dify/pull/39227\r\n* refactor(web): remove basePath from hydration boundary by @lyzno1 in https://github.com/langgenius/dify/pull/39308\r\n* ci: simplify test workflow execution by @WH-2099 in https://github.com/langgenius/dify/pull/39318\r\n* test: use SQLite sessions in unit misc by @asukaminato0721 in https://github.com/langgenius/dify/pull/39120\r\n* fix(api): use resource tenant for draft variable files by @linw1995 in https://github.com/langgenius/dify/pull/39307\r\n* fix(configs): reject host:port-shaped PLUGIN_REMOTE_INSTALL_PORT with actionable hint by @sergioperezcheco in https://github.com/langgenius/dify/pull/39329\r\n* fix: return 400 instead of 500 when file field is missing in audio-to-text endpoints (#39303) by @rkfshakti in https://github.com/langgenius/dify/pull/39322\r\n* test: use SQLite sessions in unit misc by @asukaminato0721 in https://github.com/langgenius/dify/pull/39119\r\n* test: use SQLite sessions in services workflow by @asukaminato0721 in https://github.com/langgenius/dify/pull/39116\r\n* fix(api): keep workflow log archives owner-admin only by @lyzno1 in https://github.com/langgenius/dify/pull/39338\r\n* fix(web): restore billing access boundary by @lyzno1 in https://github.com/langgenius/dify/pull/39343\r\n* fix(api): return 400 instead of 500 when 'file' is missing from trial-app audio-to-text by @Harsh23Kashyap in https://github.com/langgenius/dify/pull/39305\r\n* refactor(web): remove permission catalog service hooks by @lyzno1 in https://github.com/langgenius/dify/pull/39342\r\n* fix(watercrawl): handle non-json error responses by @luochen211 in https://github.com/langgenius/dify/pull/37514\r\n* fix(dev): use gevent WebSocket server for local API by @hjlarry in https://github.com/langgenius/dify/pull/39349\r\n* fix: not support  jump to detail in marketplace by @iamjoel in https://github.com/langgenius/dify/pull/39347\r\n* fix(workflow): avoid false draft save error during Strict Mode initia… by @hjlarry in https://github.com/langgenius/dify/pull/39353\r\n* test: use sqlite3 session in test_account_service by @asukaminato0721 in https://github.com/langgenius/dify/pull/38751\r\n* test: use SQLite sessions in services workflow by @asukaminato0721 in https://github.com/langgenius/dify/pull/39115\r\n* test: use SQLite sessions in unit misc by @asukaminato0721 in https://github.com/langgenius/dify/pull/39118\r\n* test: use sqlite3 session in test_built_in_retrieval by @asukaminato0721 in https://github.com/langgenius/dify/pull/38735\r\n* test: use sqlite3 session in test_based_generate_task_pipeline by @asukaminato0721 in https://github.com/langgenius/dify/pull/38738\r\n* test: use sqlite3 session in test_conversation_service by @asukaminato0721 in https://github.com/langgenius/dify/pull/38774\r\n* test: move API token service coverage to unit tests by @asukaminato0721 in https://github.com/langgenius/dify/pull/38918\r\n* test: use sqlite3 session in test_accounts by @asukaminato0721 in https://github.com/langgenius/dify/pull/38752\r\n* test: move app import API coverage to unit tests by @asukaminato0721 in https://github.com/langgenius/dify/pull/38920\r\n* test: use sqlite3 session in test_database_retrieval by @asukaminato0721 in https://github.com/langgenius/dify/pull/38743\r\n* test: use sqlite3 session in test_agent_app_parameters by @asukaminato0721 in https://github.com/langgenius/dify/pull/38759\r\n* test: use sqlite3 session in test_workspace_account by @asukaminato0721 in https://github.com/langgenius/dify/pull/38757\r\n* test: use sqlite3 session in test_tool_file_manager by @asukaminato0721 in https://github.com/langgenius/dify/pull/38771\r\n* test: move human input delivery coverage to unit tests by @asukaminato0721 in https://github.com/langgenius/dify/pull/38926\r\n* test: use sqlite3 session in test_build_from_mapping by @asukaminato0721 in https://github.com/langgenius/dify/pull/38769\r\n* test: add SQLite session fixture for providers by @asukaminato0721 in https://github.com/langgenius/dify/pull/38982\r\n* fix(agent): include workflow runs in monitoring stats by @zyssyz123 in https://github.com/langgenius/dify/pull/39354\r\n* feat(webapp-access): add WEBAPP_PUBLIC_ACCESS_ENABLED toggle by @GareArc in https://github.com/langgenius/dify/pull/38567\r\n* fix(api): scope HITL snapshot message lookup to utilize db index by @QuantumGhost in https://github.com/langgenius/dify/pull/39351\r\n* fix: update the agent roster documentation link by @iamjoel in https://github.com/langgenius/dify/pull/39368\r\n* chore(i18n): sync translations with en-US by @github-actions[bot] in https://github.com/langgenius/dify/pull/39362\r\n* refactor(web): improve workflow block selector by @lyzno1 in https://github.com/langgenius/dify/pull/39377\r\n* fix(api): PaginatedResult.pages should be 0 for an empty result set by @lntutor in https://github.com/langgenius/dify/pull/39229\r\n* feat: add WebSocket support to dev proxy with cookie rewriting by @WTW0313 in https://github.com/langgenius/dify/pull/39370\r\n* fix: enforce tool provider type contracts by @lyzno1 in https://github.com/langgenius/dify/pull/39380\r\n* chore(deps): upgrade Next.js to 16.2.11 by @lyzno1 in https://github.com/langgenius/dify/pull/39384\r\n* test: use SQLite sessions in services misc by @asukaminato0721 in https://github.com/langgenius/dify/pull/39114\r\n* test: use SQLite sessions in services enterprise by @asukaminato0721 in https://github.com/langgenius/dify/pull/39113\r\n* test: use SQLite sessions in services core by @asukaminato0721 in https://github.com/langgenius/dify/pull/39111\r\n* test: use SQLite sessions in core workflow by @asukaminato0721 in https://github.com/langgenius/dify/pull/39109\r\n* test: use sqlite3 session in test_auth_wraps by @asukaminato0721 in https://github.com/langgenius/dify/pull/38760\r\n* docs: note minimum Docker Compose version by @zcxGGmu in https://github.com/langgenius/dify/pull/39374\r\n* test: use sqlite3 session in test_human_input_forms by @asukaminato0721 in https://github.com/langgenius/dify/pull/38777\r\n* test: move console OAuth coverage to unit tests by @asukaminato0721 in https://github.com/langgenius/dify/pull/38923\r\n* fix: apply configured timeout to enterprise inner API requests by @GareArc in https://github.com/langgenius/dify/pull/39335\r\n* fix(web): show unavailable state for disabled Web Apps by @lyzno1 in https://github.com/langgenius/dify/pull/39392\r\n* fix(datasets): update empty state handling and permissions messaging by @WTW0313 in https://github.com/langgenius/dify/pull/39360\r\n* chore: bump pyasn1 from 0.6.3 to 0.6.4 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/39390\r\n* chore: bump setuptools from 82.0.1 to 83.0.0 in /dify-agent by @dependabot[bot] in https://github.com/langgenius/dify/pull/39387\r\n* chore: bump gitpython from 3.1.50 to 3.1.52 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/39389\r\n* chore: bump google.golang.org/grpc from 1.82.0 to 1.82.1 in /dify-agent-runtime by @dependabot[bot] in https://github.com/langgenius/dify/pull/39386\r\n* chore: bump pyasn1 from 0.6.3 to 0.6.4 in /dify-agent by @dependabot[bot] in https://github.com/langgenius/dify/pull/39388\r\n* test: use sqlite3 session in test_clear_free_plan_tenant_expired_logs by @asukaminato0721 in https://github.com/langgenius/dify/pull/38693\r\n* chore: bump pillow from 12.2.0 to 12.3.0 in /dify-agent by @dependabot[bot] in https://github.com/langgenius/dify/pull/39328\r\n* test: use sqlite3 session in test_workflow by @asukaminato0721 in https://github.com/langgenius/dify/pull/38686\r\n* test: use SQLite sessions in service API fixtures by @asukaminato0721 in https://github.com/langgenius/dify/pull/38784\r\n* test: use sqlite3 session in test_export_service by @asukaminato0721 in https://github.com/langgenius/dify/pull/38718\r\n* test: use sqlite3 session in test_generator_api_missing by @asukaminato0721 in https://github.com/langgenius/dify/pull/38719\r\n* test: use sqlite3 session in test_app_runner_conversation_variables by @asukaminato0721 in https://github.com/langgenius/dify/pull/38687\r\n* test: use sqlite3 session in test_model_config_api by @asukaminato0721 in https://github.com/langgenius/dify/pull/38675\r\n* fix(e2e): align fixtures with generated contracts by @lyzno1 in https://github.com/langgenius/dify/pull/39394\r\n* chore: clean up CODEOWNERS by @lyzno1 in https://github.com/langgenius/dify/pull/39398\r\n* fix(oauth): reauth after accepting invitation by @linw1995 in https://github.com/langgenius/dify/pull/39366\r\n* fix(ci): avoid duplicate post-merge e2e runs by @lyzno1 in https://github.com/langgenius/dify/pull/39401\r\n* test: use sqlite3 session in test_base_app_runner by @asukaminato0721 in https://github.com/langgenius/dify/pull/38740\r\n* fix(api,billing): invalidate vector space cache after cleanup by @linw1995 in https://github.com/langgenius/dify/pull/39404\r\n* test(e2e): validate generated console contracts by @lyzno1 in https://github.com/langgenius/dify/pull/39400\r\n* chore: Update permission tip across i18n locales by @WTW0313 in https://github.com/langgenius/dify/pull/39406\r\n* test: use sqlite3 session in test_reset_encrypt_key_pair by @asukaminato0721 in https://github.com/langgenius/dify/pull/38673\r\n* test: use sqlite3 session in test_rag_pipeline_workflow by @asukaminato0721 in https://github.com/langgenius/dify/pull/38676\r\n* fix(agent): isolate build and preview chat conversations by @zyssyz123 in https://github.com/langgenius/dify/pull/39405\r\n* test: use sqlite3 session in test_snippet_workflow by @asukaminato0721 in https://github.com/langgenius/dify/pull/38677\r\n* test: use sqlite3 session in test_snippet_workflow_draft_variable by @asukaminato0721 in https://github.com/langgenius/dify/pull/38678\r\n* fix(web): improve DSL export feedback by @lyzno1 in https://github.com/langgenius/dify/pull/39409\r\n* test: use sqlite3 session in test_app_import_api by @asukaminato0721 in https://github.com/langgenius/dify/pull/38674\r\n* test: use sqlite3 session in test_tags by @asukaminato0721 in https://github.com/langgenius/dify/pull/38679\r\n* test: use sqlite3 session in test_init_validate by @asukaminato0721 in https://github.com/langgenius/dify/pull/38680\r\n* test: use sqlite3 session in test_plugin_wraps by @asukaminato0721 in https://github.com/langgenius/dify/pull/38681\r\n* test: use sqlite3 session in test_runtime_credentials by @asukaminato0721 in https://github.com/langgenius/dify/pull/38682\r\n* test: use sqlite3 session in test_workflow_events_openapi by @asukaminato0721 in https://github.com/langgenius/dify/pull/38683\r\n* feat(dataset): add New Knowledge list and empty state by @hyoban in https://github.com/langgenius/dify/pull/39300\r\n* fix: prevent RBAC role names overflowing settings panel by @balancetheworld in https://github.com/langgenius/dify/pull/39412\r\n* fix(agent): refresh stale inline preview drafts by @zyssyz123 in https://github.com/langgenius/dify/pull/39415\r\n* feat: support  tool multi-select input by @hjlarry in https://github.com/langgenius/dify/pull/39346\r\n* fix(dify-ui): preserve link semantics in button story by @lyzno1 in https://github.com/langgenius/dify/pull/39430\r\n* feat(dataset): expose New RAG KnowledgeFS contracts by @hyoban in https://github.com/langgenius/dify/pull/39314\r\n* fix(web): improve import DSL dialog states by @lyzno1 in https://github.com/langgenius/dify/pull/39432\r\n* feat: gate cloud analytics behind cookie consent by @CodingOnStar in https://github.com/langgenius/dify/pull/39408\r\n* fix(api): send valid body in external knowledge validation probe by @dparkmit24 in https://github.com/langgenius/dify/pull/39410\r\n* test: move password reset coverage to unit tests by @asukaminato0721 in https://github.com/langgenius/dify/pull/38936\r\n* test: use sqlite3 session in test_conversation by @asukaminato0721 in https://github.com/langgenius/dify/pull/38684\r\n* test: use sqlite3 session in test_hitl_service_api by @asukaminato0721 in https://github.com/langgenius/dify/pull/38685\r\n* test: use sqlite3 session in test_async_workflow_service by @asukaminato0721 in https://github.com/langgenius/dify/pull/38692\r\n* chore(api): cloud use presigned download url on api site by @linw1995 in https://github.com/langgenius/dify/pull/39436\r\n* fix(workflow): hide Agent V2 in chatflow by @lyzno1 in https://github.com/langgenius/dify/pull/39439\r\n* fix(auth): validate account before accepting invitations by @zyssyz123 in https://github.com/langgenius/dify/pull/39438\r\n* fix: use re.fullmatch in email validator to reject trailing newlines (#39234) by @rkfshakti in https://github.com/langgenius/dify/pull/39320\r\n* chore: improve lambda plugin runtime error display by @hjlarry in https://github.com/langgenius/dify/pull/39437\r\n* fix(web): support TTS playback in Safari and Firefox by @euxx in https://github.com/langgenius/dify/pull/39444\r\n* feat(dataset): add New Knowledge creation flow by @hyoban in https://github.com/langgenius/dify/pull/39315\r\n* feat: gate agent management behind the agent.manage permission by @GareArc in https://github.com/langgenius/dify/pull/39330\r\n* fix(api): prevent identity logging deadlock by @hjlarry in https://github.com/langgenius/dify/pull/39449\r\n* fix(web): echo OAuth state on authorize redirect by @samzong in https://github.com/langgenius/dify/pull/39459\r\n* fix(agent): start new Preview conversations without an ID by @zyssyz123 in https://github.com/langgenius/dify/pull/39463\r\n* fix: chat not pass doc if not support vision by @iamjoel in https://github.com/langgenius/dify/pull/39461\r\n* chore: avoid duplicate token counting during dataset indexing by @41tair in https://github.com/langgenius/dify/pull/39466\r\n* feat(dataset): add source connections by @hyoban in https://github.com/langgenius/dify/pull/39319\r\n* fix(agent): show workflow node runs in logs by @zyssyz123 in https://github.com/langgenius/dify/pull/39471\r\n* feat(web): locate workflow nodes by node_id in the workflow editor by @ruanimal in https://github.com/langgenius/dify/pull/38187\r\n* feat(dataset): add website crawl preview by @hyoban in https://github.com/langgenius/dify/pull/39324\r\n* feat(oauth): expose stable account id on provider account endpoint by @samzong in https://github.com/langgenius/dify/pull/39470\r\n* feat: knowledge add more trace by @fatelei in https://github.com/langgenius/dify/pull/38959\r\n* chore: support preview mode if not in community version by @iamjoel in https://github.com/langgenius/dify/pull/39399\r\n* test: use sqlite3 session in test_base_trace_instance by @asukaminato0721 in https://github.com/langgenius/dify/pull/38744\r\n* fix(web): adapt workflow agent logs by @lyzno1 in https://github.com/langgenius/dify/pull/39488\r\n* fix: prevent build reset from clearing preview chat by @iamjoel in https://github.com/langgenius/dify/pull/39490\r\n* fix(web): simplify agent configure mode state by @lyzno1 in https://github.com/langgenius/dify/pull/39492\r\n* fix: don't close the active comment panel when a different comment is resolved by @dparkmit24 in https://github.com/langgenius/dify/pull/39491\r\n* fix: return disabled auto-upgrade settings when strategy is missing by @hjlarry in https://github.com/langgenius/dify/pull/39494\r\n* fix: smooth the preview-to-build transition by @iamjoel in https://github.com/langgenius/dify/pull/39495\r\n* fix(api): make the 10-minute email IP first-strike window take effect by @he-yufeng in https://github.com/langgenius/dify/pull/39479\r\n* feat(dataset): add crawl source selection by @hyoban in https://github.com/langgenius/dify/pull/39325\r\n* refactor: centralize deployment edition in system features by @lyzno1 in https://github.com/langgenius/dify/pull/39454\r\n* fix: download skill files through authenticated API requests by @iamjoel in https://github.com/langgenius/dify/pull/39499\r\n* fix: don't open the node settings panel when clicking a node in comment mode by @dparkmit24 in https://github.com/langgenius/dify/pull/39500\r\n* fix: audio config ui problem by @iamjoel in https://github.com/langgenius/dify/pull/39504\r\n* chore: add deploy-knowledge.yml by @JohnJyong in https://github.com/langgenius/dify/pull/39509\r\n* fix: prevent agent preview actions from being clipped by @iamjoel in https://github.com/langgenius/dify/pull/39510\r\n* chore(web): improve web accessibility semantics by @linw1995 in https://github.com/langgenius/dify/pull/39505\r\n* fix(web): allow clipboard writes in embedded apps by @WTW0313 in https://github.com/langgenius/dify/pull/39511\r\n* fix(web): hydrate workspace permissions before navigation render by @lyzno1 in https://github.com/langgenius/dify/pull/39524\r\n* chore: add web shell code owners by @lyzno1 in https://github.com/langgenius/dify/pull/39526\r\n* fix: include CSRF token when fetching skill file content by @iamjoel in https://github.com/langgenius/dify/pull/39527\r\n* fix(agent-v2): link API reference to agent guide by @lyzno1 in https://github.com/langgenius/dify/pull/39534\r\n* test(e2e): wait for app list before menu interaction by @lyzno1 in https://github.com/langgenius/dify/pull/39538\r\n* fix(agent): block unpublished agents in workflows by @zyssyz123 in https://github.com/langgenius/dify/pull/39532\r\n* fix: fix when tool execute in progress tool_meta miss tool_provider_type by @fatelei in https://github.com/langgenius/dify/pull/39513\r\n* feat(dataset): add document processing tasks by @hyoban in https://github.com/langgenius/dify/pull/39326\r\n* test: use caplog in ext login tests by @EvanYao826 in https://github.com/langgenius/dify/pull/39542\r\n* fix(web): patch React Server Components DoS by @lyzno1 in https://github.com/langgenius/dify/pull/39539\r\n* feat(dataset): add document detail by @hyoban in https://github.com/langgenius/dify/pull/39361\r\n* refactor(web): remove obsolete route prefix handler by @lyzno1 in https://github.com/langgenius/dify/pull/39545\r\n* refactor: remove backend-only system feature fields by @lyzno1 in https://github.com/langgenius/dify/pull/39543\r\n* fix(web): prevent customization horizontal overflow by @Jingyi-Dify in https://github.com/langgenius/dify/pull/39557\r\n* test: use sqlite3 session in test_datasource_provider_service by @asukaminato0721 in https://github.com/langgenius/dify/pull/38695\r\n* test: use sqlite3 session in test_human_input_service by @asukaminato0721 in https://github.com/langgenius/dify/pull/38697\r\n* refactor(web): migrate vector space billing query to contract client by @EvanYao826 in https://github.com/langgenius/dify/pull/39558\r\n* test: use sqlite3 session in test_webhook_service by @asukaminato0721 in https://github.com/langgenius/dify/pull/38699\r\n* test: use sqlite3 session in test_workflow_execute_task by @asukaminato0721 in https://github.com/langgenius/dify/pull/38704\r\n* test: use sqlite3 session in test_easy_ui_message_end_files by @asukaminato0721 in https://github.com/langgenius/dify/pull/38706\r\n* test: use sqlite3 session in test_wraps by @asukaminato0721 in https://github.com/langgenius/dify/pull/38716\r\n* test: use sqlite3 session in test_metadata_nullable_bug by @asukaminato0721 in https://github.com/langgenius/dify/pull/38717\r\n* test: use sqlite3 session in test_llm_quota by @asukaminato0721 in https://github.com/langgenius/dify/pull/38720\r\n* test: use sqlite3 session in test_encrypter by @asukaminato0721 in https://github.com/langgenius/dify/pull/38726\r\n* test: use sqlite3 session in test_workflow_node_execution_offload by @asukaminato0721 in https://github.com/langgenius/dify/pull/38728\r\n* test: use sqlite3 session in test_pipeline_template_base by @asukaminato0721 in https://github.com/langgenius/dify/pull/38730\r\n* chore: Grammar fix in VDB provider README (\"a importable\") by @SpiliosDimakopoulos in https://github.com/langgenius/dify/pull/39577\r\n* chore: Broken docker-compose.yaml link in Hindi README (missing slash) by @SpiliosDimakopoulos in https://github.com/langgenius/dify/pull/39576\r\n* docs: fix typos in ValueSourceType docstring  by @SpiliosDimakopoulos in https://github.com/langgenius/dify/pull/39573\r\n* chore(agent): update && simplify readme by @wylswz in https://github.com/langgenius/dify/pull/39584\r\n* refactor(agents): simplify repository context by @lyzno1 in https://github.com/langgenius/dify/pull/39583\r\n* docs: Broken Grafana link in Turkish README (placeholder text instead of URL) by @SpiliosDimakopoulos in https://github.com/langgenius/dify/pull/39575\r\n* fix(dify-ui): honor instant popup transitions by @lyzno1 in https://github.com/langgenius/dify/pull/39572\r\n* fix(web): prevent search hotkey hydration mismatch by @lyzno1 in https://github.com/langgenius/dify/pull/39574\r\n* refactor: move trial app capability out of system features by @lyzno1 in https://github.com/langgenius/dify/pull/39562\r\n* refactor(workflow): remove hook barrel exports by @lyzno1 in https://github.com/langgenius/dify/pull/39588\r\n* fix(workflow): stop dropping unsaved edits when collaboration never c… by @BenjaminX in https://github.com/langgenius/dify/pull/39579\r\n* test: use sqlite3 session in test_snippet by @asukaminato0721 in https://github.com/langgenius/dify/pull/38691\r\n* test: use sqlite3 session in test_message_service by @asukaminato0721 in https://github.com/langgenius/dify/pull/38698\r\n* fix(web): stop chunk length/overlap inputs collapsing to an unusable width in narrow containers by @dparkmit24 in https://github.com/langgenius/dify/pull/39600\r\n* feat: add CE telemetry report by @FFXN in https://github.com/langgenius/dify/pull/39452\r\n* fix(api): honor array-element limit and byte budget for list[File] in VariableTruncator (#39218) by @Taranum01 in https://github.com/langgenius/dify/pull/39220\r\n* fix: The expiration time for web app login to JWT is incorrectly set. by @FFXN in https://github.com/langgenius/dify/pull/39537\r\n* fix(rag): stop the document cleaner from stripping valid characters ï, ¿, ¾ by @winklemad in https://github.com/langgenius/dify/pull/39215\r\n* refactor(web): simplify Dify logo theming by @lyzno1 in https://github.com/langgenius/dify/pull/39580\r\n* feat(api): expose app mode in webapp site response by @linw1995 in https://github.com/langgenius/dify/pull/39607\r\n* fix: preserve spaces during recursive text splitting by @CYJ1226 in https://github.com/langgenius/dify/pull/39498\r\n* chore: bump pypdf from 6.10.2 to 6.14.2 in /dify-agent by @dependabot[bot] in https://github.com/langgenius/dify/pull/39502\r\n* fix(agent): expose publish state from composer by @zyssyz123 in https://github.com/langgenius/dify/pull/39615\r\n* chore(deps): bump the github-actions-dependencies group with 6 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/39603\r\n* feat(inner_api): add endpoint to invalidate plugin model providers cache by @GareArc in https://github.com/langgenius/dify/pull/39468\r\n* fix: align workspace card plan ownership by @lyzno1 in https://github.com/langgenius/dify/pull/39616\r\n* feat: add amptitude to new agent by @iamjoel in https://github.com/langgenius/dify/pull/39608\r\n* fix: use jinja sandbox by @wylswz in https://github.com/langgenius/dify/pull/39609\r\n* feat(agent): add a squid proxy for agent sandbox by @wylswz in https://github.com/langgenius/dify/pull/39544\r\n* fix(web): stop reporting workspace status by @lyzno1 in https://github.com/langgenius/dify/pull/39626\r\n* fix(workflow): lazy-load Loro collaboration runtime by @lyzno1 in https://github.com/langgenius/dify/pull/39631\r\n* fix(api): wait for workflow worker cleanup before task completion by @linw1995 in https://github.com/langgenius/dify/pull/39614\r\n* perf(web): lazy-load Home creation modals by @lyzno1 in https://github.com/langgenius/dify/pull/39634\r\n* perf: add lightweight recent apps endpoint by @hjlarry in https://github.com/langgenius/dify/pull/39625\r\n* test: use pristine file-backed SQLite fixtures by @escape0707 in https://github.com/langgenius/dify/pull/39624\r\n* test: use sqlite3 session in test_workflow_run_service by @asukaminato0721 in https://github.com/langgenius/dify/pull/38701\r\n* test: use sqlite3 session in test_draft_var_loader_simple by @asukaminato0721 in https://github.com/langgenius/dify/pull/38702\r\n* test: use sqlite3 session in test_utils by @asukaminato0721 in https://github.com/langgenius/dify/pull/38729\r\n* test: use sqlite3 session in test_workflow_comment_service by @asukaminato0721 in https://github.com/langgenius/dify/pull/38700\r\n* test: use sqlite3 session in test_llm_generator_missing by @asukaminato0721 in https://github.com/langgenius/dify/pull/38742\r\n* fix: gate service API, MCP and trigger surfaces on enterprise license by @GareArc in https://github.com/langgenius/dify/pull/39635\r\n* feat: add bearer auth to agent backend by @wylswz in https://github.com/langgenius/dify/pull/39622\r\n* refactor: make agent composer save and publish state consistent by @iamjoel in https://github.com/langgenius/dify/pull/39637\r\n* chore: bump gitpython from 3.1.52 to 3.1.54 in /api by @dependabot[bot] in https://github.com/langgenius/dify/pull/39619\r\n* test: use sqlite3 session in test_api by @asukaminato0721 in https://github.com/langgenius/dify/pull/38733\r\n* chore(deps): bump golang.org/x/net from 0.53.0 to 0.55.0 in /dify-agent-runtime by @dependabot[bot] in https://github.com/langgenius/dify/pull/39025\r\n* test: use sqlite3 session in test_extract_thread_messages by @asukaminato0721 in https://github.com/langgenius/dify/pull/38739\r\n* chore: bump pymdown-extensions from 10.21.2 to 11.0 in /dify-agent by @dependabot[bot] in https://github.com/langgenius/dify/pull/39618\r\n* test: use SQLite sessions in rag retrieval by @asukaminato0721 in https://github.com/langgenius/dify/pull/39049\r\n* chore(deps): bump the storage group across 1 directory with 3 updates by @dependabot[bot] in https://github.com/langgenius/dify/pull/39604\r\n* fix: prevent the agent build draft UI from flashing during apply by @iamjoel in https://github.com/langgenius/dify/pull/39642\r\n* test: use SQLite sessions in services core by @asukaminato0721 in https://github.com/langgenius/dify/pull/39057\r\n* test: use SQLite sessions in core memory by @asukaminato0721 in https://github.com/langgenius/dify/pull/39066\r\n* fix(ui): unify combobox trigger focus rings by @lyzno1 in https://github.com/langgenius/dify/pull/39643\r\n* test: use SQLite sessions in controllers service api by @asukaminato0721 in https://github.com/langgenius/dify/pull/39069\r\n* chore: update workspace dependencies by @lyzno1 in https://github.com/langgenius/dify/pull/39641\r\n* fix(workflow): preserve latest collaboration session by @lyzno1 in https://github.com/langgenius/dify/pull/39646\r\n* test: use SQLite sessions in core ops by @asukaminato0721 in https://github.com/langgenius/dify/pull/39072\r\n* test: use SQLite sessions in core app by @asukaminato0721 in https://github.com/langgenius/dify/pull/39075\r\n* test: use SQLite sessions in core tools by @asukaminato0721 in https://github.com/langgenius/dify/pull/39077\r\n* fix(web): align tour trigger DOM order by @lyzno1 in https://github.com/langgenius/dify/pull/39654\r\n* fix(workflow): align block icon vector sizes by @Jingyi-Dify in https://github.com/langgenius/dify/pull/39657\r\n* fix(cli): decouple release script tests from the live compat window by @GareArc in https://github.com/langgenius/dify/pull/39658\r\n* feat(plugin): allow disabling the tenant plugin model providers cache by @GareArc in https://github.com/langgenius/dify/pull/39632\r\n* chore: bump version to 1.16.1 by @wylswz in https://github.com/langgenius/dify/pull/39653\r\n* fix: fix mcp output_schema is optional by @fatelei in https://github.com/langgenius/dify/pull/39453\r\n\r\n## New Contributors\r\n* @wanxiankai made their first contribution in https://github.com/langgenius/dify/pull/39237\r\n* @pepepeboom made their first contribution in https://github.com/langgenius/dify/pull/39216\r\n* @rkfshakti made their first contribution in https://github.com/langgenius/dify/pull/39322\r\n* @lntutor made their first contribution in https://github.com/langgenius/dify/pull/39229\r\n* @zcxGGmu made their first contribution in https://github.com/langgenius/dify/pull/39374\r\n* @dparkmit24 made their first contribution in https://github.com/langgenius/dify/pull/39410\r\n* @samzong made their first contribution in https://github.com/langgenius/dify/pull/39459\r\n* @SpiliosDimakopoulos made their first contribution in https://github.com/langgenius/dify/pull/39577\r\n* @Taranum01 made their first contribution in https://github.com/langgenius/dify/pull/39220\r\n* @winklemad made their first contribution in https://github.com/langgenius/dify/pull/39215\r\n* @CYJ1226 made their first contribution in https://github.com/langgenius/dify/pull/39498\r\n\r\n**Full Changelog**: https://github.com/langgenius/dify/compare/1.16.0...1.16.1","reactions":{"url":"https://api.github.com/repos/langgenius/dify/releases/360820489/reactions","total_count":1,"+1":1,"-1":0,"laugh":0,"hooray":0,"confused":0,"heart":0,"rocket":0,"eyes":0},"mentions_count":42}