Звіт у форматі JSON машиночитний
{
"data": {
"repo": {
"topics": [
"flarum",
"friendsofflarum",
"hacktoberfest"
],
"is_fork": false,
"size_kb": 1265,
"has_wiki": true,
"homepage": null,
"languages": {
"PHP": 96746,
"Less": 4258,
"JavaScript": 1971,
"TypeScript": 22831
},
"pushed_at": "2026-08-02T07:09:30Z",
"created_at": "2019-01-06T16:56:04Z",
"owner_type": "Organization",
"updated_at": "2026-06-19T17:03:18Z",
"description": "Manage Flarum primary navigation links",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "2.x",
"license_spdx_raw": "MIT",
"primary_language": "PHP",
"significant_languages": [
"PHP",
"TypeScript"
]
},
"owner": {
"blog": "https://friendsofflarum.org",
"name": "Friends of Flarum",
"type": "Organization",
"login": "FriendsOfFlarum",
"company": null,
"location": null,
"followers": 101,
"avatar_url": "https://avatars.githubusercontent.com/u/43339973?v=4",
"created_at": "2018-09-17T11:10:19Z",
"is_verified": null,
"public_repos": 105,
"account_age_days": 2875
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "2.0.0-beta.4",
"kind": "prerelease",
"published_at": "2026-06-19T17:08:48Z"
},
{
"tag": "2.0.0-beta.3",
"kind": "prerelease",
"published_at": "2026-04-17T21:03:16Z"
},
{
"tag": "2.0.0-beta.2",
"kind": "prerelease",
"published_at": "2025-12-21T08:45:39Z"
},
{
"tag": "2.0.0-beta.1",
"kind": "prerelease",
"published_at": "2025-11-06T09:26:44Z"
},
{
"tag": "1.4.0",
"kind": "minor",
"published_at": "2025-10-17T20:43:29Z"
},
{
"tag": "1.4.0-beta.1",
"kind": "prerelease",
"published_at": "2025-03-21T06:54:20Z"
},
{
"tag": "1.3.0",
"kind": "minor",
"published_at": "2024-10-14T13:19:55Z"
},
{
"tag": "1.2.3",
"kind": "patch",
"published_at": "2024-02-26T11:35:00Z"
},
{
"tag": "1.2.2",
"kind": "patch",
"published_at": "2024-01-15T17:36:06Z"
},
{
"tag": "1.2.1",
"kind": "patch",
"published_at": "2023-11-12T20:07:35Z"
},
{
"tag": "1.2.0",
"kind": "minor",
"published_at": "2023-08-16T15:37:22Z"
},
{
"tag": "1.1.4",
"kind": "patch",
"published_at": "2023-04-17T11:47:17Z"
},
{
"tag": "1.1.3",
"kind": "patch",
"published_at": "2023-02-07T08:37:53Z"
},
{
"tag": "1.1.2",
"kind": "patch",
"published_at": "2022-08-27T22:02:02Z"
},
{
"tag": "1.1.1",
"kind": "patch",
"published_at": "2022-05-21T10:11:07Z"
},
{
"tag": "1.0.0",
"kind": "major",
"published_at": "2021-05-18T06:02:45Z"
},
{
"tag": "0.6.0",
"kind": "minor",
"published_at": "2021-03-16T11:35:27Z"
},
{
"tag": "0.5.4",
"kind": "patch",
"published_at": "2021-02-02T20:18:30Z"
},
{
"tag": "0.5.3",
"kind": "patch",
"published_at": "2021-01-23T13:03:11Z"
},
{
"tag": "0.5.2",
"kind": "patch",
"published_at": "2021-01-18T00:29:31Z"
},
{
"tag": "0.5.1",
"kind": "patch",
"published_at": "2021-01-17T20:44:19Z"
},
{
"tag": "0.5.0",
"kind": "minor",
"published_at": "2020-12-16T11:09:57Z"
},
{
"tag": "0.4.2",
"kind": "patch",
"published_at": "2020-12-05T11:01:22Z"
},
{
"tag": "0.4.1",
"kind": "patch",
"published_at": "2020-11-14T17:50:54Z"
},
{
"tag": "0.4.0",
"kind": "minor",
"published_at": "2020-11-03T23:34:58Z"
},
{
"tag": "0.3.0",
"kind": "minor",
"published_at": "2020-05-04T12:01:47Z"
},
{
"tag": "0.2.0",
"kind": "minor",
"published_at": "2019-05-13T00:19:39Z"
}
],
"recent_commits": [
{
"oid": "3accb21fc2609700a084bcf7a21dc9308d903a97",
"body": "* fix: improve migration for registered_users_only column and update visibility\n\n* test: add integration test for down migrations\n\n* fix: remove hardcoded index name in down migration & support broken state",
"is_bot": false,
"headline": "Fix down migration issue with prefix and add integration test (#79)",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2026-06-19T17:03:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4105f3c26a695967a53e6fd1bf6a2233d1c3156b",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 6822025d5f396b4bd32b3927b84a869ed4f6189c",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2026-04-17T21:02:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6822025d5f396b4bd32b3927b84a869ed4f6189c",
"body": null,
"is_bot": false,
"headline": "fix: mobile positioning, ts refactor (#77)",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2026-04-17T21:01:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8cf68b51e4c0e9f2802f7a6c326b4ee713c2542b",
"body": null,
"is_bot": false,
"headline": "chore: add release notification",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2026-02-15T21:15:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b177a665598210e6db8fb9fac528efe1434cd58d",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit dc34df56abf8c750afe45582ecacd9d469527261",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2025-12-21T08:43:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dc34df56abf8c750afe45582ecacd9d469527261",
"body": null,
"is_bot": false,
"headline": "fix: all links are active (#75)",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2025-12-21T08:42:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8aa4ba4440154e396c3d7ef455e4767146f9157c",
"body": "* chore: bump PHPStan to level 6\n\n* Apply fixes from StyleCI\n\n---------\n\nCo-authored-by: StyleCI Bot <bot@styleci.io>",
"is_bot": false,
"headline": "[2.x] chore: bump PHPStan to level 6 (#74)",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2025-12-21T08:32:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9326cbd09b5be1c2d853ebb64562d49ad3bf15ac",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 8b3b7db26f6554fa6940eb47047046b48d69eeed",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2025-11-06T09:24:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8b3b7db26f6554fa6940eb47047046b48d69eeed",
"body": "* chore(2.0): update dependencies\n\nUpdate dependencies to Flarum 2.0 compatible versions.\n\n* chore(2.0): update infrastructure\n\nUpdate the extension infrastructure\n\n* chore(2.0): misc frontend changes\n\nMiscellaneous frontend changes\n\n* chore(2.0): misc backend changes\n\nMiscellaneous backend changes\n\n[…]\nnstead.\n\n* chore: upgrade for 2.x\n\n* Apply fixes from StyleCI\n\n* chore: update workflows for 2.x\n\n* fix: sqlite\n\n* fix: sqlite\n\n* fix: postgres\n\n---------\n\nCo-authored-by: StyleCI Bot <bot@styleci.io>",
"is_bot": false,
"headline": "chore: update for Flarum 2.0 (#73)",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2025-11-06T09:23:28Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "903c04d49a1eeb8157334f6f85abfe86a7bfe9cd",
"body": null,
"is_bot": false,
"headline": "chore: ignore .DS_Store files",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2025-10-09T11:51:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "34a85a78897bb07e7123d129fb8b9c108d44af44",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 3780c3b139c477c9e17cb99a183ac071a140dd63",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2025-03-21T06:49:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3780c3b139c477c9e17cb99a183ac071a140dd63",
"body": "* chore: disable crud when override is active\n\n* Apply fixes from StyleCI\n\n* chore: yarn upgrade\n\n---------\n\nCo-authored-by: StyleCI Bot <bot@styleci.io>",
"is_bot": false,
"headline": "chore: disable crud when code override is active (#72)",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2025-03-21T06:48:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5bbded24fb91d42ad6b4786e4f85b7107d5d563a",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit fdc340880261e5b4b95839ef6dcf6d716858518d",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2025-03-21T06:39:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fdc340880261e5b4b95839ef6dcf6d716858518d",
"body": "* feat: allow defining links via an extender\n\n* Apply fixes from StyleCI\n\n* add translator for the title\n\n* Apply fixes from StyleCI\n\n* improve\n\n* Apply fixes from StyleCI\n\n* phpstan\n\n* Apply fixes from StyleCI\n\n* drop php 7.x support\n\n* begin cleaning up\n\n* Apply fixes from StyleCI\n\n* refactor: Imp\n[…]\n\n\n* chore: update readme\n\n* phpstan\n\n* chore: remove dev code\n\n* chore: remove link editing when override is active\n\n* Apply fixes from StyleCI\n\n---------\n\nCo-authored-by: StyleCI Bot <bot@styleci.io>",
"is_bot": false,
"headline": "feat: allow defining links via an extender (#71)",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2025-03-21T06:38:13Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "80ee6577fcd7d5d49fe727729d30b3370c12ce5c",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 652a9481fb705f37ecd01d8f31e535737297efad",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2024-10-14T13:16:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "652a9481fb705f37ecd01d8f31e535737297efad",
"body": "* chore: refactor to start using model visibility, add first tests\r\n\r\n* Apply fixes from StyleCI\r\n\r\n* fix: phpstan error\r\n\r\n* simply test\r\n\r\n* Apply fixes from StyleCI\r\n\r\n* caching for guest users only\r\n\r\n* remove comment\r\n\r\n* create link test\r\n\r\n* Apply fixes from StyleCI\r\n\r\n* more tests\r\n\r\n* Apply\n[…]\nwhere possible\r\n\r\n* fix: check for existence of column\r\n\r\n---------\r\n\r\nCo-authored-by: StyleCI Bot <bot@styleci.io>\r\nCo-authored-by: Davide Iadeluca <146922689+DavideIadeluca@users.noreply.github.com>",
"is_bot": false,
"headline": "feat: Fully permissions based links (#70)",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-10-14T13:14:47Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "8087cea509117a34f0df03a94d960b84c59265ed",
"body": null,
"is_bot": false,
"headline": "chore: add codeowners",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-10-04T08:44:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "82e2999b5a901e5af1dee082cf8404f794667fd9",
"body": null,
"is_bot": false,
"headline": "fix: cache duration",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-09-19T10:58:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8e4a202119c662a80aa8a4d43af3a82b86294b30",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 7d91b656ee63de774fbc6d2f8847f681a7dc4fa2",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2024-09-19T10:54:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7d91b656ee63de774fbc6d2f8847f681a7dc4fa2",
"body": "* feat: cache links for improved performance\r\n\r\n* Apply fixes from StyleCI\r\n\r\n* chore: add docblocks to new functions\r\n\r\n* Apply fixes from StyleCI\r\n\r\n* clear cache after link delete\r\n\r\n* return val\r\n\r\n* formatting\r\n\r\n---------\r\n\r\nCo-authored-by: StyleCI Bot <bot@styleci.io>",
"is_bot": false,
"headline": "feat: cache links for improved performance (#69)",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-09-19T10:53:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "12b2018835ac7891ec1ae498ccf0ec0f83302c65",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit ae7762918e15eb8415fec8c17683c5ba43d1b118",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2024-07-03T16:46:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ae7762918e15eb8415fec8c17683c5ba43d1b118",
"body": null,
"is_bot": false,
"headline": "chore: yarn upgrade",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-07-03T16:45:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4099aa009b9d9abb6b661f63e1e771c6a0d4703f",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit f6c40513150c5eaf815daa0aa94cbc0e5c45f8ce",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2024-07-03T16:44:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f6c40513150c5eaf815daa0aa94cbc0e5c45f8ce",
"body": "* chore: use RequestUtil\r\n\r\n* chore: switch to yarn\r\n\r\n* chore: refactor to use newer frontend extenders\r\n\r\n* use link model",
"is_bot": false,
"headline": "chore: use frontend extenders (#68)",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-07-03T16:44:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5423ab90c20b2211f86f5e4ebea7cb8a8f141a9b",
"body": null,
"is_bot": false,
"headline": "chore: target 1.x branch for workflows",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2024-04-29T14:23:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6c0d9aa0bdd4e83026545ce0044ea227693a961c",
"body": "* Show the text on the dropdown menu when the \"Show icons only on tablet screens\" is enabled\r\n\r\n* CS fixes",
"is_bot": false,
"headline": "Fix missing dropdown text on medium sizes (#67)",
"author_name": "Jaggy",
"author_login": "jaggy",
"committed_at": "2024-02-26T11:31:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e26429d26ecba142f35135b7f14dd6a4ec7e8f1b",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit f33b7ea2464eaddc55fddfa3ecd1b139602d7661",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2024-01-15T17:32:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f33b7ea2464eaddc55fddfa3ecd1b139602d7661",
"body": null,
"is_bot": false,
"headline": "Apply fixes from StyleCI",
"author_name": "StyleCI Bot",
"author_login": "StyleCIBot",
"committed_at": "2024-01-15T17:32:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2f65c0c6721629c1f133a85fbac06f1ab61b63c8",
"body": "Closes #61",
"is_bot": false,
"headline": "Add rel='me' option to links",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2024-01-15T17:32:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "647f6091dc520453e59880f765e2ed3eeede1135",
"body": "…for brand icons\n\nCloses #60",
"is_bot": false,
"headline": "Update FontAwesome v5 icons link & add help text to reduce confusion …",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2024-01-15T17:32:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0ff816074a09b0b75dbe9c0c0621d8980d86b645",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit cff6712aade6eba948c9674b6ea06d9058df8dd6",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2023-11-12T20:05:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cff6712aade6eba948c9674b6ea06d9058df8dd6",
"body": "* chore: enable phpstan\r\n\r\n* fix: phpstan errors\r\n\r\n* Apply fixes from StyleCI\r\n\r\n* chore: bump js deps, npm audit fix\r\n\r\n---------\r\n\r\nCo-authored-by: StyleCI Bot <bot@styleci.io>",
"is_bot": false,
"headline": "chore: enable phpstan (#63)",
"author_name": "IanM",
"author_login": "imorland",
"committed_at": "2023-11-12T20:04:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "acb141a6de1f5c3013c75cb7be29ad5512354f6f",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 85938384e40ba76ce2b0a9221b29f8f34729c9a8",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2023-08-16T15:35:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "85938384e40ba76ce2b0a9221b29f8f34729c9a8",
"body": "* Bump semver from 6.3.0 to 6.3.1 in /js\r\n\r\nBumps [semver](https://github.com/npm/node-semver) from 6.3.0 to 6.3.1.\r\n- [Release notes](https://github.com/npm/node-semver/releases)\r\n- [Changelog](https://github.com/npm/node-semver/blob/v6.3.1/CHANGELOG.md)\r\n- [Commits](https://github.com/npm/node-sem\n[…]\nI\r\n\r\n---------\r\n\r\nSigned-off-by: dependabot[bot] <support@github.com>\r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\r\nCo-authored-by: StyleCI Bot <bot@styleci.io>",
"is_bot": true,
"headline": "Bump semver from 6.3.0 to 6.3.1 in /js (#58)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2023-08-16T15:35:10Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "766828e90f6bb5a7ec5bcb7f275345224cf25edf",
"body": null,
"is_bot": false,
"headline": "Apply fixes from StyleCI",
"author_name": "StyleCI Bot",
"author_login": "StyleCIBot",
"committed_at": "2023-08-16T15:34:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9fcd0b2e2366e5b61f8a3861061ab289e5ce1a2a",
"body": "Closes #45",
"is_bot": false,
"headline": "Fix extra dropdown separators between labels",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2023-08-16T15:34:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "564a423a55635b13b5618fdcc3de61ef5bda4ab6",
"body": "Closes #41",
"is_bot": false,
"headline": "Allow relative links without domain in URL",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2023-08-16T15:34:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2cecbea3619d9a477c2a1d5a44c5abbbf6b3db23",
"body": "Closes #6",
"is_bot": false,
"headline": "Fix active links not working in subfolder",
"author_name": "David Sevilla Martin",
"author_login": "dsevillamartin",
"committed_at": "2023-08-16T15:34:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1de1a95b684c13d6fe27ff00916ee26f3fab774d",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit b37ec0c9bf70158c5dd58dfcff2d25a88e76935f",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2023-04-17T11:45:35Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b37ec0c9bf70158c5dd58dfcff2d25a88e76935f",
"body": null,
"is_bot": false,
"headline": "fix: icons hidden on mobile burger (#57)",
"author_name": "Sami Mazouz",
"author_login": "SychO9",
"committed_at": "2023-04-17T11:44:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "918593de41bba0433ea4e4d337b2c5b4a3043343",
"body": "Bumps [webpack](https://github.com/webpack/webpack) from 5.72.1 to 5.76.0.\r\n- [Release notes](https://github.com/webpack/webpack/releases)\r\n- [Commits](https://github.com/webpack/webpack/compare/v5.72.1...v5.76.0)\r\n\r\n---\r\nupdated-dependencies:\r\n- dependency-name: webpack\r\n dependency-type: direct:production\r\n...\r\n\r\nSigned-off-by: dependabot[bot] <support@github.com>\r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "Bump webpack from 5.72.1 to 5.76.0 in /js (#56)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2023-03-15T10:23:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "512a74ecca7702d57b97e9b9ec1ae6ca89915cd7",
"body": "Includes transpiled JS/TS, and Typescript declaration files (typings).\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 5cb1483fc4f103720a665748d736e0ddeed06b32",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2023-02-07T08:36:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5cb1483fc4f103720a665748d736e0ddeed06b32",
"body": null,
"is_bot": false,
"headline": "chore: update build.yml, npm audit fix",
"author_name": "Ian Morland",
"author_login": "imorland",
"committed_at": "2023-02-07T08:36:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cef36cf649b5abd94a45aac68027221e7cc56914",
"body": "* feat: improve label HTML structure for customization\r\n\r\n* feat: add setting to only show icons on small screens",
"is_bot": false,
"headline": "feat: add setting to only show icons on small screens (#54)",
"author_name": "Sami Mazouz",
"author_login": "SychO9",
"committed_at": "2023-02-07T08:34:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7f9ecfb596cd50a32dd8bfb9b002072e8e3140b7",
"body": "Includes transpiled JS/TS.\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 28106ad0304f9b771dec330f8c8731e4645d7fbf",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2022-08-27T21:34:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "28106ad0304f9b771dec330f8c8731e4645d7fbf",
"body": null,
"is_bot": false,
"headline": "fix: separate saving from presumbit data prep in edit link modal",
"author_name": "David Wheatley",
"author_login": "davwheat",
"committed_at": "2022-08-27T21:34:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "12dc8caf0cc87c6c12f74b012e512e5a6f7cdf9c",
"body": "Includes transpiled JS/TS.\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 74f45ef2ccfe7ff896bca44f16e4a85ea2c09f75",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2022-05-19T23:49:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "74f45ef2ccfe7ff896bca44f16e4a85ea2c09f75",
"body": null,
"is_bot": false,
"headline": "perf: don't check against more links than needed (#46)",
"author_name": "David Wheatley",
"author_login": "davwheat",
"committed_at": "2022-05-19T23:47:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "17e25ae4e657cecf25bfdf03d457edadd1ce9593",
"body": "Includes transpiled JS/TS.\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 9d5a3c3308644ade3a9771c62f7503481f0d1134",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2022-05-19T23:43:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9d5a3c3308644ade3a9771c62f7503481f0d1134",
"body": null,
"is_bot": false,
"headline": "Webpack5 (#49)",
"author_name": "Ian Morland",
"author_login": "imorland",
"committed_at": "2022-05-19T23:42:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5c65cb23d056e365f03dea6b1b65273ae6f3487c",
"body": null,
"is_bot": false,
"headline": "Add package-lock.json to .gitignore now we are using yarn",
"author_name": "Ian Morland",
"author_login": "imorland",
"committed_at": "2021-10-14T12:24:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d55a62d04213c7786c0b18e02ea5922f5f9bdb40",
"body": "Includes transpiled JS/TS.\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit c5b27393e7aa8a1ae7cc3bebb2c8fc807c7afe9c",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2021-10-14T12:23:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c5b27393e7aa8a1ae7cc3bebb2c8fc807c7afe9c",
"body": "* chore: make code readable\r\n\r\n* Add help text for optional URL\r\n\r\n* feat/fix: mark url as optional; add length validation for other fields\r\n\r\n* fix: add missing app import\r\n\r\n* feat: add label link items to frontend\r\n\r\n* chore: format\r\n\r\n* fix: link color on colored header\r\n\r\n* feat: remove underlines from all links\r\n\r\n* fix: internal links refreshing\r\n\r\n* fix: new tab internal links not working correctly\r\n\r\n* fix: add back hover/focus background",
"is_bot": false,
"headline": "feat: add label links (#44)",
"author_name": "David Wheatley",
"author_login": "davwheat",
"committed_at": "2021-10-14T12:21:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f1c7670822538d9f531b47aeb4292c0be1673119",
"body": null,
"is_bot": false,
"headline": "chore: bump dependencies",
"author_name": "David Wheatley",
"author_login": "davwheat",
"committed_at": "2021-10-13T20:45:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4a47810f48dcf4ba9d3ead608fa0aeca9792ef8b",
"body": "* Creating and Created events\r\n\r\n* Add Deleting and Deleted events\r\n\r\n* Add Saving event\r\n\r\n* Apply fixes from StyleCI\r\n\r\n* whoops\r\n\r\nCo-authored-by: Ian Morland <imorland@users.noreply.github.com>",
"is_bot": false,
"headline": "Add Creating (ed), Saving, Deleting (ed) (#43)",
"author_name": "Ian Morland",
"author_login": "imorland",
"committed_at": "2021-10-12T08:15:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "97606ef39a9d98ecbd153100f5780f75b63f90f3",
"body": "Includes transpiled JS/TS.\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 5e19bf3390ce8b1990b67e5ded02efe6f1aab513",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2021-10-01T10:29:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5e19bf3390ce8b1990b67e5ded02efe6f1aab513",
"body": null,
"is_bot": false,
"headline": "Prettier",
"author_name": "Ian Morland",
"author_login": "imorland",
"committed_at": "2021-10-01T10:27:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e82e7976c03453ab8657ca65d074728c0a59060f",
"body": null,
"is_bot": false,
"headline": "Add accessibility attr to LinkItem",
"author_name": "Ian Morland",
"author_login": "imorland",
"committed_at": "2021-10-01T10:25:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "953b6711793100d74bcb82c7b42759314c4f38d9",
"body": "Includes transpiled JS/TS.\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 8859e17d40ff2c84dc187516c3a1a4e12fb9daca",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2021-09-10T23:00:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8859e17d40ff2c84dc187516c3a1a4e12fb9daca",
"body": "This reverts commit bb4f2f55255b07e8cf273fd4ff96694052d12e42.",
"is_bot": false,
"headline": "Revert \"Merge branch 'dw/wip-header-break'\"",
"author_name": "David Wheatley",
"author_login": "davwheat",
"committed_at": "2021-09-10T22:58:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1f70b3b5b0226e9581b14672ae3d507f6f2e1d3e",
"body": "Includes transpiled JS/TS.\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit bb4f2f55255b07e8cf273fd4ff96694052d12e42",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2021-09-02T18:03:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bb4f2f55255b07e8cf273fd4ff96694052d12e42",
"body": null,
"is_bot": false,
"headline": "Merge branch 'dw/wip-header-break'",
"author_name": "David Wheatley",
"author_login": "davwheat",
"committed_at": "2021-09-02T18:01:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3d93ec4a06e514f874921cf38c66f98ce8803d13",
"body": null,
"is_bot": false,
"headline": "Fix multiple links pushing secondary header down",
"author_name": "David Wheatley",
"author_login": "davwheat",
"committed_at": "2021-09-02T14:11:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "95ea1907d5c8664fb3fa012b1d5a9248ffcfe044",
"body": "Includes transpiled JS/TS.\n\n[skip ci]",
"is_bot": false,
"headline": "Bundled output for commit 3d54b517d2ee5baad59a47c83131c72309e334fd",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2021-09-02T12:03:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3d54b517d2ee5baad59a47c83131c72309e334fd",
"body": null,
"is_bot": false,
"headline": "Format code",
"author_name": "David Wheatley",
"author_login": "davwheat",
"committed_at": "2021-09-02T12:01:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "82babe53c8b7bad5ee6fd92092c1cf089d7c0779",
"body": null,
"is_bot": false,
"headline": "Fix incorrect lockfile name",
"author_name": "David Wheatley",
"author_login": "davwheat",
"committed_at": "2021-09-02T11:35:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "42a5bc18a49f9ac590f4ceff74c26fc819d41247",
"body": null,
"is_bot": false,
"headline": "Rework CI",
"author_name": "David Wheatley",
"author_login": "davwheat",
"committed_at": "2021-09-02T11:33:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fd6b99073a1964654d6990be8091242b6384f3ca",
"body": null,
"is_bot": false,
"headline": "Dependency updates and migrate to Yarn",
"author_name": "David Wheatley",
"author_login": "davwheat",
"committed_at": "2021-09-02T11:30:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1448039fa64ad4ae3e1064ce95e8c435a8a2539f",
"body": "Bumps [browserslist](https://github.com/browserslist/browserslist) from 4.6.4 to 4.16.6.\r\n- [Release notes](https://github.com/browserslist/browserslist/releases)\r\n- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)\r\n- [Commits](https://github.com/browserslist/browserslist/compare/4.6.4...4.16.6)\r\n\r\nSigned-off-by: dependabot[bot] <support@github.com>\r\n\r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "Bump browserslist from 4.6.4 to 4.16.6 in /js (#40)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2021-05-24T23:10:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3d97f2e4068b1e2b28c94178117285a36af3011c",
"body": null,
"is_bot": false,
"headline": "Flarum 1.0 ready",
"author_name": "Ian Morland",
"author_login": "imorland",
"committed_at": "2021-05-17T14:40:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dcdf090d3c84ce970166d6d493a459f96d3d744b",
"body": "* Bump lodash from 4.17.20 to 4.17.21 in /js\r\n\r\nBumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.\r\n- [Release notes](https://github.com/lodash/lodash/releases)\r\n- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)\r\n\r\nSigned-off-by: dependabot[bot] <support@github.com>\r\n\r\n* Apply fixes from StyleCI\r\n\r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\r\nCo-authored-by: datitisev <datitisev@users.noreply.github.com>",
"is_bot": true,
"headline": "Bump lodash from 4.17.20 to 4.17.21 in /js (#39)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2021-05-11T15:05:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f553a1e4635f2d581657352577dddf6fb0f7e715",
"body": "* Bump ssri from 6.0.1 to 6.0.2 in /js\r\n\r\nBumps [ssri](https://github.com/npm/ssri) from 6.0.1 to 6.0.2.\r\n- [Release notes](https://github.com/npm/ssri/releases)\r\n- [Changelog](https://github.com/npm/ssri/blob/v6.0.2/CHANGELOG.md)\r\n- [Commits](https://github.com/npm/ssri/compare/v6.0.1...v6.0.2)\r\n\r\n\n[…]\nsupport@github.com>\r\n\r\n* Apply fixes from StyleCI\r\n\r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\r\nCo-authored-by: datitisev <datitisev@users.noreply.github.com>",
"is_bot": true,
"headline": "Bump ssri from 6.0.1 to 6.0.2 in /js (#38)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2021-05-11T15:05:16Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "fe87071c044ec889c6bf7d0a8f0a153ce07df56f",
"body": "* Bump y18n from 4.0.0 to 4.0.1 in /js\r\n\r\nBumps [y18n](https://github.com/yargs/y18n) from 4.0.0 to 4.0.1.\r\n- [Release notes](https://github.com/yargs/y18n/releases)\r\n- [Changelog](https://github.com/yargs/y18n/blob/master/CHANGELOG.md)\r\n- [Commits](https://github.com/yargs/y18n/commits)\r\n\r\nSigned-o\n[…]\nsupport@github.com>\r\n\r\n* Apply fixes from StyleCI\r\n\r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\r\nCo-authored-by: datitisev <datitisev@users.noreply.github.com>",
"is_bot": true,
"headline": "Bump y18n from 4.0.0 to 4.0.1 in /js (#37)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2021-05-11T15:05:00Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "3aba6d3d04edf6cdb1dbf2a76e625ff2d19dcddc",
"body": "…kip ci]",
"is_bot": false,
"headline": "Bundled output for commit ffc8fffa598b93664cc3a1b51571752edff7a5f0 [s…",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2021-03-16T11:34:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ffc8fffa598b93664cc3a1b51571752edff7a5f0",
"body": null,
"is_bot": false,
"headline": "Beta 16",
"author_name": "Ian Morland",
"author_login": "imorland",
"committed_at": "2021-03-16T11:33:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "35076ef0a3e2646b793e4bb0a148bc85022fd114",
"body": "Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.3 to 6.5.4.\r\n- [Release notes](https://github.com/indutny/elliptic/releases)\r\n- [Commits](https://github.com/indutny/elliptic/compare/v6.5.3...v6.5.4)\r\n\r\nSigned-off-by: dependabot[bot] <support@github.com>\r\n\r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "Bump elliptic from 6.5.3 to 6.5.4 in /js (#36)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2021-03-16T11:11:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "85e79618d42deb5873a7eaf612bcc4ca2dda3d12",
"body": "…kip ci]",
"is_bot": false,
"headline": "Bundled output for commit 792e784da3d2d97a09dc4e66f9e4846fa6a83ef7 [s…",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2021-02-02T20:15:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "792e784da3d2d97a09dc4e66f9e4846fa6a83ef7",
"body": "* Format\r\n\r\n* Add rel=\"noopener\" to external _blank links",
"is_bot": false,
"headline": "Add rel=\"noopener\" to external _blank links (#35)",
"author_name": "David Wheatley",
"author_login": "davwheat",
"committed_at": "2021-02-02T20:14:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6272bf02847c6853bf4b5a4dc945fe760d2ff18f",
"body": null,
"is_bot": false,
"headline": "Remove trailing comma for PHP 7.2 compatibility",
"author_name": "Ian Morland",
"author_login": "imorland",
"committed_at": "2021-01-23T13:01:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "72b5c9617b25a092b1b5798126bdd8e56d72b8e1",
"body": "…kip ci]",
"is_bot": false,
"headline": "Bundled output for commit 18a3b773e8d35d48bbe09fc927b6fffa70510979 [s…",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2021-01-18T00:27:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "18a3b773e8d35d48bbe09fc927b6fffa70510979",
"body": null,
"is_bot": false,
"headline": "Apply fixes from StyleCI",
"author_name": "Ian Morland",
"author_login": "imorland",
"committed_at": "2021-01-18T00:25:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3fec77d1caab3084cb14c313af487f64dfa7b325",
"body": null,
"is_bot": false,
"headline": "More links visibility options: everyone, members, guests",
"author_name": "Ian Morland",
"author_login": "imorland",
"committed_at": "2021-01-18T00:25:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "acceba27749eed883e6ecaad7e2983f942b16b09",
"body": "…kip ci]",
"is_bot": false,
"headline": "Bundled output for commit 3d60a3310d8dc18c3d8270b2a66280b5aeff4a5c [s…",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2021-01-17T20:42:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3d60a3310d8dc18c3d8270b2a66280b5aeff4a5c",
"body": null,
"is_bot": false,
"headline": "Improve edit modal extensibility",
"author_name": "Ian Morland",
"author_login": "imorland",
"committed_at": "2021-01-17T20:41:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "460b9649090694e048131300c5dca35569143561",
"body": "…kip ci]",
"is_bot": false,
"headline": "Bundled output for commit 84f36a30ab5bed9f6180495243f4137cbe1a2711 [s…",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2021-01-17T20:05:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "84f36a30ab5bed9f6180495243f4137cbe1a2711",
"body": null,
"is_bot": false,
"headline": "Apply fixes from StyleCI",
"author_name": "Ian Morland",
"author_login": "imorland",
"committed_at": "2021-01-17T20:04:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e01a83cea7671b34da2d8690f7d51afe32e48e89",
"body": null,
"is_bot": false,
"headline": "Add registered user only links #23",
"author_name": "Ian Morland",
"author_login": "imorland",
"committed_at": "2021-01-17T20:04:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9f99f161dfaed4b579dc62feb4d51e41ba314a23",
"body": null,
"is_bot": false,
"headline": "Add exports for extensibility, lint",
"author_name": "Ian Morland",
"author_login": "imorland",
"committed_at": "2021-01-17T20:04:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ec52b908fa4af6211f208caed31ac8809343e30f",
"body": null,
"is_bot": false,
"headline": "Apply fixes from StyleCI",
"author_name": "Ian Morland",
"author_login": "imorland",
"committed_at": "2021-01-17T17:36:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dd3964d57d001d3dfa39dbb2d6215309a7e72d86",
"body": null,
"is_bot": false,
"headline": "Fix missing top margin on admin page",
"author_name": "Ian Morland",
"author_login": "imorland",
"committed_at": "2021-01-17T17:35:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0ec401ce9ee64de90726582a09a1a287d453008c",
"body": "* Bump elliptic from 6.5.2 to 6.5.3 in /js\r\n\r\nBumps [elliptic](https://github.com/indutny/elliptic) from 6.5.2 to 6.5.3.\r\n- [Release notes](https://github.com/indutny/elliptic/releases)\r\n- [Commits](https://github.com/indutny/elliptic/compare/v6.5.2...v6.5.3)\r\n\r\nSigned-off-by: dependabot[bot] <support@github.com>\r\n\r\n* Apply fixes from StyleCI\r\n\r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>\r\nCo-authored-by: datitisev <me@datitisev.me>",
"is_bot": true,
"headline": "Bump elliptic from 6.5.2 to 6.5.3 in /js (#22)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2021-01-17T17:24:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f32f02c096debf0c4d1e518545f13ab446bcf3c2",
"body": "Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.7.\r\n- [Release notes](https://github.com/isaacs/ini/releases)\r\n- [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.7)\r\n\r\nSigned-off-by: dependabot[bot] <support@github.com>\r\n\r\nCo-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>",
"is_bot": true,
"headline": "Bump ini from 1.3.5 to 1.3.7 in /js (#29)",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2021-01-17T17:24:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7f4ed4b56bb14abe32910920fa846fa35a322898",
"body": "…kip ci]",
"is_bot": false,
"headline": "Bundled output for commit 4ded980c3eec8537e94b1892a8b1e9b280038d88 [s…",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2020-12-16T10:16:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4ded980c3eec8537e94b1892a8b1e9b280038d88",
"body": "* Add composer meta\r\n\r\n* Use beta15 extenders\r\n\r\n* Remove non-english translations\r\n\r\n* Move settings to ExtensionPage\r\n\r\n* Apply fixes from StyleCI\r\n\r\n* Update composer meta\r\n\r\nCo-authored-by: karaok491 <karaok491@users.noreply.github.com>",
"is_bot": false,
"headline": "Beta15 (#28)",
"author_name": "karaok491",
"author_login": "karaok491",
"committed_at": "2020-12-16T10:15:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1e7114141dfdfcd4c921c8fe45172c1315fadf85",
"body": "…kip ci]",
"is_bot": false,
"headline": "Bundled output for commit 0c92b6e1697fcd4680f4c4c5d94343ee428e7063 [s…",
"author_name": "flarum-bot",
"author_login": "flarum-bot",
"committed_at": "2020-12-08T21:21:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0c92b6e1697fcd4680f4c4c5d94343ee428e7063",
"body": null,
"is_bot": false,
"headline": "Add build action",
"author_name": "karaok",
"author_login": "karaok491",
"committed_at": "2020-12-08T21:19:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "50aed2e516cbc09f9962d4b7adaf3a8019cc9408",
"body": null,
"is_bot": false,
"headline": "Replace AssertPermissionTrait",
"author_name": "karaok",
"author_login": "karaok491",
"committed_at": "2020-12-05T10:58:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "987dc3cc8b7a89002a694a3be8ea2b332ea0fbec",
"body": null,
"is_bot": false,
"headline": "Add column exists checks before running migration",
"author_name": "karaok",
"author_login": "karaok491",
"committed_at": "2020-11-14T17:49:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "310e8db286e42d41d30117150fec5e8248eaf431",
"body": null,
"is_bot": false,
"headline": "Merge branch 'glowingblue-master' into master",
"author_name": "karaok",
"author_login": "karaok491",
"committed_at": "2020-11-03T23:26:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b8b8bd8a05180e62d5488497bfa978fa3129e74e",
"body": "…ingblue-master",
"is_bot": false,
"headline": "Merge branch 'master' of git://github.com/glowingblue/links into glow…",
"author_name": "karaok",
"author_login": "karaok491",
"committed_at": "2020-11-03T23:25:14Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 27,
"commits_last_year": 10,
"latest_release_at": "2026-06-19T17:08:48Z",
"latest_release_tag": "2.0.0-beta.4",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 6,
"days_since_latest_release": 43,
"mean_days_between_releases": 105.5
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 62,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": true
},
"ecosystem": {
"packages": [
{
"name": "fof/links",
"exists": true,
"license": "MIT",
"keywords": [
"flarum"
],
"ecosystem": "packagist",
"matches_repo": true,
"registry_url": "https://packagist.org/packages/fof/links",
"is_deprecated": false,
"latest_version": "2.0.0-beta.4",
"repository_url": "https://github.com/FriendsOfFlarum/links",
"versions_count": 33,
"total_downloads": 136258,
"dependents_count": 4,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 3251,
"first_published_at": null,
"latest_published_at": "2026-06-19T17:03:14Z",
"latest_version_yanked": null,
"days_since_latest_publish": 43
}
]
},
"popularity": {
"forks": 13,
"stars": 38,
"watchers": 6,
"fork_history": {
"days": [
{
"date": "2019-02-21",
"count": 1
},
{
"date": "2019-03-14",
"count": 1
},
{
"date": "2019-05-10",
"count": 1
},
{
"date": "2019-07-09",
"count": 1
},
{
"date": "2019-07-22",
"count": 1
},
{
"date": "2020-09-09",
"count": 1
},
{
"date": "2021-01-31",
"count": 1
},
{
"date": "2023-03-29",
"count": 1
},
{
"date": "2023-04-07",
"count": 1
},
{
"date": "2024-02-23",
"count": 1
},
{
"date": "2024-09-06",
"count": 1
},
{
"date": "2024-12-21",
"count": 1
},
{
"date": "2026-04-21",
"count": 1
}
],
"complete": true,
"collected": 13,
"total_forks": 13
},
"star_history": null,
"open_issues_and_prs": 1
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"js/tsconfig.json"
],
"toolchain_manifests": [],
"largest_source_bytes": 9679,
"source_files_sampled": 79,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"composer.json",
"js/package.json"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "@babel/plugin-transform-modules-systemjs",
"direct": false,
"version": "7.27.1",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 8.2,
"advisory_ids": [
"GHSA-fv7c-fp4j-7gwp"
],
"fixed_version": "8.0.0-alpha.13",
"advisory_count": 1,
"oldest_advisory_days": 85
},
{
"name": "@isaacs/brace-expansion",
"direct": false,
"version": "5.0.0",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-7h2j-956f-4vf2"
],
"fixed_version": "5.0.1",
"advisory_count": 1,
"oldest_advisory_days": 179
},
{
"name": "brace-expansion",
"direct": false,
"version": "1.1.12",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-3jxr-9vmj-r5cp",
"GHSA-f886-m6hf-6m8v",
"GHSA-mh99-v99m-4gvg"
],
"fixed_version": "5.0.8",
"advisory_count": 3,
"oldest_advisory_days": 128
},
{
"name": "fast-uri",
"direct": false,
"version": "3.0.6",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-4c8g-83qw-93j6",
"GHSA-q3j6-qgpj-74h6",
"GHSA-v2hh-gcrm-f6hx",
"GHSA-v39h-62p7-jpjc"
],
"fixed_version": "4.1.1",
"advisory_count": 4,
"oldest_advisory_days": 85
},
{
"name": "lodash",
"direct": false,
"version": "4.17.21",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 8.1,
"advisory_ids": [
"GHSA-f23m-r3pf-42rh",
"GHSA-r5fr-rjxr-66jc",
"GHSA-xxjr-mmjv-4gpg"
],
"fixed_version": "4.18.0",
"advisory_count": 3,
"oldest_advisory_days": 192
},
{
"name": "minimatch",
"direct": false,
"version": "10.1.1",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-23c5-xmqv-rm74",
"GHSA-3ppc-4f35-3m26",
"GHSA-7r86-cg39-jmmj"
],
"fixed_version": "10.2.3",
"advisory_count": 3,
"oldest_advisory_days": 164
},
{
"name": "minimatch",
"direct": false,
"version": "3.1.2",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-23c5-xmqv-rm74",
"GHSA-3ppc-4f35-3m26",
"GHSA-7r86-cg39-jmmj"
],
"fixed_version": "10.2.3",
"advisory_count": 3,
"oldest_advisory_days": 164
},
{
"name": "picomatch",
"direct": false,
"version": "2.3.1",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-3v7f-55p6-f55p",
"GHSA-c2c7-rcm5-vvqj"
],
"fixed_version": "4.0.4",
"advisory_count": 2,
"oldest_advisory_days": 129
},
{
"name": "serialize-javascript",
"direct": false,
"version": "6.0.2",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 8.1,
"advisory_ids": [
"GHSA-5c6j-r48x-rmvq",
"GHSA-qj8w-gfj5-8c6v"
],
"fixed_version": "7.0.5",
"advisory_count": 2,
"oldest_advisory_days": 155
},
{
"name": "ws",
"direct": false,
"version": "7.5.10",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-96hv-2xvq-fx4p"
],
"fixed_version": "8.21.0",
"advisory_count": 1,
"oldest_advisory_days": 47
},
{
"name": "ajv",
"direct": false,
"version": "6.12.6",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-2g4f-4pwh-qvx6"
],
"fixed_version": "8.18.0",
"advisory_count": 1,
"oldest_advisory_days": 171
},
{
"name": "ajv",
"direct": false,
"version": "8.17.1",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-2g4f-4pwh-qvx6"
],
"fixed_version": "8.18.0",
"advisory_count": 1,
"oldest_advisory_days": 171
},
{
"name": "@babel/core",
"direct": false,
"version": "7.28.4",
"severity": "low",
"ecosystem": "npm",
"cvss_score": 3.2,
"advisory_ids": [
"GHSA-4x5r-pxfx-6jf8"
],
"fixed_version": "8.0.0-rc.6",
"advisory_count": 1,
"oldest_advisory_days": 47
},
{
"name": "webpack",
"direct": false,
"version": "5.102.1",
"severity": "low",
"ecosystem": "npm",
"cvss_score": 3.7,
"advisory_ids": [
"GHSA-38r7-794h-5758",
"GHSA-8fgc-7cc6-rx7x"
],
"fixed_version": "5.104.1",
"advisory_count": 2,
"oldest_advisory_days": 177
},
{
"name": "webpack",
"direct": false,
"version": "5.98.0",
"severity": "low",
"ecosystem": "npm",
"cvss_score": 3.7,
"advisory_ids": [
"GHSA-38r7-794h-5758",
"GHSA-8fgc-7cc6-rx7x"
],
"fixed_version": "5.104.1",
"advisory_count": 2,
"oldest_advisory_days": 177
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"low": 3,
"high": 10,
"moderate": 2
},
"advisory_count": 30,
"affected_count": 15,
"assessed_count": 432,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 4,
"direct_affected_count": 0
},
"ecosystems": [
"npm",
"packagist"
],
"dependencies": [
{
"name": "flarum/core",
"manifest": "composer.json",
"ecosystem": "packagist",
"version_constraint": "^2.0.0"
},
{
"name": "sortablejs",
"manifest": "js/package.json",
"ecosystem": "npm",
"version_constraint": "^1.14.0"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "sortablejs",
"direct": true,
"version": "1.15.6",
"ecosystem": "npm"
},
{
"name": "flarum/core",
"direct": true,
"version": null,
"ecosystem": "packagist"
},
{
"name": "@babel/code-frame",
"direct": false,
"version": "7.26.2",
"ecosystem": "npm"
},
{
"name": "@babel/code-frame",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/compat-data",
"direct": false,
"version": "7.28.4",
"ecosystem": "npm"
},
{
"name": "@babel/core",
"direct": false,
"version": "7.28.4",
"ecosystem": "npm"
},
{
"name": "@babel/generator",
"direct": false,
"version": "7.26.10",
"ecosystem": "npm"
},
{
"name": "@babel/generator",
"direct": false,
"version": "7.28.3",
"ecosystem": "npm"
},
{
"name": "@babel/helper-annotate-as-pure",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-annotate-as-pure",
"direct": false,
"version": "7.27.3",
"ecosystem": "npm"
},
{
"name": "@babel/helper-compilation-targets",
"direct": false,
"version": "7.27.2",
"ecosystem": "npm"
},
{
"name": "@babel/helper-create-class-features-plugin",
"direct": false,
"version": "7.26.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-create-class-features-plugin",
"direct": false,
"version": "7.28.3",
"ecosystem": "npm"
},
{
"name": "@babel/helper-create-regexp-features-plugin",
"direct": false,
"version": "7.26.3",
"ecosystem": "npm"
},
{
"name": "@babel/helper-create-regexp-features-plugin",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-define-polyfill-provider",
"direct": false,
"version": "0.6.5",
"ecosystem": "npm"
},
{
"name": "@babel/helper-globals",
"direct": false,
"version": "7.28.0",
"ecosystem": "npm"
},
{
"name": "@babel/helper-member-expression-to-functions",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-member-expression-to-functions",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-module-imports",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-module-transforms",
"direct": false,
"version": "7.28.3",
"ecosystem": "npm"
},
{
"name": "@babel/helper-optimise-call-expression",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-optimise-call-expression",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-plugin-utils",
"direct": false,
"version": "7.26.5",
"ecosystem": "npm"
},
{
"name": "@babel/helper-plugin-utils",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-remap-async-to-generator",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-replace-supers",
"direct": false,
"version": "7.26.5",
"ecosystem": "npm"
},
{
"name": "@babel/helper-replace-supers",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-skip-transparent-expression-wrappers",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-skip-transparent-expression-wrappers",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-string-parser",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-string-parser",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-validator-identifier",
"direct": false,
"version": "7.25.9",
"ecosystem": "npm"
},
{
"name": "@babel/helper-validator-identifier",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-validator-option",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/helper-wrap-function",
"direct": false,
"version": "7.28.3",
"ecosystem": "npm"
},
{
"name": "@babel/helpers",
"direct": false,
"version": "7.28.4",
"ecosystem": "npm"
},
{
"name": "@babel/parser",
"direct": false,
"version": "7.26.10",
"ecosystem": "npm"
},
{
"name": "@babel/parser",
"direct": false,
"version": "7.28.4",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-bugfix-firefox-class-in-computed-class-key",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-bugfix-safari-class-field-initializer-scope",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly",
"direct": false,
"version": "7.28.3",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-proposal-class-properties",
"direct": false,
"version": "7.18.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-proposal-private-methods",
"direct": false,
"version": "7.18.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-proposal-private-property-in-object",
"direct": false,
"version": "7.21.0-placeholder-for-preset-env.2",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-import-assertions",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-import-attributes",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-jsx",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-typescript",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-syntax-unicode-sets-regex",
"direct": false,
"version": "7.18.6",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-arrow-functions",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-async-generator-functions",
"direct": false,
"version": "7.28.0",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-async-to-generator",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-block-scoped-functions",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-block-scoping",
"direct": false,
"version": "7.28.4",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-class-properties",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-class-static-block",
"direct": false,
"version": "7.28.3",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-classes",
"direct": false,
"version": "7.28.4",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-computed-properties",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-destructuring",
"direct": false,
"version": "7.28.0",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-dotall-regex",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-duplicate-keys",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-duplicate-named-capturing-groups-regex",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-dynamic-import",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-explicit-resource-management",
"direct": false,
"version": "7.28.0",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-exponentiation-operator",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-export-namespace-from",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-for-of",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-function-name",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-json-strings",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-literals",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-logical-assignment-operators",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-member-expression-literals",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-modules-amd",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-modules-commonjs",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-modules-systemjs",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-modules-umd",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-named-capturing-groups-regex",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-new-target",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-nullish-coalescing-operator",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-numeric-separator",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-object-assign",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-object-rest-spread",
"direct": false,
"version": "7.28.4",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-object-super",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-optional-catch-binding",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-optional-chaining",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-parameters",
"direct": false,
"version": "7.27.7",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-private-methods",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-private-property-in-object",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-property-literals",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-react-display-name",
"direct": false,
"version": "7.28.0",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-react-jsx",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-react-jsx-development",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-react-pure-annotations",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-regenerator",
"direct": false,
"version": "7.28.4",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-regexp-modifiers",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-reserved-words",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-runtime",
"direct": false,
"version": "7.28.3",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-shorthand-properties",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-spread",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-sticky-regex",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-template-literals",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-typeof-symbol",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-typescript",
"direct": false,
"version": "7.28.0",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-unicode-escapes",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-unicode-property-regex",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-unicode-regex",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/plugin-transform-unicode-sets-regex",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/preset-env",
"direct": false,
"version": "7.28.3",
"ecosystem": "npm"
},
{
"name": "@babel/preset-modules",
"direct": false,
"version": "0.1.6-no-external-plugins",
"ecosystem": "npm"
},
{
"name": "@babel/preset-react",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/preset-typescript",
"direct": false,
"version": "7.27.1",
"ecosystem": "npm"
},
{
"name": "@babel/runtime",
"direct": false,
"version": "7.28.4",
"ecosystem": "npm"
},
{
"name": "@babel/template",
"direct": false,
"version": "7.26.9",
"ecosystem": "npm"
},
{
"name": "@babel/template",
"direct": false,
"version": "7.27.2",
"ecosystem": "npm"
},
{
"name": "@babel/traverse",
"direct": false,
"version": "7.26.10",
"ecosystem": "npm"
},
{
"name": "@babel/traverse",
"direct": false,
"version": "7.28.4",
"ecosystem": "npm"
},
{
"name": "@babel/types",
"direct": false,
"version": "7.26.10",
"ecosystem": "npm"
},
{
"name": "@babel/types",
"direct": false,
"version": "7.28.4",
"ecosystem": "npm"
},
{
"name": "@colors/colors",
"direct": false,
"version": "1.5.0",
"ecosystem": "npm"
},
{
"name": "@discoveryjs/json-ext",
"direct": false,
"version": "0.5.7",
"ecosystem": "npm"
},
{
"name": "@flarum/prettier-config",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "@hypnosphi/create-react-context",
"direct": false,
"version": "0.3.1",
"ecosystem": "npm"
},
{
"name": "@isaacs/balanced-match",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "@isaacs/brace-expansion",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "@jridgewell/gen-mapping",
"direct": false,
"version": "0.3.13",
"ecosystem": "npm"
},
{
"name": "@jridgewell/gen-mapping",
"direct": false,
"version": "0.3.8",
"ecosystem": "npm"
},
{
"name": "@jridgewell/remapping",
"direct": false,
"version": "2.3.5",
"ecosystem": "npm"
},
{
"name": "@jridgewell/resolve-uri",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "@jridgewell/set-array",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "@jridgewell/source-map",
"direct": false,
"version": "0.3.6",
"ecosystem": "npm"
},
{
"name": "@jridgewell/sourcemap-codec",
"direct": false,
"version": "1.5.0",
"ecosystem": "npm"
},
{
"name": "@jridgewell/sourcemap-codec",
"direct": false,
"version": "1.5.5",
"ecosystem": "npm"
},
{
"name": "@jridgewell/trace-mapping",
"direct": false,
"version": "0.3.25",
"ecosystem": "npm"
},
{
"name": "@jridgewell/trace-mapping",
"direct": false,
"version": "0.3.31",
"ecosystem": "npm"
},
{
"name": "@nodelib/fs.scandir",
"direct": false,
"version": "2.1.5",
"ecosystem": "npm"
},
{
"name": "@nodelib/fs.stat",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "@nodelib/fs.walk",
"direct": false,
"version": "1.2.8",
"ecosystem": "npm"
},
{
"name": "@polka/url",
"direct": false,
"version": "1.0.0-next.28",
"ecosystem": "npm"
},
{
"name": "@semantic-ui-react/event-stack",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "@stardust-ui/react-component-event-listener",
"direct": false,
"version": "0.38.0",
"ecosystem": "npm"
},
{
"name": "@stardust-ui/react-component-ref",
"direct": false,
"version": "0.38.0",
"ecosystem": "npm"
},
{
"name": "@types/eslint",
"direct": false,
"version": "9.6.1",
"ecosystem": "npm"
},
{
"name": "@types/eslint-scope",
"direct": false,
"version": "3.7.7",
"ecosystem": "npm"
},
{
"name": "@types/estree",
"direct": false,
"version": "1.0.6",
"ecosystem": "npm"
},
{
"name": "@types/estree",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "@types/jquery",
"direct": false,
"version": "3.5.32",
"ecosystem": "npm"
},
{
"name": "@types/json-schema",
"direct": false,
"version": "7.0.15",
"ecosystem": "npm"
},
{
"name": "@types/mithril",
"direct": false,
"version": "2.2.7",
"ecosystem": "npm"
},
{
"name": "@types/node",
"direct": false,
"version": "22.13.10",
"ecosystem": "npm"
},
{
"name": "@types/sizzle",
"direct": false,
"version": "2.3.9",
"ecosystem": "npm"
},
{
"name": "@types/sortablejs",
"direct": false,
"version": "1.15.9",
"ecosystem": "npm"
},
{
"name": "@types/throttle-debounce",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/ast",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/floating-point-hex-parser",
"direct": false,
"version": "1.13.2",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/helper-api-error",
"direct": false,
"version": "1.13.2",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/helper-buffer",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/helper-numbers",
"direct": false,
"version": "1.13.2",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/helper-wasm-bytecode",
"direct": false,
"version": "1.13.2",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/helper-wasm-section",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/ieee754",
"direct": false,
"version": "1.13.2",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/leb128",
"direct": false,
"version": "1.13.2",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/utf8",
"direct": false,
"version": "1.13.2",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/wasm-edit",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/wasm-gen",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/wasm-opt",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/wasm-parser",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webassemblyjs/wast-printer",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "@webpack-cli/configtest",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "@webpack-cli/info",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "@webpack-cli/serve",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "@xtuc/ieee754",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "@xtuc/long",
"direct": false,
"version": "4.2.2",
"ecosystem": "npm"
},
{
"name": "acorn",
"direct": false,
"version": "8.14.1",
"ecosystem": "npm"
},
{
"name": "acorn",
"direct": false,
"version": "8.15.0",
"ecosystem": "npm"
},
{
"name": "acorn-import-phases",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "acorn-walk",
"direct": false,
"version": "8.3.4",
"ecosystem": "npm"
},
{
"name": "ajv",
"direct": false,
"version": "6.12.6",
"ecosystem": "npm"
},
{
"name": "ajv",
"direct": false,
"version": "8.17.1",
"ecosystem": "npm"
},
{
"name": "ajv-formats",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "ajv-keywords",
"direct": false,
"version": "3.5.2",
"ecosystem": "npm"
},
{
"name": "ajv-keywords",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "ansi-regex",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "babel-loader",
"direct": false,
"version": "9.2.1",
"ecosystem": "npm"
},
{
"name": "babel-plugin-polyfill-corejs2",
"direct": false,
"version": "0.4.14",
"ecosystem": "npm"
},
{
"name": "babel-plugin-polyfill-corejs3",
"direct": false,
"version": "0.13.0",
"ecosystem": "npm"
},
{
"name": "babel-plugin-polyfill-regenerator",
"direct": false,
"version": "0.6.5",
"ecosystem": "npm"
},
{
"name": "balanced-match",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "baseline-browser-mapping",
"direct": false,
"version": "2.8.14",
"ecosystem": "npm"
},
{
"name": "big.js",
"direct": false,
"version": "5.2.2",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "1.1.12",
"ecosystem": "npm"
},
{
"name": "braces",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "browserslist",
"direct": false,
"version": "4.24.4",
"ecosystem": "npm"
},
{
"name": "browserslist",
"direct": false,
"version": "4.26.3",
"ecosystem": "npm"
},
{
"name": "buffer-from",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "call-bind",
"direct": false,
"version": "1.0.8",
"ecosystem": "npm"
},
{
"name": "call-bind-apply-helpers",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "call-bound",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "caniuse-lite",
"direct": false,
"version": "1.0.30001706",
"ecosystem": "npm"
},
{
"name": "caniuse-lite",
"direct": false,
"version": "1.0.30001749",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": false,
"version": "4.1.2",
"ecosystem": "npm"
},
{
"name": "chrome-trace-event",
"direct": false,
"version": "1.0.4",
"ecosystem": "npm"
},
{
"name": "classnames",
"direct": false,
"version": "2.5.1",
"ecosystem": "npm"
},
{
"name": "cli-table3",
"direct": false,
"version": "0.6.5",
"ecosystem": "npm"
},
{
"name": "clone-deep",
"direct": false,
"version": "4.0.1",
"ecosystem": "npm"
},
{
"name": "color-convert",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "color-name",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "colorette",
"direct": false,
"version": "2.0.20",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "10.0.1",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "2.20.3",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "common-path-prefix",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "concat-map",
"direct": false,
"version": "0.0.1",
"ecosystem": "npm"
},
{
"name": "convert-source-map",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "core-js-compat",
"direct": false,
"version": "3.45.1",
"ecosystem": "npm"
},
{
"name": "cross-spawn",
"direct": false,
"version": "7.0.6",
"ecosystem": "npm"
},
{
"name": "dayjs",
"direct": false,
"version": "1.11.13",
"ecosystem": "npm"
},
{
"name": "debounce",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "4.4.0",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "4.4.3",
"ecosystem": "npm"
},
{
"name": "deep-equal",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "define-data-property",
"direct": false,
"version": "1.1.4",
"ecosystem": "npm"
},
{
"name": "define-properties",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "dunder-proto",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "duplexer",
"direct": false,
"version": "0.1.2",
"ecosystem": "npm"
},
{
"name": "electron-to-chromium",
"direct": false,
"version": "1.5.123",
"ecosystem": "npm"
},
{
"name": "electron-to-chromium",
"direct": false,
"version": "1.5.233",
"ecosystem": "npm"
},
{
"name": "emoji-regex",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "emojis-list",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "enhanced-resolve",
"direct": false,
"version": "5.18.1",
"ecosystem": "npm"
},
{
"name": "enhanced-resolve",
"direct": false,
"version": "5.18.3",
"ecosystem": "npm"
},
{
"name": "envinfo",
"direct": false,
"version": "7.14.0",
"ecosystem": "npm"
},
{
"name": "es-define-property",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "es-errors",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "es-module-lexer",
"direct": false,
"version": "1.6.0",
"ecosystem": "npm"
},
{
"name": "es-object-atoms",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "escalade",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "escape-string-regexp",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "eslint-scope",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "esrecurse",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "estraverse",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "estraverse",
"direct": false,
"version": "5.3.0",
"ecosystem": "npm"
},
{
"name": "esutils",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "events",
"direct": false,
"version": "3.3.0",
"ecosystem": "npm"
},
{
"name": "exenv",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "fast-deep-equal",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "fast-glob",
"direct": false,
"version": "3.3.3",
"ecosystem": "npm"
},
{
"name": "fast-json-stable-stringify",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "fast-uri",
"direct": false,
"version": "3.0.6",
"ecosystem": "npm"
},
{
"name": "fastest-levenshtein",
"direct": false,
"version": "1.0.16",
"ecosystem": "npm"
},
{
"name": "fastq",
"direct": false,
"version": "1.19.1",
"ecosystem": "npm"
},
{
"name": "fill-range",
"direct": false,
"version": "7.1.1",
"ecosystem": "npm"
},
{
"name": "find-cache-dir",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "find-up",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "find-up",
"direct": false,
"version": "6.3.0",
"ecosystem": "npm"
},
{
"name": "flarum-tsconfig",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "flarum-webpack-config",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "flat",
"direct": false,
"version": "5.0.2",
"ecosystem": "npm"
},
{
"name": "fs.realpath",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "function-bind",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "functions-have-names",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "gensync",
"direct": false,
"version": "1.0.0-beta.2",
"ecosystem": "npm"
},
{
"name": "get-intrinsic",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "get-proto",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "glob",
"direct": false,
"version": "7.2.3",
"ecosystem": "npm"
},
{
"name": "glob-parent",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "glob-to-regexp",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "globals",
"direct": false,
"version": "11.12.0",
"ecosystem": "npm"
},
{
"name": "gopd",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "graceful-fs",
"direct": false,
"version": "4.2.11",
"ecosystem": "npm"
},
{
"name": "gud",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "gzip-size",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "has-flag",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "has-property-descriptors",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "has-symbols",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "has-tostringtag",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "hasown",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "html-escaper",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "import-local",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "inflight",
"direct": false,
"version": "1.0.6",
"ecosystem": "npm"
},
{
"name": "inherits",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "interpret",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "is-arguments",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "is-core-module",
"direct": false,
"version": "2.16.1",
"ecosystem": "npm"
},
{
"name": "is-date-object",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "is-extglob",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "is-fullwidth-code-point",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "is-glob",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "is-number",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "is-plain-object",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "is-regex",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "isexe",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "isobject",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "jest-worker",
"direct": false,
"version": "27.5.1",
"ecosystem": "npm"
},
{
"name": "js-tokens",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "jsesc",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "jsesc",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "json-parse-even-better-errors",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "json-schema-traverse",
"direct": false,
"version": "0.4.1",
"ecosystem": "npm"
},
{
"name": "json-schema-traverse",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "json5",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "json5",
"direct": false,
"version": "2.2.3",
"ecosystem": "npm"
},
{
"name": "keyboard-key",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "kind-of",
"direct": false,
"version": "6.0.3",
"ecosystem": "npm"
},
{
"name": "loader-runner",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "loader-utils",
"direct": false,
"version": "1.4.2",
"ecosystem": "npm"
},
{
"name": "locate-path",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "locate-path",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "lodash",
"direct": false,
"version": "4.17.21",
"ecosystem": "npm"
},
{
"name": "lodash.debounce",
"direct": false,
"version": "4.0.8",
"ecosystem": "npm"
},
{
"name": "loose-envify",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "lru-cache",
"direct": false,
"version": "5.1.1",
"ecosystem": "npm"
},
{
"name": "math-intrinsics",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "merge-stream",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "merge2",
"direct": false,
"version": "1.4.1",
"ecosystem": "npm"
},
{
"name": "micromatch",
"direct": false,
"version": "4.0.8",
"ecosystem": "npm"
},
{
"name": "mime-db",
"direct": false,
"version": "1.52.0",
"ecosystem": "npm"
},
{
"name": "mime-types",
"direct": false,
"version": "2.1.35",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "10.1.1",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "minimist",
"direct": false,
"version": "1.2.8",
"ecosystem": "npm"
},
{
"name": "mrmime",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "ncp",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "neo-async",
"direct": false,
"version": "2.6.2",
"ecosystem": "npm"
},
{
"name": "node-releases",
"direct": false,
"version": "2.0.19",
"ecosystem": "npm"
},
{
"name": "node-releases",
"direct": false,
"version": "2.0.23",
"ecosystem": "npm"
},
{
"name": "normalize-path",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "object-assign",
"direct": false,
"version": "4.1.1",
"ecosystem": "npm"
},
{
"name": "object-is",
"direct": false,
"version": "1.1.6",
"ecosystem": "npm"
},
{
"name": "object-keys",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "once",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "opener",
"direct": false,
"version": "1.5.2",
"ecosystem": "npm"
},
{
"name": "p-limit",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "p-limit",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "p-locate",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "p-locate",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "p-try",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "path-exists",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "path-exists",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "path-is-absolute",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "path-key",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "path-parse",
"direct": false,
"version": "1.0.7",
"ecosystem": "npm"
},
{
"name": "picocolors",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "picomatch",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "pkg-dir",
"direct": false,
"version": "4.2.0",
"ecosystem": "npm"
},
{
"name": "pkg-dir",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "popper.js",
"direct": false,
"version": "1.16.1",
"ecosystem": "npm"
},
{
"name": "prettier",
"direct": false,
"version": "3.6.2",
"ecosystem": "npm"
},
{
"name": "prop-types",
"direct": false,
"version": "15.8.1",
"ecosystem": "npm"
},
{
"name": "punycode",
"direct": false,
"version": "2.3.1",
"ecosystem": "npm"
},
{
"name": "queue-microtask",
"direct": false,
"version": "1.2.3",
"ecosystem": "npm"
},
{
"name": "randombytes",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "react",
"direct": false,
"version": "16.14.0",
"ecosystem": "npm"
},
{
"name": "react-dom",
"direct": false,
"version": "16.14.0",
"ecosystem": "npm"
},
{
"name": "react-is",
"direct": false,
"version": "16.13.1",
"ecosystem": "npm"
},
{
"name": "react-popper",
"direct": false,
"version": "1.3.11",
"ecosystem": "npm"
},
{
"name": "rechoir",
"direct": false,
"version": "0.8.0",
"ecosystem": "npm"
},
{
"name": "regenerate",
"direct": false,
"version": "1.4.2",
"ecosystem": "npm"
},
{
"name": "regenerate-unicode-properties",
"direct": false,
"version": "10.2.0",
"ecosystem": "npm"
},
{
"name": "regexp.prototype.flags",
"direct": false,
"version": "1.5.4",
"ecosystem": "npm"
},
{
"name": "regexpu-core",
"direct": false,
"version": "6.2.0",
"ecosystem": "npm"
},
{
"name": "regjsgen",
"direct": false,
"version": "0.8.0",
"ecosystem": "npm"
},
{
"name": "regjsparser",
"direct": false,
"version": "0.12.0",
"ecosystem": "npm"
},
{
"name": "require-from-string",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "resolve",
"direct": false,
"version": "1.22.10",
"ecosystem": "npm"
},
{
"name": "resolve-cwd",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "resolve-from",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "reusify",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "rimraf",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "run-parallel",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "safe-buffer",
"direct": false,
"version": "5.2.1",
"ecosystem": "npm"
},
{
"name": "scheduler",
"direct": false,
"version": "0.19.1",
"ecosystem": "npm"
},
{
"name": "schema-utils",
"direct": false,
"version": "3.3.0",
"ecosystem": "npm"
},
{
"name": "schema-utils",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "schema-utils",
"direct": false,
"version": "4.3.3",
"ecosystem": "npm"
},
{
"name": "semantic-ui-react",
"direct": false,
"version": "0.88.2",
"ecosystem": "npm"
},
{
"name": "semver",
"direct": false,
"version": "6.3.1",
"ecosystem": "npm"
},
{
"name": "serialize-javascript",
"direct": false,
"version": "6.0.2",
"ecosystem": "npm"
},
{
"name": "set-function-length",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "set-function-name",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "shallow-clone",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "shallowequal",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "shebang-command",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "shebang-regex",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "sirv",
"direct": false,
"version": "2.0.4",
"ecosystem": "npm"
},
{
"name": "source-map",
"direct": false,
"version": "0.6.1",
"ecosystem": "npm"
},
{
"name": "source-map-support",
"direct": false,
"version": "0.5.21",
"ecosystem": "npm"
},
{
"name": "string-width",
"direct": false,
"version": "4.2.3",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "supports-color",
"direct": false,
"version": "7.2.0",
"ecosystem": "npm"
},
{
"name": "supports-color",
"direct": false,
"version": "8.1.1",
"ecosystem": "npm"
},
{
"name": "supports-preserve-symlinks-flag",
"direct": false,
"version": "1.0.0",
"ecosystem": "npm"
},
{
"name": "tapable",
"direct": false,
"version": "2.2.1",
"ecosystem": "npm"
},
{
"name": "tapable",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "terser",
"direct": false,
"version": "5.39.0",
"ecosystem": "npm"
},
{
"name": "terser-webpack-plugin",
"direct": false,
"version": "5.3.14",
"ecosystem": "npm"
},
{
"name": "to-regex-range",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "totalist",
"direct": false,
"version": "3.0.1",
"ecosystem": "npm"
},
{
"name": "tslib",
"direct": false,
"version": "1.14.1",
"ecosystem": "npm"
},
{
"name": "tslib",
"direct": false,
"version": "2.8.1",
"ecosystem": "npm"
},
{
"name": "tsutils",
"direct": false,
"version": "3.21.0",
"ecosystem": "npm"
},
{
"name": "type-coverage-core",
"direct": false,
"version": "2.29.7",
"ecosystem": "npm"
},
{
"name": "typed-styles",
"direct": false,
"version": "0.0.7",
"ecosystem": "npm"
},
{
"name": "typescript",
"direct": false,
"version": "4.9.5",
"ecosystem": "npm"
},
{
"name": "typescript-coverage-report",
"direct": false,
"version": "0.6.4",
"ecosystem": "npm"
},
{
"name": "undici-types",
"direct": false,
"version": "6.20.0",
"ecosystem": "npm"
},
{
"name": "unicode-canonical-property-names-ecmascript",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "unicode-match-property-ecmascript",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "unicode-match-property-value-ecmascript",
"direct": false,
"version": "2.2.0",
"ecosystem": "npm"
},
{
"name": "unicode-property-aliases-ecmascript",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "update-browserslist-db",
"direct": false,
"version": "1.1.3",
"ecosystem": "npm"
},
{
"name": "uri-js",
"direct": false,
"version": "4.4.1",
"ecosystem": "npm"
},
{
"name": "warning",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "watchpack",
"direct": false,
"version": "2.4.2",
"ecosystem": "npm"
},
{
"name": "watchpack",
"direct": false,
"version": "2.4.4",
"ecosystem": "npm"
},
{
"name": "webpack",
"direct": false,
"version": "5.102.1",
"ecosystem": "npm"
},
{
"name": "webpack",
"direct": false,
"version": "5.98.0",
"ecosystem": "npm"
},
{
"name": "webpack-bundle-analyzer",
"direct": false,
"version": "4.10.2",
"ecosystem": "npm"
},
{
"name": "webpack-cli",
"direct": false,
"version": "5.1.4",
"ecosystem": "npm"
},
{
"name": "webpack-merge",
"direct": false,
"version": "5.10.0",
"ecosystem": "npm"
},
{
"name": "webpack-sources",
"direct": false,
"version": "3.2.3",
"ecosystem": "npm"
},
{
"name": "webpack-sources",
"direct": false,
"version": "3.3.3",
"ecosystem": "npm"
},
{
"name": "which",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "wildcard",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "wrappy",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "ws",
"direct": false,
"version": "7.5.10",
"ecosystem": "npm"
},
{
"name": "yallist",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "yocto-queue",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "flarum/phpstan",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "flarum/tags",
"direct": false,
"version": null,
"ecosystem": "packagist"
},
{
"name": "flarum/testing",
"direct": false,
"version": null,
"ecosystem": "packagist"
}
],
"collected": true,
"truncated": false,
"total_count": 436,
"direct_count": 2,
"indirect_count": 434
}
},
"maintainership": {
"issues": {
"open_prs": 1,
"merged_prs": 39,
"open_issues": 0,
"closed_ratio": 1,
"closed_issues": 24,
"closed_unmerged_prs": 16
},
"bus_factor": 2,
"bot_contributors": 1,
"top_contributors": [
{
"type": "User",
"login": "imorland",
"commits": 33,
"avatar_url": "https://avatars.githubusercontent.com/u/16573496?v=4"
},
{
"type": "User",
"login": "flarum-bot",
"commits": 29,
"avatar_url": "https://avatars.githubusercontent.com/u/39334649?v=4"
},
{
"type": "User",
"login": "dsevillamartin",
"commits": 18,
"avatar_url": "https://avatars.githubusercontent.com/u/6401250?v=4"
},
{
"type": "User",
"login": "davwheat",
"commits": 12,
"avatar_url": "https://avatars.githubusercontent.com/u/7406822?v=4"
},
{
"type": "User",
"login": "karaok491",
"commits": 9,
"avatar_url": "https://avatars.githubusercontent.com/u/72854852?v=4"
},
{
"type": "User",
"login": "luceos",
"commits": 3,
"avatar_url": "https://avatars.githubusercontent.com/u/504687?v=4"
},
{
"type": "User",
"login": "SychO9",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/20267363?v=4"
},
{
"type": "User",
"login": "StyleCIBot",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/11048387?v=4"
},
{
"type": "User",
"login": "iPurpl3x",
"commits": 2,
"avatar_url": "https://avatars.githubusercontent.com/u/18526076?v=4"
},
{
"type": "User",
"login": "askvortsov1",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/38059171?v=4"
}
],
"contributors_sampled": 13,
"top_contributor_share": 0.289
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"backend.yml",
"flarum-release-notification.yml",
"frontend.yml"
],
"has_docs_dir": false,
"linter_configs": [
"phpstan.neon"
],
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [
"yarn.lock"
],
"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": 4,
"reason": "5 out of 12 merged PRs checked by a CI test -- score normalized to 4",
"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": 1,
"reason": "Found 3/28 approved changesets -- score normalized to 1",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 10,
"reason": "project has 11 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": 10,
"reason": "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": 1,
"reason": "1 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 1",
"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": 10,
"reason": "security policy file 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": 0,
"reason": "23 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "3accb21fc2609700a084bcf7a21dc9308d903a97",
"ran_at": "2026-08-02T07:12:47Z",
"aggregate_score": 3.9,
"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-19T17:09:54Z",
"oldest_open_prs": [
{
"number": 80,
"created_at": "2026-08-02T07:09:46Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2026-06-19T17:03:14Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/FriendsOfFlarum/links",
"host": "github.com",
"name": "links",
"owner": "FriendsOfFlarum"
},
"metrics": {
"overall": {
"key": "overall",
"band": "good",
"name": "Overall health",
"note": "The weighted overall 63 is calibrated to 71 on the published index scale (record calibration 2026-08-02).",
"notes": [
{
"code": "overall_calibration",
"params": {
"raw": 63,
"calibrated": 71,
"calibration": "2026-08-02"
}
}
],
"value": 71,
"inputs": {
"security": 51,
"vitality": 67,
"community": 48,
"governance": 75,
"calibration": "2026-08-02",
"engineering": 71,
"ai_readiness": 56,
"weighted_overall_raw": 63
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 67,
"weight": 0.21,
"metrics": [
{
"key": "development_activity",
"band": "moderate",
"name": "Development activity",
"note": null,
"notes": [],
"value": 51,
"inputs": {
"commits_last_year": 10,
"human_commit_share": 0.91,
"days_since_last_push": 0,
"active_weeks_last_year": 6
},
"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": "6/52 weeks with commits",
"points": 4.2,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 6
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "10 commits in the last year",
"points": 9.4,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 10
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "1 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 1",
"points": 1,
"status": "partial",
"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": 92,
"inputs": {
"releases_count": 27,
"latest_release_tag": "2.0.0-beta.4",
"releases_from_tags": false,
"days_since_latest_release": 43,
"mean_days_between_releases": 105.5
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "27 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 27
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 43 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 43
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~105.5 days",
"points": 19.8,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 105.5
}
}
],
"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": "exceptional",
"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": 46,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 46 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 46
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "weak",
"name": "Community & Adoption",
"value": 48,
"weight": 0.17,
"metrics": [
{
"key": "popularity",
"band": "weak",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 38,
"inputs": {
"forks": 13,
"stars": 38,
"watchers": 6,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "38 stars",
"points": 25.4,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 38
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "13 forks",
"points": 9,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 13
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "6 watchers",
"points": 3.9,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 6
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 57,
"inputs": {
"has_readme": true,
"has_license": true,
"readme_badges": null,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"readme_badge_services": [],
"has_pull_request_template": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"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": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 6.3,
"status": "met",
"details": [],
"max_points": 6.3
}
]
},
{
"key": "ecosystem_adoption",
"band": "moderate",
"name": "Ecosystem adoption (downloads)",
"note": null,
"notes": [],
"value": 52,
"inputs": {
"packages": [
"fof/links"
],
"dependents": 4,
"ecosystems": "packagist",
"total_downloads": 136258,
"monthly_downloads": 3251
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "3,251 downloads/month across packagist",
"points": 46.8,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 3251,
"ecosystems": "packagist"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "4 packages depend on it",
"points": 4.7,
"status": "partial",
"details": [
{
"code": "registry_dependents",
"params": {
"count": 4
}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "good",
"name": "Sustainability & Governance",
"value": 75,
"weight": 0.23,
"metrics": [
{
"key": "maintainer_resilience",
"band": "good",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 65,
"inputs": {
"bus_factor": 2,
"contributors_sampled": 13,
"top_contributor_share": 0.289
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "2 contributor(s) cover half of all commits",
"points": 25.2,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 2
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 29% of commits",
"points": 16,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 29
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "13 contributors",
"points": 13.5,
"status": "met",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 13
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 11 contributing companies or organizations",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "good",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Newcomer PR acceptance. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"newcomer_pr_acceptance"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 74,
"inputs": {
"merged_prs": 39,
"open_issues": 0,
"closed_issues": 24,
"prs_merged_7d": null,
"prs_decided_7d": null,
"prs_merged_30d": null,
"prs_decided_30d": null,
"issue_closed_ratio": 1,
"closed_unmerged_prs": 16,
"first_time_authors_30d": null,
"first_time_prs_merged_30d": null,
"first_time_prs_decided_30d": null
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "100% of issues closed",
"points": 42,
"status": "met",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 100
}
}
],
"max_points": 42
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "39/55 decided PRs merged",
"points": 21.3,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 39,
"decided": 55
}
}
],
"max_points": 30
},
{
"key": "newcomer_pr_acceptance",
"name": "Newcomer PR acceptance",
"detail": "no first-time contributor's PR decided in 30d",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_newcomer_prs",
"params": {
"days": 30
}
}
],
"max_points": 13
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 3/28 approved changesets -- score normalized to 1",
"points": 1.5,
"status": "partial",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "good",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 69,
"inputs": {
"followers": 101,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "FriendsOfFlarum",
"public_repos": 105,
"account_age_days": 2875
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "organization-owned",
"points": 30,
"status": "met",
"details": [
{
"code": "owner_organization",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "101 followers of FriendsOfFlarum",
"points": 14.4,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 101,
"login": "FriendsOfFlarum"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "105 public repos, account ~7 yr old",
"points": 25,
"status": "met",
"details": [
{
"code": "public_repos",
"params": {
"count": 105
}
},
{
"code": "account_age_years",
"params": {
"years": 7
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "exceptional",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"fof/links"
],
"ecosystems": "packagist",
"any_deprecated": false,
"min_days_since_publish": 43
},
"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 43 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 43
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "33 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 33
}
}
],
"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": 71,
"weight": 0.19,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 78,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": true,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "3 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 3
}
}
],
"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": "phpstan.neon",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "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": 6.4,
"status": "met",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "5 out of 12 merged PRs checked by a CI test -- score normalized to 4",
"points": 8,
"status": "partial",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "moderate",
"name": "Documentation",
"note": null,
"notes": [],
"value": 60,
"inputs": {
"topics": [
"flarum",
"friendsofflarum",
"hacktoberfest"
],
"has_wiki": true,
"homepage": null,
"has_readme": true,
"has_docs_dir": false,
"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": 0,
"status": "missed",
"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": "3 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 3
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 51,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "weak",
"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": 39,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 13,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 5,
"scorecard_aggregate": 3.9
},
"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": "5 out of 12 merged PRs checked by a CI test -- score normalized to 4",
"points": 1,
"status": "partial",
"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 3/28 approved changesets -- score normalized to 1",
"points": 0.8,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 11 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": "update tool detected",
"points": 7.5,
"status": "met",
"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": "1 commit(s) and 1 issue activity found in the last 90 days -- score normalized to 1",
"points": 0.8,
"status": "partial",
"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 detected",
"points": 5,
"status": "met",
"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": "23 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "exceptional",
"name": "Dependency advisories",
"note": "Excluded from scoring (no data or not applicable): Indirect dependencies free of known advisories, No advisories left outstanding. Remaining weights renormalized. Matched 432 resolved dependencies against OSV; 4 could not be assessed (no resolved version, an unsupported ecosystem, or beyond the reported package list). This repository publishes no package the index resolves, so the repository dependency graph was assessed instead. That graph mixes development and test pins with shipped dependencies, so only the declared runtime dependencies are scored; transitive findings are reported as context and excluded from the score. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"indirect_dependencies_free_of_known_advisories",
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_repository",
"params": {
"assessed": 432
}
},
{
"code": "advisories_unassessed",
"params": {
"count": 4
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 30,
"affected_packages": 15,
"assessed_packages": 432,
"unassessed_packages": 4,
"affected_by_severity": "high 10, moderate 2, low 3",
"direct_affected_packages": 0
},
"components": [
{
"key": "direct_dependencies_free_of_known_advisories",
"name": "Direct dependencies free of known advisories",
"detail": "no direct dependency carries a known advisory",
"points": 35,
"status": "met",
"details": [
{
"code": "no_direct_advisories",
"params": {}
}
],
"max_points": 35
},
{
"key": "indirect_dependencies_free_of_known_advisories",
"name": "Indirect dependencies free of known advisories",
"detail": "transitive set not separable from development and test dependencies in this scope",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_scope_not_separable",
"params": {}
}
],
"max_points": 25
},
{
"key": "no_advisories_left_outstanding",
"name": "No advisories left outstanding",
"detail": "no advisory carries a publication date",
"points": 0,
"status": "excluded",
"details": [
{
"code": "advisories_no_publication_date",
"params": {}
}
],
"max_points": 40
}
]
},
{
"key": "malicious_dependencies",
"band": "exceptional",
"name": "Malicious dependencies",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"source": "osv",
"meaning": "reported as a malicious package by the OpenSSF corpus; the remedy is removal or moving off the compromised name, never an upgrade of the same artifact. Versions the registry has since pulled are listed but not scored",
"packages": [],
"red_flag": false,
"assessed_packages": 432,
"malicious_packages": 0,
"direct_malicious_packages": 0,
"withdrawn_malicious_packages": 0,
"installable_malicious_packages": 0
},
"components": [
{
"key": "no_dependency_reported_as_a_malicious_package",
"name": "No dependency reported as a malicious package",
"detail": "no dependency is reported as a malicious package",
"points": 100,
"status": "met",
"details": [
{
"code": "no_malicious_dependencies",
"params": {}
}
],
"max_points": 100
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "exceptional",
"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"
],
"commit_weight_rule": {
"min_commits": 50,
"min_commit_share": 0.1
},
"review_only_matches": 0,
"below_threshold_exposures": [],
"assessed_self_published_locations": 16
},
"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": "moderate",
"name": "AI Readiness",
"value": 56,
"weight": 0.04,
"metrics": [
{
"key": "ai_agent_context",
"band": "at_risk",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 26,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.484,
"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": "44 of 91 human commits state their intent (structured subject or explanatory body)",
"points": 25.8,
"status": "partial",
"details": [
{
"code": "legible_history",
"params": {
"legible": 44,
"sampled": 91
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"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": 69,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"yarn.lock"
],
"has_dockerfile": false,
"typed_language": false,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [
"js/tsconfig.json"
],
"agent_commit_share": 0,
"toolchain_manifests": [],
"dependency_bot_commit_share": 0.09
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"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": "phpstan.neon",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "phpstan.neon"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "js/tsconfig.json",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "js/tsconfig.json"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "lockfile"
}
}
],
"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": "9 of the last 100 commits are automated dependency updates",
"points": 8,
"status": "met",
"details": [
{
"code": "dependency_bot_commits",
"params": {
"count": 9,
"sampled": 100
}
}
],
"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": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 82,
"inputs": {
"primary_language": "PHP",
"largest_source_bytes": 9679,
"source_files_sampled": 79,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "PHP with type-check config (js/tsconfig.json)",
"points": 27,
"status": "partial",
"details": [
{
"code": "typecheck_config_language",
"params": {
"files": "js/tsconfig.json",
"language": "PHP"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/79 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 79,
"oversized": 0
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? Carries a deliberately small weight: agent tooling is a real maintenance signal, but its absence must never gate the top of the scale (calibration saturates at raw 91, so 100/100 remains reachable with AI Readiness at zero)."
}
],
"classification": {
"top": [
"library"
],
"labels": [
"library"
],
"scores": {
"library": 6
},
"primary": "library",
"evidence": [
{
"tier": "distribution",
"label": "library",
"source": "registry:packagist",
"weight": 6
}
],
"artifacts": [],
"confidence": "medium",
"host_extension": false,
"runs_as_process": false,
"consumed_by_code": true
},
"metrics_version": "2.5.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
],
"report_type": "repository",
"generated_at": "2026-08-02T07:13:15.078680Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/f/FriendsOfFlarum/links.svg",
"full_name": "FriendsOfFlarum/links",
"license_state": "standard",
"license_spdx": "MIT"
}