{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":54374933,"defaultBranch":"main","name":"frontend","ownerLogin":"TYPO3-CMS","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2016-03-21T09:16:15.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/3920091?v=4","public":true,"private":false,"isOrgOwned":true},"refInfo":{"name":"","listCacheKey":"v0:1726572852.0","currentOid":""},"activityList":{"items":[{"before":"8ed4b8b89d8922403d7c353f4d7367c78c225218","after":"4a716d990cbed1add1ac46d1264f64a1eaa118ce","ref":"refs/heads/main","pushedAt":"2024-09-19T14:23:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[BUGFIX] Correct deprecation messages in TSFE for cache tags methods\n\nThe PSR-7 request attribute is named \"frontend.cache.collector\"\n(like also visible in the code below the triggered error).\n\nResolves: #105037\nRelated: #102422\nReleases: main\nChange-Id: Ib6b8471ac381178954fcb7b609e87b01e92e3c43\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86195\nTested-by: Sascha Nowak \nTested-by: Christian Kuhn \nTested-by: core-ci \nReviewed-by: Sascha Nowak \nReviewed-by: Christian Kuhn ","shortMessageHtmlLink":"[BUGFIX] Correct deprecation messages in TSFE for cache tags methods"}},{"before":"db7045c6b4060db63a2ad2f1bbf69daa42bf87d9","after":"8ed4b8b89d8922403d7c353f4d7367c78c225218","ref":"refs/heads/main","pushedAt":"2024-09-18T13:42:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[TASK] Improve debug output of PAGEVIEW\n\nBy moving `language` before `site` in the variables array,\n`language` can be expanded in the `` ViewHelper,\nwhich will make the `PAGEVIEW` object more approachable\nfor integrators.\n\nResolves: #105013\nReleases: main\nChange-Id: Iab18b61e13847b19be0294cda28e92863c0be9a2\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86146\nTested-by: core-ci \nReviewed-by: Oliver Bartsch \nTested-by: Andreas Kienast \nReviewed-by: Andreas Kienast \nTested-by: Oliver Bartsch ","shortMessageHtmlLink":"[TASK] Improve debug output of PAGEVIEW"}},{"before":"fc7d1ba9a544da53030b226133a7191992bf6c06","after":"db7045c6b4060db63a2ad2f1bbf69daa42bf87d9","ref":"refs/heads/main","pushedAt":"2024-09-17T19:22:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[TASK] Add more tests for `ShowImageController`\n\nResolves: #105017\nReleases: main\nChange-Id: Ibe4019e94a96a04a4fa6eab630343a658fe563f2\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86148\nReviewed-by: Georg Ringer \nTested-by: Garvin Hicking \nTested-by: core-ci \nReviewed-by: Christian Kuhn \nTested-by: Georg Ringer \nTested-by: Christian Kuhn \nReviewed-by: Garvin Hicking ","shortMessageHtmlLink":"[TASK] Add more tests for ShowImageController"}},{"before":"d9c4c269a941ce664c76402a32c80499aaf9a5a7","after":"fc7d1ba9a544da53030b226133a7191992bf6c06","ref":"refs/heads/main","pushedAt":"2024-09-17T15:29:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[BUGFIX] Do not exceed `PHP_INT_MAX` in `CacheTimeout` middleware\n\nIf the TypoScript configuration `config.cache_clearAtMidnight` is\nenabled, the `CacheTimeout` middleware is executed. If\n`CDC->resolveLifetime()` returns `PHP_INT_MAX`, the timeout calculation\nmay cause an overflow, leading to a float value being passed to\n`date()`. To circumvent this issue, the value may now not be larger\nthan `PHP_INT_VALUE` anymore.\n\nResolves: #105003\nRelated: #102422\nReleases: main\nChange-Id: I7a2bb3f7121dbfd4dc82548af947746754399b7d\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86142\nTested-by: Garvin Hicking \nTested-by: Christian Kuhn \nTested-by: Andreas Kienast \nReviewed-by: Garvin Hicking \nReviewed-by: Andreas Kienast \nTested-by: core-ci \nReviewed-by: Christian Kuhn ","shortMessageHtmlLink":"[BUGFIX] Do not exceed PHP_INT_MAX in CacheTimeout middleware"}},{"before":"f2c59ef980cf4ae9163780647185e10ca90f5b9c","after":"d9c4c269a941ce664c76402a32c80499aaf9a5a7","ref":"refs/heads/main","pushedAt":"2024-09-17T14:25:57.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[TASK] Use frontend sub-request for `ShowImageControllerTest`\n\nUsing method mocks to define what they should return to check\nexpectations only tests that the code flow does not change it.\nThis could be compared to a pure pipeline flow test to see if\nwater added on one end reaches the other end with same volume.\n\nTests based on this technique are useful in many cases,\nbut it is not the right way to verify and ensure that\nsomething really returns what the normal code flow would\nreturn. If the expectation in a test is not adjusted along\nwith the mocked (faked) return value such a test would\nnever reveal that the expecation does not match the real\nworld.\n\nThis change refactors `ShowImageControllerTest` using\nas instance setup and frontend sub-requests\nto test the \"eID\" handler implementation.\n\nThat reveales the expectation of having a leading\nslash for the image path is incorrect. That is already\nthe case in real world instances.\n\nNote it makes fully sense that such an early eID\nhandler using the FAL systems could not prefix images based\non current workflow and setup of the stack.\n\nResolves: #105006\nReleases: main\nChange-Id: I7eb987fe5cfbaa001fc62e12a4d8052e328e882b\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86143\nTested-by: Christian Kuhn \nTested-by: core-ci \nReviewed-by: Christian Kuhn \nTested-by: Stefan Bürk \nReviewed-by: Stefan Bürk \nTested-by: Garvin Hicking \nReviewed-by: Garvin Hicking ","shortMessageHtmlLink":"[TASK] Use frontend sub-request for ShowImageControllerTest"}},{"before":"2e4c3f8957b90b157808215aa4d7c5f02e2762f1","after":"f2c59ef980cf4ae9163780647185e10ca90f5b9c","ref":"refs/heads/main","pushedAt":"2024-09-17T12:09:38.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[TASK] Set TYPO3 version to 13.4.0-dev\n\nChange-Id: I54042e0f1a1bbb14920af08582002aa8e9987574\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86139\nTested-by: core-ci \nTested-by: Benjamin Franzke \nReviewed-by: Benjamin Franzke ","shortMessageHtmlLink":"[TASK] Set TYPO3 version to 13.4.0-dev"}},{"before":"782131dc67f4edc99d95a08b11951002f8ba7406","after":"2e4c3f8957b90b157808215aa4d7c5f02e2762f1","ref":"refs/heads/main","pushedAt":"2024-09-17T11:31:55.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[RELEASE] Release of TYPO3 13.3.0\n\nChange-Id: Iaa9dfd64c2fc419f7745124a098fe3975b1f8b7b\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86138\nTested-by: Benni Mack \nReviewed-by: Benni Mack ","shortMessageHtmlLink":"[RELEASE] Release of TYPO3 13.3.0"}},{"before":"295b78c40313776856108f1e2cd402b0dc0f25d1","after":"782131dc67f4edc99d95a08b11951002f8ba7406","ref":"refs/heads/main","pushedAt":"2024-09-17T09:17:33.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[BUGFIX] Fix type error on using addCacheTags\n\nUse the spread operator for the array_map result\nin deprecated TSFE->addCacheTags().\n\nResolves: #104998\nRelated: #104990\nReleases: main\nChange-Id: Ibd96aa81fd4b9d4a001a33d58b790cad9a6de734\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86133\nReviewed-by: Sascha Nowak \nReviewed-by: Benjamin Franzke \nTested-by: Sascha Nowak \nTested-by: Christian Kuhn \nReviewed-by: Christian Kuhn \nTested-by: Benjamin Franzke ","shortMessageHtmlLink":"[BUGFIX] Fix type error on using addCacheTags"}},{"before":"662773f6a7917385f42e7b753f3ec97d497ede9d","after":"295b78c40313776856108f1e2cd402b0dc0f25d1","ref":"refs/heads/main","pushedAt":"2024-09-16T23:09:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[TASK] Automatic frontend cache tagging\n\nWhenever a record is rendered with the ContentObjectRenderer\nthe cache tag is added automatically.\n\nResolves: #104990\nRelated: #102422\nReleases: main\nChange-Id: Ieb55c41fbd890692f78d950290fd6cf39761623a\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86125\nTested-by: Sascha Nowak \nTested-by: core-ci \nReviewed-by: Christian Kuhn \nTested-by: Christian Kuhn \nReviewed-by: Sascha Nowak ","shortMessageHtmlLink":"[TASK] Automatic frontend cache tagging"}},{"before":"1722981643e80994e3a5d12820374e3412495c87","after":"662773f6a7917385f42e7b753f3ec97d497ede9d","ref":"refs/heads/main","pushedAt":"2024-09-16T21:32:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[FEATURE] Add support for AVIF files in GIFBuilder\n\nThe Image AVIF format is supported by \"libgd\" since\nPHP 8.1 which can now be used to create images by\nGIFBUILDER.\n\nSee https://en.wikipedia.org/wiki/AVIF\n\nExample:\n page.10 = IMAGE\n page.10 {\n file = GIFBUILDER\n file {\n backColor = yellow\n XY = 1024,199\n format = avif\n speed = 8\n quality = 44\n\n 10 = IMAGE\n 10.offset = 10,10\n 10.file = 1:/my-image.jpg\n }\n }\n\nResolves: #102353\nReleases: main\nChange-Id: Ibb0697f1c7120ba596ac94f31e51d4863c3999b3\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/81712\nTested-by: core-ci \nTested-by: Garvin Hicking \nTested-by: Stefan Bürk \nReviewed-by: Stefan Bürk \nReviewed-by: Garvin Hicking ","shortMessageHtmlLink":"[FEATURE] Add support for AVIF files in GIFBuilder"}},{"before":"68201911b8c5f4a0ee2f599cfa4a540442ad3c85","after":"1722981643e80994e3a5d12820374e3412495c87","ref":"refs/heads/main","pushedAt":"2024-09-16T18:20:58.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[FEATURE] Automatic frontend cache tagging\n\nIntroduce more sophisticated automatic cache tagging in multiple\nplaces of the core.\n\nExtbase:\n* A Cache tag is added for the tablename when using findAll() and\n countAll().\n* A Cache tag for the storage pid is added when using th findBy*()\n and __call() methods\n\nContentObject:\n* A Cache Tag is added for each records rendered by\n ContentContentObject and RecordContentObject\n\nTypoLink:\n* A Cache Tag is added for linked pages. This is useful for scenarios\n like having a page with start and/or end time. When a page links to\n this kind of pages the link should reflect the correct state.\n Currently it could happen the target page is \"hidden\" but the page\n that linked to it was served from cache and the link was still\n active.\n\nResources:\n* A Cache Tag is added when linking to a file. This is useful when a\n file is replaced or metadata are changed the.\n\nThis feature is guarded with toggle \"frontend.cache.autoTagging\" and\nexperimental for now: The feature is still incomplete and there should\nbe a couple more places that add tags. Additionally, some instances\nmay tend to add many tags, which may have a negative impact on\nperformance. Automatic tagging and cache clearing by tag is the way\nto go, though. But we have to gather additional feedback from the\ncommunity to gain knowledge in order to determine loose ends and\nbottlenecks. As such, we decided to bring this feature into the wild\nnow. The feature toggle is by default *disabled* for instances being\nupgraded from earlier core versions, and *enabled* for newly\ncreated instances based on TYPO3 v13.\n\nResolves: #104990\nRelated: #102422\nReleases: main\nChange-Id: I839ebc5bac7a066fb158a5213d419956937b44dc\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85778\nTested-by: Christian Kuhn \nTested-by: Sascha Nowak \nReviewed-by: Sascha Nowak \nReviewed-by: Benjamin Franzke \nTested-by: core-ci \nTested-by: Benjamin Franzke \nReviewed-by: Christian Kuhn ","shortMessageHtmlLink":"[FEATURE] Automatic frontend cache tagging"}},{"before":"15dadf0a9b1e9da0a755c118af8a5d757df6806e","after":"68201911b8c5f4a0ee2f599cfa4a540442ad3c85","ref":"refs/heads/main","pushedAt":"2024-09-15T11:04:11.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[BUGFIX] Replace access to non-existent TSFE property\n\nThe TSFE->cacheExpires property was removed in #102422. This\npatch removes an existing property access and replaces it with\nits successor in PrepareTypoScriptFrontendRendering middleware.\n\nResolves: #104975\nRelated: #102422\nReleases: main\nChange-Id: I106209ac5aa896abdd7838f6922cbb20f8411106\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86105\nReviewed-by: Anja Leichsenring \nTested-by: Stefan Bürk \nTested-by: core-ci \nReviewed-by: Stefan Bürk \nTested-by: Anja Leichsenring ","shortMessageHtmlLink":"[BUGFIX] Replace access to non-existent TSFE property"}},{"before":"14a1cd5316c47107ff083889a5366088a72b11e1","after":"15dadf0a9b1e9da0a755c118af8a5d757df6806e","ref":"refs/heads/main","pushedAt":"2024-09-15T06:14:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[FEATURE] Introduce config.sendCacheHeadersForSharedCaches\n\nInstead of config.sendCacheHeaders which\nmight have your users see the same content for a long\ntime, it is recommended to use\nconfig.sendCacheHeadersForSharedCaches = auto\ninstead, because this now sends the following HTTP Header:\n\nCache-Control: max-age=0, s-maxage=12345\n\nwhere as s-maxage is the number of seconds how long\nthe proxy / CDN is allowed to cache, while the browser/client\nshould never cache this.\n\nThis way, the proxy can decide on how long to cache things.\n\nSee: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control\n\nResolves: #104914\nReleases: main\nChange-Id: If121df42b22dd0027a8fd17e5bc434c4e67e612a\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/86007\nReviewed-by: Stefan Bürk \nTested-by: Benni Mack \nReviewed-by: Benni Mack \nTested-by: Stefan Bürk \nReviewed-by: Benjamin Franzke \nTested-by: core-ci \nTested-by: Benjamin Franzke ","shortMessageHtmlLink":"[FEATURE] Introduce config.sendCacheHeadersForSharedCaches"}},{"before":"dfd343bee8997d1299b9c370a98c623bb8437dfc","after":"14a1cd5316c47107ff083889a5366088a72b11e1","ref":"refs/heads/main","pushedAt":"2024-09-14T07:18:53.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[FEATURE] Introduce CacheDataCollector API\n\nA new API has been introduced to collect cache tags and their\nlifetime during frontend rendering. This API is used in the\ncore to collect cache tags from page cache and content object\ncache.\n\nThe API is implemented as a new PSR-7 request attribute\n`frontend.cache.collector` to remove the dependency from TSFE.\n\nEvery cache tag has a lifetime. The minimum lifetime is\ncalculated from all given cache tags. API users don't have\nto deal with it individually. The default lifetime for a\ncache tag is 86400 seconds (24 hours).\n\nThe current TSFE api is deprecated in favor of the new API\nas the current API implementation does not allow to set a\nlifetime and extension authors have to workaround it. The\nTSFE api will be removed with the next major version.\n\nThe frontend employs the following strategy: A relatively\nearly middleware adds an empty new cacheDataCollector\ninstance as attribute to request. Extensions rendering\ncode based on database records can then add cache tags\nto this attribute. The FE rendering adds the final cache\ncontent, the middleware then compiles the final cache\nentries and triggers their persistence. There is an\nadditional event `AddCacheTagEvent` the middleware listens\nto. It allows adding cache tags at places where the request\nis not available. This is a tribute to technical debt that\ncan not be avoided at the moment. That event is however\nmarked `@internal` and may vanish later.\n\nResolves: #102422\nReleases: main\nChange-Id: Ice7b3b8aba7c4df3e48d3895d6388f5641fdad63\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/81801\nTested-by: Torben Hansen \nTested-by: Benjamin Franzke \nReviewed-by: Stefan Bürk \nReviewed-by: Benjamin Franzke \nReviewed-by: Christian Kuhn \nReviewed-by: Torben Hansen \nTested-by: Stefan Bürk \nTested-by: Guido Schmechel \nTested-by: Christian Kuhn \nTested-by: core-ci \nReviewed-by: Guido Schmechel \nReviewed-by: Benni Mack \nTested-by: Sascha Nowak \nReviewed-by: Sascha Nowak ","shortMessageHtmlLink":"[FEATURE] Introduce CacheDataCollector API"}},{"before":"bd4afd04565c4269b4c5776582830e99608502ec","after":"dfd343bee8997d1299b9c370a98c623bb8437dfc","ref":"refs/heads/main","pushedAt":"2024-09-13T12:46:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[TASK] Remove unused fields from tt_content\n\nSince the removal of CSS Styled Content in TYPO3 v8,\nthe usage for the DB fields in tt_content:\n\n- Menu block title [accessibility_title]\n- Add link to bypass navigation block [accessibility_bypass]\n- Link text to bypass navigation block [accessibility_bypass_text]\n\nhave been unused, and are not needed anymore.\n\nIf someone still uses them with CSS Styled Content,\nthey need to add the fields and the TCA definitions\nto their own schema again.\n\nResolves: #101535\nReleases: main\nChange-Id: Ia841d700c5cf48eefc43b277edcec2a5ff3dde71\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85933\nTested-by: core-ci \nReviewed-by: Jasmina Ließmann \nReviewed-by: Christian Kuhn \nReviewed-by: Benni Mack \nTested-by: Jasmina Ließmann \nTested-by: Christian Kuhn \nTested-by: Benni Mack ","shortMessageHtmlLink":"[TASK] Remove unused fields from tt_content"}},{"before":"9711db499d2230bc1a762684a2283b6a6fb97096","after":"bd4afd04565c4269b4c5776582830e99608502ec","ref":"refs/heads/main","pushedAt":"2024-09-11T11:47:02.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[TASK] Extend RecordInterface\n\nThe RecordInterface is extended to require\nimplementations to implement the `getRawRecord()`\nand `getSystemProperties()` methods as well\nas the PSR-11 `ContainerInterface`.\n\nThis allows to change RecordFactory's `createRecord()`\nmethod to return the interface instead of the\n`Record` object. This will come in handy e.g.\nfor the already existing `Page` object, which\ncan now be used without extending `Record`.\n\nBy using the `ContainerInterface` we allow\naccess to the record and its properties via\nthe has() and get() methods, which is supported\nsince Fluid 4.0: https://github.com/TYPO3/Fluid/issues/1001.\n\nResolves: #104859\nReleases: main\nChange-Id: Ib8d20dc4eea343bf1c2160dbab6d4301930792ee\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85925\nReviewed-by: Benni Mack \nTested-by: Oliver Bartsch \nTested-by: Benjamin Franzke \nReviewed-by: Benjamin Franzke \nTested-by: Benni Mack \nReviewed-by: Oliver Bartsch ","shortMessageHtmlLink":"[TASK] Extend RecordInterface"}},{"before":"e6e612dba4c97815b078c588ae1d354fdddb24c9","after":"9711db499d2230bc1a762684a2283b6a6fb97096","ref":"refs/heads/main","pushedAt":"2024-09-11T10:26:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[TASK] Disable custom colPos and CType for translations\n\nPreviously, it was possible to allow editors to modify\ncolPos and CType in FormEngine via connected CEs.\n\nThis has been changed when editing translated CEs, that\nCType and colPos cannot be changed anymore.\nAn upgrade wizard is added to ensure that all translated\nCEs really contain the same colPos and CType values as\ntheir default language pendants.\n\nBoth fields are now set to l10n_mode=exclude to avoid\nfuture inconsistencies.\n\nResolves: #60357\nReleases: main\nChange-Id: Id04636d8c131ce8fbc7c9a87d5fc13a6b406eec2\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85978\nTested-by: André Buchmann \nTested-by: core-ci \nReviewed-by: André Buchmann \nReviewed-by: Oliver Bartsch \nTested-by: Oliver Bartsch ","shortMessageHtmlLink":"[TASK] Disable custom colPos and CType for translations"}},{"before":"a98c5f19ad6563c252afe0e6b6d2423293ae1ca1","after":"d1f20151116cdf14b02933900e829bf57d561b2c","ref":"refs/heads/12.4","pushedAt":"2024-09-10T17:57:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[BUGFIX] Undefined array key \"contentSecurityPolicies\"\n\nIf the 'contentSecurityPolicies' value is not filled properly\nin the site configuration, the call to\n$site->getConfiguration()['contentSecurityPolicies'] will fail.\nThe access should we guarded with a null coalescing operator.\n\nResolves: #104873\nReleases: main, 12.4\nChange-Id: Ie49a25d8ca9a194629c4a389b17b299091d44031\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85954\nReviewed-by: Benni Mack \nTested-by: Benni Mack \nTested-by: core-ci ","shortMessageHtmlLink":"[BUGFIX] Undefined array key \"contentSecurityPolicies\""}},{"before":"bc404f87a224afe3e227eb8a5f008ddc1c5fe0db","after":"e6e612dba4c97815b078c588ae1d354fdddb24c9","ref":"refs/heads/main","pushedAt":"2024-09-10T14:40:35.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[BUGFIX] Undefined array key \"contentSecurityPolicies\"\n\nIf the 'contentSecurityPolicies' value is not filled properly\nin the site configuration, the call to\n$site->getConfiguration()['contentSecurityPolicies'] will fail.\nThe access should we guarded with a null coalescing operator.\n\nResolves: #104873\nReleases: main, 12.4\nChange-Id: Ie49a25d8ca9a194629c4a389b17b299091d44031\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85977\nReviewed-by: Garvin Hicking \nTested-by: Benni Mack \nTested-by: core-ci \nTested-by: Garvin Hicking \nReviewed-by: Benni Mack ","shortMessageHtmlLink":"[BUGFIX] Undefined array key \"contentSecurityPolicies\""}},{"before":"4432df3f46566d2a9494420d61d44a177d7505cd","after":"a98c5f19ad6563c252afe0e6b6d2423293ae1ca1","ref":"refs/heads/12.4","pushedAt":"2024-09-10T09:15:20.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[TASK] Set TYPO3 version to 12.4.21-dev\n\nChange-Id: I9cf478aa6b8697246cc4d70ed2fb7f4bae7213a5\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85974\nReviewed-by: Benni Mack \nTested-by: core-ci \nTested-by: Benni Mack ","shortMessageHtmlLink":"[TASK] Set TYPO3 version to 12.4.21-dev"}},{"before":"cd0ff100a52c63a88591e0dd121dc3c20c1249df","after":"4432df3f46566d2a9494420d61d44a177d7505cd","ref":"refs/heads/12.4","pushedAt":"2024-09-10T07:49:56.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[RELEASE] Release of TYPO3 12.4.20\n\nChange-Id: I17f0105b43fc9230e1430be834f94d0588931b79\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85973\nReviewed-by: Benni Mack \nTested-by: Benni Mack ","shortMessageHtmlLink":"[RELEASE] Release of TYPO3 12.4.20"}},{"before":"e984a68868566285cbb6e343a81bc7ed9383ff73","after":"bc404f87a224afe3e227eb8a5f008ddc1c5fe0db","ref":"refs/heads/main","pushedAt":"2024-09-10T07:34:46.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[TASK] Move TypolinkParameter to EXT:core\n\nMove TypolinkParameter to EXT:core and\ntherefore remove a dependency from EXT:core\nto EXT:frontend.\n\nResolves: #104869\nRelated: #104615\nReleases: main\nChange-Id: I7474d31a722a4e27438461b8812e25299f0a72cb\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85937\nTested-by: core-ci \nReviewed-by: Benni Mack \nReviewed-by: Jochen Roth \nReviewed-by: Oliver Bartsch \nTested-by: Oliver Bartsch \nTested-by: Benni Mack \nTested-by: Nikita Hovratov \nReviewed-by: Nikita Hovratov \nTested-by: Jochen Roth ","shortMessageHtmlLink":"[TASK] Move TypolinkParameter to EXT:core"}},{"before":"e30315d74fcac61639f6fb1cac2f7b8e42759786","after":"e984a68868566285cbb6e343a81bc7ed9383ff73","ref":"refs/heads/main","pushedAt":"2024-09-06T12:54:36.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[TASK] Split up tt_content by extracting content types\n\nThis extracts most of the content types from the main\ntt_content file to dedicated configuration files in\nthe TCA/Overrides/ directory.\n\nThis allows a better handling and also paves the\nways for a component based registration in the\nfuture.\n\nResolves: #104838\nReleases: main\nChange-Id: I1b1446a506aaa0774d70fdcdfdbcf466eff9a580\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85898\nReviewed-by: Nikita Hovratov \nTested-by: core-ci \nTested-by: Nikita Hovratov \nReviewed-by: Oliver Bartsch \nReviewed-by: Benni Mack \nTested-by: Benni Mack \nTested-by: Oliver Bartsch ","shortMessageHtmlLink":"[TASK] Split up tt_content by extracting content types"}},{"before":"d897b068f3f7859120ae2c52249eb491d1e73d5f","after":"e30315d74fcac61639f6fb1cac2f7b8e42759786","ref":"refs/heads/main","pushedAt":"2024-09-05T09:57:39.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[TASK] Remove unused typeicon \"script\" definition\n\nThe \"script\" typeicon definition is removed since\nno such CType exists.\n\nResolves: #104830\nReleases: main\nChange-Id: I6d733a3d87a916e616407bd9f7681ebf8bd03184\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85897\nTested-by: Oliver Hader \nReviewed-by: Oliver Hader \nTested-by: Benni Mack \nTested-by: core-ci \nReviewed-by: Benni Mack ","shortMessageHtmlLink":"[TASK] Remove unused typeicon \"script\" definition"}},{"before":"a00b418cf772df852026dbd3e34937f5e5cc952c","after":"d897b068f3f7859120ae2c52249eb491d1e73d5f","ref":"refs/heads/main","pushedAt":"2024-09-05T08:28:37.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[FEATURE] Auto-add system fields showitem for tt_content\n\nThis change adds system fields - as defined in the ctrl\nsection - of tt_content to the showitem field list\nautomatically. This is either done based on palettes\nthat already exist or adding the fields individually\nto the corresponding tabs.\n\nTabs that are therefore added automatically are:\n\n* General tab at the beginning\n* Language tab including language fields\n* Access tab including hidden+access fields\n* Description tab including descriptionColumn\n\nIn case the showitem of such type defines the\n\"Extended\" tab, it is added at the end.\n\nWe do this for tt_content because we want a unified\nway of how FormEngine renders the fields.\n\nResolves: #104814\nReleases: main\nChange-Id: I69965fbc74ae2192151ad2617c1a88cf1eb2a987\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85859\nTested-by: Nikita Hovratov \nTested-by: Benni Mack \nReviewed-by: Benni Mack \nReviewed-by: Nikita Hovratov \nTested-by: Oliver Bartsch \nTested-by: core-ci \nReviewed-by: Oliver Bartsch ","shortMessageHtmlLink":"[FEATURE] Auto-add system fields showitem for tt_content"}},{"before":"b918b7bef5f4bec2b37289f41f61fb80d29de693","after":"a00b418cf772df852026dbd3e34937f5e5cc952c","ref":"refs/heads/main","pushedAt":"2024-08-30T10:21:19.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[FEATURE] Implement and use a core ViewFactoryInterface\n\nAfter a long list of preparation and side patches, this\nchange introduces a central ext:core ViewFactoryInterface\nplus a default implementation for fluid, and rolls it out.\n\nWe established a sub section of a generic view for backend\nmodules with ext:backend BackendViewFactory in TYPO3 v12\nalready. This worked out well. The patch picks this up\nwith a global factory interface for all other use\ncases that need to deal with views.\n\nThis ultimately allows instances to change any view rendered\nby any component by configuring the instance to inject a\ndifferent ViewFactoryInterface implementation to some\ncontroller and let it return an ext:core ViewInterface that\nuses some different view implemenation like Twig or whatever\nfloats your boat. This is also very helpful for headless\nimplementations to transparently substitute casual html\nrendering with for instance a json result.\n\nThe patch decouples fluid much better and obsoletes the custom\nfluid view implementations ext:fluid StandaloneView, ext:fluid\nTemplateView and their abstract ext:fluid AbstractTemplateView.\nThe previous ViewResolverInterface of extbase is obsoleted as\nwell.\n\nThe following architectural decisions have been taken:\n\n* ext:core ViewFactoryInterface has the single create() method\n that takes a ViewFactoryData data object to create an ext:core\n ViewInterface based on it.\n* ext:core ViewFactoryInterface should be *injected* whenever\n possible to allow instances reconfiguring the injection. Core\n has only a couple of places where this is not possible yet due\n to technical debt. An example is #104724.\n* The default injection of ViewFactoryInterface is ext:core\n FluidViewFactory. This returns an instance of the already\n established FluidViewAdapter, which acts as a facade to\n fluid standalone TemplateView. FluidViewAdapter implements\n all the specialities from the now deprecated custom ext:fluid\n view classes, so switching to this implementation within core\n is not considered breaking. Most of those compatibility\n methods are declared deprecated, though. Some are kept\n non-deprecated, due to technical debt in some consumers.\n* ext:core ViewFactoryData is a straight data object that is\n supposed to be set up by view consumers. It is about handing\n over the template paths entry points to the factory, requesting\n a preferred format if desired, and handing over PSR-7 request\n if possible.\n* The request is actively hand over in ViewFactoryData whenever\n possible within core usages, since it may help custom\n ViewFactoryInterface implementations to take decisions based on\n it: \"If that's a ext:news controller action and if request type\n is json, then create my json view, otherwise fall back to default\n fluid view using FluidViewFactory\".\n* The signature of ext:core ViewFactoryData is still kinda\n tailored towards fluid with the almighty template/layout/partial\n tuple, but it allows the core to go ahead in this area with TYPO3\n v14, to potentially establish a better solution regarding\n template entry points in general.\n* Best use of the ViewFactoryData paths entry points tuple are the\n \"extension template entry points\", namely arrays of\n \"EXT:myExt/Resources/Private/Templates\",\n \"EXT:myExt/Resources/Private/Layouts\" and\n \"EXT:myExt/Resources/Private/Partials\".\n Only ext:form violates this once, which should be ruled out.\n* Single view rendering is best called using\n render('path/within/templateRootPath'): This has been established\n with BackendViewFactory for backend modules already, and gives\n the core a good place to kick in automatic path overlay\n handling later. Only extbase and TEMPLATEVIEW violate this at the\n moment, and we will see on how to continue on this.\n* In ViewFactoryData, \"templatePathAndFilename\" is the ugly kid\n in the block, we'll want to get rid of this when a general\n path lookup and overlay solution is established.\n\nThe patch essentially adds the ViewFactoryInterface API, adds\nthe default FluidViewFactory implementation, and changes all\nplaces that instantiated custom fluid view towards the new API.\n\nNotable specialities:\n\n* ext:adminpanel suffers from an architectual flaw that cripples\n DI on sub modules. GU::makeInstance(ViewFactoryInterface::class)\n solves this for now, but a solution should be handled with\n #104724 to allow injection of ViewFactoryInterface.\n* ext:backend LoginController follows a weird logic for extensions\n that take over login rendering to have own login fields. This\n needs a bigger overhaul that is out of scope of this patch.\n Since the existing API hard coded type hints for ext:fluid\n StandaloneView, there is currently no other way than mitigating\n this by introducing a new API method and triggering deprecations\n for extension that don't follow.\n* The patch reveals architecural flaws when creating emails via the\n FluidEmail construct where 'composition over inheritance' went\n wrong. This needs a redesign, the implementation is currently\n bound to fluid and throws an exception if the view is not an\n instance of FluidViewAdapter\n* Similar with FLUIDTEMPLATE content object: This implementation is\n heavily tailored towards fluid. This is ok'ish: When for instance\n a page rendering for 'headless' is called, those FLUIDTEMPLATE\n TypoScript definitions need to be changed to something else using\n TypoScript. The implementation now throws an exception if the view\n factory did not return a FluidViewAdapter view.\n* New v13 PAGEVIEW content object is changed to *not* relax on\n upper/lowercase template filenames for now: While we *do* want\n fluid to handle file and path casings more relaxed, this single\n use case is not the way to go. This needs to be solved on a more\n general level that requires more refactoring, find, and lookup\n magic on a lower level. To stay consistent with current fluid\n strategy, we for now remove the \"ignore casing\" feature of this\n content object, but it will hopefully see a revamp in v14.\n* extbase is (guess what?) problematic. The patch switches from\n ext:extbase ViewResolverInterface to ext:core ViewFactoryInterface\n and keeps using ViewResolverInterface as deprecated fallback.\n The extbase abstract ActionController \"defaultViewObjectName\"\n API is ugly, is a bit more restricted now, and will have to fall\n at some point. In v14, single actions should probably create a\n view explicitely when they need some, using a helper method\n provided by the abstract, or similar. The automagic view\n configuration is of course kept for now, but becomes more and\n more questionable.\n\nResolves: #104773\nRelated: #101559\nRelated: #104724\nRelated: #103504\nReleases: main\nChange-Id: Ic4603b55da1504a5f20b23468850a1a518684967\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85735\nReviewed-by: Benni Mack \nTested-by: core-ci \nTested-by: Benni Mack \nTested-by: Simon Praetorius \nTested-by: Anja Leichsenring \nTested-by: Stefan Bürk \nReviewed-by: Stefan Bürk \nReviewed-by: Simon Praetorius \nReviewed-by: Anja Leichsenring \nReviewed-by: Christian Kuhn \nTested-by: Garvin Hicking \nReviewed-by: Garvin Hicking \nTested-by: Christian Kuhn ","shortMessageHtmlLink":"[FEATURE] Implement and use a core ViewFactoryInterface"}},{"before":"34fc33b5723381b52cfbfb8be3c9f3246a933ba9","after":"cd0ff100a52c63a88591e0dd121dc3c20c1249df","ref":"refs/heads/12.4","pushedAt":"2024-08-28T13:17:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[TASK] Introduce Content-Security-Policy-Report-Only handling\n\n+ new feature flag `security.frontend.reportContentSecurityPolicy`,\n to be used next to `security.frontend.enforceContentSecurityPolicy`,\n resulting in `Content-Security-Policy-Report-Only` and/or\n `Content-Security-Policy` HTTP headers\n+ new `enforce` and `report` segments in `csp.yaml` site config\n+ possibility to disable CSP for a particular site by either setting\n `active: false` in the `csp.yaml` site config\n+ allows having the HTTP headers `Content-Security-Policy` and\n `Content-Security-Policy-Report-Only` side-by-side in the frontend\n\nResolves: #101580\nResolves: #104549\nReleases: main, 12.4\nChange-Id: I8c1a8305702629eac1bfedddbecbc19b452fd500\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85809\nTested-by: core-ci \nReviewed-by: Oliver Hader \nTested-by: Oliver Hader ","shortMessageHtmlLink":"[TASK] Introduce Content-Security-Policy-Report-Only handling"}},{"before":"331445aae2505dcf855ee3a25e7d2ec05c7674ed","after":"b918b7bef5f4bec2b37289f41f61fb80d29de693","ref":"refs/heads/main","pushedAt":"2024-08-28T13:15:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[TASK] Introduce Content-Security-Policy-Report-Only handling\n\n+ new feature flag `security.frontend.reportContentSecurityPolicy`,\n to be used next to `security.frontend.enforceContentSecurityPolicy`,\n resulting in `Content-Security-Policy-Report-Only` and/or\n `Content-Security-Policy` HTTP headers\n+ new `enforce` and `report` segments in `csp.yaml` site config\n+ possibility to disable CSP for a particular site by either setting\n `active: false` in the `csp.yaml` site config\n+ allows having the HTTP headers `Content-Security-Policy` and\n `Content-Security-Policy-Report-Only` side-by-side in the frontend\n\nResolves: #101580\nResolves: #104549\nReleases: main, 12.4\nChange-Id: I8c1a8305702629eac1bfedddbecbc19b452fd500\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85632\nTested-by: Benjamin Franzke \nReviewed-by: Garvin Hicking \nTested-by: Oliver Hader \nTested-by: core-ci \nTested-by: Garvin Hicking \nReviewed-by: Oliver Hader \nReviewed-by: Benjamin Franzke ","shortMessageHtmlLink":"[TASK] Introduce Content-Security-Policy-Report-Only handling"}},{"before":"4fde05d500ab67e9f545655ad28cf214c6218c33","after":"331445aae2505dcf855ee3a25e7d2ec05c7674ed","ref":"refs/heads/main","pushedAt":"2024-08-27T18:53:05.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[TASK] Turn a couple of unit tests into functionals\n\nTo reduce mocking and GeneralUtility instance\ntampering, a couple of error handling related\ntests are turned into functional tests.\nAlso, a data provider case that misuses an\nunrelated class is removed.\n\nResolves: #104755\nReleases: main\nChange-Id: I0e33ec87a46d4c948a52388fc388cdd4e6780def\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85801\nTested-by: Garvin Hicking \nTested-by: Christian Kuhn \nReviewed-by: Garvin Hicking \nTested-by: core-ci \nReviewed-by: Nikita Hovratov \nTested-by: Nikita Hovratov \nReviewed-by: Christian Kuhn ","shortMessageHtmlLink":"[TASK] Turn a couple of unit tests into functionals"}},{"before":"1e6810d97c1d8eb3d0de40a5d2c7935c5e5504b5","after":"4fde05d500ab67e9f545655ad28cf214c6218c33","ref":"refs/heads/main","pushedAt":"2024-08-27T18:51:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"TYPO3IncTeam","name":"TYPO3 GmbH","path":"/TYPO3IncTeam","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20440329?s=80&v=4"},"commit":{"message":"[TASK] Remove two unused test fixture files\n\nResolves: #104754\nReleases: main\nChange-Id: Id1164684fcbcf2bc1bdaa2dbbe74f73d2c608fb3\nReviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/85800\nTested-by: Christian Kuhn \nReviewed-by: Garvin Hicking \nTested-by: Nikita Hovratov \nTested-by: Garvin Hicking \nReviewed-by: Nikita Hovratov \nTested-by: core-ci \nReviewed-by: Christian Kuhn ","shortMessageHtmlLink":"[TASK] Remove two unused test fixture files"}}],"hasNextPage":true,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEuvZ7PAA","startCursor":null,"endCursor":null}},"title":"Activity · TYPO3-CMS/frontend"}