dify/web/app
yungle246 be6612f454 feat: allow knowledge base API keys to be scoped to a single dataset
Reintroduce the nullable api_tokens.dataset_id column (dropped in 2e9819ca5b28)
so dataset API keys can opt into per-knowledge-base scoping:

- NULL dataset_id keeps today's workspace-wide behavior, so every existing key
  and the existing /datasets/api-keys create route are unchanged.
- validate_dataset_token rejects a bound key for any other dataset, and for
  endpoints that carry no dataset id (e.g. list-all), with 403.
- CachedApiToken carries dataset_id with a None default so cache entries
  written before deploy keep deserializing.
- The per-dataset console routes in apikey.py (previously dead code that 500ed
  on a missing ApiToken.dataset_id) now create bound keys; their list returns
  bound keys plus workspace keys so the dataset page shows the full access
  picture.
- Frontend: the knowledge base API access popover gains an API keys entry; the
  secret key modal accepts datasetId, shows a scope column, and offers a
  workspace / this-knowledge-base scope choice on create. New strings are
  localized for all 23 locales.
2026-06-11 11:41:47 +09:00
..
(commonLayout) feat: snippet (#37046) 2026-06-05 09:38:42 +00:00
(humanInputLayout)/form/[token] feat(api): introduce select, file and file list form input types to Human Input node (#36322) 2026-06-04 01:54:28 +00:00
(shareLayout) feat(web): create system-features vertical (#36894) 2026-06-01 10:15:25 +00:00
account feat(web): create system-features vertical (#36894) 2026-06-01 10:15:25 +00:00
activate feat(web): create system-features vertical (#36894) 2026-06-01 10:15:25 +00:00
auth/refresh feat(web): add server oRPC client (#36856) 2026-05-31 13:14:28 +00:00
components feat: allow knowledge base API keys to be scoped to a single dataset 2026-06-11 11:41:47 +09:00
device feat(web): create system-features vertical (#36894) 2026-06-01 10:15:25 +00:00
education-apply fix(web): use generated account-profile contracts (#36927) 2026-06-02 07:28:05 +00:00
forgot-password feat(web): create system-features vertical (#36894) 2026-06-01 10:15:25 +00:00
init refactor(dify-ui): finish primitive migration from web/base/ui to @langgenius/dify-ui (#35349) 2026-04-17 08:46:11 +00:00
install feat(web): create system-features vertical (#36894) 2026-06-01 10:15:25 +00:00
oauth-callback feat: the frontend part of mcp (#22131) 2025-07-10 14:14:02 +08:00
reset-password feat(web): create system-features vertical (#36894) 2026-06-01 10:15:25 +00:00
signin fix(web): auth form state management (#37003) 2026-06-03 09:14:01 +00:00
signup fix(web): attach Amplitude user ID before firing registration event (#37091) 2026-06-05 06:31:27 +00:00
styles fix(web): align viewport and overlay accessibility (#37142) 2026-06-08 01:45:39 +00:00
error.tsx fix(web): prefetch workspace and guard routes with contract query (#36870) 2026-05-31 14:02:00 +00:00
layout.tsx fix(web): align viewport and overlay accessibility (#37142) 2026-06-08 01:45:39 +00:00
page.tsx feat: marketplace and oauth fixes (#35509) 2026-04-24 07:53:14 +00:00
routePrefixHandle.tsx refactor: route next/navigation through compat re-export (#33636) 2026-03-18 12:57:03 +08:00