原始 JSON 报告 机器可读
{
"data": {
"repo": {
"topics": [
"typo3",
"extbase",
"event-registration",
"event-calendar",
"fluid",
"event-management"
],
"is_fork": false,
"size_kb": 13767,
"has_wiki": false,
"homepage": null,
"languages": {
"CSS": 4270,
"PHP": 1060068,
"HTML": 112417,
"Shell": 1744,
"Makefile": 780,
"JavaScript": 1230
},
"pushed_at": "2026-07-26T08:49:18Z",
"created_at": "2014-05-17T11:13:55Z",
"owner_type": "User",
"updated_at": "2026-06-26T18:31:57Z",
"description": "An event management and registration extension for TYPO3 CMS based on ExtBase and Fluid.",
"is_archived": false,
"is_disabled": false,
"license_spdx": "GPL-2.0",
"default_branch": "main",
"license_spdx_raw": "GPL-2.0",
"primary_language": "PHP",
"significant_languages": [
"PHP"
]
},
"owner": {
"blog": "www.derhansen.com",
"name": "Torben Hansen",
"type": "User",
"login": "derhansen",
"company": null,
"location": "Husum, Germany",
"followers": 101,
"avatar_url": "https://avatars.githubusercontent.com/u/2629896?v=4",
"created_at": "2012-10-23T08:17:14Z",
"is_verified": null,
"public_repos": 117,
"account_age_days": 5024
},
"license": {
"state": "standard",
"spdx_id": "GPL-2.0",
"raw_spdx": "GPL-2.0",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "9.0.1",
"kind": "patch",
"published_at": "2026-06-20T13:51:52Z"
},
{
"tag": "9.0.0",
"kind": "major",
"published_at": "2026-05-11T05:45:29Z"
},
{
"tag": "8.6.1",
"kind": "patch",
"published_at": "2026-03-14T11:31:01Z"
},
{
"tag": "8.6.0",
"kind": "minor",
"published_at": "2026-02-14T10:15:15Z"
},
{
"tag": "8.5.4",
"kind": "patch",
"published_at": "2026-01-11T14:10:02Z"
},
{
"tag": "7.9.2",
"kind": "patch",
"published_at": "2025-12-29T18:45:38Z"
},
{
"tag": "8.5.2",
"kind": "patch",
"published_at": "2025-12-29T18:45:19Z"
},
{
"tag": "8.5.1",
"kind": "patch",
"published_at": "2025-12-19T09:49:11Z"
},
{
"tag": "7.9.1",
"kind": "patch",
"published_at": "2025-12-19T09:44:02Z"
},
{
"tag": "8.5.0",
"kind": "minor",
"published_at": "2025-12-07T17:55:14Z"
},
{
"tag": "8.4.0",
"kind": "minor",
"published_at": "2025-10-25T04:59:36Z"
},
{
"tag": "7.9.0",
"kind": "minor",
"published_at": "2025-10-25T04:53:22Z"
},
{
"tag": "8.3.0",
"kind": "minor",
"published_at": "2025-09-06T12:30:15Z"
},
{
"tag": "7.8.1",
"kind": "patch",
"published_at": "2025-09-06T12:14:58Z"
},
{
"tag": "8.2.0",
"kind": "minor",
"published_at": "2025-05-30T06:03:31Z"
},
{
"tag": "7.8.0",
"kind": "minor",
"published_at": "2025-05-30T05:54:59Z"
},
{
"tag": "8.1.1",
"kind": "patch",
"published_at": "2025-01-21T10:51:21Z"
},
{
"tag": "6.7.1",
"kind": "patch",
"published_at": "2024-12-28T13:25:21Z"
},
{
"tag": "7.7.0",
"kind": "minor",
"published_at": "2024-12-28T13:20:13Z"
},
{
"tag": "8.1.0",
"kind": "minor",
"published_at": "2024-12-28T13:14:55Z"
},
{
"tag": "8.0.0",
"kind": "major",
"published_at": "2024-10-21T16:34:07Z"
},
{
"tag": "7.6.0",
"kind": "minor",
"published_at": "2024-10-20T12:58:32Z"
},
{
"tag": "7.5.1",
"kind": "patch",
"published_at": "2024-08-28T08:48:54Z"
},
{
"tag": "6.7.0",
"kind": "minor",
"published_at": "2024-06-16T09:06:10Z"
},
{
"tag": "7.5.0",
"kind": "minor",
"published_at": "2024-06-16T08:59:59Z"
},
{
"tag": "6.6.2",
"kind": "patch",
"published_at": "2024-04-13T12:06:12Z"
},
{
"tag": "7.4.3",
"kind": "patch",
"published_at": "2024-04-13T12:03:25Z"
},
{
"tag": "7.4.2",
"kind": "patch",
"published_at": "2024-03-24T17:57:38Z"
},
{
"tag": "6.6.1",
"kind": "patch",
"published_at": "2024-03-24T17:52:19Z"
},
{
"tag": "7.4.1",
"kind": "patch",
"published_at": "2024-03-02T12:49:01Z"
},
{
"tag": "7.4.0",
"kind": "minor",
"published_at": "2024-02-13T08:57:55Z"
},
{
"tag": "6.6.0",
"kind": "minor",
"published_at": "2024-02-13T07:48:57Z"
},
{
"tag": "7.3.3",
"kind": "patch",
"published_at": "2023-12-03T12:20:41Z"
},
{
"tag": "6.5.3",
"kind": "patch",
"published_at": "2023-12-03T12:16:58Z"
},
{
"tag": "7.3.2",
"kind": "patch",
"published_at": "2023-09-23T10:37:58Z"
},
{
"tag": "7.3.1",
"kind": "patch",
"published_at": "2023-08-27T10:32:14Z"
},
{
"tag": "6.5.2",
"kind": "patch",
"published_at": "2023-08-27T10:20:27Z"
},
{
"tag": "7.3.0",
"kind": "minor",
"published_at": "2023-07-26T10:04:33Z"
},
{
"tag": "6.5.1",
"kind": "patch",
"published_at": "2023-07-26T10:00:15Z"
},
{
"tag": "7.2.0",
"kind": "minor",
"published_at": "2023-07-15T05:35:40Z"
},
{
"tag": "6.5.0",
"kind": "minor",
"published_at": "2023-07-15T05:31:02Z"
},
{
"tag": "7.1.3",
"kind": "patch",
"published_at": "2023-06-03T10:16:32Z"
},
{
"tag": "7.1.2",
"kind": "patch",
"published_at": "2023-05-28T05:45:34Z"
},
{
"tag": "7.1.1",
"kind": "patch",
"published_at": "2023-05-12T11:50:25Z"
},
{
"tag": "6.4.1",
"kind": "patch",
"published_at": "2023-05-12T10:58:45Z"
},
{
"tag": "6.4.0",
"kind": "minor",
"published_at": "2023-05-02T14:41:43Z"
},
{
"tag": "7.1.0",
"kind": "minor",
"published_at": "2023-05-02T17:44:08Z"
},
{
"tag": "7.0.0",
"kind": "major",
"published_at": "2022-12-21T18:33:10Z"
},
{
"tag": "6.3.1",
"kind": "patch",
"published_at": "2022-12-03T18:04:19Z"
},
{
"tag": "6.3.0",
"kind": "minor",
"published_at": "2022-10-28T08:00:29Z"
},
{
"tag": "5.9.2",
"kind": "patch",
"published_at": "2022-07-25T06:14:06Z"
},
{
"tag": "6.2.4",
"kind": "patch",
"published_at": "2022-07-25T06:05:24Z"
},
{
"tag": "5.9.1",
"kind": "patch",
"published_at": "2022-06-06T17:28:37Z"
},
{
"tag": "6.2.3",
"kind": "patch",
"published_at": "2022-06-06T17:19:41Z"
},
{
"tag": "6.2.2",
"kind": "patch",
"published_at": "2022-04-05T16:12:11Z"
},
{
"tag": "5.9.0",
"kind": "minor",
"published_at": "2022-03-04T10:41:19Z"
},
{
"tag": "6.2.1",
"kind": "patch",
"published_at": "2022-03-04T10:32:44Z"
},
{
"tag": "6.1.0",
"kind": "minor",
"published_at": "2022-01-26T09:40:26Z"
},
{
"tag": "5.8.0",
"kind": "minor",
"published_at": "2022-01-26T09:31:09Z"
},
{
"tag": "6.0.1",
"kind": "patch",
"published_at": "2021-12-18T18:13:07Z"
},
{
"tag": "5.7.0",
"kind": "minor",
"published_at": "2021-12-18T17:56:38Z"
},
{
"tag": "6.0.0",
"kind": "major",
"published_at": "2021-10-17T12:51:31Z"
},
{
"tag": "5.6.1",
"kind": "patch",
"published_at": "2021-10-01T14:26:59Z"
},
{
"tag": "4.5.0",
"kind": "minor",
"published_at": "2021-08-26T12:21:44Z"
},
{
"tag": "5.6.0",
"kind": "minor",
"published_at": "2021-08-26T12:10:56Z"
},
{
"tag": "5.5.0",
"kind": "minor",
"published_at": "2021-06-06T17:40:53Z"
},
{
"tag": "5.4.2",
"kind": "patch",
"published_at": "2021-05-05T06:30:39Z"
},
{
"tag": "5.4.1",
"kind": "patch",
"published_at": "2021-05-02T18:02:34Z"
},
{
"tag": "4.4.3",
"kind": "patch",
"published_at": "2021-05-02T17:56:01Z"
},
{
"tag": "5.4.0",
"kind": "minor",
"published_at": "2021-04-05T11:44:00Z"
},
{
"tag": "4.4.2",
"kind": "patch",
"published_at": "2021-04-05T11:35:04Z"
},
{
"tag": "5.3.0",
"kind": "minor",
"published_at": "2021-02-01T17:59:17Z"
},
{
"tag": "4.4.1",
"kind": "patch",
"published_at": "2021-02-01T17:39:10Z"
},
{
"tag": "4.4.0",
"kind": "minor",
"published_at": "2020-11-15T12:27:12Z"
},
{
"tag": "5.2.0",
"kind": "minor",
"published_at": "2020-11-15T12:15:36Z"
},
{
"tag": "4.3.1",
"kind": "patch",
"published_at": "2020-09-02T07:00:40Z"
},
{
"tag": "5.1.1",
"kind": "patch",
"published_at": "2020-09-02T07:06:10Z"
},
{
"tag": "5.1.0",
"kind": "minor",
"published_at": "2020-08-23T12:17:33Z"
},
{
"tag": "4.3.0",
"kind": "minor",
"published_at": "2020-08-23T11:54:17Z"
},
{
"tag": "5.0.1",
"kind": "patch",
"published_at": "2020-05-17T11:11:27Z"
},
{
"tag": "4.2.2",
"kind": "patch",
"published_at": "2020-05-17T11:03:08Z"
},
{
"tag": "5.0.0",
"kind": "major",
"published_at": "2020-04-23T05:33:14Z"
},
{
"tag": "4.2.1",
"kind": "patch",
"published_at": "2020-03-06T13:07:03Z"
},
{
"tag": "4.2.0",
"kind": "minor",
"published_at": "2020-01-26T18:24:24Z"
},
{
"tag": "4.1.3",
"kind": "patch",
"published_at": "2019-10-29T06:43:38Z"
},
{
"tag": "4.1.2",
"kind": "patch",
"published_at": "2019-07-19T05:30:48Z"
},
{
"tag": "4.1.1",
"kind": "patch",
"published_at": "2019-06-11T17:53:31Z"
},
{
"tag": "4.1.0",
"kind": "minor",
"published_at": "2019-05-24T06:52:58Z"
},
{
"tag": "4.0.1",
"kind": "patch",
"published_at": "2019-04-20T18:08:23Z"
},
{
"tag": "4.0.0",
"kind": "major",
"published_at": "2019-03-10T11:49:07Z"
},
{
"tag": "3.0.8",
"kind": "patch",
"published_at": "2019-01-23T13:21:34Z"
},
{
"tag": "3.0.7",
"kind": "patch",
"published_at": "2019-01-01T18:18:03Z"
},
{
"tag": "3.0.6",
"kind": "patch",
"published_at": "2018-10-16T18:23:09Z"
},
{
"tag": "3.0.5",
"kind": "patch",
"published_at": "2018-08-22T17:03:56Z"
},
{
"tag": "3.0.4",
"kind": "patch",
"published_at": "2018-05-16T05:09:06Z"
},
{
"tag": "3.0.3",
"kind": "patch",
"published_at": "2018-05-10T04:24:46Z"
},
{
"tag": "3.0.2",
"kind": "patch",
"published_at": "2018-04-25T05:58:34Z"
},
{
"tag": "3.0.1",
"kind": "patch",
"published_at": "2018-04-17T17:18:39Z"
},
{
"tag": "3.0.0",
"kind": "major",
"published_at": "2018-04-11T05:38:18Z"
},
{
"tag": "2.1.0",
"kind": "minor",
"published_at": "2017-09-25T06:38:55Z"
}
],
"recent_commits": [
{
"oid": "57f2e803e9af013f610ade64745b716cabe26702",
"body": null,
"is_bot": false,
"headline": "[RELEASE] Release of version 9.0.1",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-06-20T13:50:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "96bbaf7ffeddb80a2d3d33e04a63d9055538851d",
"body": "…ma-validator\n\n[BUGFIX] Prevent endless recursion in TcaSchemaFieldLengthValidator.",
"is_bot": false,
"headline": "Merge pull request #1411 from Inchie/bugfix/fix-recursion-in-tca-sche…",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-06-20T13:49:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "16d76c1d3e84813d4c11887eb3d726b7cb8b8fd4",
"body": null,
"is_bot": false,
"headline": "[CHORE] Remove unreachable fallback in validation identifier.",
"author_name": "Timo Nussbaum",
"author_login": "Inchie",
"committed_at": "2026-06-15T06:00:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "952d7c4254460d1ac1eccf178ee076a1ade891c3",
"body": null,
"is_bot": false,
"headline": "[BUGFIX] Prevent endless recursion in TcaSchemaFieldLengthValidator.",
"author_name": "Timo Nussbaum",
"author_login": "Inchie",
"committed_at": "2026-06-09T06:33:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9e7ac7aec6e3bd219fc225515c87f0d238fa687b",
"body": "Refs #1410",
"is_bot": false,
"headline": "[BUGFIX] Fixed invalid autocomplete attribute for spamcheck fields",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-06-05T12:27:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "85c08ab6a4cc537360cff3075c18b1c032235517",
"body": null,
"is_bot": false,
"headline": "[TASK] Removed duplicate test cases",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-05-10T18:01:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e38c74688380389bab5ca3198349a33bca4b8390",
"body": "# Conflicts:\n#\tResources/Private/Templates/Event/Registration.fluid.html\n#\text_emconf.php",
"is_bot": false,
"headline": "Merge branch 'typo3-v14'",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-05-10T17:54:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "43e13c9450d398da17cf56905779042c66566586",
"body": null,
"is_bot": false,
"headline": "[TASK] Fixed version constraints in ext_emconf.php",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-05-10T17:52:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "702289111c040bad5263de4f22f9f911667a9a46",
"body": "Closes #1379",
"is_bot": false,
"headline": "[RELEASE] Release of version 9.0.0",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-05-10T17:51:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "31b0fdb874bfec0a4ca9782c603a4538c92c5386",
"body": "Refs #1409",
"is_bot": false,
"headline": "[DOCS] Updated documentation",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-05-10T17:31:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "efb204e269bae029d033f73a6829636973b7db11",
"body": "Refs #1409",
"is_bot": false,
"headline": "[DOCS] Update documentation",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-05-10T17:10:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b1f8e9f7514232e05ef92f5816d74be1ea182655",
"body": null,
"is_bot": false,
"headline": "[DOCS] Updated compatibility matrix",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-05-10T13:19:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "629ca1d504bfa435bf36ccc077d683fbdabc2ff9",
"body": null,
"is_bot": false,
"headline": "[DOCS] Added CurrencyUtility to feature list",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-05-10T12:47:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9ddd0785353385d707d20ea18b8c52fdbf5880d0",
"body": "Refs #1363",
"is_bot": false,
"headline": "[FEATURE] Make backend module language aware",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-05-10T12:36:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3160a5bdc14cc2235f14939525da66253993a4c3",
"body": "Refs #1408",
"is_bot": false,
"headline": "[!!!][TASK] Use Constructor Property Promotion in all controllers",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-05-10T05:51:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "242789d9f80ec51c9d5d1620d839e40e6e2bdee1",
"body": "When an event is copied, all registrations are copied too.\nThis behavior is not suitable for the extension and it\npreviously used a hacky DataHandler hook to hide/unhide\nregistrations on copy or localize in DataHandler.\n\nWith the new PSR-14 Event `BeforeRemoveNonCopyableFieldsEvent`\nin TYPO3 DataHandler, this can be archieved much easier.\n\nRefs #1291",
"is_bot": false,
"headline": "[TASK] Prevent copying registrations when copying an event",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-05-01T11:25:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d57f5d731610698c5d1ca728422b67c267bf5a85",
"body": "Refs #1405",
"is_bot": false,
"headline": "[TASK] Minor CGL fix",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-05-01T10:40:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8a6e9deaf837e3cbcff155057a1547c9d66d7669",
"body": "Refs #1405",
"is_bot": false,
"headline": "[TASK] Use `Autoconfigure` to declaee RegistrationService public",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-05-01T10:34:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1ae7f3c9d4340c7b25461905bb56c2e89260d2f5",
"body": "Refs #1405",
"is_bot": false,
"headline": "[TASK] Use #[Authorize] in UserRegistrationController",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-05-01T09:20:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9b8a6c3c402200b7c1aa0eedccd6361d28bc3490",
"body": null,
"is_bot": false,
"headline": "[TASK] Remove superfluous doc comment in EmailService",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-04-27T17:05:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "908f3c4ec01235ee5396b8fa0cb0b2f39fbf6655",
"body": null,
"is_bot": false,
"headline": "[TASK] Use page record for breadcrumb in backend module",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-04-26T16:06:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f726b8b8158a8d2e52c717d18ce97c8babc006a0",
"body": null,
"is_bot": false,
"headline": "[TASK] Use breadcrumb for page in backend module",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-04-26T15:53:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d7a491d0400cd79a59ab9e823e23a18e33a26d4f",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Added version number to composer.json",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-04-25T12:25:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "61a676daca483f791e63c6f146c80474b24af992",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Raise TYPO3 dependency to 14.3",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-04-23T08:48:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d980c822d7c3d26fc61f46a12cd5079eddc705b7",
"body": "Refs #1397\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[FEATURE] Add validator to validate against DB Schema limits",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-04-20T16:45:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "73af68a9bfd1d329d97c9b892589da0679820e40",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] CGL fix",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-04-19T11:25:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "486bc2acacb3249b878670b9b1403cc40e085c30",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Avoid usage of getIndpEnv() #1406",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-04-19T11:25:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2428fa66d44f621d310eff092ff553a9fee0c8fd",
"body": "Refs #1403\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Remove duplicate property declaration",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-04-07T04:33:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b80526dee756432917784da0e3efa43cacf385cb",
"body": "Refs #1403\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Use translation domain syntax in classes and templates",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-04-07T03:51:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8f8d1bb397225b2366e215eded587eb5d73f106b",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Fixed functional tests for EmailService",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-04-06T10:48:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1e01fc76045d756b9b79ad4b162a61c563f173c0",
"body": "Refs #1398\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[!!!][TASK] Use TemplatedEmailFactory",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-04-06T07:50:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6d568ac4109f99f6a8badc1bf587f44819840c33",
"body": "Refs #1404\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Adapt composer.json changes for TYPO3 v14",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-04-06T07:21:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e894932d4a43f566e4f70ee229a5e44eaceda7c2",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Require TYPO3 ~14.2.0",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-04-06T05:34:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "18a7972f0aed05efdc407536ea22509db7a6af00",
"body": "Refs #1401\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Use RateLimiterFactoryInterface",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-04-06T05:28:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8e285bdee7fcd9a38d720b0f431b4889adc67974",
"body": "Refs #1394\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[!!!][TASK] Remove HeaderData ViewHelper",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-04-06T05:06:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "31d41e2d1e53600ee5989a8ffa2333a12bd6f4fe",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Rename TCA label of internal temporary field",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-03-22T06:35:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6d9f28525bb6403a4f4087337ca2f904b97f2b12",
"body": null,
"is_bot": false,
"headline": "[RELEASE] Release of version 8.6.1",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-03-14T11:30:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bfa4e1870c303e4c44aa35104a2bfc3b3a895966",
"body": "Refs #1399",
"is_bot": false,
"headline": "[TASK] Add helper functions for registration price calculation",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-03-14T11:24:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9b2d6f800429dcc4004068b37efbbfc4086bf36e",
"body": "Refs #1399",
"is_bot": false,
"headline": "[TASK] Add helper functions for registration price calculation",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-03-14T11:17:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "da16d101d62db59625ad46bfe7d36027f61b8d61",
"body": "Refs #1400\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[BUGFIX] Fix classes in registration template",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-03-14T11:15:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f248b660bb15da43c37e15772e75fddf534180b5",
"body": "…stration-template\n\nFix classes in registration template",
"is_bot": false,
"headline": "Merge pull request #1400 from h-e-l-l-o-w-o-r-l-d/fix-classes-in-regi…",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-03-14T11:12:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "df32e62560160dac9c19cf35c1f136c2b4e26bd5",
"body": null,
"is_bot": false,
"headline": "Fix classes in registration template",
"author_name": "h-e-l-l-o-w-o-r-l-d",
"author_login": "h-e-l-l-o-w-o-r-l-d",
"committed_at": "2026-03-14T10:01:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8c2d84977493cba51d09d849baeed71f85c152a8",
"body": "Refs #1395\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[BUGFIX] Fix condition for waitlist message",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-03-14T09:12:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b50c6ee3d2dfc36612b6cf7dfd4f738600b1fef9",
"body": "…mplate-condition-for-waitlist-message\n\n[BUGFIX] Fix condition for waitlist message",
"is_bot": false,
"headline": "Merge pull request #1396 from h-e-l-l-o-w-o-r-l-d/fix-registration-te…",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-03-14T09:05:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2adebce38d8d95c581c2811360a59fd95e0c092a",
"body": "Resolves #1395",
"is_bot": false,
"headline": "Fix condition for waitlist message",
"author_name": "h-e-l-l-o-w-o-r-l-d",
"author_login": "h-e-l-l-o-w-o-r-l-d",
"committed_at": "2026-03-09T10:07:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "858110a64d676c25042b049d9024cf64e4c13a78",
"body": "Closes #1339\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Fixed name of CurrencySymbolViewHelper",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-03-08T18:37:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4039d3e5deeadd63d19ea54d4eec8046f4d3ae2c",
"body": "Closes #1339\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[FEATURE] Add helper class for ISO 4217 currency codes",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-03-08T18:16:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c4cee1e0a6facc15c298d5706d3298f4c105548b",
"body": "Closes #1393\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Streamline extension icon with module icon",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-03-08T12:51:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ceb0f5b152c4cd9daeffd0ccdbdd53aa2ab671b4",
"body": "Refs #1393\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Updated plugin icon",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-03-08T12:17:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "76c98d292c521483e3ecb993563cafd116a318c4",
"body": "Refs #1381\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Updated module Icon",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-03-08T06:47:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4700e6930b800a6a4a4ec5d82721b550bc481eee",
"body": "Refs #1381\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Adder new module Icon",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-03-07T18:37:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "89f78112aca311bea26dd81fdb0b53421796d11f",
"body": "Refs #1389\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Improve CSS for backend layout preview",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-03-07T17:37:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0860e6581d43bd98f34f818a1b15d02047357794",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[DOCS] Updates README.md",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-03-03T12:57:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4237a9f6f0953c92a9401bb2ad1ad61cc8eec1af",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Fixed templates names in TypoScript",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-03-01T06:24:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9b2d02420f074b3466b6e21dcb9de1e3c1aed334",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Use standalone icon for backend module",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-03-01T05:06:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b757d6c70d1145414fc0045a070c5987688eb2ca",
"body": "Refs #1346\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Use ComponentFactory for backend module UI",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-28T13:22:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "71e97536c3243a0fc2b267f27172f6e7a14bd1a8",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[DOCS] Updates README.md",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-28T11:46:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "82d371a14ec0f9287f65b1653cd96839af21b864",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Fixed unit tests",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-28T11:43:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "661d89bc1980804947865fed52da7a3f98e56fb5",
"body": "Refs #1391\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Fixed backend module date search",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-28T11:39:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1891226c4f2fa953710b56a7a23f3d7a9970fe89",
"body": "Refs #1390\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Fixed date filter layout in backend module",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-28T08:25:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ef57c0c6dfa6d37b7a9578701699c07a2dab72d3",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Use native types in acceptance tests",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-28T06:40:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a3b0058e071c8d79c596372989fe08e98267c395",
"body": null,
"is_bot": false,
"headline": "[TASK] Update data for acceptance tests",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-28T06:24:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a011fc0702271771db7a466fb2c1ea150a4b2b3c",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Added ext:scheduler to build composer.json",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-27T18:34:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0c4b229c5fe0f4cf64d29a7bed88086cd13c1cb9",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Remove unused import",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-27T18:32:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6bae85ef8b6cd594572fdb837fab643d11199cfc",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Fixed functional tests",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-27T18:29:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d12de8f414c665b7db9b71d41fadd991e398e9ea",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Register table garbage collection task tables in TCA",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-27T18:25:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "25cc94de83837317f374350692708c4220b4fd59",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Use UpgradeWizard classes from ext:core",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-27T18:11:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "76e49861c3e9a93573454bef2f69e86315c8b975",
"body": "Refs #1351\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[!!!][TASK] Use *.fluid.* file extension for all templates",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-27T18:06:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7b90eb1f0983ef08a7fabbf29ad7d58c29947649",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Use phpunit 11 for tests",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-27T17:46:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "692b1292417fa6453c46f4d7c18221213f99b872",
"body": "Refs #1352\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Adapt attributes for extbase validation and ORM",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-27T15:39:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2d18f6aa0ffe3a5f8208d56bb2b7266dd5621e9d",
"body": "Refs #1388\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Avoid usage of evaluateCondition in ViewHelpers",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-27T15:04:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8fc651da4bda9301f3f6f0047bb894647505e60f",
"body": "Refs #1388\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Avoid usage of evaluateCondition in ViewHelpers",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-27T15:01:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2038be29bd7e3abe943b817920bd972cb3675ab7",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Load `sf_event_mgt` package in RegistrationValidatorTest",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-26T19:23:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b2ded752794421032e34d97c625afda3e3c87966",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Fixed typo in datatype for PrefillMultiValueFieldViewHelper",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-26T19:17:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "46a8ba4085c0afcf817e9bbd3127243ef614a251",
"body": "Refs #1387\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] CGL fix",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-26T19:03:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0924b386646d9568ae50ea1d1720654d3d73837a",
"body": "Refs #1387\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Use DateTimeImmutables in EventPlausability check",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-26T15:26:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ef878676a330e05fe4cac7c01b234b0b98f83589",
"body": "Refs #1386\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Migrate EventRowInitializeNew FormDataProvider",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-26T14:59:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bb676d682f3b0b4715cafa9bdf521a24f154bbf9",
"body": "Refs #1385\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Remove page tsconfig for content element wizard items",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-25T11:24:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d7919e4cb33409402998d7b81a8f62fa726b0b4d",
"body": "Refs #1383\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Avoid usage of ExtensionManagementUtility::addPiFlexFormValue",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-25T11:18:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "64f0f67edb35a70d586d03bdf090a19d714ffbf3",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Adapt settings.php for acceptance tests",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-25T11:05:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ac510e24bfa6671656e148f747f39d665e7389cd",
"body": "Refs #1384\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Declare registration and registration_fieldvalue as WS aware",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-25T11:03:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8b301535329fb491903d7087ca862d2b29a667ab",
"body": "Refs #1384\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Remove `searchFields` in TCA ctrl section",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-25T10:58:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ebe03d982280ca6b3a97bcf21ab16bd9e84f10eb",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Remove TypoScriptFrontendController usage in unit tests",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-25T10:49:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d564962ce2e2e6c0835583066c168d3608325304",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Make phpstan happy again",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-25T10:44:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "502c1a7269464e209fbc5322a9ba3840e624ad62",
"body": "The function name collides with the core function name\nI implemented in extbase ActionController.\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Rename internal handleRateLimit function in EventController",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-25T10:39:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b4c30dd88ad94b449cd62f642a1ed70bc552b809",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Reformat f:count() usage in Registration template",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-25T10:32:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2175927ebc0e0f41586cc85a987bdfbd7c2c0412",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>\n\n#1349",
"is_bot": false,
"headline": "[!!!][TASK] Removed TitleViewHelper",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-25T10:27:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c3a2df347bebba6e7569219ab65afa03de4dcbea",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Ensure return type in IsRequiredFieldViewHelper",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-25T10:24:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d784e378ed34ad19f512cdadae6bd557e3a7ca13",
"body": "Refs #1377\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[!!!][TASK] Remove custom MetaTagViewHelper",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-25T10:17:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7149b4f2437b0e5cc03675d1a587be790af74717",
"body": "Refs #1382\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[!!!][TASK] Remove default value in OnlineCalendarViewHelper",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-25T10:15:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "27776749f8cd2b83b71d6fc49abc6a6d988972b7",
"body": "The extensions internal plugin preview logic still relies on\narrays, because `FlexFormFieldValues` is marked as internal.\n\nRefs #1347\n\nSigned-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[TASK] Adapt plugin preview to handle record object instead of array",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-25T09:47:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "69f01c5591e33eebccc32f7eae480a26faf9a4c8",
"body": "Signed-off-by: Torben Hansen <derhansen@gmail.com>",
"is_bot": false,
"headline": "[!!!][TASK] Raise dependencies for TYPO3 v14",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-24T18:08:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "729fd21edbf89921093ffed4967fb7aecf71c9c1",
"body": null,
"is_bot": false,
"headline": "[RELEASE] Release of version 8.6.0",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-14T10:14:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9c58934641a22a5f89dcd1921063958d7a904e77",
"body": "Refs #1374",
"is_bot": false,
"headline": "[DOCS] Fixed wrong label in documentation",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-14T10:09:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9e97fe661da12b64f2d90b6cb89437c9db796995",
"body": "Refs #1374",
"is_bot": false,
"headline": "[FEATURE] Added configurable rate limit for event registration",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-14T10:06:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "873f6804336a160ee5237c2d69c01c281d7154f9",
"body": "Refs #1370",
"is_bot": false,
"headline": "[TASK] Missing cache handling for calendarAction",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-07T11:41:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "34a6b9b6a1eecc4b373e39d98231115c821df627",
"body": "Refs #1373",
"is_bot": false,
"headline": "[TASK] Simplify FlexForm registration for plugins",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-02-06T10:13:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a3d0aaa9d3fd28ca59de97fe63ac9d1bab135f31",
"body": "Refs #1375",
"is_bot": false,
"headline": "[FEATURE] Add tax_rate field to event, price_options and registration",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-01-23T12:47:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "73e8b2623e77bba772d46cca0687b6f585df872b",
"body": null,
"is_bot": false,
"headline": "[RELEASE] Release of version 8.5.4",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-01-11T14:13:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "eb752ffe3f83bd96681f723042014d23935b6a7e",
"body": null,
"is_bot": false,
"headline": "Merge branch 'main' into develop",
"author_name": "Torben Hansen",
"author_login": "derhansen",
"committed_at": "2026-01-11T14:09:06Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 100,
"commits_last_year": 151,
"latest_release_at": "2026-06-20T13:51:52Z",
"latest_release_tag": "9.0.1",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 23,
"days_since_latest_release": 35,
"mean_days_between_releases": 21.6
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 57,
"has_issue_template": true,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "derhansen/sf_event_mgt",
"exists": true,
"license": "GPL-2.0-or-later",
"keywords": [
"TYPO3 CMS",
"fluid",
"extbase",
"event management",
"event registration"
],
"ecosystem": "packagist",
"matches_repo": true,
"registry_url": "https://packagist.org/packages/derhansen/sf_event_mgt",
"is_deprecated": false,
"latest_version": "9.0.1",
"repository_url": "https://github.com/derhansen/sf_event_mgt",
"versions_count": 114,
"total_downloads": 345179,
"dependents_count": 7,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 8007,
"first_published_at": null,
"latest_published_at": "2026-06-20T13:50:46Z",
"latest_version_yanked": null,
"days_since_latest_publish": 35
}
]
},
"popularity": {
"forks": 66,
"stars": 66,
"watchers": 7,
"fork_history": {
"days": [
{
"date": "2014-06-26",
"count": 1
},
{
"date": "2014-12-03",
"count": 1
},
{
"date": "2015-03-16",
"count": 1
},
{
"date": "2015-05-26",
"count": 1
},
{
"date": "2015-07-29",
"count": 1
},
{
"date": "2015-09-29",
"count": 1
},
{
"date": "2015-11-18",
"count": 1
},
{
"date": "2016-05-10",
"count": 1
},
{
"date": "2016-06-05",
"count": 1
},
{
"date": "2016-06-21",
"count": 1
},
{
"date": "2016-07-14",
"count": 1
},
{
"date": "2016-10-20",
"count": 1
},
{
"date": "2016-12-18",
"count": 1
},
{
"date": "2017-04-19",
"count": 1
},
{
"date": "2017-06-26",
"count": 1
},
{
"date": "2017-07-06",
"count": 1
},
{
"date": "2017-07-19",
"count": 1
},
{
"date": "2017-07-20",
"count": 1
},
{
"date": "2017-11-01",
"count": 1
},
{
"date": "2018-03-16",
"count": 1
},
{
"date": "2018-05-17",
"count": 1
},
{
"date": "2018-06-18",
"count": 1
},
{
"date": "2018-06-21",
"count": 1
},
{
"date": "2018-09-09",
"count": 1
},
{
"date": "2019-04-09",
"count": 1
},
{
"date": "2019-07-04",
"count": 1
},
{
"date": "2020-01-17",
"count": 1
},
{
"date": "2020-01-23",
"count": 1
},
{
"date": "2020-02-06",
"count": 1
},
{
"date": "2020-05-04",
"count": 1
},
{
"date": "2020-05-12",
"count": 1
},
{
"date": "2020-08-28",
"count": 1
},
{
"date": "2020-10-06",
"count": 1
},
{
"date": "2020-11-11",
"count": 1
},
{
"date": "2021-07-21",
"count": 1
},
{
"date": "2022-01-17",
"count": 1
},
{
"date": "2022-01-31",
"count": 1
},
{
"date": "2022-02-02",
"count": 1
},
{
"date": "2022-02-28",
"count": 1
},
{
"date": "2022-03-23",
"count": 1
},
{
"date": "2022-07-04",
"count": 1
},
{
"date": "2023-03-02",
"count": 1
},
{
"date": "2023-05-04",
"count": 1
},
{
"date": "2023-05-26",
"count": 1
},
{
"date": "2023-11-30",
"count": 1
},
{
"date": "2024-03-01",
"count": 1
},
{
"date": "2024-03-02",
"count": 1
},
{
"date": "2024-06-10",
"count": 1
},
{
"date": "2024-07-07",
"count": 1
},
{
"date": "2024-09-10",
"count": 1
},
{
"date": "2024-10-10",
"count": 1
},
{
"date": "2025-01-18",
"count": 1
},
{
"date": "2025-02-06",
"count": 1
},
{
"date": "2025-05-04",
"count": 1
},
{
"date": "2025-05-23",
"count": 1
},
{
"date": "2025-05-28",
"count": 1
},
{
"date": "2025-06-23",
"count": 1
},
{
"date": "2025-07-14",
"count": 1
},
{
"date": "2025-08-16",
"count": 1
},
{
"date": "2025-09-19",
"count": 1
},
{
"date": "2025-10-15",
"count": 1
},
{
"date": "2025-10-22",
"count": 1
},
{
"date": "2025-10-23",
"count": 1
},
{
"date": "2026-02-03",
"count": 1
},
{
"date": "2026-06-09",
"count": 1
}
],
"complete": true,
"collected": 65,
"total_forks": 66
},
"star_history": null,
"open_issues_and_prs": 6
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [],
"largest_source_bytes": 59441,
"source_files_sampled": 250,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
".Build/composer.json",
"composer.json"
],
"advisories": {
"error": "No resolved dependencies carried a version and a supported ecosystem",
"scope": "repository_graph",
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 23,
"direct_affected_count": 0
},
"ecosystems": [
"packagist"
],
"dependencies": [
{
"name": "derhansen/sf_event_mgt",
"manifest": ".Build/composer.json",
"ecosystem": "packagist",
"version_constraint": "@dev"
},
{
"name": "typo3/cms-core",
"manifest": ".Build/composer.json",
"ecosystem": "packagist",
"version_constraint": "^14.3"
},
{
"name": "typo3/cms-core",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^14.3"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "derhansen/sf_event_mgt",
"direct": true,
"version": null,
"ecosystem": "packagist"
},
{
"name": "typo3/cms-core",
"direct": true,
"version": null,
"ecosystem": "packagist"
},
{
"name": "codeception/codeception",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "codeception/module-db",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "codeception/module-webdriver",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "friendsofphp/php-cs-fixer",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "koehnlein/codeception-email-mailpit",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "php",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "phpstan/extension-installer",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "phpunit/phpunit",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "saschaegerer/phpstan-typo3",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "typo3/cms-backend",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "typo3/cms-composer-installers",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "typo3/cms-extbase",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "typo3/cms-extensionmanager",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "typo3/cms-felogin",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "typo3/cms-fluid",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "typo3/cms-fluid-styled-content",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "typo3/cms-frontend",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "typo3/cms-install",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "typo3/cms-scheduler",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "typo3/cms-tstemplate",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "typo3/testing-framework",
"direct": false,
"version": null,
"ecosystem": "packagist"
}
],
"collected": true,
"truncated": false,
"total_count": 23,
"direct_count": 2,
"indirect_count": 21
}
},
"maintainership": {
"issues": {
"open_prs": 1,
"merged_prs": 102,
"open_issues": 5,
"closed_ratio": 0.996,
"closed_issues": 1234,
"closed_unmerged_prs": 44
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "derhansen",
"commits": 2075,
"avatar_url": "https://avatars.githubusercontent.com/u/2629896?v=4"
},
{
"type": "User",
"login": "georgringer",
"commits": 14,
"avatar_url": "https://avatars.githubusercontent.com/u/1905663?v=4"
},
{
"type": "User",
"login": "mmunz",
"commits": 13,
"avatar_url": "https://avatars.githubusercontent.com/u/3017481?v=4"
},
{
"type": "User",
"login": "AlexPixelant",
"commits": 11,
"avatar_url": "https://avatars.githubusercontent.com/u/10956203?v=4"
},
{
"type": "User",
"login": "runepiper",
"commits": 10,
"avatar_url": "https://avatars.githubusercontent.com/u/4521147?v=4"
},
{
"type": "User",
"login": "responseinformationsdesign",
"commits": 7,
"avatar_url": "https://avatars.githubusercontent.com/u/15003759?v=4"
},
{
"type": "User",
"login": "ste101",
"commits": 7,
"avatar_url": "https://avatars.githubusercontent.com/u/359959?v=4"
},
{
"type": "User",
"login": "Konafets",
"commits": 7,
"avatar_url": "https://avatars.githubusercontent.com/u/363363?v=4"
},
{
"type": "User",
"login": "rr-it",
"commits": 6,
"avatar_url": "https://avatars.githubusercontent.com/u/29690343?v=4"
},
{
"type": "User",
"login": "UNI49",
"commits": 4,
"avatar_url": "https://avatars.githubusercontent.com/u/58041122?v=4"
}
],
"contributors_sampled": 42,
"top_contributor_share": 0.938
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"AcceptanceTests.yml",
"CodeQuality.yml",
"FunctionalTests.yml",
"UnitTests.yml",
"documentation.yml"
],
"has_docs_dir": true,
"linter_configs": [
".php-cs-fixer.php",
"phpstan.neon"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "1 out of 1 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 1/28 approved changesets -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 10 contributing companies or organizations",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": null,
"reason": "no workflows found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dangerous-workflow"
},
{
"name": "Dependency-Update-Tool",
"score": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "20 commit(s) and 8 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": null,
"reason": "no dependencies found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 0,
"reason": "SAST tool is not run on all commits -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": null,
"reason": "No tokens found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 10,
"reason": "0 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "57f2e803e9af013f610ade64745b716cabe26702",
"ran_at": "2026-07-26T08:52:47Z",
"aggregate_score": 4.3,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-06-20T13:53:33Z",
"oldest_open_prs": [
{
"number": 1242,
"created_at": "2024-06-21T13:37:04Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2026-06-20T13:49:20Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 181,
"created_at": "2015-04-27T09:57:35Z",
"last_comment_at": "2019-05-22T18:16:19Z",
"last_comment_author": "derhansen"
},
{
"number": 827,
"created_at": "2020-12-20T18:54:57Z",
"last_comment_at": "2025-05-21T08:20:05Z",
"last_comment_author": "kurtzaugg"
},
{
"number": 1228,
"created_at": "2024-04-25T17:49:04Z",
"last_comment_at": "2025-09-16T14:25:35Z",
"last_comment_author": "merzilla"
},
{
"number": 1315,
"created_at": "2025-02-18T14:57:50Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1335,
"created_at": "2025-09-16T14:36:08Z",
"last_comment_at": "2025-09-17T09:33:04Z",
"last_comment_author": "merzilla"
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/derhansen/sf_event_mgt",
"host": "github.com",
"name": "sf_event_mgt",
"owner": "derhansen"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 69,
"inputs": {
"security": 43,
"vitality": 88,
"community": 61,
"governance": 64,
"engineering": 80
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "excellent",
"name": "Vitality",
"value": 88,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 80,
"inputs": {
"commits_last_year": 151,
"human_commit_share": 1,
"days_since_last_push": 0,
"active_weeks_last_year": 23
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "23/52 weeks with commits",
"points": 15.9,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 23
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "151 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 151
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "20 commit(s) and 8 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"releases_count": 100,
"latest_release_tag": "9.0.1",
"releases_from_tags": false,
"days_since_latest_release": 35,
"mean_days_between_releases": 21.6
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "100 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 100
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 35 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 35
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~21.6 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 21.6
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 35,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 35 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 35
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "moderate",
"name": "Community & Adoption",
"value": 61,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "at_risk",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 49,
"inputs": {
"forks": 66,
"stars": 66,
"watchers": 7,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "66 stars",
"points": 29.4,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 66
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "66 forks",
"points": 15.1,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 66
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "7 watchers",
"points": 4.3,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 7
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "good",
"name": "Community health",
"note": null,
"notes": [],
"value": 78,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": true,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (GPL-2.0)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "GPL-2.0"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 7.2,
"status": "met",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "moderate",
"name": "Ecosystem adoption (downloads)",
"note": null,
"notes": [],
"value": 58,
"inputs": {
"packages": [
"derhansen/sf_event_mgt"
],
"dependents": 7,
"ecosystems": "packagist",
"total_downloads": 345179,
"monthly_downloads": 8007
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "8,007 downloads/month across packagist",
"points": 52,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 8007,
"ecosystems": "packagist"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "7 packages depend on it",
"points": 6,
"status": "partial",
"details": [
{
"code": "registry_dependents",
"params": {
"count": 7
}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 64,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "at_risk",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 34,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 42,
"top_contributor_share": 0.938
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 94% of commits",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 94
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "42 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 42
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 10 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 73,
"inputs": {
"merged_prs": 102,
"open_issues": 5,
"closed_issues": 1234,
"issue_closed_ratio": 0.996,
"closed_unmerged_prs": 44
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "100% of issues closed",
"points": 46.6,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 100
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "102/146 decided PRs merged",
"points": 26.7,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 102,
"decided": 146
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 1/28 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 62,
"inputs": {
"followers": 101,
"owner_type": "User",
"is_verified": null,
"owner_login": "derhansen",
"public_repos": 117,
"account_age_days": 5024
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "101 followers of derhansen",
"points": 14.4,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 101,
"login": "derhansen"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "117 public repos, account ~13 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 117
}
},
{
"code": "account_age_years",
"params": {
"years": 13
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"derhansen/sf_event_mgt"
],
"ecosystems": "packagist",
"any_deprecated": false,
"min_days_since_publish": 35
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on packagist",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "packagist"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 35 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 35
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "114 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 114
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 80,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 84,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "5 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 5
}
}
],
"max_points": 24
},
{
"key": "tests_present",
"name": "Tests present",
"detail": null,
"points": 24,
"status": "met",
"details": [],
"max_points": 24
},
{
"key": "linter_config",
"name": "Linter config",
"detail": ".php-cs-fixer.php, phpstan.neon",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".php-cs-fixer.php, phpstan.neon"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "1 out of 1 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "good",
"name": "Documentation",
"note": null,
"notes": [],
"value": 75,
"inputs": {
"topics": [
"typo3",
"extbase",
"event-registration",
"event-calendar",
"fluid",
"event-management"
],
"has_wiki": false,
"homepage": null,
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "6 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 6
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "at_risk",
"name": "Security",
"value": 43,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Dangerous-Workflow, Packaging, Pinned-Dependencies, Signed-Releases, Token-Permissions. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"dangerous_workflow",
"packaging",
"pinned_dependencies",
"signed_releases",
"token_permissions"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 43,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 13,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 5,
"scorecard_aggregate": 4.3
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "1 out of 1 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 1/28 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 10 contributing companies or organizations",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "no workflows found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
},
{
"key": "dependency_update_tool",
"name": "Dependency-Update-Tool",
"detail": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "20 commit(s) and 8 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "no dependencies found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool is not run on all commits -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "No tokens found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "0 existing vulnerabilities detected",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 9
},
"components": [
{
"key": "policy_exposure_multiplier",
"name": "Policy exposure multiplier",
"detail": "no confirmed policy-scope location match",
"points": 100,
"status": "met",
"details": [
{
"code": "jurisdiction_no_match",
"params": {}
}
],
"max_points": 100
}
]
}
],
"description": "Are visible security and supply-chain practices strong, with no malicious dependency and no unresolved high-risk jurisdiction exposure?"
},
{
"key": "ai_readiness",
"band": "at_risk",
"name": "AI Readiness",
"value": 38,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "critical",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 4,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.08,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "no CLAUDE.md / AGENTS.md / editor rules",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_instructions",
"params": {}
}
],
"max_points": 45
},
{
"key": "machine_readable_docs_llms_txt",
"name": "Machine-readable docs (llms.txt)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "legible_commit_history",
"name": "Legible commit history",
"detail": "8 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 4.3,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 8,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Pinned-Dependencies. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_pinned_dependencies"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 57,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [
"Makefile"
],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Makefile"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".php-cs-fixer.php, phpstan.neon",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".php-cs-fixer.php, phpstan.neon"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "no agent-authored commits among the last 100",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_agent_authored_commits",
"params": {
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "no dependencies found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "moderate",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 55,
"inputs": {
"primary_language": "PHP",
"largest_source_bytes": 59441,
"source_files_sampled": 250,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "PHP without a type-check config",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_typecheck_config_language",
"params": {
"language": "PHP"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/250 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 250,
"oversized": 0
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"Could not fetch packagist package 'derhansen/sf_event_mgt_build' from its registry",
"No resolved dependencies carried a version and a supported ecosystem"
],
"report_type": "repository",
"generated_at": "2026-07-26T08:53:06.518388Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/d/derhansen/sf_event_mgt.svg",
"full_name": "derhansen/sf_event_mgt",
"license_state": "standard",
"license_spdx": "GPL-2.0"
}