# 12.0 2022-10-04 * Task #95262: Remove unused code from PageLayoutView * Task #95354: Remove deprecated code from "Use controller classes when registering plugins/modules" * Task #96015: Remove unused language labels * Task #96036: Create changelog structures for 12.0 * Task #96044: Harden method signature of logicalAnd and logicalOr * Task #96094: Cleanup module icons * Epic #96107: Core v12 deprecation removals * Task #96117: Remove FileDumpEIDHook + interface * Task #96118: Remove TypoScript option page.includeCSS/includeCSSLibs.import * Task #96119: Remove 2nd argument of cObj->getATagParams * Task #96120: Remove fixVersioningPid in FE and BE * Task #96122: Remove getInstance() calls * Task #96124: Remove "sword" functionality for search highlighting in Frontend * Task #96125: Remove navigationFrame options for modules * Task #96136: Deprecate inline JavaScript in backend update signals * Task #96139: Remove GeneralUtility::uniqueList * Task #96140: Remove TYPO3\CMS\Core\Utility\GeneralUtility::stdAuthCode * Task #96141: Remove deprecated BackendUtility::viewOnClick * Task #96142: Remove TYPO3\CMS\Core\Utility\GeneralUtility::rmFromList * Task #96143: Remove HTTP headers manipulating methods in HttpUtility * Task #96144: Remove possibility to pass a records uid to AbstractTreeView::getIcon() * Task #96149: Remove StandaloneView for EXT:form EmailFinisher * Task #96150: Remove AbstractItemProvider->addItemsFromSpecial * Task #96151: Remove service getters in ModuleTemplate * Task #96153: Remove CategoryRegistry and API method * Task #96154: Remove Shortcut API functionality * Task #96155: Remove String-related helper methods * Task #96156: Remove obsolete VersionState constants * Task #96158: Remove support for inline JavaScript in fieldChangeFunc * Task #96159: Remove extbase EnvironmentService * Task #96167: Remove Clipboard->printClipboard() * Task #96169: Remove RecordListHookInterface * Task #96170: Remove linkvalidator TSconfig option * Bug #96176: Extbase tests still use pid-1 * Task #96177: Remove GeneralUtility::compileSelectedGetVarsFromArray * Task #96178: Remove RecordListController hooks * Task #96180: Remove ExtendedFileUtility ProcessData hook * Task #96181: Remove ClearCacheActions hook * Task #96191: Remove FileList editIcons hook * Task #96192: Remove Application->run callback * Task #96194: Remove third parameter from ArrayUtility::arrayDiffAssocRecursive() * Task #96195: Remove "rootUid" setting and related methods for trees * Task #96201: Remove "relativeToCurrentScript" in FAL API * Bug #96205: Remove obsolete parameters related to FAL API "relativeToCurrentScript" * Task #96210: Remove last arguments of wrapClickMenuOnIcon() * Task #96211: Remove deprecated methods from AbstractSectionMarkupGeneratedEvent * Task #96212: Enforce logo alt text * Task #96214: Remove custom JSWindow options in HMENU settings * Task #96222: Activate getOptions in WidgetInterface * Task #96223: Remove addQueryStringMethod remains * Task #96224: Remove TSFE->ATagParams * Task #96225: Remove T3editor JS module * Task #96227: Remove ResponseError JavaScript module * Task #96229: Remove usage of jQuery in Tooltip module * Task #96231: Remove fallback for triggering new content element wizard * Task #96233: Remove TYPO3/CMS/Backend/SplitButtons JavaScript module * Task #96255: Remove legacy IRRE synchronization syntax * Task #96256: Remove cObject from StandaloneView * Task #96257: Remove t3lib/class.t3lib_parsehtml_proc.php:transformation hook * Task #96258: Remove languageMode methods from Typo3QuerySettings * Task #96260: Remove support for JQuery from FormEngine.setSelectOptionFromExternalSource * Task #96261: Remove FormEngine.requestConfirmationOnFieldChange() * Task #96262: Remove TBE_EDITOR.fieldChanged * Task #96266: Force ExceptionHandler to implement setConfiguration() * Task #96268: Remove LanguageService container entry * Task #96273: Remove TypoScriptFrontendController container entry * Task #96277: Remove sys_language * Bug #96278: Remove $severity Argument in ErrorPageController->errorAction() * Task #96280: Remove extTablesPostProcessing hook * Task #96281: Remove route parameter from backend urls * Task #96287: Update dependency: Doctrine DBAL 3.2 * Task #96289: Remove fsMod * Task #96293: Remove possibility to initialize DateTimePicker fields globally * Task #96296: Remove AbstractControl::setOnClick for backend user interface * Task #96300: Always use runtime db quoting of TCA configuration * Task #96303: Remove inline JavaScript options in user settings * Task #96304: No longer consider extensions not installed by Composer * Task #96317: Use LinkResultInterface for generating typolinks * Task #96318: Use ServerRequestInterface as required argument for various methods * Task #96319: Remove legacy time tracking log levels * Bug #96322: page.pageHeaderFooterTemplateFile is always overriden if config.pageRendererTemplateFile is set * Task #96324: Re-enable taboverride in grunt copy action * Task #96326: Use ES11 import syntax for dynamic typescript imports * Bug #96328: Form Manager: "New form" wizard is broken * Bug #96330: OpenDocumentService calls getModuleData on an not fully initialized backend user * Bug #96331: Stray javascript build output CategoryTreeElement.js * Feature #96333: Register context menu item providers via autoconfiguration * Task #96334: Re-enable jquery.autocomplete in grunt copy action * Task #96335: Unpatch jquery-ui/ui/sortable.js * Bug #96336: TypeError in ConditionMatcher * Bug #96337: Editor can not edit multiple content elements * Task #96349: Add missing jquery imports * Task #96351: Remove unused updateRootlineData method * Task #96355: Migrate from yarn to npm * Task #96392: Remove deprecated backendCheckLogin argument * Task #96394: Use plain script-loading for CKEditor v4 * Bug #96395: Fix scoping issue in FormEngineValidation * Task #96396: Prepare ImmediateActionElementTest for ES6 modules * Task #96409: Port remaining JavaScript unit tests to TypeScript * Task #96410: Add missing grunt copy action for web-animate polyfill * Bug #96411: Stray javascript build output RecordExportButton.js * Bug #96412: Stray javascript build output Enum/Viewport/TopbarIdentifiers.js * Task #96425: Prepare FormEngine JavaScript for ES6 module usage * Task #96429: Change method signatures and remove deprecated functionality * Task #96436: Update to TypeScript 4.5 * Task #96456: Remove unneeded TypeScript module path configuration * Task #96476: Separate JavaScriptHandler concerns * Task #96490: Remove unused methods related to workspaces * Task #96500: Deprecate cObj->getMailTo * Task #96501: Remove prefixLocalAnchors in HtmlParser * Feature #96510: Support for https://github.com/WICG/import-maps * Task #96511: Emit ES11 (ES2020) modules from TypeScript * Feature #96515: Add aliases to Backend Routes * Task #96517: Remove HMENU.collapse option * Task #96518: Remove legacy .txt typoscript includes * Task #96522: Remove config.disablePageExternalUrl option * Feature #96526: Add PSR-14 event for modifying page layout header/footer content * Task #96539: Remove unused arguments from ext_getObjTree() * Task #96540: Remove special handling of translated shortcuts * Task #96546: Unify PageTsConfig loading * Task #96565: Avoid inline javascript for clipboard paste in PageLayoutController * Task #96566: Streamline DragUploader JavaScriptModuleInstruction * Task #96568: Migrate Form Framework JavaScript to ES6 * Task #96569: Use ES6 JavaScript module specifiers in InstallTool * Task #96570: Use ES6 JavaScriptModuleInstructions instead of RequireJS wrappers for core ES6 modules * Task #96575: Migrate t3editor from CodeMirror v5 to v6 * Task #96597: Avoid TBE_EDITOR declaration via synchronous script tag: * Task #96606: Ensure requirejs-loader.js and JavaScriptItemHandler.js are cache invalidatable * Task #96607: Add and use includeJavaScriptModules for * Task #96610: Support FLAG_USE_TOP_WINDOW for ES6 module instructions * Feature #96614: Add centralized way to load PageTsConfig * Bug #96616: Remove pages.fe_login_mode * Bug #96619: Inline JavaScript using RequireJS causes ColorPicker to not be initialized in InstallTool * Feature #96641: Move typolink into its own class * Feature #96659: Register cObjects via ServiceProvider * Task #96664: Revert "[TASK] Ensure requirejs-loader.js and JavaScriptItemHandler.js are cache invalidatable * Task #96693: Superfluous null coalescing operator in AbstractConfigurationManager * Task #96694: Wrong doc comment in test fixture BlogController::processRequest * Task #96697: Extend return types for ActionController::getErrorFlashMessage * Task #96708: Remove menu support for accesskeys in HMENU * Task #96709: Serialize PageRenderer state instead of the entire class * Task #96710: Tag importmaps to include configuration for dynamic imports * Task #96726: Remove Extbase's RequestHandler functionality * Task #96732: Streamline getLanguageService function * Feature #96733: Better registration for modules * Task #96749: Remove PHP 8.0 and PHP 8.1 polyfills * Task #96752: Streamline functions returning $GLOBALS['BE_USER'] * Task #96777: Consistently use PreviewUriBuilder * Bug #96782: Custom FormEngine evaluations ignored since #96597 * Task #96785: Drop unneeded ModuleStateStorage JavaScript include * Feature #96800: Add SiteLanguage Processor * Task #96802: Use PSR-7 Request information in cObj * Bug #96803: Use proper default config values for new mail settings * Feature #96806: PSR-14 event for modifying button bar * Task #96808: Migrate functionality from ExtendedTemplateService into tstemplate * Task #96825: Clean up various options in UserAuthentication * Bug #96834: Wrong usages when linking to pages * Task #96857: Migrate Backend/Tabs to native JS * Task #96879: Move Cache Lifetime Calculation into its own class * Task #96880: Harden TSFE->id related code * Task #96881: Use PSR-7 Request for fetching login status * Bug #96884: Various phpstan-related issues in EXT:frontend * Task #96885: Streamline TSFE-related config properties * Task #96886: Move functionality if a page is hidden from TSFE to PageRepository * Task #96894: Simplify Controller code for TBE_MODULES_EXT in Info module * Feature #96895: Introduce moduleData object (attached to request) * Task #96899: Replace hook in About module with PSR-14 event * Task #96906: Switch JavaScript module namespace to @typo3/ and use lowercase-dashed filename syntax. * Task #96908: Move LinkVars calculation into separate class * Bug #96910: Link to reports module in about module does not work * Task #96919: Simplify code in TSFE->getPageAndRootlineWithDomain * Bug #96923: RteLinkBrowser broken since ES6 module usage * Bug #96924: System maintainers modal in backend context not working * Task #96926: Simplify usages of LanguageService->sL * Bug #96927: TypeScript compilation fails on case insensitive file systems * Bug #96931: FormManager ES6 modules not loaded * Bug #96933: External URL LinkBrowser throws JavaScript error because of missing importmap for EXT:backend * Task #96934: Avoid additional query in TSFE for BE User Sections * Bug #96947: preselected TCA useOrOverridePlaceholder checkbox/input fields cause autofocus on initial page load * Task #96951: Streamline tab-handling in ElementsBasic cests * Task #96967: Avoid int-casting of TSFE->type * Feature #96968: Replace headerNoCache with PSR-14 event * Task #96982: Remove support for "global extensions" * Task #96983: Separate internal_type=folder into own type * Task #96986: Only register sysLastChanged value once in TSFE * Task #96987: Set "TSFE->requestedId" early in the process * Task #96988: Remove global "allowLocalInstall" option * Task #96996: Remove checkEnableFields hook * Task #97000: Allow setting ContentLength response header in debug mode * Task #97006: Update styleguide to use ES6 modules * Bug #97014: RecordAccessVoter is too loose * Task #97019: Deprecate order of validation message * Task #97027: Refactor cObj->getTreeList() * Task #97030: Use dependency injection in PageRenderer * Bug #97060: Remove "defaultCategorizedTables" from DefaultConfiguration * Task #97061: Remove leftovers in v12 breaking removal ReST * Task #97064: Resolve contentFromPid at an earlier stage * Task #97065: Always render frontend in UTF-8 * Task #97071: Let PageRenderer render a PSR-7 response * Bug #97074: Exception for custom linkhandler tab in Link browser * Task #97076: Simplify code in CharsetConverter * Task #97078: Clean up baseline for phpstan * Task #97086: Clean up BE_USER->checkWorkspace() method * Task #97089: Move TSFE->getPageAndRootlineWithDomain into fetch_the_id() * Task #97093: Add types to internal properties of TSFE * Bug #97105: Module Registry has wrong sorting in v12 * Bug #97106: Sorting of modules is broken * Bug #97123: ResourceCompressorTest.php fails in random ordered unit tests * Task #97131: Remove CLI commands related to uploads/ folder * Bug #97132: int and string in clearCacheCmd of DataHandler should be defined * Task #97133: Use DependencyInjection amd strict types in EXT:seo * Task #97134: Use PSR-3 LogLevel where possible * Feature #97135: Introduce third-level modules * Bug #97137: Various phpstan errors in filelist and recordlist * Task #97139: Simplify HMENU functionality * Task #97145: Migrate sys_log serialized data to JSON content * Task #97157: Streamline EXT:recycler PHP code * Task #97162: Simplify logic for Backend Router * Feature #97174: PSR-14 event for modifying info module content * Bug #97175: Duplicate "for" in #96806 changelog title * Task #97176: Move BE_USER check of TSFE into middleware * Task #97177: Streamline drag uploader failure message * Task #97179: Streamline AbstractUserAuthentication unpack_uc() * Task #97180: Remove superflouous authInfo assigments in UserAuth * Feature #97188: Register element browsers via service configuration * Feature #97201: Add new event to modify the new content element wizard items * Task #97217: Move TypoLinkCodecService to EXT:core * Feature #97230: Add new event to modify the image manipulation preview url * Feature #97231: Add new event to modify inline record controls * Task #97243: Remove global jquery object window.$ in TYPO3 Backend * Feature #97254: Add Luxembourgish (lb) as supported language * Bug #97301: Avoid global jQuery usage in RTE link wizard * Task #97319: Revert "[TASK] Refresh the look of pagemodule" * Feature #97320: Automatically register reports and status via service configuration * Feature #97367: Auto creation of database fields for TCA "datetime" * Task #97398: Use normalized params in TSFE * Task #97399: Use constants in NewMultiplePages controller * Task #97412: Add types to internal indexed_search code * Feature #97449: Replace hooks in FlexForm tools with PSR-14 Events * Task #97450: Replace $GLOBALS['TYPO3_CONF_VARS']['SC_OPTIONS']['workspaces']['modifyDifferenceArray'] with PSR-14 event * Feature #97452: Replace hooks in EditFileController * Feature #97454: Replace hook in Link Browsers * Task #97497: Clearly document removal of deprecations * Task #97517: Remove the superfluous vendor namespace (TYPO3.CMS.Form) within the form configuration * Task #97520: Remove the superfluous vendor namespace (TYPO3.CMS.Form) within the form documentation * Task #97523: Adjust removal version of switchable controller actions * Task #97530: Remove Indexed Search option searchSkipExtendToSubpagesChecking * Task #97531: Replace various Context-based methods in TSFE with Context API * Task #97533: Avoid additional checks in TSFE when resolving a page * Task #97546: Remove legacy ArrayAccess functionality in LinkResult * Task #97549: Deprecate $cObj->lastTypoLink* properties * Task #97550: Remove config.disableCharsetHeader * Task #97556: Unify log messages in DataHandler to be PSR-3 compliant * Task #97558: Unify log messages in ExtendedFileUtility to be PSR-3 compliant * Bug #97581: Always call GU::intExplode with a string parameter in EXT:backend * Feature #97595: Render notifications via PHP * Task #97628: Simplify DataHandler internals code * Bug #97683: Typo in description for BE.compressionLevel * Feature #97729: Support attribute approved in xlf * Task #97737: Replace page generation hooks by events in TSFE * Task #97752: Remove unused MailerAdapterInterface * Feature #97787: Provide dedicated enum for severities * Task #97797: Remove processor_path_lzw option * Task #97825: Extend validator documentation for editors * Task #97861: Move Page Title Generation for search out of TSFE * Feature #97862: Introduce Events instead of hooks after generating page content * Task #97865: Clean up TMENU code * Task #97866: Deprecate various public TSFE properties * Task #97877: Replace font awesome icons with @typo3/icons * Bug #97882: Add missing colon in changelog labels * Bug #97885: Link to docs on main in Install Tool -> View Upgrade Documentation * Feature #97926: Use LanguageAspect in Extbase Persistence * Task #97927: Remove TypoScript option config.doctypeSwitch * Bug #97931: Make PageTreeFilterCest more stable * Bug #97933: Folder tree in brower broken * Task #97980: Replace last usages of btn-checkbox * Bug #98011: Creating new filemount via context menu in Filelist module does not prefill entry point * Task #98069: Remove DebugConsole * Task #98089: Drop FontAwesome * Bug #98100: Optimize Resource processing in TYPO3 Backend * Task #98127: Remove obsolete t3-icon class * Task #98128: Replace "warning-in-use" icon with @typo3/icons overlay * Task #98139: Cleanup PHPDoc comments in ext:felogin * Task #98144: Document new default value for UTF-8 filesystems * Task #98157: Remove jQuery from backend login * Feature #98158: Update Symfony to version 6.1 * Task #98165: Drop jQuery in EXT:dashboard * Task #98168: Remove jQuery in Context Menu Actions * Feature #98171: Add type converter for all enums (in extbase) * Task #98179: Remove broken interface selector * Task #98182: Do not use getRecordOverlay directly anymore * Bug #98187: Workspace module is broken * Bug #98188: Element browser with identifier db is already registered. * Task #98193: Remove jQuery in PersistentStorage * Task #98198: Update vunlerable build dependencies * Task #98261: Remove jQuery in Popover module * Task #98277: Avoid usage of SystemEnvironmentBuilder::REQUESTTYPE_AJAX * Task #98281: Make the AbstractPlugin @internal * Task #98283: Deprecate PHP Constant TYPO3_mainDir * Task #98285: Use /index.php and publicpath for path calculation in tests * Task #98288: Migrate backend modal component to lit * Task #98302: TSFE->set_no_cache() should provide more details * Task #98303: Use PSR-14 Events in PageRepository for getLanguageOverlay functionality * Feature #98304: Introduce event to modify record edit user access * Task #98308: TYPO3 uses legacy HTML4 properties * Task #98312: Remove page.CSS_inlineStyle * Task #98319: Move configuration files outside of document root when running in composer mode * Task #98368: Revise changelogs for v12.0 * Bug #98369: Remove _DEFAULT_PI_VARS from TypoScript * Task #98375: Use PSR-14 Events for customized Page Module rendering * Bug #98376: PreviewRendererResolverInterface is wrong * Task #98380: Remove feature-flag "unifiedPageTranslationHandling" * Task #98381: Avoid getIndpEnv and TYPO3_REQUEST in Link Builder * Task #98385: Clean up AbstractUserAuthentication * Bug #98386: Changelog filter is broken * Bug #98392: Sort Subpages on root level is broken * Task #98399: Enable natural ordering of YAML imports by default * Task #98401: Improve doc comments for ModifyEditFormUserAccessEvent * Bug #98402: Harden path of Source Sans font * Bug #98420: Preview mode button looks broken in WS preview * Task #98422: Streamline FormEngine inline-relation JavaScript module loading * Task #98424: Remove invalid deprecation trigger in dashboard * Feature #98426: new PSR-14 Event to LocalizationController * Feature #98431: Support javaScriptModules in FormEngine resultArray * Bug #98433: Improve error message when the FlexForm file is not found * Task #98441: Remove outdated recStatInfoHooks * Task #98455: Remove jQuery from FormEngine auto-suggest * Task #98465: Streamline documentation for AfterRecordSummaryForLocalizationEvent * Task #98466: Remove wrong docblock from RenderAdditionalContentToRecordListEvent class * Bug #98467: Keyboard shortcut to open the live search is considered counter-intuitive * Task #98477: [UX] - Align UI of the DB check module * Task #98478: Update rollup and optimize build resolving * Feature #98479: New TCA type "file" * Task #98485: Enforce TYPO3 Composer Installers package v5 * Bug #98486: PHP warning thrown: Array to string conversion in PageLinkBuilder.php * Feature #98487: Remove $GLOBALS['PAGES_TYPES'] * Feature #98488: Use Routing for getQueryArguments / addQueryString * Task #98489: Remove sleep tasks from scheduler * Feature #98490: Introduce PSR-14 event for DatabaseRecordList * Task #98494: Remove hook implementation of file_edit hooks * Task #98497: Drop CKEditor4 related resources * Bug #98498: Review changelog for v12 Release * Bug #98499: Prepare Changelog for v12.1 * Bug #98501: Cannot open uncached frontend with invoked f:translate view helper