15119 Commits

Author SHA1 Message Date
Niels Kaspers 9d5a027191 fix(review-workflows): implement incremental loading in assignee dropdown (#25967)
* fix(review-workflows): fetch all users in assignee dropdown

The AssigneeSelect component passed no pagination params to
useAdminUsers, which defaults to pageSize 10. Users with more than
10 admin accounts could not see or select all assignees.

Pass pageSize: 100 so the dropdown lists all available users.

Fixes #25945

* fix(review-workflows): incremental loading + preserve current assignee

Replaces the fixed pageSize:100 fetch with the same incremental Combobox
pattern used by the admin-users filter (Filters.tsx): grow pageSize on
onLoadMore, debounce server-side search via _q, and reset both on close.

Also keeps the currently assigned user in the option list when they fall
outside the loaded page or active search, so the Combobox never loses
its value.

* fix(review-workflows): improve assignee dropdown pagination search

---------

Co-authored-by: Bassel Kanso <basselkanso82@gmail.com>
2026-04-30 18:01:57 +00:00
Andrei L 90623baa6f fix(admin): clean up lazy component registration warnings (#25015)
* fix(admin): don't warn when Component is missing in addMenuLink/addSettingsLink

* fix: add some missing StrapiApp types

* fix(admin): clean up lazy component registrations

---------

Co-authored-by: Bassel Kanso <basselkanso82@gmail.com>
2026-04-30 16:27:48 +03:00
Ziyi fa6299100d feat(content-manager): add Zod 4 foundation utilities (#25574) 2026-04-30 14:55:04 +02:00
Adrien L 8156393f8f Merge pull request #26170 from strapi/main 2026-04-30 14:28:15 +02:00
Boaz Poolman ec72af97f0 Fix polymorphic relations in the document service API (#26099)
* chore: remove early exit for morph relation types

* fix: issues with creating morphToOne relations

* chore: add tests

* test: add polymorphic relations tests

---------

Co-authored-by: Ben Irvin <ben@innerdvations.com>
2026-04-30 11:58:02 +02:00
guoyangzhen 36b6d68198 fix: prevent trailing ? in URL when params is empty object (#25724) (#25900)
Co-authored-by: Adrien Lepoutre <3693028+Adzouz@users.noreply.github.com>
2026-04-30 09:29:38 +02:00
Nico André 52b8fd9e3d feat(admin): api token supports admin permissions and admin user ownership (#25657) 2026-04-29 17:57:36 +02:00
Adzouz 11554fe43e release: 5.44.0 2026-04-29 13:06:31 +00:00
Boaz Poolman 9413a069c5 Merge pull request #25447 from strapi/feature/extended-ctb-api-for-plugins
enhancement: extended ctb api for plugins
2026-04-29 11:55:09 +02:00
Ziyi a33f5f5990 fix(document-service): discard-draft 500 on self-referential manyToMany relations (#26152) 2026-04-29 11:53:47 +02:00
markkaylor 403491df80 fix(upload): sharp concurrency and cache leads to OOM (#26046)
Co-authored-by: Ben Irvin <ben@innerdvations.com>
2026-04-29 10:01:23 +02:00
Adrien L f7d4979d69 fix(content-manager): prevent crash on detached DZ component (#26148)
Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-29 09:32:21 +02:00
akash-dabhi-qed 4d3719a327 fix: contain absolute descendants in OverflowingItem (#26133)
Co-authored-by: Adrien Lepoutre <3693028+Adzouz@users.noreply.github.com>
2026-04-28 11:50:23 +02:00
Nico André f78edc3bc9 chore: release v5.43.0 update develop (#26100) 2026-04-24 17:17:47 +02:00
Kellen Bolger f36d919a6d fix(review-workflows): pass locale params to useDocument in StageSelect and AssigneeSelect (#26104)
StageSelect and AssigneeSelect were calling unstable_useDocument without
the query params (which carry the active locale). This caused both
components to always fetch and display data from the default locale,
regardless of which locale the editor had open.

As a result, when viewing a non-default locale entry, the displayed
review stage and assignee reflected the default locale's values. After
updating the stage or assignee for a non-default locale, the cache
invalidation triggered a refetch that still omitted the locale param,
so the panel appeared unchanged even though the backend had been
updated correctly.

Passing params to unstable_useDocument aligns the document fetch with
the locale already used by the mutations (useUpdateStageMutation,
useUpdateAssigneeMutation) and the stages query (useGetStagesQuery),
ensuring the panel reads from and reflects the correct locale.
2026-04-24 16:09:52 +01:00
nclsndr 765bd19a3a Merge branch 'develop' of github.com:strapi/strapi 2026-04-24 15:40:44 +02:00
Ben Irvin ac6cd0063c chore(deps): bump multiple dependencies (#26103)
dotenv: 16.4.5 → 16.6.1
fs-extra: 11.2.0 → 11.3.4
semver: 7.5.4 → 7.7.4
typescript: 5.4.4 → 5.4.5
esbuild-loader: 4.3.0 → 4.4.3
esbuild-register: 3.5.0 → 3.6.0
grant: ^5.4.8 → 5.4.24 (pinned)
markdown-it: ^13.0.2 → 14.1.1
2026-04-24 13:11:54 +01:00
Leonid Vinogradov 6e10c0c439 enhancement(i18n): improve Russian translations of tours section in admin package (#25221) 2026-04-24 10:36:37 +01:00
Filip Ónodi 4ccaab3c74 enhancement(translations): update czech translations (#25824)
Co-authored-by: Bassel Kanso <basselkanso82@gmail.com>
2026-04-24 11:11:48 +03:00
Ziyi 7f7c1c3403 fix(database): make 5.0.0-02-created-document-id migration idempotent (#26045)
Previously the migration could leave the DB in an unbootable state after
a statement_timeout or process kill: the document_id column existed but
the migration was not recorded, and the retry crashed with PG 42701
"column already exists". Additionally, when hasColumn returned true
the migration early-exited via continue, silently skipping the backfill
and leaving rows with NULL document_id.

- Swallow duplicate-column errors (PG 42701, MySQL 1060, generic
  /duplicate column/i) around ALTER TABLE ADD COLUMN to tolerate
  catalog drift / operator-applied partial fixes.
- Always run the document_id backfill when the column exists; the
  backfill already uses WHERE document_id IS NULL so it is a no-op on
  fully-populated tables and recovery on partially-populated ones.
- Add unit tests covering fresh run, column-already-exists,
  PG 42701, MySQL 1060, and non-duplicate errors.

Fixes CMS-689
2026-04-24 09:12:57 +02:00
akash-dabhi-qed 7c3fcff48d fix: prevent browser defaults for Ctrl+I and other modifier shortcuts in Firefox (#26050) 2026-04-23 17:04:22 +03:00
Ziyi ab7d9c38ec fix(document-service): preserve self-referential relations during publish and discard (#25890)
* fix(document-service): preserve self-referential relations during publish/discard

* test(document-service): convert self-referential API test to TypeScript

* fix(document-service): use JoinTable type and tighten Record types in self-referential-relations

* test(document-service): remove weak load() happy-path unit test

* fix(document-service): skip mappedBy attrs, deduplicate and idempotent-insert self-refs

* test(document-service): fix missing dialect and trx mocks in self-referential-relations tests

* fix(tests): use count assertions for CM API self-referential relation tests
2026-04-23 13:32:04 +02:00
Ayoub Hidri d8c286c9e5 fix(types): align Service.Generic index signature with Controller.Generic (#25475)
Co-authored-by: Bassel Kanso <basselkanso82@gmail.com>
2026-04-23 13:02:36 +03:00
Rowan-Paul deafc2d9be Fix drag-and-drop preview in dynamic zones (#25123)
* fix: keep temp key stable for drag-and-drop

* fix: fix generating unique temp key for new items

* fix: fix retry loop and failing test
2026-04-23 08:13:14 +01:00
Laurens Kling 104969fd8f fix(document-service): support delete selection params (#25097)
* feat: allow selectionParams in documents.delete

* fix(document-service): preserve locale-scoped delete lookup with selection params

---------

Co-authored-by: Bassel Kanso <basselkanso82@gmail.com>
2026-04-23 10:12:13 +03:00
nclsndr 14628987b5 release: 5.43.0 2026-04-22 14:30:40 +00:00
Jamie Howard 601154b254 fix(content-manager): optimize document layout hooks (#26005)
* fix(content-manager): reduce duplicate config/document queries

* chore(content-manager): usePersistentPartialQueryParams hydration state
2026-04-22 14:30:48 +01:00
DMehaffy f81ca93887 fix(content-manager): prevent duplicate React key in homepage recent-documents widget (#26084) 2026-04-22 10:34:51 +03:00
Simon Norris df2c928d0e feat: deploy to cloud homepage widget (#25774)
Co-authored-by: mathildeleg <82765709+mathildeleg@users.noreply.github.com>
2026-04-21 17:09:51 +02:00
Bassel Kanso e66251a30c fix(i18n): preserve non-localized media when creating a locale (#26031) 2026-04-21 14:00:24 +03:00
Leonid Vinogradov 030ca0078e enhancement: add ESM syntax support for Vite .mts config file (#25238) 2026-04-21 10:22:26 +00:00
Adrien L eeac518671 fix: add responseType to getFetchClient for non-JSON responses (#25974) 2026-04-21 11:48:15 +02:00
Ben Irvin 6722bec700 security: upgrade to axios 1.15.1 (#26072)
* security: upgrade to axios 1.15.1

* chore: update follow-redirects

* chore: update pinned lodash

* fix: mime type typings
2026-04-20 21:19:33 +02:00
Ben Irvin ff000af696 enhancement(data-transfer): improve progress UX (#25921)
* enhancement: update progress per chunk

* fix: check stageprogress exists to make ts happy

* chore: split progress tracker into two methods

* test: fix lint

* enhancement: display readable times

* fix: speed indication for assets

* fix: restore speed indicator and fix double counting

* chore: clean up code

* fix: data transfer memory leak

* fix: yarn.lock

* chore: fix memory logging

* ci: complex project remote transfer

* enhancement: optimized transfer mode

* test(cli): data transfer and env passthrough

* chore: only send one message warning of legacy mode

* enhancement: show transfer totals and estimated time

* test(cli): fix deterministic transfer test files

* fix: push and pull shared utils backwards compatibility

* fix(data-transfer): extract legacy asset chunk parsing and tighten transfer logging/test coverage

* enhancement: checksum negotiation

* enhancement: show skipped file warnings on client

* fix: transfer diagnostics

* test: fix open handle

* fix: clear stall timeout for assets

* chore: fix misleading comments and variables

* test: fix misleading test

* test: fix typo

* test: make checks deterministic, less flaky

* enhancement(data-transfer): speed up asset totals; widen assets start reply window on remote pull

* fix(data-transfer): harden WebSocket JSON serialization for transfer frames

* fix(data-transfer): more transfer hardening

* test: fix test imports

* fix: entities batching

* enhancement(data-transfer): better estimates and totals

* chore: fix linting

* fix: broken merge
2026-04-20 18:57:28 +02:00
Jesús Villar 5af9d07075 fix: handle potential null userPermissions in Protect component (#24444) 2026-04-20 14:13:12 +00:00
Ben Irvin bac520e9f8 fix(data-transfer): fix large transfer crashes; show transfer progress (#23479)
* enhancement: update progress per chunk

* fix: check stageprogress exists to make ts happy

* chore: split progress tracker into two methods

* test: fix lint

* enhancement: display readable times

* fix: speed indication for assets

* fix: restore speed indicator and fix double counting

* chore: clean up code

* fix: data transfer memory leak

* fix: yarn.lock

* chore: fix memory logging

* ci: complex project remote transfer

* enhancement: optimized transfer mode

* test(cli): data transfer and env passthrough

* chore: only send one message warning of legacy mode

* enhancement: show transfer totals and estimated time

* test(cli): fix deterministic transfer test files

* fix: push and pull shared utils backwards compatibility

* fix(data-transfer): extract legacy asset chunk parsing and tighten transfer logging/test coverage

* enhancement: checksum negotiation

* enhancement: show skipped file warnings on client

* fix: transfer diagnostics

* test: fix open handle

* fix: clear stall timeout for assets

* chore: fix misleading comments and variables

* test: fix misleading test

* test: fix typo

* test: make checks deterministic, less flaky

* enhancement(data-transfer): speed up asset totals; widen assets start reply window on remote pull

* fix(data-transfer): harden WebSocket JSON serialization for transfer frames

* fix(data-transfer): more transfer hardening

* test: fix test imports

* fix: await async write

* fix(data-transfer): resolve push transfer deadlock and harden async writes

- Extract createAssetsDestinationWritable so Writable callbacks run before
  uploadStream completes (same WS batch as PassThrough chunks).
- Add writable-async-write (write callback + drain/finished race; avoid hang
  on destroy).
- Wire push/pull, remote-source, file & directory sources to shared write().
- Fire-and-forget pull flush: Promise.resolve(flush).catch(onError); guard
  missing stream inside try.
- Add regression tests (assets writable, writable-async-write, handler checks).

* fix(data-transfer): write push stream batches sequentially

Use a for-loop with await write() instead of Promise.all over msg.data
so non-asset stages respect one in-flight write per objectMode Writable
and backpressure from writable-async-write.

- Validate minChunksForBackpressure in assertReadStreamBackpressure
- Add engine test for non-Buffer asset chunk byte progress (counts as 1)
- Assert push.ts keeps sequential msg.data handling in static handler test

* fix(data-transfer): align push streamAsset with remote-source and harden tests

- Push handler: combine stream/end under one branch, error when start is missing
  or action is invalid; shorten stage write comments.
- Engine version-matching tests: use a fresh createDestination() per engine so
  parallel transfers do not share destination writables (MaxListeners warnings).
- File destination tests: mock createWriteStream with a new Writable per call.
- CLI transfer tests: mock progress.stream so transfer::finish runs after transfer
  and clears the progress setInterval (fixes Jest worker hang).
- Misc test cleanup: assets-destination timeout clearTimeout, collect listeners,
  writable-async-write teardown; tighten push/static test descriptions.

* test: remove parity test

* fix(data-transfer): harden collect() and stabilize transfer tests

- collect(): settle once, remove listeners on resolve/reject, avoid double completion
- engine tests: add expectHeapGrowthWithinNoise for heap smoke checks
- CLI transfer tests: console spies in beforeAll; jest.restoreAllMocks in afterAll
- stream test: remove removeAllListeners workaround
2026-04-20 16:08:05 +02:00
Benedikt Rötsch 43c03c077f fix: webpack public path was missing a slash at the end (#22654)
* fix: webpack public path was missing a slash at the end

* fix: pr review

---------

Co-authored-by: Adrien Lepoutre <3693028+Adzouz@users.noreply.github.com>
2026-04-20 16:03:37 +02:00
Jamie Howard f2b6c2bcd0 fix: enforce minimum length 2026-04-20 12:48:44 +01:00
Jamie Howard 3fff574344 Merge remote-tracking branch 'origin/develop' into feature/extended-ctb-api-for-plugins 2026-04-20 12:44:09 +01:00
Jan Willem Keizer 0c912f071b feat(i18n): complete Dutch (nl) translations for admin panel (#25932)
Add missing Dutch translations across all core packages and plugins,
bringing coverage from ~50% to ~100%.

Changes:
- core/admin: 301 new translations added (564 → 863 keys)
- core/content-manager: 169 new translations added (190 → 359 keys)
- core/content-type-builder: 62 new translations added (226 → 288 keys)
- core/upload: new nl.json with 220 translations
- core/email: 43 translations added (was empty)
- core/content-releases: new nl.json with 104 translations
- core/review-workflows: new nl.json with 15 translations
- plugins/users-permissions: 39 new translations added (42 → 81 keys)
- plugins/i18n: new nl.json with 84 translations
- plugins/cloud: new nl.json with 19 translations

Also standardizes existing translations to use informal "je/jouw"
consistently (was mixed "u/uw" and "je/jouw"), matching Strapi's
informal, developer-friendly tone of voice.
2026-04-20 10:29:25 +01:00
Simen 7b6dcbf88a fix(content-manager): apply i18n translations to dynamic zone component names (#25417)
* fix(content-manager): apply i18n translations to dynamic zone component names

* fix: fix default displayName for tests mock data

---------

Co-authored-by: Mathilde Legrand <mathilde.legrand@strapi.io>
2026-04-17 15:55:51 +01:00
Jayesh Patel b884809a3e fix(content-manager): render ID column without number grouping (#25996) 2026-04-17 14:23:13 +00:00
Marian Vonsien 867a6dd4db fix(content-manager): don't allow locale to overwrite list view settings (#25437) 2026-04-17 15:53:41 +02:00
Liang Yuan Hui 9a9594760e feat:Improve the Chinese (Simplified) translation of the content-type… (#26037)
* feat:Improve the Chinese (Simplified) translation of the content-type-builder module.

---------

Co-authored-by: Ziyi <daydreamnation@live.com>
2026-04-17 09:19:27 +00:00
markkaylor 7f17643db5 fix(upload): content-api does not return signed urls (#26034) 2026-04-17 10:17:51 +02:00
Nico André bc0b0e9449 feat(core/*): introduce strapi.ai namespace (#25886) 2026-04-17 08:46:33 +02:00
Jamie Howard 399f2a89f2 Merge pull request #26041 from strapi/main
chore: release v5.42.1 update develop
2026-04-16 14:26:11 +01:00
DMehaffy bfcef1911b enhancement: add list & delete admin user cli commands (#23022)
* enhancement: add delete user cli command

* fix: admin service reference to proper deleteById

* fix: add delete command to exported functions

* enhancement: add the list users

* fix: handle last super admin error gracefully

* enhancement: pr feedback and add active/block user commands

* fix: clean up boolean casting on active and block

* enhancement: add list-users command alias "list"

* test(cli): add user cli commands

* chore: fix linting

* test: reset stdin after tests

* chore: remove bad comment

* fix(cli): boolean admin flags, async inquirer, and stable list-users / CLI fixtures

---------

Co-authored-by: Ben Irvin <ben.irvin@strapi.io>
Co-authored-by: Ben Irvin <ben@innerdvations.com>
2026-04-16 14:39:34 +02:00
Ben Irvin 9e54504102 fix(admin): eliminate several browser race conditions (#26020)
* fix(admin): race conditions

* fix(content-manager): use single-type URLs without documentId segment

* test(front): fix timing

* fix(content-manager): correct Save blur target and replace setTimeout with microtasks

Use globalThis.document.activeElement so blur runs (form values no longer shadow document).
Yield two microtasks after blur instead of setTimeout(0); add TODOs for explicit flush APIs.
2026-04-16 14:09:46 +02:00
Varun Chawla 5e820382c8 fix: use admin basename for 401 redirect path (#25458) 2026-04-16 11:40:43 +02:00