# 9.4 2018-09-04 * Feature #17794: add an error code to pageNotFoundAndExit * Task #83018: Use modal api of core in install tool * Task #83019: use card api/layout of core in install tool * Task #84456: Make ContentObjectRendererTest notice free * Epic #84729: Implement "slug" handling for pages and other records * Bug #84834: Language selector not shown in page of default language without translation * Bug #84923: Link generation across domains/languages not working when using site configuration * Task #85004: Deprecate methods in ReflectionService * Task #85090: Make EnumerationTest.php notice free * Task #85092: Make Tests/Unit/TypoScript/ notice free * Task #85094: Make Tests/Unit/Configuration/ notice free * Task #85095: Make NormalizeCommandTest.php notice free * Task #85097: Make core/Tests/UnitDeprecated/ notice free * Task #85098: Make core/Tests/Unit/Resource/Driver/ notice free * Task #85163: Allow site handling with non-absolute URLs like "/" * Task #85164: Allow to only show site languages in BE ("enabledInFrontend") * Task #85165: Allow to accept https and http as incoming, and optional redirects * Task #85166: Add tests for a frontend rendering based on sites * Task #85200: Use Environment API instead of PATH_site for Cache Backends * Bug #85231: Wrong comments in various places * Task #85232: Remove PHP bug workaround in GraphicalFunctions * Bug #85235: Mis-usage of TemplateService->fileHash cache * Task #85238: Send deprections into dedicated log file * Task #85242: Use current request object in Maintenance middleware * Bug #85245: FileWriter instance throws error if used in serialized/unserialized objects * Feature #85256: Enable SQLite in installation process * Task #85259: Migrate more PATH_site usages to Environment API * Task #85261: Streamline imports in PHP cache classes * Task #85272: Use Environment API instead of PATH_site in EXT:backend * Task #85276: Replace PATH_site with Environment API in EXT:frontend * Bug #85278: Replace PATH_site with Environment API in various system extensions * Task #85279: Use Environment API in scheduler * Task #85285: Replace last occurrences of PATH_site with Environment API * Bug #85288: OrphanRecords command throws error on sqlite * Bug #85294: TableWizard throws error on sqlite * Bug #85306: Install Tool redirect does not work anymore due to non-initialized environment * Task #85307: Remove check on unused TCA[ctrl][thumbnail] * Bug #85308: suggest wizard checks for PIDs in all page languages * Bug #85310: $GLOBALS['BE_USER] is null causes Errors in FE * Task #85313: Add notes field to pages * Task #85339: Revert "Honor l18n_cfg in PageRepository" * Task #85343: Reports Module: Improve the message if BE is accessed through HTTPS and BE|lockSSL isn't activated * Task #85348: Open modals in install tool with different sizes * Feature #85355: Support basic HTML5 fields in FormEngine * Task #85361: CKEditor RTE: Re-add button to insert soft hyphen * Feature #85367: Use dragonmantank/cron-expression to calculate cron commands * Feature #85368: Use dragonmantank/cron-expression to calculate cron commands * Feature #85389: Introduce Context API for consistent data handling * Bug #85390: ResourceCompressor calculates wrong filepath * Task #85393: Only import extensions compatible with TYPO3 v7+ into EM * Bug #85397: Remove console.log in ContextHelp.js * Task #85402: Introduce LoginType enumeration * Task #85408: Minor cleanups for Context API * Task #85412: LiveSearch should not cache results * Task #85413: Migrate Extbase Typo3DbBackend to Context API * Bug #85440: UI: Scan extension files: Misleading Button-text * Task #85445: Decouple TemplateService->getFileName * Bug #85446: Doctrine DBAL is checking for wrong property * Task #85455: Store Install Tool tokens in data attributes * Bug #85460: Upgrade Wizards broken after #85455 * Task #85462: Deprecated unused and superfluous methods in Extension Manager * Task #85463: Streamline templates of system maintenance area * Bug #85464: Extension scanner broken after #85455 * Bug #85481: Install Tool adds double slashes to requireJS modules * Bug #85516: Superfluous Doctrine restriction check * Task #85519: Streamline usage of Logging * Task #85542: Move verbosity into TemplateService * Task #85543: Introduce Language Aspect for Contexts * Bug #85546: Improve usability of settings module * Feature #85550: Add context check for TypoScript * Task #85553: Deprecate -1 in language-related calls of PageRepository * Task #85554: Deprecate PageRepository->checkWorkspaceAccess * Task #85555: Deprecate TSFE->getUniqueId * Task #85556: Deprecate PageRepository->versioningWorkspaceId * Task #85557: Use RootlineUtility directly * Task #85558: Deprecate cObj->enableFields * Task #85559: Use static constant call for PageRepository * Bug #85564: Save be user broken in case no argon2 support exists * Task #85597: Deprecate TYPO3_OS * Bug #85598: Fix typo in RST file * Task #85605: Decouple thumbnails generation from controllers * Bug #85632: Context User Aspect must deal with empty fe_user * Bug #85634: Core does not recover if PackageStates.php is corrupted/removed * Task #85655: Suggest wizard should receive record's uid as parameter * Bug #85660: Site module must show hidden root pages * Task #85661: Remove further usages of TSFE->sys_page * Task #85666: Deprecate TSFE->initTemplate * Bug #85672: Non admin user can't change password in user settings * Feature #85678: Optimize handling title tag * Task #85706: Streamline deprecation messages * Task #85707: Deprecate LoginFramesetController * Task #85708: Clean up tests from Context API refactoring * Task #85709: Separate sending from fetching HTTP headers * Task #85712: Use CLI and Composer Checks via Environment class * Task #85714: Use RootlineUtility in Site Finder * Task #85717: Add site interface * Task #85719: Make base detection more robust * Bug #85721: LocalizationFactory uses old deprecation logger * Task #85727: Move DatabaseIntegrityCheck to EXT:lowlevel * Task #85728: Move RecordHistory into DataHandling namespace * Bug #85773: Flaws in sys_log entry IP anonymization * Bug #85776: Domain lock does not work anymore * Bug #85782: Missing icon overlay for pages in page tree * Bug #85787: "Do you want to close without saving" renders twice when clicking in the page tree * Task #85800: Clean up code due to Context API deprecations * Task #85801: Deprecate 2nd argument of GeneralUtility::explodeUrl2Array * Task #85810: Split site configuration loading into separate method * Task #85811: Clean up phpdoc for PSR-7 implementation * Task #85815: Clean up Admin Panel Code * Task #85816: Move Preview Info hook to hook_eofe * Bug #85819: Exception on non-existing error handler * Task #85820: Add more tests to nested domains and langauges * Task #85841: Remove dependency of Site to SiteLanguage * Task #85858: Deprecate GeneralUtility::clientInfo() * Bug #85867: @import in addPageTSConfig does not work correctly * Bug #85868: Tests are not executed * Task #85869: Clean up FrontendEditing Controller * Task #85877: Extract Persistence of FrontendEditing in separate class * Task #85878: Deprecate EidUtility and methods within TSFE * Task #85883: Centralize sending HTTP headers in TSFE * Task #85884: Deprecate PageGenerator class * Bug #85885: Correct setting path for trustedHostPattern * Bug #85886: ContentObjectRenderer is serialized with Logger instance * Task #85892: Centralize sys_domain resolving * Task #85897: Streamline site handling functional tests * Task #85900: Introduce Pseudo Sites * Task #85902: Deprecate IMGMENU/GMENU functionality * Task #85903: Remove unused protected getter * Bug #85904: Check for TYPO3_MODE in ext_localconf is still there * Task #85905: Use proper label shortcut method in adminpanel and feedit * Task #85906: Add more remarks for flags regarding temporary content in TSFE * Bug #85909: SiteLanguage should respect in frontend localization * Bug #85912: Button "Paste after this record" or "Paste into this column" is broken * Task #85919: Flush site caches if sys_domain or sys_language was modified * Bug #85924: Listview panels: Only first page is filled with records * Task #85928: Add upgrade wizard to migrate pages to slug handling * Task #85929: Move error handler constants to SiteInterface * Task #85930: Add API for Site resolving * Task #85931: Add AJAX validation for TCA type slug * Task #85937: Generate default slug for entities not being submitted via FormEngine * Bug #85950: Preview URL in backend is invalid * Task #85951: Move domainStartPage setting to PageResolver * Task #85954: Move Site Resolving before TSFE initialization in Frontend * Bug #85957: Pages on root level cannot be created now * Task #85962: Add frontend functional tests for pages having slugs * Task #85964: Sort building process within PageLinkBuilder / TypoLink * Task #85966: Use strict bool calls for TimeTracker->LR * Task #85967: Remove unused TimeTracker->fixContent() method argument * Task #85968: Inject TSFE object into ContentObjectRenderer * Bug #85969: Wrong phpDoc comments * Task #85971: Deprecate PageRepository->getFirstWebPage() * Task #85972: Decouple usage of cObject->editPanel and ->editIcons * Task #85977: Deprecate @cli annotation * Feature #85991: Allow symfony commands to be non-schedulable * Bug #85992: Pseudo site not found on new root-level page * Task #85996: Migrate EM CommandController to symfony/command * Bug #85997: Inconsistent page slugs * Feature #86001: Move workspaces scheduler tasks to native symfony commands * Task #86002: Deprecate TSFE constructor with no_cache parameter * Bug #86009: html-tag is without lang- and dir-attribute using site-configuration * Bug #86011: Site Configuration Module should show hidden languages * Task #86013: Separate site resolving from page slug resolving * Task #86015: Minor cleanup in ContentObjectRenderer and tests * Task #86027: Change Site Base Handling to PSR-7 URI Interface * Bug #86030: PageRouter::matchRoute() must allow null values as return value * Bug #86031: Fallback functionality for site handling throws error * Task #86032: Explicitly allow ?id= parameter in site handling * Bug #86033: superfluous space in exception message * Task #86035: Extract _GP call from TSFE->initializeSearchWordData * Bug #86037: Loose Route Candidates Restriction to deleted+workspace * Task #86040: Use $tsfe->type for generating the redirect URL * Task #86042: Wrong check for switching URL schemes * Bug #86043: TemplateAnalyzer has PHP Warning * Bug #86044: Page routing does not work with site language base without trailing slash * Task #86046: Inject PSR-7 data in TSFE methods * Task #86048: Create URLs with typolink for pages with sites * Bug #86050: Creating pages with drag'n' drop in page tree doesnt create slug * Feature #86051: Show available extensions * Task #86052: Cleanup unused PageUriBuilder options * Task #86054: Slug Handling does not add config.linkVars * Task #86057: Document the new linking behaviour * Bug #86062: Wrong TypoScript condition with expression language frags Backend * Bug #86064: Core uses deprecated class * Bug #86067: TypoLink generation does not respect language settings * Bug #86091: Empty documentroot causes errors in unit tests when used as needle in strpos on Windows * Task #86104: Adjust LinkGeneratorTest for non-site scenario * Bug #86112: Install Tool has mixed namings for Interfaces * Bug #86114: Avoid suffixing base slug again * Bug #86115: Revert typo3conf file changes * Bug #86116: Wrong SQL definition given for pages.slug * Task #86117: Ensure version placeholders get updated on slug changes * Bug #86118: SlugEnricher.php misses strict_types * Bug #86119: Editing page properties in workspace with changes on sqlite causes exception * Bug #86120: slug update wizard has no proper sorting * Bug #86122: Slugs for pages with invalid characters are empty * Bug #86125: new installation does not add a root page slug * Bug #86126: Avoid insufficient workspace version constraint * Bug #86127: UpgradeWizards.js logs into console * Bug #86131: Template module must respect workspaces * Bug #86132: Debug exceptions not scrollable when loaded in backend iframe * Bug #86137: Cannot edit page properties of moved pages in workspace