What's Changed
- chore(tooling): add commitlint by @joshuaellis in #18402
- feat(core/database): add internal migrations by @alexandrebodin in #18437
- chore(core/strapi): remove postinstall by @alexandrebodin in #18467
- fix: re add deleted afterSync hook by @Marc-Roig in #18559
- fix: add react resolutions into root package json by @Marc-Roig in #18561
- [v5] Replace fast-deep-equal with lodash/fp isEqual by @innerdvations in #18512
- [v5] Remove support for MySQL v5 by @innerdvations in #18499
- [v5] Only support better-sqlite3 package for sqlite by @innerdvations in #18500
- [v5] Use mysql2 as the package for mysql by @innerdvations in #18503
- [v5] Run dialect initializations on every new connection in the pool by @innerdvations in #18588
- V5: add Document ID by @Marc-Roig in #18303
- [v5] use fetch api for strapi.fetch by @innerdvations in #18508
- [v5] Replace usage of http/https for requests with fetch api by @innerdvations in #18510
- chore: remove ee direct imports by @alexandrebodin in #18897
- [v5] ] Set default log level to 'info' by @innerdvations in #18904
- feat: Document Service by @Marc-Roig in #18558
- chore: update typescript module by @innerdvations in #18938
- chore: update knex to 3.0.1 by @innerdvations in #18936
- [Upgrade Tool] Refactor by @Convly in #18995
- [Upgrade Tool] Upgrade package.json dependencies by @Convly in #19005
- [Upgrade Tool] Dependencies installation during the upgrade process by @Convly in #19009
- chore(core): split strapi/strapi & strapi/core by @alexandrebodin in #18927
- Upgrade tool minor and patch commands by @Bassel17 in #19027
- chore(strapi/strapi): simplify code by @alexandrebodin in #19031
- chore: lint test scripts by @innerdvations in #19057
- [Upgrade Tool] Chores / Quality of Life Improvements by @Convly in #19053
- [Content manager] Refactor useContentManagerInitData to remove ModelsContext by @jhoward1994 in #19042
- chore: move commands from admin back to strapi/strapi by @alexandrebodin in #19091
- Select and run codemods only by @christiancp100 in #19083
- Add unit tests for upgrade tool by @christiancp100 in #19056
- Add tests for the upgrade task by @christiancp100 in #19111
- [TS] Add types for configuration files by @innerdvations in #17612
- Initialize CLI e2e testing framework by @innerdvations in #19071
- Upgrade Tool by @innerdvations in #19148
- Only support better-sqlite3 package for sqlite by @christiancp100 in #19155
- Refactor cli code by @alexandrebodin in #19181
- chore: fix minor ts issues in cli by @alexandrebodin in #19180
- feat: ignore locale parameter on non localized content types by @Marc-Roig in #19191
- [CLI Tests] Add seeding capabilities by @Convly in #19170
- feat: extend i18n attributes to every content type by @Marc-Roig in #19058
- chore: migration ListSettingsView to ts by @alexandrebodin in #19214
- chore: update to use react-router@6+ by @joshuaellis in #19184
- Upgrade to Apollo v4 by @innerdvations in #19173
- [Upgrade Tool] Add internal support for upgrading to any version by @Convly in #19213
- feat: rename document engine by @Marc-Roig in #19060
- [CLI Tests] Init GitHub CI Workflow by @Convly in #19221
- chore: remove comment about deprecation by @innerdvations in #19232
- Migrate EditSettingsView to ts by @alexandrebodin in #19223
- Add seed data and schemas to CLI e2e app template by @innerdvations in #19226
- Fix uncaught ts issues by @alexandrebodin in #19243
- fix(cm): create entries by @joshuaellis in #19254
- Remove deprecated isSupportedImage by @innerdvations in #19204
- chore: flatten core files structure by @alexandrebodin in #19260
- fix: remove useless codemod by @innerdvations in #19268
- Move dts commands back to strapi/strapi by @alexandrebodin in #19261
- chore: remove last circular dep by @alexandrebodin in #19263
- chore: remove default index page from public middleware by @alexandrebodin in #19270
- fix(content-manager): navigation issues by @jhoward1994 in #19220
- chore: remove experimental logs for plugin CLI commands by @joshuaellis in #19287
- chore(cm): refactor to use redux-toolkit-query by @joshuaellis in #19281
- enhancement: U&P config register.allowedFields defaults to empty array by @innerdvations in #19236
- enhancement: refactor env-only values into configuration by @innerdvations in #19250
- chore: make vite the default bundler for the admin by @joshuaellis in #19283
- chore: simplify content-type logic by @alexandrebodin in #19303
- chore: setup configuration in one place only by @alexandrebodin in #19273
- chore: set up content history files by @remidej in #19298
- Remove V4 credentials structure by @christiancp100 in #19264
- chore: cleanup core utils org by @alexandrebodin in #19307
- feat(cm): set up history page by @remidej in #19309
- feat(history): add history-version content type by @remidej in #19316
- fix: skip flakey test by @Marc-Roig in #19326
- chore: lift compontent logic out of the db and start exposing models by @alexandrebodin in #19324
- feat: Draft & Publish V5 by @Marc-Roig in #18941
- enhancement: restrict config filenames by @innerdvations in #19255
- docs: initialize configuration contributor docs by @innerdvations in #19288
- chore: add a simple model registry by @alexandrebodin in #19342
- Improve Type Inference for Subtypes in Attribute.Relation Properties by @Convly in #19334
- [breaking change] Remove the TOrigin Type Param for Attribute.Relation by @Convly in #19335
- [core] document unique field validation per content type and locale by @jhoward1994 in #19153
- feat(history): capture content types history by @remidej in #19343
- Prevent Type Generation From Failing on Functions as Default Value by @Convly in #19367
- [breaking change] Remove the TOrigin Type Param for Attribute.UID by @Convly in #19336
- fix unique and UID validation logic by @jhoward1994 in #19410
- feat: add history versions endpoint by @remidej in #19386
- chore: rename webhooks & allow custom joinColumn by @alexandrebodin in #19344
- feat: list history versions in the history page sidebar by @remidej in #19421
- Chore: fix playwright test issue by @innerdvations in #19453
- feat: enable CLI tests by @christiancp100 in #19242
- feat: modify the default value of Attribute.Component Repeatable by @Convly in #19338
- enh: add logger level to server config by @innerdvations in #19371
- enhancement: make policy error public by @innerdvations in #19374
- feat(content-history): add version header by @markkaylor in #19462
- feat(content-manager): display history versions by @remidej in #19458
- fix: q search flakey test by @Marc-Roig in #19479
- test(e2e): re-enable suite related to content-manager by @joshuaellis in #19493
- fix: validate query populate by @innerdvations in #19372
- fix(history): fetch single-types by @markkaylor in #19506
- fix: history page back button by @remidej in #19553
- fix: prevent infinite loop opening pool connections in mysql by @innerdvations in #19572
- test(database): init unit tests for createMetadata by @innerdvations in #19560
- fix(history): refetch history versions on mount by @remidej in #19566
- chore: use db model instead of content type by @remidej in #19563
- feat(cm): D&P pt2 by @joshuaellis in #19380
- chore: add centralized methods for replacing hardcoded strings for database identifiers by @innerdvations in #19460
- chore(database): use naming functions for identifiers in metadata by @innerdvations in #19561
- chore(database): refactor database schema to use naming functions by @innerdvations in #19596
- chore(database): add long db identifiers shortening algorithm by @innerdvations in #19567
- chore(database): clean up db naming methods by @innerdvations in #19608
- chore: begin work on dismantling helper-plugin by @joshuaellis in #19607
- chore: start content-api v5 migration by @alexandrebodin in #19531
- test(e2e): add i18n e2e tests by @joshuaellis in #19588
- feat(history): delete expired history versions by @markkaylor in #19620
- feat(document-service): document id to id by @Marc-Roig in #19573
- chore: merge draft & publish into history by @remidej in #19632
- chore(helper-plugin)!: remove form by @joshuaellis in #19612
- fix(content-releases): remove argument passed to test render by @markkaylor in #19638
- feat(dts): support models and contentTypes by @markkaylor in #19604
- chore(strapi): make watch-admin default on develop by @joshuaellis in #19647
- chore(history): add e2e tests by @markkaylor in #19525
- fix(cm): fetch the init data on every mount by @joshuaellis in #19650
- test(e2e): fix transfer token tests by @joshuaellis in #19672
- chore: merge repo & doc-engine into one before cleaning up by @alexandrebodin in #19665
- chore(helper-plugin)!: remove some components by @joshuaellis in #19640
- chore: content-api response format header by @alexandrebodin in #19675
- chore(helper-plugin)!: remove page decorators by @joshuaellis in #19662
- fix(content-manager): compute document status based on locale by @jhoward1994 in #19653
- feat(cm): add content history by @remidej in #19315
- feat: add history document action by @remidej in #19683
- Fix: audit logs content type by @Bassel17 in #19694
- chore!: remove GenericInput by @joshuaellis in #19677
- chore(helper-plugin)!: remove useCollator, useFilter & useCallbackRef by @joshuaellis in #19680
- feat: handle history version pagination params by @remidej in #19594
- chore: clean i18n code that is no longer necessary by @alexandrebodin in #19700
- fix: list-view delete action by @joshuaellis in #19711
- feat(history): protect history page by @markkaylor in #19689
- chore: graphql v5 schema changes by @alexandrebodin in #19685
- chore: refactor utils by @alexandrebodin in #19725
- chore!: remove aliases from webpack & force installing deps by @joshuaellis in #19716
- fix: use module uid for config namespace instead of dot notation by @innerdvations in #19365
- chore(helper-plugin): deprecate MORE components by @joshuaellis in #19718
- chore: cleanup i18n dead code by @alexandrebodin in #19733
- chore: refactor CM, CTB & i18n to accomodate option D&P by @joshuaellis in #19712
- feat: add basic pagination to history frontend by @remidej in #19729
- fix: remove regex validation when validating locale by @Marc-Roig in #19713
- feat: relations no dp by @Marc-Roig in #19682
- feat: disable dp by @Marc-Roig in #19671
- feat(content-releases): scheduling in multiple strapi instances by @Feranchz in #19631
- feat(cm): reimplement relations for draft & publish by @joshuaellis in #19642
- fix(admin): wip allow empty list view configuration by @jhoward1994 in #19695
- feat: migrate on dp enabling disabling by @Marc-Roig in #19697
- feat: disable dp by default by @Marc-Roig in #19743
- fix(strapi): vite crashes because files can't be found by @joshuaellis in #19751
- chore: helper plugin remove utils: wrapAxiosInstance, setHexOpacity, awaitToJs by @simotae14 in #19753
- chore(release): merge 4.20.5 into develop by @markkaylor in #19760
- fix(i18n): close modal after successful locale creation by @jhoward1994 in #19755
- chore: deprecate entity-service and delegate to document service by @alexandrebodin in #19728
- fix(cm): errors leaking from draft to published tab by @joshuaellis in #19747
- chore: helper plugin remove difference util by @simotae14 in #19757
- fix: updated at value when enabling DP by @Marc-Roig in #19766
- chore: remove getFileExtension and replace it with its code where used by @simotae14 in #19762
- chore!: refactor filters by @joshuaellis in #19739
- feat(content-releases): removing scheduling future flag for stable release by @Feranchz in #19754
- chore: database enhancements by @alexandrebodin in #19770
- chore: remove pxToRem and replace it with the returning value of the function by @simotae14 in #19771
- chore: mark doc service as beta by @Marc-Roig in #19767
- chore: remove request and once from the helper plugin utils by @simotae14 in #19775
- chore: helper-plugin remove prefixFileUrlWithBackendUrl by @simotae14 in #19764
- feat(content-releases): new create many release actions endpoint by @Feranchz in #19778
- fix: reserve attribute name 'locale' in CTB by @innerdvations in #19784
- ci: use only mysql 8 in workflows by @innerdvations in #19785
- fix(history): save status on version create by @markkaylor in #19737
- feat(admin): create internal history for universal back button by @joshuaellis in #19746
- feat: Add keycloak native users-permissions provider by @derrickmehaffy in #19741
- feat: clone refactor by @Marc-Roig in #19765
- chore!: remove DynamicTable and move Table by @joshuaellis in #19781
- test: update d&p snapshot by @innerdvations in #19789
- feat: add drag-and-drop to relations by @joshuaellis in #19788
- chore!: move confirm dialog to admin package and refactor by @joshuaellis in #19782
- fix: fix cm metadata when dp is disabled by @Marc-Roig in #19792
- chore: design-updates by @joshuaellis in #19795
- chore!: remove CheckPermissions component by @joshuaellis in #19793
- chore(helper-plugin)!: move GuidedTour by @joshuaellis in #19808
- chore(helper-plugin)!: move tracking feature by @joshuaellis in #19809
- feat: do not send status relations by @Marc-Roig in #19776
- feat: handle db errors on document service by @Marc-Roig in #19806
- feat: get relation default locale by @Marc-Roig in #19803
- chore!: remove translatedErrors from the helper-plugin by @simotae14 in #19814
- fix: failed to dynamically load chunk by @Marc-Roig in #19821
- fix(admin): CM access when using custom conditions by @jhoward1994 in #19820
- chore(helper-plugin)!: move getPrefixedId, useAPIErrorHandler, normalizeAPIError and getAPIInnerErrors by @simotae14 in #19823
- chore(deps): update some by @joshuaellis in #19810
- chore(helper-plugin)!: move useStrapiApp and remove Library / CustomFields by @joshuaellis in #19822
- chore: set default log level to 'http' by @innerdvations in #19827
- chore(helper-plugin)!: remove auto-reload blockers by @joshuaellis in #19828
- chore(helper-plugin)!: remove getYupInnerErrors by @simotae14 in #19825
- chore(helper-plugin)!: move Notifications & AppInfo to admin by @joshuaellis in #19831
- feat: make relation status handling smarter by @Marc-Roig in #19833
- chore: remove locale when disabling i18n by @Marc-Roig in #19819
- chore: update u&p by @alexandrebodin in #19834
Full Changelog: v4.20.5...v5.0.0-alpha.0