Commit Graph
826 Commits
Author SHA1 Message Date
Nico AndréandGitHub d6f693da85 feat(*): introduce MCP server (#26371) 2026-05-27 16:27:48 +02:00
Bassel KansoandGitHub 1606e26317 fix(admin): avoid serving extensionless admin paths as static files (#26368) 2026-05-26 11:49:34 +03:00
Nico AndréandGitHub ebba42a369 feat(admin-tokens): remove adminTokens future flag (#26391) 2026-05-21 15:31:38 +02:00
df91d08122 fix(admin): gate expiresIn deprecation on user auth options (#26298)
* fix(admin): gate expiresIn deprecation on user auth options

getTokenOptions merges defaultJwtOptions, so options.expiresIn is always
set even when the project never configured admin.auth.options.expiresIn.
That made the bootstrap deprecation warn on every startup.

Read raw admin.auth.options via a small helper next to the token service
and cover it with unit tests.

Refs https://github.com/strapi/strapi/issues/25989

* chore: prettier

---------

Co-authored-by: Ben Irvin <ben@innerdvations.com>
2026-05-18 15:12:14 +00:00
Mark Kaylor 83fec11da9 Merge remote-tracking branch 'origin/main' into develop 2026-05-13 19:12:11 +02:00
c3d9daef94 fix(core/admin): admin and content api tokens retro-compatibility (#26313)
* fix(core/admin): api-token service treats kind.null as content-api

* fix(core/admin): services expose backward compatible 'api-token' shim

* enhancement(core/admin): api-token service uses pick instead of omit

* fix(core/admin): strategies content-api-token uses api-token-content-api service

* test: ensure api-token alias works

* test: fix useDocumentLayout for msw upgrade

---------

Co-authored-by: Ben Irvin <ben@innerdvations.com>
2026-05-13 14:57:11 +02:00
Andrei LandGitHub b5452ab89f chore(eslint): migrate .eslintrc + .eslintignore to .eslintrc.cjs (#26216)
* chore(eslint): migrate .eslintrc + .eslintignore to .eslintrc.cjs

Consolidates the per-package ESLint setup into a single typed
`.eslintrc.cjs` file across the monorepo (177 files touched).

Why
- `.eslintignore` is removed in ESLint v9/v10. Folding ignore patterns
  into `ignorePatterns` inside the rc file is the supported migration
  path and unblocks future ESLint upgrades (which will likely be needed
  alongside the in-flight TypeScript 6 migration).
- `.cjs` extension is explicit about module format, so the configs keep
  working if any package later adopts `"type": "module"` (no CJS/ESM
  surprises).
- Wrapping each config in `// @ts-check` + a `Linter.Config`-typed
  `const config` block gives editor autocomplete and catches typos.
  Surfaced two real duplicates in
  `eslint-config-custom/back/typescript.js`
  (`node/no-unsupported-features/es-syntax`,
  `node/no-missing-import`), now deduplicated.
- `extends` references switched from the `custom/*` shorthand to the
  explicit `eslint-config-custom/*` package name. ESLint resolves both,
  but the explicit form makes the source unambiguous.
- Added `coverage/` to `ignorePatterns` so coverage output produced
  inside a workspace is not linted.

Misc
- `examples/kitchensink` had ESLint configured but no `lint` script;
  added one so the config actually runs.
- `nx.json` hash inputs updated:
  - removed `.eslintignore` (no longer exists)
  - replaced `{projectRoot}/.eslintrc.js` with
    `{projectRoot}/**/.eslintrc.cjs` so nested package configs are also
    part of the cache key (the previous glob missed them).
- `packages/utils/upgrade/tsconfig.eslint.json` include path updated
  from `.eslintrc.js` to `.eslintrc.cjs`.

Verification
- `eslint --print-config` resolves cleanly on sampled back/front
  packages (admin, users-permissions, upload).
- Full `pnpm -r lint` is clean.

* chore(eslint): set tsconfigRootDir for vscode-eslint typed linting

CLI lint resolved tsconfig paths via cwd, but vscode-eslint runs from
the workspace root and could not locate per-package tsconfigs. Set
parserOptions.tsconfigRootDir to __dirname in each package's
.eslintrc.cjs so the editor resolves typed-lint configs correctly.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* chore(eslint): self-ignore configs, scope coverage to jest packages

- Replace `env: { es6: true }` workaround with `.eslintrc.cjs` in
  ignorePatterns so eslint never lints the config file itself
  (root cause of the "const is not a keyword" parse error in es5)
- Add `.eslintrc.cjs` to ignorePatterns across all configs that
  were missing it
- Restrict `coverage/` ignorePatterns to workspace roots that
  actually run jest; drop from non-test packages and admin/server
  subdir configs (tests run from the workspace root)
2026-05-12 07:32:12 +00:00
ZiyiandGitHub fa6299100d feat(content-manager): add Zod 4 foundation utilities (#25574) 2026-04-30 14:55:04 +02:00
Nico AndréandGitHub 52b8fd9e3d feat(admin): api token supports admin permissions and admin user ownership (#25657) 2026-04-29 17:57:36 +02:00
Nico AndréandGitHub bc0b0e9449 feat(core/*): introduce strapi.ai namespace (#25886) 2026-04-17 08:46:33 +02:00
Ben IrvinandGitHub 79a590a581 security(feat): add strictParam, addQueryParams, addBodyParams (#25528) 2026-02-24 13:51:33 +01:00
Jamie HowardGitHubCopilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
1153e05e6e [CM] request-scoped caching and parallelisation (#24999)
* fix(core): request-scoped model cache for validateParams

* chore(model-cache): enhance documentation

* feat: cache permission calculations in sanitize and validate services, reduce db queries

* chore: replace hardcoded prefix with constant for content manager store keys

* feat: parallel tranversal and further caching

* chore: extract shared utilities

* feat: add performance benchmarking for deeply nested content management

* chore: improve error handling in parallel processing of arrays

* chore: add TODO

* feat: enhance performance benchmark script

* Potential fix for code scanning alert no. 65: Clear-text logging of sensitive information

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>

* fix: improve error message

* chore(content-manager): revert dynamic populate depth

* feat: optimize permission checking and caching mechanisms

* test: componentService strapi mock

* fix: permission-checker tests types

* fix: remove redundant permission check in collection-types controller

* chore: remove performance benchmarking files and related configurations

---------

Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
2026-01-22 15:49:27 +00:00
Marco A.andGitHub e343fe10e7 chore: remove all occurances of aiLicenseKey (#24908) 2026-01-16 13:14:45 +02:00
Jamie HowardandGitHub 16559ac3c8 fix(users-permissions): implement session revocation on password changes (#25168) 2026-01-13 09:41:45 +01:00
Bassel KansoandGitHub a767343b1e fix(types): adding missing config types (#24905) 2025-12-19 16:28:12 +02:00
markkaylorandGitHub 4310e958c5 chore(admin): isolate ai apis to ee folder (#24834) 2025-11-20 11:01:48 +01:00
markkaylorandGitHub ef9fb10a18 fix(admin): ai admin config can be set to true for non growth license (#24835) 2025-11-13 11:39:49 +01:00
Bassel KansoandGitHub 80ec2ee668 fix: prevent admins from deleting themselves (#24739) 2025-11-03 12:27:36 +02:00
Rémi de JuvignyandGitHub c337ee9b99 enhancement: set up ai token in memory cache (#24720) 2025-10-29 04:44:02 -04:00
Bassel KansoandGitHub d85a0f0ebf Fix/ctb reload (#24551)
* fix(admin): prevent MIME type conflicts during CTB server restarts

* fix: remove unecessary changes
2025-10-17 14:22:53 +02:00
Jamie HowardandGitHub 163598782b fix: pass context to cookie options in authentication and session-auth utilities (#24602)
* fix: pass context to cookie options in authentication and session-auth utilities

* fix: update cookie options to use secure request context in authentication and session-auth utilities

* refactor: formatting
2025-10-17 12:04:24 +01:00
Jamie HowardandGitHub 91f3ae970f enhancement: cookie security configuration (#24524) 2025-10-14 09:15:09 +02:00
+4 5e751dbf11 feat: ai generated image metadata (#24422)
* feat: chat

feat: apply changes
feat: integrate with ctb

feat: marker

chore: remove comment

feat: new chat

feat: copy message

feat: upload modal

feat: upload file

feat: errors and stop chat

chore: refactor transforms
chore: format relations

chore: chat title

chore: remove architect dependency

feat: empt state

chore: improve text area focus

* feat: chat imports

feat: resizable text area
fix: re add chat
chore: translations
feat: env vars

fix: minor chat issues

feat: feedback

fix: rebase

feat: import folder

feat: limits

feat: attachments dropzone

chore: file attachments cleanup
chore: track chat id

feat: figma import

fix :token

feat: figma token
fix: attribute status when chat makes updates

feat: image upload

* feat: staging integration

* chore: remove logs

* feat: use tool call result instead of annotation

* fix: invalid component uid

* chore: chat input focus ring

* fix: ui issues

* fix: default draft and publish and do not modify singular name

* fix: minor transforms

* fix: linting

* test(front): update snapshots

* chore: fix misplaced getstarted project schema

* chore: remove unused import

* security: validate exact path of host

* fix: define process better for playwright to work

* fix: process env in vite config for playwright

* chore: use production url

* feat(ctb): Tracking events for AI Chat interaction (#23731)

* feat(content-type-builder): WIP tracking events for chat interactions

* fix: typescript build errors

* fix: event name and build errors

* chore: send ai key with analytics

* chore: actually send licenseKey

* chore: send ailicensekey with groupproperties

* fix: didStartNewChat

* chore: track new chats

* feat: enhance attachment type management in AI chat components

* fix: update chat status handling in ChatProvider component

* feat: add optional aiLicenseKey to Strapi interface

---------

Co-authored-by: Jamie Howard <jhoward1994@gmail.com>

* refactor: remove didusersendmessage tracking event (#23777)

* fix: merge conflict

* fix: send projectId to AI server

* feat: add a enabled config for AI features (#24060)

* feat: add getAiToken endpoint (#24172)

* feat: add getAiToken route

* fix: change route name, remove project id

* fix: type issue and fix schema

* feat: retrieve ai token from frontend (#24226)

---------

Co-authored-by: Jamie Howard <jhoward1994@gmail.com>

* fix: use primary500 for links in ai chat

* chore: migrate to AI SDK v5 (#24252)

* fix: migrate code for v5

* t:wq

* feat: push schemas to ctb

* chore: remove old code

* chore: remove ts-no-check

* chore: fix comment

* fix: ai server logs (#24318)

* test(back): fix error log tests

---------

Co-authored-by: Marc Roig <marc12info@gmail.com>

* fix: configure ai ctb csp middleware without overriding user or default config

* future(upload): generate image metadata on file upload (#24365)

* chore: create aiMetadata service with isEnabled

* chore: extract getAiToken to service

* fix: unit test

* future(upload): generate metadata with ai

* fix: ts build

* fix: only send images to ai server

* test: add unit tests

* fix: unit test

---------

Co-authored-by: markkaylor <mark.kaylor@strapi.io>

* AI media lib bulk update (#24414)

* feat(packages): adding endpoint for bulk update

* feat(packages): linting

* feat(packages): adding tests

* feat(packages): cleanup

* feat: guided tour for ai ctb (#24411)

* feat(upload): adding aiMetadata into settings (#24468)

feat(upload): adding aiMetadata into settings

* feat: add AI upload modal (#24407)

* chore: create aiMetadata service with isEnabled

* chore: extract getAiToken to service

* fix: unit test

* future(upload): generate metadata with ai

* feat: add AI upload modal

* feat: add edit and delete to upload modal

* fix: remove sparkle icon on edit

* fix: add error handling

* chore: refactor ai upload modal reducer

* fix: catch ai token generation error

* chore: add useBulkEdit hook

* feat: connect to bulk edit endpoint

* fix: e2e test

* fix: ci in both ce and ee

---------

Co-authored-by: Rémi de Juvigny <remi.dejuvigny@strapi.io>
Co-authored-by: Rémi de Juvigny <8087692+remidej@users.noreply.github.com>

* feat(upload): applying ai enabled logic for media library (#24486)

feat(upload): applying ai enabled logic for media library

* fix: sparkle icon

* fix: set ai server prod url

* fix: default config to enabled

* fix: cursor moving to the end when editing text

* fix: upload in the right folder

* fix: close modal when deleting last item

* chore: use STRAPI_AI_URL everywhere

* fix: bulk upload from frontend

* fix: restore sparkle icon on inputs

* fix: unit test ci

* feat(upload): generating metadata from thumbnail (#24515)

* feat(upload): generating metadata from thumbnail

* feat(upload): fixing linting issue

* feat(upload): fixing tests and addressiing feedback

* feat(upload): fixing lint

* fix: check for cms-ai entitlement

* fix: tests

* fix: race condition failing front unit tests

---------

Co-authored-by: Marc-Roig <marc12info@gmail.com>
Co-authored-by: Ben Irvin <ben@innerdvations.com>
Co-authored-by: Bassel Kanso <bassel.kanso@strapi.io>
Co-authored-by: Ben Irvin <ben.irvin@strapi.io>
Co-authored-by: Jamie Howard <jhoward1994@gmail.com>
Co-authored-by: Jamie Howard <48524071+jhoward1994@users.noreply.github.com>
Co-authored-by: Bassel Kanso <basselkanso82@gmail.com>
Co-authored-by: Ziyi <daydreamnation@live.com>
Co-authored-by: markkaylor <mark.kaylor@strapi.io>
Co-authored-by: Araksya Gevorgyan <31159659+araksyagevorgyan@users.noreply.github.com>
Co-authored-by: Adrien L <thewebsdoor@gmail.com>
2025-10-07 06:14:34 -04:00
Ben IrvinandGitHub 8b11c0eca0 feat(ai): AI Chat for Schema Creation (#23730) 2025-10-02 13:13:47 +02:00
ca055bd025 fix: support auth.options config in sessions (#24460)
* fix: support auth.options config in sessions

* chore: fix lint

* feat(users-permissions): add jwt algorithm configuration

* refactor: remove deprecated admin.auth.options warnings

* test(token): add TypeScript error suppression for mock config in token tests

* feat(bootstrap): re-add warning for deprecated expiresIn option in session settings

---------

Co-authored-by: Jamie Howard <jhoward1994@gmail.com>
Co-authored-by: Jamie Howard <48524071+jhoward1994@users.noreply.github.com>
2025-09-29 14:53:29 +01:00
Araksya GevorgyanandGitHub 281b331dc7 feat(homepage): add endpoints for widget move and resize actions (#24358)
* feat(homepage): add endpoints for widget move and resize actions
2025-09-24 16:57:09 +02:00
Jamie HowardandGitHub d23f1485e5 feat: Advanced Session Configuration (#24346) 2025-09-23 12:04:29 +02:00
markkaylorandGitHub 09f7c11cb1 chore(guided-tour): remove dead code (#24327) 2025-09-08 15:31:42 +02:00
markkaylorandGitHub e4700a5963 enhancement: improve guided tour (#24094) 2025-08-18 09:54:58 +02:00
Adrien LandGitHub 6d264f56ba feat: key statistics homepage widget (#23938) 2025-07-31 09:36:25 +02:00
ffc36acb30 Resolved error thrown when trying to filter users by email (#23977)
* fix(admin): Resolved error thrown when trying to filter users by email

* fix(admin): add isActive to allowed fields

---------

Co-authored-by: Ziyi Yuan <daydreamnation@live.com>
2025-07-28 16:54:35 +02:00
Bassel KansoandGitHub 725a3c5254 fix(api-tokens): update lastUsedAt if it's null (#23870) 2025-07-07 09:50:18 +03:00
markkaylorandGitHub 74fd566f2a future: add content-type builder tour (#23844) 2025-07-02 17:00:52 +02:00
markkaylorandGitHub ed7c7c54ff future: add admin endpoint to get guided tour meta data (#23786) 2025-06-26 16:21:02 +02:00
Arthur MoreauandGitHub 4ac7f54e67 feat(cli): Introduce the Growth Trial prompt (#23498) 2025-06-03 19:58:02 +02:00
Jamie HowardandGitHub 83775a7d2a fix(content-type): improve field validation logic in permission settings (#23581)
* fix(content-type): improve field validation logic in permission settings

* fix(content-manager): enhance validation for required fields based on user permissions

* fix(content-manager): update error handling for unreadable required fields and improve validation messaging

* test(content-manager): add e2e test for publishing with insufficient permissions on required fields

* fix(admin): refine permission field validation logic and update tests for accuracy
2025-05-29 11:23:21 +01:00
Ben IrvinandGitHub 063fe6b9a4 fix: use text for encrypted key of viewable api token (#23477) 2025-05-06 16:16:59 +02:00
Bassel KansoandGitHub 5989d3c7be enhancement: make api tokens viewable (#23439) 2025-05-05 11:06:33 +03:00
markkaylorandGitHub 167a9bf54f chore(homepage): move widget controllers, services, and routes from admin to content-manager (#23407) 2025-04-24 11:01:12 +02:00
markkaylorandGitHub 51ac3e3622 future(homepage): refactor internal widgets to use api (#23352) 2025-04-14 17:08:21 +02:00
e61eff51f9 fix: types for custom http response APIs (#21614)
* fix: types for custom http response APIs

* fix: remove deprecated ignore error

---------

Co-authored-by: Ben Irvin <ben.irvin@strapi.io>
Co-authored-by: Bassel Kanso <basselkanso82@gmail.com>
2025-02-26 19:51:34 +02:00
Rémi de JuvignyandGitHub 37494b34d1 fix: apply advanced permissions in content manager home widgets (#22921)
* fix: apply permission conditions in content manager home widgets

* chore: extract getPermissionChecker
2025-02-18 11:18:52 -05:00
4e3c397615 fix: add new email ratelimit middleware and apply to admin pass reset (#22813)
* fix: add new email ratelimit middleware and apply to admin pass reset

* fix: resolve proper middleware name

* fix: prettier fix for middleware export

* fix: config loading and dependency lint

* fix: build error on type unknown

* fix: pr feedback on setting default config

Co-authored-by: Ben Irvin <ben.irvin@strapi.io>

* fix: remove unused has from lodash

---------

Co-authored-by: Ben Irvin <ben.irvin@strapi.io>
Co-authored-by: Jamie Howard <48524071+jhoward1994@users.noreply.github.com>
2025-02-18 04:31:50 -05:00
Ben Irvin 082492f357 Merge branch 'develop' into advisory-fix-1 2025-02-14 10:59:05 +01:00
Ben Irvin c99d5d32b6 Merge remote-tracking branch 'upstream/develop' into develop 2025-02-14 10:40:43 +01:00
dhokoandGitHub 4656e5d415 enhancement: better log informations about the errors for yup validations messages (#22001) 2025-02-06 15:42:10 +02:00
Alexandre Bodin 3be592e7ed Merge branch 'develop' into chore/rollup 2025-01-29 17:47:50 +01:00
Ben Irvin e07a466901 fix: validation message shape 2025-01-29 16:54:15 +01:00
Convly 5bd5447232 enhancement: add default api token on app creation 2025-01-27 17:04:10 +01:00
Alexandre Bodin 92055a7fb1 chore: use rollup
chore: fetch template only if name matches name convention

chore: linting

chore: fix tests

chore: fix npm scripts

test: try to fix test
2025-01-23 16:28:23 +01:00