# 12.1 2022-12-06 * Task #96020: Deprecate \TYPO3\CMS\Backend\Form\Behavior\OnFieldChangeInterface * Task #96524: Deprecate inline JavaScript in Dashboard * Bug #97190: LazyLoadingProxy and LazyObjectStorage are not properly serializable * Task #97453: Replace hooks with Events in TemplateService * Feature #97482: Replace post-processing hook in TemplateService with an Event * Feature #97536: Move LinkResultFactory functionality into LinkFactory * Feature #97923: Use combined field for base and path in sys_file_collection * Bug #98323: auto creation of table isn't done if options never fit exact needs * Task #98383: Simplify access to fallback target in link building * Task #98464: Use LinkResult object for HMENU items * Bug #98518: Wrong version detection of database * Bug #98523: Allow relative paths for importing TypoScript files again * Bug #98528: Move location of ENABLE_INSTALL_TOOL in v12 * Bug #98530: Missing space before code block * Bug #98531: Orientation switch doesn't work anymore * Feature #98540: Create new TCA form element secret field * Bug #98552: Content not rendered in frontend in v12.0 * Bug #98575: New feature rst should reside in 12.1 folder * Task #98585: Use PSR coding standards * Task #98587: Centralize checkPid functionality * Task #98597: Add tests for GeneralUtility::implodeAttributes * Task #98610: Update to PHPStan 1.8.9 * Task #98627: Make FormProtectionFactory injectable * Bug #98633: [DOCS] Merge the API Descriptions from Docs and Doc comments * Task #98649: Avoid direct usages to Doctrine/DBAL and ext-pdo * Task #98657: Streamline typolink LinkResult * Task #98666: Convert FormRuntimeTest fo a functional test * Task #98696: Make FormProtectionFactory injectable - part 2 * Bug #98709: Cannot delete multiple files in EXT:filelist * Bug #98710: Cannot scroll in element browser modal * Bug #98720: GIFBUILDER does not allow to use a custom charRangeMap for fonts * Feature #98921: Get items from local storage by prefix * Bug #98924: Harden LocalizationUtility with arguments * Bug #98948: Install wizard not scollable * Bug #98949: Each second language is deactivated * Feature #98957: Let Install Tool support write-protected settings.php * Task #98987: Use native types in tests to avoid PHPStan warnings * Task #98996: Deprecate BackendWorkspaceRestriction and FrontendWorkspaceRestriction * Task #98999: Separate file + folder creation controllers * Bug #99027: Ensure test expectation works with unpredictable result order * Feature #99033: Add event to disallow tables from backend search * Task #99044: Ensure auto-created redirect are stored on connected site root * Feature #99048: Site Settings PHP API * Feature #99053: Add route aspect fallback value handling * Feature #99055: Tag BackendController via PHP Attribute * Feature #99062: Native JSON field support in Doctrine DBAL * Task #99063: Remove obsolete web-animate library * Task #99072: Require Doctrine DBAL 3.5+ * Task #99074: Ensure proper site configuration cleanup in tests * Bug #99076: Use correct php namespace for NoopEventDispatcher * Feature #99092: Allow static backdrop for modals * Task #99098: Replace instance cache in FormProtectionFactory with runtime cache * Task #99099: Use correct ReST file syntax in changelog * Task #99100: Replace static property caches in RootlineUtility * Task #99108: Add more descriptive information to locales class * Task #99148: Make some type annotations in the TypoScript parser more specific * Task #99166: Clean up extensionmanager controllers * Feature #99169: As an admin, I want to filter for BE Usergroups in the BE User Modul * Task #99170: Deprecate config.baseURL * Bug #99184: ValueException in GeneralUtility intExplode/trimExplode * Task #99188: Streamline ext:redirects auto-create chain * Task #99193: Clean up PageLayoutController * Feature #99194: stdWrap.if could use "contains", "startsWith", "endsWith" * Task #99201: Avoid usage of superglobal $_COOKIE in favor of PSR-7 * Task #99209: Streamline AbstractUserAuthentication->removeCookie usages * Feature #99221: Add cli command for install/setup * Task #99225: Move InstallerController code to services * Task #99228: Remove header "content elements" if no content elements are there * Feature #99234: Dynamic URL parts in TYPO3 Backend URLs * Task #99239: Require Symfony 6.2 * Task #99242: Update Guzzle to be PHP 8.2 compatible * Bug #99257: error with ext:reactions using postgres * Task #99262: Use RouteResult in EXT:reactions resolver * Task #99263: Streamline Locale + LanguageService initialization calls * Task #99266: Review changelogs for v12.1 release * Bug #99273: Additional new

tag in case of

tag * Bug #99279: Creating a "create record" reaction fails with error message * Task #99360: Ensure proper gitlab ci configuration for branch `12.1`