# 9.0 2017-12-12 * Feature #3097: add 'special' comments for CONSTANTS * Feature #8963: Input array handling * Feature #22439: Allow nested GET-params in config.linkVars * Feature #22652: Provide a way to see Install Tool DB passwords in the form * Feature #28902: Configurable ACCESS_TIME precision * Feature #32149: add dynamic record collections * Feature #32150: Add a new Data-Representation for the ClipBoard based on collections * Feature #35029: Restricted number of DB Mounts in Mountpoints on edit workspace * Feature #39701: Pagetree-filter: Search by full URL * Feature #40404: Download SQL: Options * Feature #40729: Unify modes for "Display constants" in TS object browser * Feature #47877: Drag and Drop * Feature #49282: Use enchant instead of aspell for rtehtmlarea * Feature #50564: Indexed Search categories Rendering * Feature #50828: Fallback storage "zero" shall be read-only * Feature #52694: Deprecate GeneralUtility::devLog() * Task #55654: Extbase: Optimize ClassInfoFactory with the ClassInfoCache * Feature #56173: Clear Cache Task * Feature #56953: custom locallang.xml * Task #57594: Optimize ReflectionService Cache handling * Feature #59627: ExtensionManagementUtility::registerXclass method * Feature #60368: Build TCA and SQL Definitions from Entities * Feature #61796: Images: Responsive Area of Interest Cropping * Feature #67884: display 'lost' CEs * Epic #68075: Remove ExtJS from backend * Feature #72049: Marketing Section * Feature #72780: Strikethrough Button with HTML5 default tag * Feature #73357: Make thumbnail size in file browser configurable * Feature #75161: Create uri and link viewhelper for Backend Modules * Feature #75676: Choose position and then content element type * Task #77824: Use GeneralUtility::implodeAttributes instead of build the string by a foreach * Feature #77974: Qualified Guessing database credentials during installation routine * Feature #78161: static include - support setup.t3s and constants.t3s * Feature #78358: Allow other HTTP verbs than GET in functional test * Feature #78929: Add API to register own plugins to use with CKEditor * Feature #78946: Introduce extbase domain object cache * Feature #79343: Allow to override PATH_site via environment variables * Feature #79462: Symfony CLI executable via scheduler task * Feature #79777: Scheduler - add deleted field for task * Feature #79888: Constant-time password checking * Feature #80125: EXT:form - support for HTML5 input types email, tel and url * Feature #80126: EXT:form - maximum field length not set as attribute "maxlength" * Feature #80127: EXT:form - support for HTML5 attributes min and max * Feature #80128: EXT:form - support for HTML5 attribute "minlength" * Feature #80130: EXT:form - support for HTML5 attribute "pattern" * Feature #80173: install tool choose different driver * Feature #80192: EXT:form - extend select form element * Feature #80194: EXT:form - rename "page" to "step" * Feature #80196: EXT:form - row element * Feature #80581: Render list of recently users that were switched to * Bug #80592: Scheduler->log() defines $code as string but writeLog wich expects Integer * Task #80866: Add checkboxes to records in translation wizard * Task #80878: Update TYPO3 version to TYPO3 9.0-dev * Task #80882: Update dependency testing-framework to support v9 * Task #80889: Remove old AJAX registry * Task #80894: Removed deprecations in DataHandler * Task #80910: Correct rte_ckeditor file paths * Task #80911: Remove UpgradeWizards from version 6.x to 7.x * Bug #80949: Remove forgotten update wizard of CSC * Task #80993: Deprecate GeneralUtility::getUserObj * Task #80997: Deprecated methods of PagePositionMap * Task #81026: Streamline PageRepository->getRawRecord * Task #81031: Code and comment clean up * Bug #81032: BackendUtility should not use PageRepository * Task #81038: Remove cObj->getClosestMPvalueForPage() * Task #81051: Remove RTE display hotfix * Bug #81052: Non-existent field "fe_groups" is used in BackendUtility::ADMCMD_previewCmds() * Task #81053: Minor improvements to FormEngineValidation * Task #81060: Move ExtDirect component registration to EXT:backend * Bug #81093: config.contentObjectExceptionHandler is missing in tsref.xml * Task #81107: Move CSH files from EXT:context_help to correct sysexts * Bug #81108: Remove references to EXT:static_template * Task #81109: Simplify default backend layout * Task #81117: Remove unused images * Bug #81119: FIeld "t3_tables" of sys_action must be renderType selectSingle * Bug #81140: TYPO3 Exception if indexing content * Task #81198: Drop TSFE->dtdAllowsFrames * Task #81199: Remove TSFE->getDocumentTemplate * Task #81201: Load TCA earlier in each TYPO3 request * Bug #81215: Test bug / ext_localconf behaves not correct * Task #81217: Use LanguageService inside TSFE * Task #81218: Deprecate "noWSOL" in PageRepository->getRecordRaw * Task #81225: Migrate EXT:context_help to EXT:backend * Task #81237: Remove deprecated paremeters in RecyclerUtility * Task #81324: Remove format viewhelper of csh * Feature #81330: Provide a path to migrate internal class properties to protected * Feature #81363: Form elements should accept translation arguments * Task #81383: Fix typos in upgrade wizards * Bug #81387: Modal window is cut if content is extra large * Feature #81389: Injected ReflectionService without call to initialize/shutdown * Task #81426: Update TYPO3.Icons * Task #81452: Unify hidden records in backen user module * Task #81474: Combine modules "about" & "about modules" * Task #81491: Add alias for grunt tasks to package.json scripts * Task #81493: Remove equalheight from core * Bug #81494: Remove double escaping of TCA warning * Bug #81504: Limit usergroups shown in permission controller * Task #81505: Remove CSH of old old form wizard * Task #81540: Deprecate DocumentTemplate::formWidth * Task #81564: Move renderQueuedFlashMessages to own class * Bug #81568: cHash configuration resolving is done on every request * Task #81574: Merge cshmanual into documentation * Bug #81575: Core still uses csConv instead of native PHP methods * Bug #81579: Wrong markup in EM for download icon * Task #81600: Extbase has a lot of leftover unused Exception classes * Feature #81601: Add possibility to write tests in typeScript * Bug #81630: Revert "Port RteLinkBrowser.js to TS" * Task #81651: Hand over whole querybuilder object into list-modul hook * Task #81658: Cleanup DatabaseRecordList::buildQueryParameters and deprecate $parameters array * Bug #81692: Installation of extensions from TER impossible * Bug #81705: Fix namespace of PHPUnit exception * Bug #81749: f:link.action renders invalid links if pageUid param is omitted * Bug #81763: Migrate file edit form to FormEngine * Task #81842: Remove unused ViewHelpers of EXT:install * Feature #81863: Mark wizards as done in Install Tool * Task #81865: Move PageInformationController & TranslationStatusController * Bug #81883: Autocompletion broken for sys_template if edited via "Template" module * Bug #81884: Downloading online media files in filelist not possible anymore * Bug #81890: Don't show cut and cut release at the same time in clickmenu * Task #81899: Use &route=/ajax/ instead of &ajaxId for BE AJAX calls * Bug #81946: QueryBuilder->quoteIdentifiersForSelect() does not respect alias in lower or mixed case * Epic #81948: Introduce system maintainers * Bug #81981: Add code to generate entry scripts * Bug #81984: Loading spinner of System Information does not disappear on failure * Feature #82014: Extension scanner * Task #82088: Refactor GridEditor with TypeScript * Feature #82091: Allow inline rendering in SVG content object * Feature #82108: Support EXT: syntax as source in SVG content object * Task #82110: Deprecate value and noscript options in SVG content object * Bug #82111: renderMode = inline of SVG content object should respect width and height * Task #82120: Add t3editor for TSConfig fields * Task #82131: GeneralUtility::makeInstance() should throw exception on unknown class * Bug #82150: Upgrade wizards “mark undone + text” looks ugly * Bug #82151: Quickly clicking on prev/next buttons in doc header of install tool can kill layout * Bug #82152: DB compare response shown twice * Bug #82155: ArrayUtility renumbering also renumbers string keys * Bug #82160: Uncaught Exception in Environment Module * Bug #82198: Glitch in module icon * Bug #82199: Fix links to "backend admin" / "frontend website" * Bug #82201: Only reorder integer keys in arrayUtility * Task #82204: Use minified codemirror * Bug #82218: Wrong syntax in ExtendT3editor.rst * Task #82229: Remove extended fluid core class * Task #82238: Install Tool: Split up Checks into RequestHandlers * Task #82241: Move signal slots from EXT:install to EXT:core * Feature #82254: Store extension configuration as plain array * Task #82265: Install Tool: Migrate authentication logic into AuthenticationService * Feature #82266: Introduce system maintainers * Task #82268: Install Tool: Introduce PSR-7 response objects * Task #82269: Fluid: Migrate same methods into AbstractTemplateView * Bug #82270: Install Tool: Use PSR-7 for fetching all POST parameters * Task #82296: Remove unused constant TYPO3_user_agent * Task #82306: Install Tool: Remove authentication from backend context * Task #82312: Move DefaultConfigurationDescription to Yaml format * Task #82315: Make "lang:language:update" a symfony console command * Feature #82319: Install tool: System maintainer configuration * Task #82333: Create update wizard to move content of pages_language_overlay to pages * Story #82334: Refactor AbstractRecordList * Bug #82337: Drag and drop of pages (step, summary step) doesn't work properly * Task #82343: Use TYPO3_OS constant in Services registration * Task #82353: Remove context service from install tool * Bug #82359: Lock install tool button does not work in Backend context * Bug #82360: Impact of loaded TCA in InstallTool * Bug #82375: ErrorHandler is not complete for current usage * Task #82377: Remove option to allow adding system extensions * Task #82378: Remove TYPO3.jQuery * Bug #82382: Regular install tool does not trigger Silent Upgrade Configuration Wizard * Bug #82390: Migration of Extbase command controllers breaks scheduler functionality * Bug #82397: Fluid: Strict type checking when adding debug namespace * Bug #82403: Create multiple pages broken in MySQL strict mode * Task #82406: Migrate modules to regular backend routing * Task #82415: Use Response objects directly in Install Tool actions * Task #82418: Add descriptions to dropdowns in Install Tool - All Configuration * Task #82420: Introduce a standard way of throwing exceptions * Bug #82423: MySQL Strict Mode: diffsource fields require not null * Bug #82424: T3editor: Get default mode if none is defined * Task #82428: Improve context menu hiding * Bug #82429: "Delete similar errors" in EXT:belog broken * Task #82430: Replace GeneralUtility::syslog with Logging API * Bug #82433: Remove Install Tool entry point * Bug #82436: Fix file upload and directory creation in file browser * Task #82438: Use native trigger_error and ErrorHandler for deprecations * Bug #82440: File list: You don't have access to this page * Feature #82441: Inject logger when creating objects * Task #82443: EXT:form - port and fix "Typo3WinBrowserEditor" * Task #82445: Migrate Page Overlays into Pages table * Task #82455: Aggregate and cache console commands during bootstrap * Bug #82457: OptionViewHelper ignores empty value * Bug #82496: Remove duplicate caching of PageTS in Extbase's Typo3DbBackend * Task #82497: Streamline \TYPO3\CMS\Backend\Utility\BackendUtility::getPagesTSconfig * Bug #82512: FormEngine: Check for fileFolder_extList is broken * Bug #82547: Icon overlay accepts empty string as identifier * Task #82561: Skip empty directories in Clean typo3temp/assets/ * Task #82572: Remove RDCT redirect functionality * Bug #82613: Improve localStorage handling of Storage module * Task #82620: Update nikic/php-parser from v3.0.6 to v3.1.1 * Task #82622: Remove hardcoded check on typo3/sysext/ * Bug #82623: t3editor: code completion by includes not functional * Bug #82624: Ajax delete icon * Task #82629: Remove tce_db options "prErr" and "uPT" * Task #82631: Cleanup inline JavaScript in Backend * Bug #82632: Fix wrong matcher class name * Bug #82633: CKEditor creates unneeded empty uploads folder * Task #82639: Always use logging in authentication processes * Task #82640: Cleanup global debug functions * Bug #82653: Migrate lowlevel command for workspace cleanup * Task #82654: Raise BE user session timeout to 8 hours * Task #82655: Raise default jpg image quality to 85 * Bug #82668: Submit a form with two buttons send the user back on pressing in a form filed * Task #82680: Remove option to generate PNGs limited to 64 colors * Task #82692: Streamline ext_*.php responsibilities * Task #82701: Workspaces: Always consider references * Task #82702: Deprecate second argument of GeneralUtility::mkdir_deep() * Bug #82709: IRRE: Always consider "localizeChildrenAtParentLocalization" * Bug #82710: CSV export of records broken * Task #82713: Update codemirror to 5.30 * Bug #82720: Install Tool must not fail on deprecations * Task #82721: Improve documentation of new deprecation strategy * Bug #82751: BackendUserAuthentication::isSystemMaintainer() don't respect string values * Task #82768: Graphics API * Task #82769: Cleanup DataHandler (again) * Task #82770: Remove internal log method from ConditionMatcher * Task #82778: Cleanup DataHandler - again and again * Task #82783: Use BE_USER->isAdmin() consistently * Bug #82796: "Switched to users" list may contain deleted users * Bug #82798: Linkhandler for records works only when BE user is logged in * Task #82803: Drop global configuration option "content_doktypes" * Task #82805: Move AjaxLoginHandler to controller class * Task #82806: Upgrade friendsofphp/php-cs-fixer to latest version * Feature #82812: Introduce new @import syntax for TS includes * Feature #82826: TCA: Allow label in palette array * Bug #82845: Use Backend Routing with PATH_INFO instead of GET variable * Bug #82876: Show default site name in install tool * Task #82891: Remove obsolete IE6 condition in debug exception handler * Task #82893: Remove global variable PARSETIME_START * Task #82896: Migrate EXT:version into EXT:workspaces * Bug #82897: Minor argument and comment cleanup * Task #82899: Streamline ExtensionManagementUtility * Task #82902: Unify Backend module registration for Extbase modules * Bug #82908: Remove usage of ExtJS in System->Log * Task #82909: Remove TypoScript option config.typolinkCheckRootline * Task #82913: Remove TypoScript option config.typolinkEnableLinksAcrossDomains * Task #82926: Remove sys_domain.forced database field * Task #82927: Add parameter "gclid" to cHashExcludedParameters * Task #82945: Reduce PHP queries of pagetree SQL * Bug #82949: Escape tags in Upgrade Wizard * Bug #82967: t3editor is unaware of FLUIDTEMPLATE * Task #82975: Deprecate usage of @inject with non-public properties * Bug #82983: Inline Relations use wrong PID * Task #82991: Remove List module checkbox "Localization view" * Bug #83000: valuePicker in colorpicker not working at IRRE * Bug #83011: No error message for inline action errors (synchronize / localize) * Bug #83012: Unnecessary "[newlog()] " in DataHandler logs * Bug #83013: DataHandler uses hard-coded values for pages localization * Feature #83016: Show page translations in list module * Task #83017: Resolve translated page IDs to default language page in FE * Task #83038: Introduce Yarn and fix dependencies * Bug #83049: top.TYPO3.Storage is not available * Bug #83050: ExtJS Page tree uses deprecated top.TYPO3.Storage * Bug #83051: Page Tree: Mounting a node not functional * Bug #83057: Regression: back button in forms not work * Bug #83063: Fix regression PageViewHelper regarding noCacheHash * Bug #83068: RecordLocking is using wrong runtime cache * Bug #83077: Extbase persistence writes `NULL` as a string in DB * Task #83081: Move BE/fileExtensions/webspace to BE/fileExtensions * Bug #83082: Streamline page translation localization modes for enableFields * Task #83083: Move llXmlAutoFileName() into AbstractXmlParser * Task #83084: Use general functionality for fetching templates * Bug #83086: fe_users.is_online is updated even if user is not logged in * Task #83103: Remove/Replace non-standard phpdoc annotations * Task #83106: The correct case must be used for standard PHP types in phpdoc * Task #83108: Add acceptance test to prove introduction package is installed properly * Task #83109: Alwas put null at the last position * Task #83110: Use doctrine annotations check with php-cs-fixer * Task #83115: Add a script that checks doc comments for invalid annotations * Task #83116: Deprecate BackendUtility::getHash/storeHash * Task #83118: Deprecate BE/FE delete clause methods * Task #83121: Deprecate DataHandler->newlog2() * Task #83122: Remove stdwrap option TCAselectItem * Bug #83126: Use correct labels * Task #83143: Seperately extract @validate annotations * Bug #83146: selectMultipleSideBySide -> "List": returnURL broken * Bug #83151: Allow to upload online media via file list * Bug #83152: TCA migration should check that all TCA columns have a config section * Task #83153: Migrate backend_layout.icon to FAL * Bug #83155: Avoid reflection for public property injection * Bug #83160: Remove unused column sys_file_reference.sorting * Bug #83165: Editing file metadata of translated tt_content * Task #83169: Make install tool cards more speaking * Task #83171: Add PHP ext intl as suggested dependency * Task #83172: Use BE Routing / PSR-7 instead of BackendUtility::getModuleUrl * Bug #83173: f:uri.image inline viewhelper doesn't work like normal viewhelper * Task #83178: Allow to create admins as system maintainers from Install Tools * Task #83180: Allow Symfony 4 as constraint for composer * Task #83182: Remove auto-creation of uploads folder * Bug #83208: Missing labels in Wizard.js * Task #83233: Speed up pagetree loading * Task #83241: Remove custom userfunc of DataMapper->getPlainValue * Task #83243: Remove cache_phpcode cache configuration * Bug #83244: Fluid Widget Links: Do not use cHash by default * Task #83248: Introduce ExcelMicro as CGL for TypeScript * Task #83252: Deprecate syntax parsing in RteHtmlParser * Task #83254: Move page title generation into TSFE * Task #83256: Remove config.lockFilePath functionality * Task #83265: Drop support for &id=23.1 (id.type) syntax * Task #83267: Use JsonResponse for Backend AJAX calls * Bug #83269: List module throws deprecation / pagination in single table view does not work * Task #83270: Streamline composer dependencies for system extensions * Task #83271: UX: Streamline Page Translation selector in Page Module * Task #83272: ResourceViewHelper should always return absolute paths * Task #83273: Move public TemplateService properties to protected * Bug #83276: Invalid routes in EXT:backend/Configuration/AjaxRoutes.php * Bug #83277: The page title is shown htmlescaped in the new page tree * Bug #83280: Use stateIdentifier instead of Uid for SVG tree nodes * Task #83288: Change data-uid to data-state-id * Task #83294: Clean up of the saltedpasswords API * Bug #83295: MediaViewhelper broken since #82414 * Task #83302: Upgrade to composer installers 2.0.0 * Bug #83306: Drag & drop new element into node * Task #83382: Decouple Indexed Search from TSFE-BE User * Bug #83500: Core: Error handler (FE): PHP Warning: count(): Parameter must be an array or an object that implements Countable in /typo3/sysext/frontend/Classes/View/AdminPanelView.php line 729 * Bug #83613: Install Tool breaks, if key EXTENSIONS is missing in LocalConfiguration