原始 JSON 报告 机器可读
{
"data": {
"repo": {
"topics": [
"simbot",
"simple-robot",
"bot",
"qqbot",
"kook-bot",
"qq-bot",
"qq-guild-bot",
"java",
"kotlin",
"bot-framework",
"kotlin-coroutines",
"kotlin-multiplatform",
"telegram-bot"
],
"is_fork": false,
"size_kb": 108096,
"has_wiki": true,
"homepage": "https://simbot.forte.love",
"languages": {
"CSS": 1038,
"Java": 32476,
"Kotlin": 5776597,
"FreeMarker": 948
},
"pushed_at": "2026-07-18T19:09:32Z",
"created_at": "2020-07-11T17:38:54Z",
"owner_type": "Organization",
"updated_at": "2026-07-18T03:49:21Z",
"description": "Simple Robot,一个bot风格的Kotlin多平台事件调度框架,异步高效、Java友好!/ A Bot-style Kotlin Multiplatform event scheduling framework, asynchronous and high-performance, java-friendly! 🐱😼😻😸",
"is_archived": false,
"is_disabled": false,
"license_spdx": "LGPL-3.0",
"default_branch": "dev",
"license_spdx_raw": "LGPL-3.0",
"primary_language": "Kotlin",
"significant_languages": [
"Kotlin"
]
},
"owner": {
"blog": "https://simbot.forte.love",
"name": "Simple Robot Projects",
"type": "Organization",
"login": "simple-robot",
"company": null,
"location": "China",
"followers": 66,
"avatar_url": "https://avatars.githubusercontent.com/u/78127696?v=4",
"created_at": "2021-01-28T03:01:43Z",
"is_verified": null,
"public_repos": 26,
"account_age_days": 2004
},
"license": {
"state": "standard",
"spdx_id": "LGPL-3.0",
"raw_spdx": "LGPL-3.0",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v5.0.0-Preview4",
"kind": "prerelease",
"published_at": "2026-07-14T14:11:44Z"
},
{
"tag": "v5.0.0-Preview3",
"kind": "prerelease",
"published_at": "2026-06-26T11:25:00Z"
},
{
"tag": "v5.0.0-Preview2",
"kind": "prerelease",
"published_at": "2026-05-09T08:56:25Z"
},
{
"tag": "v5.0.0-Preview1",
"kind": "prerelease",
"published_at": "2026-01-09T16:17:45Z"
},
{
"tag": "v4.15.0",
"kind": "minor",
"published_at": "2026-01-06T10:11:51Z"
},
{
"tag": "v4.14.0",
"kind": "minor",
"published_at": "2025-09-13T09:54:05Z"
},
{
"tag": "v4.13.0",
"kind": "minor",
"published_at": "2025-06-23T04:13:50Z"
},
{
"tag": "v4.12.0",
"kind": "minor",
"published_at": "2025-04-23T06:13:00Z"
},
{
"tag": "v4.11.1",
"kind": "patch",
"published_at": "2025-04-18T12:11:49Z"
},
{
"tag": "v4.11.0",
"kind": "minor",
"published_at": "2025-02-23T14:14:50Z"
},
{
"tag": "v4.10.0",
"kind": "minor",
"published_at": "2024-12-30T08:02:46Z"
},
{
"tag": "v4.9.0",
"kind": "minor",
"published_at": "2024-12-03T13:44:02Z"
},
{
"tag": "v4.8.0",
"kind": "minor",
"published_at": "2024-11-22T08:54:32Z"
},
{
"tag": "v4.7.0",
"kind": "minor",
"published_at": "2024-10-23T04:34:33Z"
},
{
"tag": "v4.7.0-beta1",
"kind": "prerelease",
"published_at": "2024-10-16T05:24:12Z"
},
{
"tag": "v4.6.1",
"kind": "patch",
"published_at": "2024-10-12T15:22:15Z"
},
{
"tag": "v4.6.0",
"kind": "minor",
"published_at": "2024-08-14T11:45:07Z"
},
{
"tag": "v4.5.0",
"kind": "minor",
"published_at": "2024-08-05T15:49:48Z"
},
{
"tag": "v4.4.0",
"kind": "minor",
"published_at": "2024-08-01T10:27:30Z"
},
{
"tag": "v4.3.1",
"kind": "patch",
"published_at": "2024-07-28T08:05:01Z"
},
{
"tag": "v4.3.0",
"kind": "minor",
"published_at": "2024-07-15T20:55:43Z"
},
{
"tag": "v4.2.0",
"kind": "minor",
"published_at": "2024-07-09T16:48:13Z"
},
{
"tag": "v4.1.0",
"kind": "minor",
"published_at": "2024-06-23T19:08:35Z"
},
{
"tag": "v4.0.1",
"kind": "patch",
"published_at": "2024-06-16T19:15:45Z"
},
{
"tag": "v4.0.0",
"kind": "major",
"published_at": "2024-06-14T21:21:21Z"
},
{
"tag": "v4.0.0-RC3",
"kind": "prerelease",
"published_at": "2024-06-07T20:22:54Z"
},
{
"tag": "v4.0.0-RC2",
"kind": "prerelease",
"published_at": "2024-06-02T17:55:13Z"
},
{
"tag": "v4.0.0-RC1",
"kind": "prerelease",
"published_at": "2024-05-25T15:38:02Z"
},
{
"tag": "v4.0.0-beta3",
"kind": "prerelease",
"published_at": "2024-03-24T16:27:43Z"
},
{
"tag": "v4.0.0-beta1",
"kind": "prerelease",
"published_at": "2024-02-25T13:52:02Z"
},
{
"tag": "v4.0.0-dev18",
"kind": "prerelease",
"published_at": "2024-02-04T07:47:32Z"
},
{
"tag": "v4.0.0-dev17",
"kind": "prerelease",
"published_at": "2024-02-03T14:13:25Z"
},
{
"tag": "v4.0.0-dev16",
"kind": "prerelease",
"published_at": "2024-01-27T09:43:37Z"
},
{
"tag": "v4.0.0-dev15",
"kind": "prerelease",
"published_at": "2024-01-26T11:19:38Z"
},
{
"tag": "v4.0.0-dev14",
"kind": "prerelease",
"published_at": "2024-01-23T12:19:32Z"
},
{
"tag": "v4.0.0-dev13",
"kind": "prerelease",
"published_at": "2024-01-21T16:32:43Z"
},
{
"tag": "v4.0.0-dev1",
"kind": "prerelease",
"published_at": "2024-01-15T11:47:26Z"
},
{
"tag": "v3.3.0",
"kind": "minor",
"published_at": "2023-10-11T13:15:02Z"
},
{
"tag": "v3.3.0-beta1",
"kind": "prerelease",
"published_at": "2023-09-26T15:53:32Z"
},
{
"tag": "v3.2.0",
"kind": "minor",
"published_at": "2023-07-04T16:45:51Z"
},
{
"tag": "v3.1.0",
"kind": "minor",
"published_at": "2023-05-30T07:46:07Z"
},
{
"tag": "v3.0.0",
"kind": "major",
"published_at": "2023-05-11T07:28:22Z"
},
{
"tag": "v3.0.0-RC.3",
"kind": "prerelease",
"published_at": "2023-02-11T18:20:58Z"
},
{
"tag": "v3.0.0-RC.2",
"kind": "prerelease",
"published_at": "2023-01-29T05:20:22Z"
},
{
"tag": "v3.0.0-RC",
"kind": "prerelease",
"published_at": "2023-01-02T14:25:50Z"
},
{
"tag": "v3.0.0-M6",
"kind": "prerelease",
"published_at": "2022-12-21T07:57:48Z"
},
{
"tag": "v3.0.0-M5",
"kind": "prerelease",
"published_at": "2022-12-06T08:02:19Z"
},
{
"tag": "v3.0.0-M4",
"kind": "prerelease",
"published_at": "2022-11-25T08:27:51Z"
},
{
"tag": "v3.0.0-M3",
"kind": "prerelease",
"published_at": "2022-11-24T15:58:11Z"
},
{
"tag": "v3.0.0-M2",
"kind": "prerelease",
"published_at": "2022-11-05T19:20:45Z"
},
{
"tag": "v2.5.0",
"kind": "minor",
"published_at": "2022-10-30T15:48:57Z"
},
{
"tag": "v3.0.0-M1",
"kind": "prerelease",
"published_at": "2022-10-24T05:53:38Z"
},
{
"tag": "v3.0.0-beta.3",
"kind": "prerelease",
"published_at": "2022-10-19T17:35:15Z"
},
{
"tag": "v3.0.0-beta.2",
"kind": "prerelease",
"published_at": "2022-09-29T11:46:42Z"
},
{
"tag": "v3.0.0-beta",
"kind": "prerelease",
"published_at": "2022-09-08T21:09:12Z"
},
{
"tag": "v3.0.0-beta-RC.2",
"kind": "prerelease",
"published_at": "2022-08-08T09:32:21Z"
},
{
"tag": "v3.0.0-beta-RC.1",
"kind": "prerelease",
"published_at": "2022-07-25T14:43:23Z"
},
{
"tag": "v3.0.0-beta-M3",
"kind": "prerelease",
"published_at": "2022-07-13T14:01:08Z"
},
{
"tag": "v3.0.0-beta-M2",
"kind": "prerelease",
"published_at": "2022-07-06T14:05:14Z"
},
{
"tag": "v3.0.0.preview.20.0",
"kind": "other",
"published_at": "2022-07-06T14:06:01Z"
},
{
"tag": "v3.0.0.preview.19.0",
"kind": "other",
"published_at": "2022-07-03T16:45:12Z"
},
{
"tag": "v2.4.0",
"kind": "minor",
"published_at": "2022-07-01T15:51:22Z"
},
{
"tag": "v3.0.0-beta-M1",
"kind": "prerelease",
"published_at": "2022-06-30T03:03:28Z"
},
{
"tag": "v3.0.0.preview.18.0",
"kind": "other",
"published_at": "2022-06-29T15:31:15Z"
},
{
"tag": "v3.0.0.preview.17.1",
"kind": "other",
"published_at": "2022-06-27T17:04:29Z"
},
{
"tag": "v3.0.0.preview.17.0",
"kind": "other",
"published_at": "2022-06-27T07:30:31Z"
},
{
"tag": "v2.3.9",
"kind": "patch",
"published_at": "2022-06-22T12:42:59Z"
},
{
"tag": "v3.0.0.preview.16.0",
"kind": "other",
"published_at": "2022-06-19T14:54:30Z"
},
{
"tag": "v3.0.0.preview.15.0",
"kind": "other",
"published_at": "2022-06-17T07:31:00Z"
},
{
"tag": "v3.0.0.preview.14.0",
"kind": "other",
"published_at": "2022-06-14T03:04:48Z"
},
{
"tag": "v3.0.0.preview.13.0",
"kind": "other",
"published_at": "2022-06-05T09:56:34Z"
},
{
"tag": "v3.0.0.preview.12.0",
"kind": "other",
"published_at": "2022-06-01T09:19:18Z"
},
{
"tag": "v3.0.0.preview.11.1",
"kind": "other",
"published_at": "2022-05-31T08:06:59Z"
},
{
"tag": "v3.0.0.preview.11.0",
"kind": "other",
"published_at": "2022-05-29T13:32:20Z"
},
{
"tag": "v3.0.0.preview.10.2",
"kind": "other",
"published_at": "2022-05-25T03:48:04Z"
},
{
"tag": "v3.0.0.preview.10.1",
"kind": "other",
"published_at": "2022-05-23T08:11:02Z"
},
{
"tag": "v3.0.0.preview.10.0",
"kind": "other",
"published_at": "2022-05-22T14:06:02Z"
},
{
"tag": "v3.0.0.preview.9.1",
"kind": "other",
"published_at": "2022-05-19T08:05:48Z"
},
{
"tag": "v3.0.0.preview.9.0",
"kind": "other",
"published_at": "2022-05-17T04:58:57Z"
},
{
"tag": "v3.0.0.preview.8.1",
"kind": "other",
"published_at": "2022-04-28T11:57:34Z"
},
{
"tag": "v3.0.0.preview.8.0",
"kind": "other",
"published_at": "2022-04-24T13:38:40Z"
},
{
"tag": "v3.0.0.preview.7.0",
"kind": "other",
"published_at": "2022-04-15T05:42:17Z"
},
{
"tag": "v3.0.0.preview.6.0",
"kind": "other",
"published_at": "2022-04-08T17:13:46Z"
},
{
"tag": "v3.0.0.preview.5.0",
"kind": "other",
"published_at": "2022-03-15T13:28:07Z"
},
{
"tag": "v3.0.0.preview.4.1",
"kind": "other",
"published_at": "2022-02-27T06:57:49Z"
},
{
"tag": "v2.3.8",
"kind": "patch",
"published_at": "2022-02-25T07:58:12Z"
},
{
"tag": "v3.0.0.preview.4.0",
"kind": "other",
"published_at": "2022-02-24T13:43:07Z"
},
{
"tag": "v3.0.0.preview.3.0",
"kind": "other",
"published_at": "2022-02-22T06:48:29Z"
},
{
"tag": "v3.0.0.preview.2.0",
"kind": "other",
"published_at": "2022-02-07T17:24:07Z"
},
{
"tag": "v2.3.7",
"kind": "patch",
"published_at": "2022-01-30T17:21:20Z"
},
{
"tag": "v3.0.0.preview.1.0",
"kind": "other",
"published_at": "2022-01-16T13:34:23Z"
},
{
"tag": "v2.3.5",
"kind": "patch",
"published_at": "2021-12-31T14:40:09Z"
},
{
"tag": "v2.3.4",
"kind": "patch",
"published_at": "2021-12-09T18:25:34Z"
},
{
"tag": "v2.3.3",
"kind": "patch",
"published_at": "2021-11-20T18:55:20Z"
},
{
"tag": "v2.3.2",
"kind": "patch",
"published_at": "2021-11-17T14:05:34Z"
},
{
"tag": "v2.3.1",
"kind": "patch",
"published_at": "2021-11-16T16:34:11Z"
},
{
"tag": "v2.3.0",
"kind": "minor",
"published_at": "2021-11-11T14:35:46Z"
},
{
"tag": "v2.3.0-BETA.6",
"kind": "prerelease",
"published_at": "2021-11-04T07:47:19Z"
},
{
"tag": "v2.3.0-BETA.5",
"kind": "prerelease",
"published_at": "2021-11-04T03:12:00Z"
},
{
"tag": "v.2.3.0-BETA.4",
"kind": "other",
"published_at": "2021-11-03T16:17:01Z"
}
],
"recent_commits": [
{
"oid": "2c57c4dac06ce4ea0af3a9693bc0d4aa14180f9e",
"body": null,
"is_bot": false,
"headline": "release: v5.0.0-Preview4",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-07-14T11:16:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b9fa1dce93bf3652ab07ad4c5790880ac34e6ca7",
"body": null,
"is_bot": false,
"headline": "doc: Update and fix doc problem",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-07-14T11:15:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "582962e1c58620bf36600254c7906b6866f07ff2",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "doc(website): 更新 QQ 组件至 4.4.0,补充支持群聊成员变更、消息按钮及互动事件的文档内容",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-07-09T10:19:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d620a372a4b04aec149e07c4271482b8120c1d74",
"body": "feat: 实现互动事件支持及相关功能优化;引入 QGGroupAuthor 替代 QGGroupMember 表示群消息作者,并提供额外信息;增加对多按钮信息 (keyboards) 的支持",
"is_bot": false,
"headline": "Merge pull request #1207 from simple-robot/dev-qg-follow-up",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-07-09T08:41:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bc0d01d46a36a40bff569d573b2eb4057297ee7f",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "fix: 修复 detekt 检测,改进 CI 配置",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-07-09T06:38:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8fddd4cfabe293ca2ed7e744088fa44726018aa1",
"body": "- 引入互动事件处理(QGInteractionCreateEvent)及其实现(QGInteractionCreateEventImpl)\n- 新增InteractionResponseApi实现与回应事件交互能力\n- 优化群成员接口(QGGroupMember),新增QGGroupAuthor接口以支持作者角色解析\n- 引入MessageKeyboards解析和构建能力替代旧式QGKeyboard,实现更强灵活性和完整性\n- 添加新测试用例覆盖互动事件和消息键盘功能\n- 调整项目版权日期并修复相关代码风格细节\n\nSigned-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "feat: 实现互动事件支持及相关功能优化",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-07-09T05:54:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6d6a18c8a4c8a8d8028e5777ae61299b26a5d3ed",
"body": "…odularity, and plugin management\n\nSigned-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "build: migrate `buildSrc` to `build-logic` for better organization, m…",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-27T09:58:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6a0727dcce180d5b85e1d832c4d7b0c46ed615b0",
"body": "…时 changelog\n\nSigned-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "feat(changelog): 添加生成子 changelog 文件的 Gradle 任务并配置创建 GitHub Releases 临…",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-27T07:56:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "760559c511cc3a6b13cd5a043f2c0d9c7d1cfbc8",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "release: v5.0.0-Preview3",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-26T08:02:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2f0e226f9591a3a5662af2f7a1a1af031cac737d",
"body": "…bouncycastle-bcprov-jdk18on-1.84\n\nbuild(deps): bump org.bouncycastle:bcprov-jdk18on from 1.81 to 1.84",
"is_bot": false,
"headline": "Merge pull request #1169 from simple-robot/dependabot/gradle/dev/org.…",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-26T06:49:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a76d3ed5ed2fbbcc22ca70af6f9b5219fd655788",
"body": "…tor-3.8.6\n\nbuild(deps): bump reactor from 3.7.11 to 3.8.6",
"is_bot": false,
"headline": "Merge pull request #1170 from simple-robot/dependabot/gradle/dev/reac…",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-26T06:48:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d146d0018e2958f23f2d5672cadc7c1f714608df",
"body": "…slf4j-slf4j-api-2.0.18\n\nbuild(deps): bump org.slf4j:slf4j-api from 2.0.17 to 2.0.18",
"is_bot": false,
"headline": "Merge pull request #1184 from simple-robot/dependabot/gradle/dev/org.…",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-26T06:43:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e5b3f7f18e4819a1b4a758a389645e30f9470810",
"body": "…actions/checkout-7\n\nbuild(deps): bump actions/checkout from 6 to 7",
"is_bot": false,
"headline": "Merge pull request #1188 from simple-robot/dependabot/github_actions/…",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-26T06:42:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "87167df2a0665acf980b8f014b89b6ce40e7af0c",
"body": "…actions/upload-artifact-7\n\nbuild(deps): bump actions/upload-artifact from 6 to 7",
"is_bot": false,
"headline": "Merge pull request #1187 from simple-robot/dependabot/github_actions/…",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-26T06:42:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5610dbe2f6cb68a924976aa1d20dcec62f4434ea",
"body": "…JetBrains/qodana-action-2026.1\n\nbuild(deps): bump JetBrains/qodana-action from 2025.2 to 2026.1",
"is_bot": false,
"headline": "Merge pull request #1186 from simple-robot/dependabot/github_actions/…",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-26T06:41:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d1d5b8b69ba8e728d86398178edd6e89898322a3",
"body": "…peaceiris/actions-gh-pages-4\n\nbuild(deps): bump peaceiris/actions-gh-pages from 3 to 4",
"is_bot": false,
"headline": "Merge pull request #1189 from simple-robot/dependabot/github_actions/…",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-26T06:41:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0dd7ae369f70c7e24827ab019b86495c330f8ec9",
"body": "…actions/stale-10\n\nbuild(deps): bump actions/stale from 5 to 10",
"is_bot": false,
"headline": "Merge pull request #1190 from simple-robot/dependabot/github_actions/…",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-26T06:41:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "61b8d6040088172bbf3a32a321692fd63cb5460d",
"body": "…tion to 1.11.0, Kotlin IO to 0.9.0, Kotlin datetime to 0.8.0 (#1192)\n\n* chore: (WIP)统一多项目 ABI 校验配置,新增 multiplatform 和 JVM ABI 约定插件\n\nSigned-off-by: ForteScarlet <ForteScarlet@163.com>\n\n* build(deps): bump Kotlin to 2.4.0, Kotlin coroutines、Kotlin serialization to 1.11.0, Kotlin IO to 0.9.0, Kotlin d\n[…]\n.com>\n\n* build: Upgrade yarn lock\n\nSigned-off-by: ForteScarlet <ForteScarlet@163.com>\n\n---------\n\nSigned-off-by: ForteScarlet <ForteScarlet@163.com>\nCo-authored-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "build(deps): bump Kotlin to 2.4.0, Kotlin coroutines、Kotlin serializa…",
"author_name": "ForliyScarlet",
"author_login": "ForliyScarlet",
"committed_at": "2026-06-26T06:13:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "046ee9e5cc8be4d780fd7220c3995f2e10c8a27a",
"body": null,
"is_bot": false,
"headline": "doc: Update website submodule",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-25T17:53:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e84353f5f506cf1255ccd73b3f5843795c47043b",
"body": "build: 更新 Gradle 到 9.6.0",
"is_bot": false,
"headline": "Merge pull request #1191 from simple-robot/update-gradle",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-25T12:40:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "21b012c7546f5e1aff05c260f1b5312741475afe",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "build: 更新 Gradle 到 9.6.0",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-25T10:24:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8ff6afc568e75be178ad4af390a3e701a1c93b33",
"body": "Bumps [actions/stale](https://github.com/actions/stale) from 5 to 10.\n- [Release notes](https://github.com/actions/stale/releases)\n- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/stale/compare/v5...v10)\n\n---\nupdated-dependencies:\n- dependency-name: actions/stale\n dependency-version: '10'\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "build(deps): bump actions/stale from 5 to 10",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-25T01:54:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dc3f4fca8fa351d69f232e1801162cac68c125bc",
"body": "Bumps [peaceiris/actions-gh-pages](https://github.com/peaceiris/actions-gh-pages) from 3 to 4.\n- [Release notes](https://github.com/peaceiris/actions-gh-pages/releases)\n- [Changelog](https://github.com/peaceiris/actions-gh-pages/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/peaceiris/action\n[…]\nency-name: peaceiris/actions-gh-pages\n dependency-version: '4'\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "build(deps): bump peaceiris/actions-gh-pages from 3 to 4",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-25T01:54:24Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "a08b1389cc94a20045b7adfee35366035cad498f",
"body": "Bumps [actions/checkout](https://github.com/actions/checkout) from 6 to 7.\n- [Release notes](https://github.com/actions/checkout/releases)\n- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)\n- [Commits](https://github.com/actions/checkout/compare/v6...v7)\n\n---\nupdated-dependenc\n[…]\n:\n- dependency-name: actions/checkout\n dependency-version: '7'\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "build(deps): bump actions/checkout from 6 to 7",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-25T01:54:21Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "74961e1b0bbb3ebebc629b21a5acfa199e198a7f",
"body": "Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 6 to 7.\n- [Release notes](https://github.com/actions/upload-artifact/releases)\n- [Commits](https://github.com/actions/upload-artifact/compare/v6...v7)\n\n---\nupdated-dependencies:\n- dependency-name: actions/upload-artifact\n dependency-version: '7'\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "build(deps): bump actions/upload-artifact from 6 to 7",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-25T01:54:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "de73faa311f959586f4b3332c6ca9a0fc2a43bf5",
"body": "Bumps [JetBrains/qodana-action](https://github.com/jetbrains/qodana-action) from 2025.2 to 2026.1.\n- [Release notes](https://github.com/jetbrains/qodana-action/releases)\n- [Commits](https://github.com/jetbrains/qodana-action/compare/v2025.2...v2026.1)\n\n---\nupdated-dependencies:\n- dependency-name: JetBrains/qodana-action\n dependency-version: '2026.1'\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "build(deps): bump JetBrains/qodana-action from 2025.2 to 2026.1",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-25T01:54:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "767818257e8048e4a4cb83d7777a3789c1543c84",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "chore(dependencies): 调整 `kotlinxKover` 配置为版本引用,更新 Dependabot 忽略项",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-25T01:47:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3df34585cbd10848ff68e9c0a79cdb2f4bc8fbfe",
"body": "Bumps org.slf4j:slf4j-api from 2.0.17 to 2.0.18.\n\n---\nupdated-dependencies:\n- dependency-name: org.slf4j:slf4j-api\n dependency-version: 2.0.18\n dependency-type: direct:production\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "build(deps): bump org.slf4j:slf4j-api from 2.0.17 to 2.0.18",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-25T01:41:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0691e73225cec7bd1a064bdfbc5c865434fbdd3e",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "chore(dependabot): 调整更新间隔为每周,新增对 GitHub Actions 的版本更新支持",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-25T01:40:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9a4910921d9e4d57596aec46b67968a069f24ad4",
"body": "Bumps `reactor` from 3.7.11 to 3.8.6.\n\nUpdates `io.projectreactor:reactor-core` from 3.7.11 to 3.8.6\n- [Release notes](https://github.com/reactor/reactor-core/releases)\n- [Commits](https://github.com/reactor/reactor-core/compare/v3.7.11...v3.8.6)\n\nUpdates `io.projectreactor:reactor-test` from 3.7.11\n[…]\name: io.projectreactor:reactor-test\n dependency-version: 3.8.6\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "build(deps): bump reactor from 3.7.11 to 3.8.6",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-25T01:39:07Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "eb56e18f817a6d0fb1c40ba235908bd3630ba6ba",
"body": "Bumps [org.bouncycastle:bcprov-jdk18on](https://github.com/bcgit/bc-java) from 1.81 to 1.84.\n- [Changelog](https://github.com/bcgit/bc-java/blob/main/docs/releasenotes.html)\n- [Commits](https://github.com/bcgit/bc-java/commits)\n\n---\nupdated-dependencies:\n- dependency-name: org.bouncycastle:bcprov-jdk18on\n dependency-version: '1.84'\n dependency-type: direct:production\n update-type: version-update:semver-minor\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "build(deps): bump org.bouncycastle:bcprov-jdk18on from 1.81 to 1.84",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-25T01:38:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a78a65f66ee869669bbce5a9d8cae7372d649d6b",
"body": "Bumps [com.github.gmazzo.buildconfig](https://github.com/gmazzo/gradle-buildconfig-plugin) from 5.6.7 to 6.0.7.\n- [Release notes](https://github.com/gmazzo/gradle-buildconfig-plugin/releases)\n- [Commits](https://github.com/gmazzo/gradle-buildconfig-plugin/compare/v5.6.7...v6.0.7)\n\n---\nupdated-depend\n[…]\nname: com.github.gmazzo.buildconfig\n dependency-version: 6.0.7\n dependency-type: direct:production\n update-type: version-update:semver-major\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "build(deps): bump com.github.gmazzo.buildconfig from 5.6.7 to 6.0.7",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-25T01:36:08Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "9ee085852844dac7b91ea779e820d1d904bf8abd",
"body": "Bumps [io.mockk:mockk](https://github.com/mockk/mockk) from 1.14.5 to 1.14.7.\n- [Release notes](https://github.com/mockk/mockk/releases)\n- [Commits](https://github.com/mockk/mockk/compare/1.14.5...1.14.7)\n\n---\nupdated-dependencies:\n- dependency-name: io.mockk:mockk\n dependency-version: 1.14.7\n dependency-type: direct:production\n update-type: version-update:semver-patch\n...\n\nSigned-off-by: dependabot[bot] <support@github.com>",
"is_bot": true,
"headline": "build(deps): bump io.mockk:mockk from 1.14.5 to 1.14.7",
"author_name": "dependabot[bot]",
"author_login": "dependabot[bot]",
"committed_at": "2026-06-25T01:36:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "063d8492f48e4da17220986c7250c4042dd70822",
"body": "…更新 `libs.versions.toml`\n\nchore: 调整 Dependabot target 分支为 `dev`,提高打开 PR 数量上限\n\nSigned-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "refactor(dependencies): 替换 `reactor-test` 依赖配置为 `libs.reactor.test` 并…",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-25T01:35:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2c39e16b6a09b371f522db8fa6f89e7050fa13b9",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "doc: 更新文档中的组件库模块、核心库使用和 API 说明优化内容",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-24T10:17:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0c800ed22b5174de14997f1d0a0a263db118e53d",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "feat(time): 增加 `toInstant` 方法支持,将时间戳直接转换为 `Instant` 实例",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-24T07:42:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c5fbc575e6b0be62d9a288b8560161ee419ad2fd",
"body": "Support reactive streams and optimize core logic",
"is_bot": false,
"headline": "Merge pull request #1164 from simple-robot/improve-coroutine-related-api",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-23T19:19:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cf344a8feb10f399da81a6b4c599a7ed6e7b0120",
"body": null,
"is_bot": false,
"headline": "refactor(api): 移除所有 reactive 方法的 ABI dump",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-23T16:23:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ae14ac615f2d98c80fb96fcd7a20827f98226b70",
"body": null,
"is_bot": false,
"headline": "doc(website): 增加对 QQ 群聊全量消息事件的文档支持新增内容",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-23T15:02:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3e85505f02baf5508f9fd3b35707e7449fd3597d",
"body": null,
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/dev' into dev",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-23T13:29:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "150c73b9eb97df7d7372d294d47d261b32224130",
"body": null,
"is_bot": false,
"headline": "doc(website): 更新组件版本",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-23T13:28:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "baaca1d9d9dba2bad3de5fcda22221850dbafb90",
"body": "refactor(time): 优化 `toString` 表达方式,使用更明确的类名;调整时间戳解析逻辑并弃用旧实现",
"is_bot": false,
"headline": "Merge pull request #1162 from simple-robot/dev-fix-time-api-usage",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-23T13:27:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b8b4f9527213b7254a1a32e628b7b9616436270f",
"body": null,
"is_bot": false,
"headline": "fix(api): 修复 MessageDelete 和 PublicMessageDeleteCreate 构造函数参数默认值逻辑",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-23T12:47:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b50e3fed2354f2bda9350010eb59990d684f69c8",
"body": "Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Potential fix for pull request finding",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-23T12:38:57Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5424cadac3a2983d29c4c412c76f0b1ad4aaee05",
"body": "Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>",
"is_bot": false,
"headline": "Potential fix for pull request finding",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-23T12:38:29Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "94ef185e38b1a3b27c8676b8e916338b9d74db7b",
"body": "feat(api): 增加 QGGroupMessageCreateEvent 子类及拦截事件支持,扩展群消息处理能力",
"is_bot": false,
"headline": "Merge pull request #1163 from simple-robot/dev-full-groupmessage-support",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-23T12:36:14Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "be6e74ce7110cf1d85d788abefae86810b6cf10b",
"body": null,
"is_bot": false,
"headline": "refactor: 优化心跳逻辑及超时处理,统一使用毫秒级 Duration API 设置时间",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-23T11:39:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0b84834355b75c11417abc096c26b290569be7c7",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "refactor(time): 优化 `toString` 表达方式,使用更明确的类名;调整时间戳解析逻辑并弃用旧实现",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-23T11:17:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ae2290efb54a2f03491456cb3de586f279f4d63a",
"body": null,
"is_bot": false,
"headline": "feat(api): 增加 QGGroupMessageCreateEvent 子类及拦截事件支持,扩展群消息处理能力",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-23T09:53:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b53862298a48e19f303becacb384ccbe42441940",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "fix: 移除额外的输出,修复 reactive opt 注解的位置",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-06T09:57:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5c624a4e57e60e7a8f5b4ec804aa22d4ded8a186",
"body": "…增相关 reactive 方法和 opt-in 注解逻辑\n\nSigned-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "feat: 添加 ExperimentalReactiveBridgingApi,并引入对 reactive stream 的支持,包括新…",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-05T09:48:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d0d14aca60e68ffcb465e26054b4638a6c54aebd",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "restore: 回退对 close 替代 cancel 的实现与设计",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-06-04T10:10:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "73bf50839710d1af58d7f46fc82ced0de7f7d109",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "feat: support reactive streams?",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-05-22T10:03:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b67e04075671e4accc8a1dc0de4054f044701ead",
"body": "…ng-property\n\nqq-guild 组件的 v4.2.3 更新同步",
"is_bot": false,
"headline": "Merge pull request #1160 from simple-robot/fix-qq-button-action-missi…",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-05-19T16:36:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "243e2ad144780d419c3158c8c336f1e7d065d8c8",
"body": "更新 kotlinx-datetime 到 0.8.0",
"is_bot": false,
"headline": "Merge pull request #1159 from simple-robot/update-kotlin-datetime",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-05-17T21:44:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "457fea61561388252eeb0754329a1d6bb03a8cb2",
"body": null,
"is_bot": false,
"headline": "fix: 更新 kotlinx-datetime 到 0.8.0 并更改 Clock 引用",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-05-17T19:15:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "03d0fa0b74d9cba7cc09ba56457315171ef2ddb2",
"body": null,
"is_bot": false,
"headline": "chore: 更新依赖版本,调整 Clock 引用路径,优化 JS 和 WASM 配置",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-05-17T18:56:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "99143596c1d7c262ec0402a231b0c362c6a8751f",
"body": "Update Qodana configuration",
"is_bot": false,
"headline": "Merge pull request #1157 from simple-robot/qodatayaml-patch",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-05-17T11:18:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "29a55da711dda46ec504a6a85e835e99448b4501",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "feat(api): 引入 `@ApiModelConstructor` 注解并应用于相关数据类,增强模型构造逻辑",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-05-10T15:36:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "52ac533ca48d25886bda11051f37367f496b2ac0",
"body": null,
"is_bot": false,
"headline": "Update qodana.yaml",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-05-09T06:54:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f63bff677a1cb8628493d65a5cc752019a784b60",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "doc(website): bump Docker version to 2026.04.8711",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-04-17T10:01:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "016c2ec9b621120670f3ec33fa6248e8c81a543e",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "doc: 更新 website hash",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-04-17T07:25:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "79ec836e9e016e7124a78fd08201abf9cfdfdc43",
"body": "改进 Job 的传播约定、cancel/close 的逻辑约定,增加部分继承相关的 opt 警告",
"is_bot": false,
"headline": "Merge pull request #1154 from simple-robot/improve-scope",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-03-04T20:24:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "35da2f550a3edd4ab52362720b4666ca9e8364bd",
"body": null,
"is_bot": false,
"headline": "feat(api): 为 Bot 和组件库新增子类继承限制注解,改进继承安全性",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-03-04T17:13:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ffa897bf22328c7e821b3de4d75eba2b731355e7",
"body": "现在 `close` 的逻辑会更类似 ktor 中的 `HttpClient.close`:它会通过 Job.complete 来标记完成、并等待所有任务的自然完成。并且 Application 不再预期内要求任何子项直接关联当前 job 为 parentJob,而是在 close 的时候明确关闭所有的 `CloseablePlugin`。\n\nSigned-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "feat: 改进 Application、CloseablePlugin、Bot 中的 cancel/close 的预期逻辑。",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-03-04T13:07:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ab4c6b8f929d025c7952bfd84f2c24e01dc5ff2a",
"body": null,
"is_bot": false,
"headline": "feat(api): 新增 CancellablePlugin 类型来定义插件的可取消行为;将部分类型定义从单一文件内拆除出去",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-02-09T15:51:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d0a9136c63f7dcda695ba1f88a86ceafb5e7ec25",
"body": "refactor(api): 重构支持选项相关接口,并改善选项管理;改进部分代码和注释",
"is_bot": false,
"headline": "Merge pull request #1153 from simple-robot/send-reply-options-api",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-02-08T03:27:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a3cb37a032fffcee6f7b28b6b0a5b32982ec6a07",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "refactor(api): 重构支持选项相关接口,并改善选项管理;改进部分代码和注释",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-02-08T00:19:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1943f75a0d7d344643cb88bef36eb5f577d68743",
"body": "改进项目模块部分源码集结构,合并 JS 和 WasmJs 平台到 Web;修正改进部分相关内容实现;",
"is_bot": false,
"headline": "Merge pull request #1147 from simple-robot/improve-structure",
"author_name": "ForliyScarlet",
"author_login": "ForliyScarlet",
"committed_at": "2026-01-21T20:02:48Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4aa43d8ff55ccad29e0e61f42a6a12610b5ff8d5",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "improve(build): 调整CI配置",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-15T06:17:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1d131191d3a1a44524977998c2c9dff06f982f08",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "improve(build): 调整CI配置",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-15T02:49:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e5206c54d53eda72d21c1f49007dd7b8edaa43c7",
"body": "* refactor(build): 调整多平台配置(WIP)\n\nSigned-off-by: ForteScarlet <ForteScarlet@163.com>\n\n* refactor(build): split build and test jobs across workflows\n\n- Introduced separate `build` and `test` jobs for better modularity.\n- Adjusted job dependencies to ensure tests depend on successful builds.\n- Simplifi\n[…]\nveTiers` logic to handle new target exclusions.\n\n* refactor(build): update Legacy abi\n\n---------\n\nSigned-off-by: ForteScarlet <ForteScarlet@163.com>\nCo-authored-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "改进 KMP 配置 (#1146)",
"author_name": "ForliyScarlet",
"author_login": "ForliyScarlet",
"committed_at": "2026-01-14T16:41:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "36fb92c49b3222ae14d080397469f2e6c82b6ce2",
"body": null,
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/dev' into dev",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-14T10:06:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5e31be7d7cac3f9f24a37e5ad4d01ea51bd9a345",
"body": "改进构建配置",
"is_bot": false,
"headline": "Merge pull request #1145 from simple-robot/improve-build",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-14T10:06:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dc3fa06850b22cc5ba4d2f917f431d762e74ce60",
"body": null,
"is_bot": false,
"headline": "fix: fix some warning",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-14T09:26:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ed99898f2dc80c5f8f90a0751b44e6cc23c0465d",
"body": null,
"is_bot": false,
"headline": "fix(build): configuration cache failed",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-11T18:35:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ace098027f327af919071c4393bfe03def4d4a02",
"body": null,
"is_bot": false,
"headline": "fix(build): configuration cache failed",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-11T17:50:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3e6960383f07c53fdfe2e600f823f23bb3fced22",
"body": null,
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/improve-build' into improve-build",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-11T15:00:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "770e6990bbeb6e38cc2e0604864c77ada72d5d34",
"body": "- Replaced `kotlin(\"jvm\")` and `kotlin(\"multiplatform\")` with corresponding custom plugin identifiers: `id(\"simbot.kotlin-jvm\")` and `id(\"simbot.kotlin-multiplatform\")`.\n- Enabled Gradle configuration caching and Kotlin native incremental compilation.\n- Added shared build script configurations under `buildSrc`.\n\nSigned-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "build: migrate Kotlin builds to custom plugin identifiers",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-11T14:59:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "aed5af5970b94584febf0d2287bbe282ac9018c5",
"body": "* build(deps): kotlinx-io to 0.8.2; Ktor to 3.3.3;\n\nSigned-off-by: ForteScarlet <ForteScarlet@163.com>\n\n* fix: fix freeCompilerArgs\n\nSigned-off-by: ForteScarlet <ForteScarlet@163.com>\n\n* fix: fix build\n\nSigned-off-by: ForteScarlet <ForteScarlet@163.com>\n\n* refactor: 配合 ktor 和 kotlinx-io 的更新,修复/调整部分A\n[…]\n: 更新 Ktor 和 Kotlinx IO 并修正/改进相关内容\n\nSigned-off-by: ForteScarlet <ForteScarlet@163.com>\n\n---------\n\nSigned-off-by: ForteScarlet <ForteScarlet@163.com>\nCo-authored-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "Upgrade Ktor to 3.3.3; Upgrade kotlinx-io to 0.8.2 (#1144)",
"author_name": "ForliyScarlet",
"author_login": "ForliyScarlet",
"committed_at": "2026-01-11T14:11:09Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "e5625c8dd718b3d6adf37d57239f6cacbcbf016d",
"body": "- Replaced `kotlin(\"jvm\")` and `kotlin(\"multiplatform\")` with corresponding custom plugin identifiers: `id(\"simbot.kotlin-jvm\")` and `id(\"simbot.kotlin-multiplatform\")`.\n- Enabled Gradle configuration caching and Kotlin native incremental compilation.\n- Added shared build script configurations under `buildSrc`.\n\nSigned-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "build: migrate Kotlin builds to custom plugin identifiers",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-11T10:11:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1645b9de866be65d214d0a49bfa2c6ebca857676",
"body": null,
"is_bot": false,
"headline": "Update README.md",
"author_name": "Forte Scarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-10T09:58:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bbaa6cafe57f81e71592d168fad87b7f02f52b4a",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "fix: apply and fix detekt checks",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-10T08:24:37Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3c8ea0796b4bbe39395f55be82fd0faa5669aa8f",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "build: update config of detekt",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-10T05:20:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "606a85e5cbcfe12c96cae0decbfb151bca0b9d54",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "build: version to p2",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-10T02:48:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c08d2bc71e2027f9a5ab04a8c66c40af3fbb39b8",
"body": null,
"is_bot": false,
"headline": "Merge branch 'fix-tests' into dev",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-10T02:42:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "48c462174f1ace504b42558c002204c421cec997",
"body": null,
"is_bot": false,
"headline": "fix: Fix Libsodium `TypeError`",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-09T13:15:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "07910bc70f1dcb8dc1da7bb73f485469ec61277f",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "fix: -Xjvm-default -> -jvm-default",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-09T10:07:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "edb4f2555e061b406f353955ff41b431e5561939",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "release: v5.0.0-Preview1",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-09T09:05:44Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "82e65131f0f9ce6a829bd12357fd108ce2fba391",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "doc: Update README",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-09T07:51:03Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "05075a47b97dadba0d37d411ff1324b3410aca36",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "build: update GitHub Actions",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-09T07:12:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a78ee404ce44a5638703234a65e06ef80ba326f6",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "build: update GitHub Actions dependencies to latest versions",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-09T07:08:17Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "12041fb48aeb029dc21f1c226b51e05ca7279db0",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "doc: module description",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-09T06:45:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3aa7ae151b39392cb2cdc7d73853ed7e6bc2fd3f",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "doc: module description",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-09T06:31:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d3b5b08647cee2f808428a034fba748990dcda0a",
"body": null,
"is_bot": false,
"headline": "Merge remote-tracking branch 'origin/v5-dev' into v5-dev",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-09T06:22:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b552929edf64c5694950f5682c40ea02d5a06892",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "doc: dokka?",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-09T06:19:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e7fa92f1d02f1139cb9fbe81a9681cead5b2ded2",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "fix: fix ksp and update legacy abi",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-09T06:19:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7e734bea2ac08938981edc76b75d238bb4529982",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "build: 迁移 qq 模块",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-09T06:19:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c113b4c443525f878cdda60778d01bd4080ba9ff",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "doc: Update README",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-09T06:19:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "adaf5ddb51ff84259a651c9ad0e39859feb91955",
"body": "Signed-off-by: ForteScarlet <ForteScarlet@163.com>",
"is_bot": false,
"headline": "build: 配置子项目的ABI验证逻辑",
"author_name": "ForteScarlet",
"author_login": "ForteScarlet",
"committed_at": "2026-01-09T06:19:12Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 100,
"commits_last_year": 153,
"latest_release_at": "2026-07-14T14:11:44Z",
"latest_release_tag": "v5.0.0-Preview4",
"releases_from_tags": false,
"days_since_last_push": 6,
"active_weeks_last_year": 22,
"days_since_latest_release": 10,
"mean_days_between_releases": 56.2
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 62,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": false
},
"ecosystem": {
"packages": []
},
"popularity": {
"forks": 45,
"stars": 562,
"watchers": 5,
"fork_history": {
"days": [
{
"date": "2020-10-09",
"count": 1
},
{
"date": "2020-12-03",
"count": 1
},
{
"date": "2021-05-06",
"count": 1
},
{
"date": "2021-05-08",
"count": 1
},
{
"date": "2021-06-08",
"count": 1
},
{
"date": "2021-06-11",
"count": 1
},
{
"date": "2021-06-12",
"count": 1
},
{
"date": "2021-07-21",
"count": 1
},
{
"date": "2021-08-03",
"count": 1
},
{
"date": "2021-09-10",
"count": 1
},
{
"date": "2021-10-19",
"count": 1
},
{
"date": "2021-10-22",
"count": 1
},
{
"date": "2021-11-16",
"count": 1
},
{
"date": "2021-11-28",
"count": 1
},
{
"date": "2021-12-17",
"count": 1
},
{
"date": "2022-01-28",
"count": 1
},
{
"date": "2022-03-02",
"count": 1
},
{
"date": "2022-03-08",
"count": 1
},
{
"date": "2022-03-31",
"count": 1
},
{
"date": "2022-05-17",
"count": 1
},
{
"date": "2022-05-28",
"count": 1
},
{
"date": "2022-06-22",
"count": 1
},
{
"date": "2022-07-24",
"count": 1
},
{
"date": "2022-08-11",
"count": 1
},
{
"date": "2022-08-13",
"count": 1
},
{
"date": "2022-11-11",
"count": 1
},
{
"date": "2022-12-03",
"count": 1
},
{
"date": "2023-02-14",
"count": 2
},
{
"date": "2023-02-27",
"count": 1
},
{
"date": "2023-03-16",
"count": 1
},
{
"date": "2023-03-27",
"count": 1
},
{
"date": "2023-04-08",
"count": 1
},
{
"date": "2023-05-08",
"count": 1
},
{
"date": "2023-07-11",
"count": 1
},
{
"date": "2023-07-25",
"count": 1
},
{
"date": "2024-07-18",
"count": 1
},
{
"date": "2024-08-22",
"count": 1
},
{
"date": "2024-09-12",
"count": 1
},
{
"date": "2024-12-27",
"count": 1
},
{
"date": "2025-06-30",
"count": 2
},
{
"date": "2025-11-26",
"count": 1
},
{
"date": "2026-01-22",
"count": 1
},
{
"date": "2026-05-20",
"count": 1
}
],
"complete": true,
"collected": 45,
"total_forks": 45
},
"star_history": null,
"open_issues_and_prs": 36
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [
"example",
"samples"
],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"benchmarks/v4-v3-core-benchmark/build.gradle.kts",
"build-logic/build.gradle.kts",
"build-logic/conventions/build.gradle.kts",
"build-logic/shared/build.gradle.kts",
"build.gradle.kts",
"internal-processors/build.gradle.kts",
"internal-processors/interface-uml-processor/build.gradle.kts",
"internal-processors/kook-api-reader/build.gradle.kts",
"internal-processors/kook-message-element-processor/build.gradle.kts",
"internal-processors/onebot-event-type-resolver-processor/build.gradle.kts",
"internal-processors/onebot-include-component-message-elements-processor/build.gradle.kts",
"internal-processors/qq-api-reader/build.gradle.kts",
"internal-processors/qq-dispatch-serializer-processor/build.gradle.kts",
"internal-processors/qq-intents-processor/build.gradle.kts",
"samples/build.gradle.kts",
"samples/qq-webhook-server-ktor/build.gradle.kts",
"samples/qq-webhook-server-spring-webflux/build.gradle.kts",
"samples/qq-webhook-server-spring/build.gradle.kts",
"simbot-api/build.gradle.kts",
"simbot-commons/build.gradle.kts",
"simbot-commons/simbot-common-annotations/build.gradle.kts",
"simbot-commons/simbot-common-apidefinition/build.gradle.kts",
"simbot-commons/simbot-common-atomic/build.gradle.kts",
"simbot-commons/simbot-common-collection/build.gradle.kts",
"simbot-commons/simbot-common-core/build.gradle.kts",
"simbot-commons/simbot-common-ktor-inputfile/build.gradle.kts",
"simbot-commons/simbot-common-stage-loop/build.gradle.kts",
"simbot-commons/simbot-common-streamable/build.gradle.kts",
"simbot-commons/simbot-common-suspend-runner/build.gradle.kts",
"simbot-commons/simbot-common-time/build.gradle.kts",
"simbot-component-kook/build.gradle.kts",
"simbot-component-kook/simbot-component-kook-api/build.gradle.kts",
"simbot-component-kook/simbot-component-kook-core/build.gradle.kts",
"simbot-component-kook/simbot-component-kook-stdlib/build.gradle.kts",
"simbot-component-onebot/build.gradle.kts",
"simbot-component-onebot/simbot-component-onebot-common/build.gradle.kts",
"simbot-component-onebot/simbot-component-onebot-v11/simbot-component-onebot-v11-common/build.gradle.kts",
"simbot-component-onebot/simbot-component-onebot-v11/simbot-component-onebot-v11-core/build.gradle.kts",
"simbot-component-onebot/simbot-component-onebot-v11/simbot-component-onebot-v11-event/build.gradle.kts",
"simbot-component-onebot/simbot-component-onebot-v11/simbot-component-onebot-v11-message/build.gradle.kts",
"simbot-component-qq/build.gradle.kts",
"simbot-component-qq/simbot-component-qq-guild-api/build.gradle.kts",
"simbot-component-qq/simbot-component-qq-guild-core/build.gradle.kts",
"simbot-component-qq/simbot-component-qq-guild-internal-ed25519/build.gradle.kts",
"simbot-component-qq/simbot-component-qq-guild-stdlib/build.gradle.kts",
"simbot-cores/simbot-core-spring-boot-starter-common/build.gradle.kts",
"simbot-cores/simbot-core-spring-boot-starter-v2/build.gradle.kts",
"simbot-cores/simbot-core-spring-boot-starter/build.gradle.kts",
"simbot-cores/simbot-core/build.gradle.kts",
"simbot-extensions/build.gradle.kts",
"simbot-extensions/simbot-extension-continuous-session/build.gradle.kts",
"simbot-gradles/build.gradle.kts",
"simbot-gradles/simbot-gradle-plugin/build.gradle.kts",
"simbot-gradles/simbot-gradle-suspendtransforms/build.gradle.kts",
"simbot-logger-slf4j2-impl/build.gradle.kts",
"simbot-logger/build.gradle.kts",
"simbot-processors/build.gradle.kts",
"simbot-processors/class-builder/simbot-processor-class-builder-annotation/build.gradle.kts",
"simbot-processors/class-builder/simbot-processor-class-builder-test/build.gradle.kts",
"simbot-processors/class-builder/simbot-processor-class-builder/build.gradle.kts",
"simbot-processors/simbot-processor-message-element-polymorphic-include/build.gradle.kts",
"simbot-quantcat/build.gradle.kts",
"simbot-quantcat/simbot-quantcat-annotations/build.gradle.kts",
"simbot-quantcat/simbot-quantcat-common/build.gradle.kts",
"simbot-test/build.gradle.kts",
"tests/spring-boot-starter-test/build.gradle.kts"
],
"largest_source_bytes": 44064,
"source_files_sampled": 1377,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"build-logic/build.gradle.kts",
"build.gradle.kts",
"internal-processors/build.gradle.kts",
"samples/build.gradle.kts",
"simbot-api/build.gradle.kts",
"simbot-commons/build.gradle.kts",
"simbot-component-kook/build.gradle.kts",
"simbot-component-onebot/build.gradle.kts",
"simbot-component-qq/build.gradle.kts",
"simbot-extensions/build.gradle.kts",
"simbot-gradles/build.gradle.kts",
"simbot-logger-slf4j2-impl/build.gradle.kts",
"simbot-logger/build.gradle.kts",
"simbot-processors/build.gradle.kts",
"simbot-quantcat/build.gradle.kts",
"simbot-test/build.gradle.kts"
],
"advisories": {
"error": null,
"scope": "repository_graph",
"source": "osv",
"findings": [
{
"name": "cn.hutool:hutool-all",
"direct": false,
"version": "5.5.1",
"severity": "critical",
"ecosystem": "maven",
"cvss_score": 9.8,
"advisory_ids": [
"GHSA-6c25-cxcc-pmc4",
"GHSA-77h8-5j3h-jcjf"
],
"fixed_version": "5.8.21",
"advisory_count": 2,
"oldest_advisory_days": 1270
},
{
"name": "cn.hutool:hutool-core",
"direct": false,
"version": "5.5.1",
"severity": "critical",
"ecosystem": "maven",
"cvss_score": 9.8,
"advisory_ids": [
"GHSA-47vx-fqr5-j2gw",
"GHSA-7m7h-rgvp-3v4r",
"GHSA-7mcw-xmx3-7p8m",
"GHSA-7p8c-crfr-q93p",
"GHSA-p2qf-9vp6-3jjq",
"GHSA-rr66-qh5m-w6mx",
"GHSA-rxgf-r843-g53h"
],
"fixed_version": "5.8.24",
"advisory_count": 7,
"oldest_advisory_days": 1316
},
{
"name": "cn.hutool:hutool-extra",
"direct": false,
"version": "5.5.1",
"severity": "critical",
"ecosystem": "maven",
"cvss_score": 9.8,
"advisory_ids": [
"GHSA-gcfh-36x4-mgj6"
],
"fixed_version": "5.8.40",
"advisory_count": 1,
"oldest_advisory_days": 302
},
{
"name": "cn.hutool:hutool-http",
"direct": false,
"version": "5.5.1",
"severity": "critical",
"ecosystem": "maven",
"cvss_score": 9.8,
"advisory_ids": [
"GHSA-p7w9-8mxw-p3g7"
],
"fixed_version": "5.7.19",
"advisory_count": 1,
"oldest_advisory_days": 1619
},
{
"name": "cn.hutool:hutool-json",
"direct": false,
"version": "5.5.1",
"severity": "critical",
"ecosystem": "maven",
"cvss_score": 9.8,
"advisory_ids": [
"GHSA-3vqj-43w4-2q58",
"GHSA-7p8c-crfr-q93p",
"GHSA-fxrc-hg6j-6v3x",
"GHSA-rr66-qh5m-w6mx",
"GHSA-rxgf-r843-g53h",
"GHSA-whgh-g24c-3j5q"
],
"fixed_version": "20230227",
"advisory_count": 6,
"oldest_advisory_days": 1319
},
{
"name": "org.springframework:spring-web",
"direct": false,
"version": "5.3.13",
"severity": "critical",
"ecosystem": "maven",
"cvss_score": 9.8,
"advisory_ids": [
"GHSA-2rmj-mq67-h97g",
"GHSA-2wrp-6fg6-hmc5",
"GHSA-4gc7-5j7h-4qph",
"GHSA-4wrc-f8pq-fpqp",
"GHSA-ccgv-vj62-xf9h",
"GHSA-hgjh-9rj2-g67j"
],
"fixed_version": "6.1.14",
"advisory_count": 6,
"oldest_advisory_days": 1522
},
{
"name": "brace-expansion",
"direct": false,
"version": "2.0.1",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-3jxr-9vmj-r5cp",
"GHSA-f886-m6hf-6m8v",
"GHSA-mh99-v99m-4gvg",
"GHSA-v6h2-p8h4-qcjw"
],
"fixed_version": "5.0.8",
"advisory_count": 4,
"oldest_advisory_days": 410
},
{
"name": "com.alibaba:fastjson",
"direct": false,
"version": "1.2.75",
"severity": "high",
"ecosystem": "maven",
"cvss_score": 8.1,
"advisory_ids": [
"GHSA-pv7h-hx5h-mgfj"
],
"fixed_version": "1.2.83",
"advisory_count": 1,
"oldest_advisory_days": 1505
},
{
"name": "com.fasterxml.jackson.core:jackson-databind",
"direct": false,
"version": "2.11.3",
"severity": "high",
"ecosystem": "maven",
"cvss_score": 8.1,
"advisory_ids": [
"GHSA-3wrr-7qpf-2prh",
"GHSA-3x8x-79m2-3w2w",
"GHSA-57j2-w4cx-62h2",
"GHSA-5jmj-h7xm-6q6v",
"GHSA-hgj6-7826-r7m5",
"GHSA-j3rv-43j4-c7qm",
"GHSA-jjjh-jjxp-wpff",
"GHSA-rgv9-q543-rqg4",
"GHSA-rmj7-2vxq-3g9f"
],
"fixed_version": "3.1.4",
"advisory_count": 9,
"oldest_advisory_days": 1596
},
{
"name": "glob",
"direct": false,
"version": "10.4.5",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-5j98-mcp5-4vw2"
],
"fixed_version": "11.1.0",
"advisory_count": 1,
"oldest_advisory_days": 249
},
{
"name": "js-yaml",
"direct": false,
"version": "4.1.0",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-52cp-r559-cp3m",
"GHSA-h67p-54hq-rp68",
"GHSA-mh29-5h37-fv8m"
],
"fixed_version": "4.3.0",
"advisory_count": 3,
"oldest_advisory_days": 252
},
{
"name": "minimatch",
"direct": false,
"version": "9.0.5",
"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": 156
},
{
"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": 147
},
{
"name": "ws",
"direct": false,
"version": "8.18.3",
"severity": "high",
"ecosystem": "npm",
"cvss_score": 7.5,
"advisory_ids": [
"GHSA-58qx-3vcg-4xpx",
"GHSA-96hv-2xvq-fx4p"
],
"fixed_version": "8.21.0",
"advisory_count": 2,
"oldest_advisory_days": 67
},
{
"name": "diff",
"direct": false,
"version": "7.0.0",
"severity": "moderate",
"ecosystem": "npm",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-73rr-hh4g-fpgx"
],
"fixed_version": "8.0.3",
"advisory_count": 1,
"oldest_advisory_days": 191
},
{
"name": "io.ktor:ktor-client-core-jvm",
"direct": false,
"version": "1.6.2",
"severity": "moderate",
"ecosystem": "maven",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-8qv4-773j-c979"
],
"fixed_version": "2.3.13",
"advisory_count": 1,
"oldest_advisory_days": 645
},
{
"name": "org.jetbrains.kotlin:kotlin-stdlib",
"direct": false,
"version": "1.5.20",
"severity": "moderate",
"ecosystem": "maven",
"cvss_score": 5.3,
"advisory_ids": [
"GHSA-2qp4-g3q3-f92w"
],
"fixed_version": "1.6.0",
"advisory_count": 1,
"oldest_advisory_days": 1610
}
],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {
"high": 8,
"critical": 6,
"moderate": 3
},
"advisory_count": 51,
"affected_count": 17,
"assessed_count": 187,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 53,
"direct_affected_count": 0
},
"ecosystems": [
"maven"
],
"dependencies": [],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "cn.hutool:hutool-all",
"direct": false,
"version": "5.5.1",
"ecosystem": "maven"
},
{
"name": "cn.hutool:hutool-aop",
"direct": false,
"version": "5.5.1",
"ecosystem": "maven"
},
{
"name": "cn.hutool:hutool-bloomFilter",
"direct": false,
"version": "5.5.1",
"ecosystem": "maven"
},
{
"name": "cn.hutool:hutool-cache",
"direct": false,
"version": "5.5.1",
"ecosystem": "maven"
},
{
"name": "cn.hutool:hutool-captcha",
"direct": false,
"version": "5.5.1",
"ecosystem": "maven"
},
{
"name": "cn.hutool:hutool-core",
"direct": false,
"version": "5.5.1",
"ecosystem": "maven"
},
{
"name": "cn.hutool:hutool-cron",
"direct": false,
"version": "5.5.1",
"ecosystem": "maven"
},
{
"name": "cn.hutool:hutool-crypto",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "cn.hutool:hutool-crypto",
"direct": false,
"version": "5.5.1",
"ecosystem": "maven"
},
{
"name": "cn.hutool:hutool-db",
"direct": false,
"version": "5.5.1",
"ecosystem": "maven"
},
{
"name": "cn.hutool:hutool-dfa",
"direct": false,
"version": "5.5.1",
"ecosystem": "maven"
},
{
"name": "cn.hutool:hutool-extra",
"direct": false,
"version": "5.5.1",
"ecosystem": "maven"
},
{
"name": "cn.hutool:hutool-http",
"direct": false,
"version": "5.5.1",
"ecosystem": "maven"
},
{
"name": "cn.hutool:hutool-json",
"direct": false,
"version": "5.5.1",
"ecosystem": "maven"
},
{
"name": "cn.hutool:hutool-log",
"direct": false,
"version": "5.5.1",
"ecosystem": "maven"
},
{
"name": "cn.hutool:hutool-poi",
"direct": false,
"version": "5.5.1",
"ecosystem": "maven"
},
{
"name": "cn.hutool:hutool-script",
"direct": false,
"version": "5.5.1",
"ecosystem": "maven"
},
{
"name": "cn.hutool:hutool-setting",
"direct": false,
"version": "5.5.1",
"ecosystem": "maven"
},
{
"name": "cn.hutool:hutool-socket",
"direct": false,
"version": "5.5.1",
"ecosystem": "maven"
},
{
"name": "cn.hutool:hutool-system",
"direct": false,
"version": "5.5.1",
"ecosystem": "maven"
},
{
"name": "com.alibaba:fastjson",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "com.alibaba:fastjson",
"direct": false,
"version": "1.2.75",
"ecosystem": "maven"
},
{
"name": "com.fasterxml.jackson.core:jackson-databind",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "com.fasterxml.jackson.core:jackson-databind",
"direct": false,
"version": "2.11.3",
"ecosystem": "maven"
},
{
"name": "com.fasterxml.jackson.module:jackson-module-kotlin",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "com.fasterxml.jackson.module:jackson-module-kotlin",
"direct": false,
"version": "2.11.4",
"ecosystem": "maven"
},
{
"name": "com.squareup.moshi:moshi",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "com.squareup.moshi:moshi",
"direct": false,
"version": "1.11.0",
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-cio-jvm",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-cio-jvm",
"direct": false,
"version": "1.6.2",
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-core",
"direct": false,
"version": "1.6.2",
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-core-jvm",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-core-jvm",
"direct": false,
"version": "1.6.2",
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-json",
"direct": false,
"version": "1.6.2",
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-json-jvm",
"direct": false,
"version": "1.6.2",
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-okhttp",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-okhttp",
"direct": false,
"version": "1.6.2",
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-serialization",
"direct": false,
"version": "1.6.2",
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-serialization-jvm",
"direct": false,
"version": "1.6.2",
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-client-websockets",
"direct": false,
"version": "1.6.2",
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-server-core",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-server-core",
"direct": false,
"version": "1.6.2",
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-server-jetty",
"direct": false,
"version": "1.6.2",
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-server-netty",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-server-netty",
"direct": false,
"version": "1.6.2",
"ecosystem": "maven"
},
{
"name": "io.ktor:ktor-server-servlet",
"direct": false,
"version": "1.6.2",
"ecosystem": "maven"
},
{
"name": "love.forte.common:configuration",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "love.forte.common:configuration",
"direct": false,
"version": "1.0.7",
"ecosystem": "maven"
},
{
"name": "love.forte.common:ioc",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "love.forte.common:ioc",
"direct": false,
"version": "1.0.7",
"ecosystem": "maven"
},
{
"name": "love.forte.common:language",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "love.forte.common:language",
"direct": false,
"version": "1.0.7",
"ecosystem": "maven"
},
{
"name": "love.forte.common:log",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "love.forte.common:log",
"direct": false,
"version": "1.0.7",
"ecosystem": "maven"
},
{
"name": "love.forte.common:utils",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "love.forte.common:utils",
"direct": false,
"version": "1.0.7",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot.http:client-core",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot.http:client-core",
"direct": false,
"version": "2.3.6",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot.http:client-ktor",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot.http:client-ktor",
"direct": false,
"version": "2.3.6",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot.http:client-restTemplate",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot.http:client-restTemplate",
"direct": false,
"version": "2.3.6",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot.serialization:json-core",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot.serialization:json-core",
"direct": false,
"version": "2.3.6",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot.serialization:json-fastjson",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot.serialization:json-fastjson",
"direct": false,
"version": "2.3.6",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot.serialization:json-jackson",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot.serialization:json-jackson",
"direct": false,
"version": "2.3.6",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot.serialization:json-moshi",
"direct": false,
"version": "2.3.6",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot.serialization:project",
"direct": false,
"version": "2.3.6",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot.time-task:time-task-core",
"direct": false,
"version": "2.3.6",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot.time-task:time-task-quartz",
"direct": false,
"version": "2.3.6",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot:api",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot:api",
"direct": false,
"version": "2.3.6",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot:api-qq",
"direct": false,
"version": "2.3.6",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot:component-ding",
"direct": false,
"version": "2.0.0-RC.2",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot:component-kaiheila-parent",
"direct": false,
"version": "0.0.1-ALPHA.1",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot:component-lovelycat-httpapi",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot:component-lovelycat-httpapi",
"direct": false,
"version": "2.3.6",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot:component-lovelycat-httpapi-spring-boot-starter",
"direct": false,
"version": "2.3.6",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot:component-mirai",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot:component-mirai",
"direct": false,
"version": "2.3.6",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot:component-mirai-spring-boot-starter",
"direct": false,
"version": "2.3.6",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot:core",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot:core",
"direct": false,
"version": "2.3.6",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot:core-spring-boot-starter",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot:core-spring-boot-starter",
"direct": false,
"version": "2.3.6",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot:http-client-ktor",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot:kaiheila-api-v3",
"direct": false,
"version": "0.0.1-ALPHA.1",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot:kaiheila-core",
"direct": false,
"version": "0.0.1-ALPHA.1",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot:serialization-json-fastjson",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robot:spring-boot-starter",
"direct": false,
"version": "2.3.6",
"ecosystem": "maven"
},
{
"name": "love.forte.simple-robotx:plugin-core",
"direct": false,
"version": "2.3.6",
"ecosystem": "maven"
},
{
"name": "love.forte:catcode",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "love.forte:catcode",
"direct": false,
"version": "1.0.0-BETA.1",
"ecosystem": "maven"
},
{
"name": "net.mamoe:mirai-core-jvm",
"direct": false,
"version": "2.8.2",
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-compiler-plugin",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-compiler-plugin",
"direct": false,
"version": "3.7.0",
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-deploy-plugin",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-deploy-plugin",
"direct": false,
"version": "2.8.2",
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-gpg-plugin",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-release-plugin",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-release-plugin",
"direct": false,
"version": "2.5.3",
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-scm-plugin",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-scm-plugin",
"direct": false,
"version": "1.8.1",
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-source-plugin",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-source-plugin",
"direct": false,
"version": "3.0.0",
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-surefire-plugin",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-surefire-plugin",
"direct": false,
"version": "2.22.2",
"ecosystem": "maven"
},
{
"name": "org.jetbrains.dokka:dokka-maven-plugin",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.dokka:dokka-maven-plugin",
"direct": false,
"version": "1.4.32",
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-maven-plugin",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-maven-plugin",
"direct": false,
"version": "1.5.20",
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-maven-serialization",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-reflect",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-reflect",
"direct": false,
"version": "1.5.20",
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-stdlib",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-stdlib",
"direct": false,
"version": "1.5.20",
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-stdlib-common",
"direct": false,
"version": "1.5.20",
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-stdlib-jdk7",
"direct": false,
"version": "1.5.20",
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-stdlib-jdk8",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-stdlib-jdk8",
"direct": false,
"version": "1.5.20",
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-test",
"direct": false,
"version": "1.5.20",
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-test-annotations-common",
"direct": false,
"version": "1.5.20",
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-test-common",
"direct": false,
"version": "1.5.20",
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-test-junit",
"direct": false,
"version": "1.5.20",
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-test-junit5",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlin:kotlin-test-junit5",
"direct": false,
"version": "1.5.20",
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlinx:kotlinx-coroutines-core",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlinx:kotlinx-coroutines-core",
"direct": false,
"version": "1.5.0",
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm",
"direct": false,
"version": "1.5.0",
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlinx:kotlinx-coroutines-jdk8",
"direct": false,
"version": "1.5.0",
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlinx:kotlinx-serialization-json",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlinx:kotlinx-serialization-json",
"direct": false,
"version": "1.2.1",
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlinx:kotlinx-serialization-json-jvm",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.jetbrains.kotlinx:kotlinx-serialization-json-jvm",
"direct": false,
"version": "1.2.1",
"ecosystem": "maven"
},
{
"name": "org.projectlombok:lombok",
"direct": false,
"version": "1.18.12",
"ecosystem": "maven"
},
{
"name": "org.projectlombok:lombok",
"direct": false,
"version": "1.18.22",
"ecosystem": "maven"
},
{
"name": "org.quartz-scheduler:quartz",
"direct": false,
"version": "2.3.2",
"ecosystem": "maven"
},
{
"name": "org.slf4j:slf4j-api",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.slf4j:slf4j-api",
"direct": false,
"version": "1.7.30",
"ecosystem": "maven"
},
{
"name": "org.sonatype.plugins:nexus-staging-maven-plugin",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework.boot:spring-boot-autoconfigure",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework.boot:spring-boot-configuration-processor",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework.boot:spring-boot-maven-plugin",
"direct": false,
"version": "2.5.0",
"ecosystem": "maven"
},
{
"name": "org.springframework.boot:spring-boot-starter-parent",
"direct": false,
"version": "2.3.5",
"ecosystem": "maven"
},
{
"name": "org.springframework.boot:spring-boot-starter-parent",
"direct": false,
"version": "2.5.0",
"ecosystem": "maven"
},
{
"name": "org.springframework.boot:spring-boot-starter-web",
"direct": false,
"version": null,
"ecosystem": "maven"
},
{
"name": "org.springframework:spring-web",
"direct": false,
"version": "5.3.13",
"ecosystem": "maven"
},
{
"name": "@isaacs/cliui",
"direct": false,
"version": "8.0.2",
"ecosystem": "npm"
},
{
"name": "@js-joda/core",
"direct": false,
"version": "3.2.0",
"ecosystem": "npm"
},
{
"name": "@pkgjs/parseargs",
"direct": false,
"version": "0.11.0",
"ecosystem": "npm"
},
{
"name": "ansi-regex",
"direct": false,
"version": "5.0.1",
"ecosystem": "npm"
},
{
"name": "ansi-regex",
"direct": false,
"version": "6.2.2",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "4.3.0",
"ecosystem": "npm"
},
{
"name": "ansi-styles",
"direct": false,
"version": "6.2.3",
"ecosystem": "npm"
},
{
"name": "argparse",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "balanced-match",
"direct": false,
"version": "1.0.2",
"ecosystem": "npm"
},
{
"name": "brace-expansion",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "browser-stdout",
"direct": false,
"version": "1.3.1",
"ecosystem": "npm"
},
{
"name": "buffer-from",
"direct": false,
"version": "1.1.2",
"ecosystem": "npm"
},
{
"name": "camelcase",
"direct": false,
"version": "6.3.0",
"ecosystem": "npm"
},
{
"name": "chalk",
"direct": false,
"version": "4.1.2",
"ecosystem": "npm"
},
{
"name": "chokidar",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "cliui",
"direct": false,
"version": "8.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": "cross-spawn",
"direct": false,
"version": "7.0.6",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "4.3.7",
"ecosystem": "npm"
},
{
"name": "decamelize",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "diff",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "eastasianwidth",
"direct": false,
"version": "0.2.0",
"ecosystem": "npm"
},
{
"name": "emoji-regex",
"direct": false,
"version": "8.0.0",
"ecosystem": "npm"
},
{
"name": "emoji-regex",
"direct": false,
"version": "9.2.2",
"ecosystem": "npm"
},
{
"name": "escalade",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "escape-string-regexp",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "find-up",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "flat",
"direct": false,
"version": "5.0.2",
"ecosystem": "npm"
},
{
"name": "foreground-child",
"direct": false,
"version": "3.3.1",
"ecosystem": "npm"
},
{
"name": "format-util",
"direct": false,
"version": "1.0.5",
"ecosystem": "npm"
},
{
"name": "get-caller-file",
"direct": false,
"version": "2.0.5",
"ecosystem": "npm"
},
{
"name": "glob",
"direct": false,
"version": "10.4.5",
"ecosystem": "npm"
},
{
"name": "has-flag",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "he",
"direct": false,
"version": "1.2.0",
"ecosystem": "npm"
},
{
"name": "is-fullwidth-code-point",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "is-path-inside",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "is-plain-obj",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "is-unicode-supported",
"direct": false,
"version": "0.1.0",
"ecosystem": "npm"
},
{
"name": "isexe",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "jackspeak",
"direct": false,
"version": "3.4.3",
"ecosystem": "npm"
},
{
"name": "js-yaml",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "kotlin-web-helpers",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "libsodium-sumo",
"direct": false,
"version": "0.7.16",
"ecosystem": "npm"
},
{
"name": "libsodium-wrappers-sumo",
"direct": false,
"version": "0.7.13",
"ecosystem": "npm"
},
{
"name": "locate-path",
"direct": false,
"version": "6.0.0",
"ecosystem": "npm"
},
{
"name": "log-symbols",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "lru-cache",
"direct": false,
"version": "10.4.3",
"ecosystem": "npm"
},
{
"name": "minimatch",
"direct": false,
"version": "9.0.5",
"ecosystem": "npm"
},
{
"name": "minipass",
"direct": false,
"version": "7.1.2",
"ecosystem": "npm"
},
{
"name": "mocha",
"direct": false,
"version": "11.7.5",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "p-limit",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "p-locate",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "package-json-from-dist",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "path-exists",
"direct": false,
"version": "4.0.0",
"ecosystem": "npm"
},
{
"name": "path-key",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "path-scurry",
"direct": false,
"version": "1.11.1",
"ecosystem": "npm"
},
{
"name": "picocolors",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "randombytes",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "readdirp",
"direct": false,
"version": "4.1.2",
"ecosystem": "npm"
},
{
"name": "require-directory",
"direct": false,
"version": "2.1.1",
"ecosystem": "npm"
},
{
"name": "safe-buffer",
"direct": false,
"version": "5.2.1",
"ecosystem": "npm"
},
{
"name": "serialize-javascript",
"direct": false,
"version": "6.0.2",
"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": "signal-exit",
"direct": false,
"version": "4.1.0",
"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": "string-width",
"direct": false,
"version": "5.1.2",
"ecosystem": "npm"
},
{
"name": "string-width-cjs",
"direct": false,
"version": "4.2.3",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "strip-ansi",
"direct": false,
"version": "7.1.2",
"ecosystem": "npm"
},
{
"name": "strip-ansi-cjs",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "strip-json-comments",
"direct": false,
"version": "3.1.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": "which",
"direct": false,
"version": "2.0.2",
"ecosystem": "npm"
},
{
"name": "workerpool",
"direct": false,
"version": "9.3.4",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "wrap-ansi",
"direct": false,
"version": "8.1.0",
"ecosystem": "npm"
},
{
"name": "wrap-ansi-cjs",
"direct": false,
"version": "7.0.0",
"ecosystem": "npm"
},
{
"name": "ws",
"direct": false,
"version": "8.18.3",
"ecosystem": "npm"
},
{
"name": "y18n",
"direct": false,
"version": "5.0.8",
"ecosystem": "npm"
},
{
"name": "yargs",
"direct": false,
"version": "17.7.2",
"ecosystem": "npm"
},
{
"name": "yargs-parser",
"direct": false,
"version": "21.1.1",
"ecosystem": "npm"
},
{
"name": "yargs-unparser",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "yocto-queue",
"direct": false,
"version": "0.1.0",
"ecosystem": "npm"
}
],
"collected": true,
"truncated": false,
"total_count": 240,
"direct_count": 0,
"indirect_count": 240
}
},
"maintainership": {
"issues": {
"open_prs": 22,
"merged_prs": 528,
"open_issues": 14,
"closed_ratio": 0.966,
"closed_issues": 393,
"closed_unmerged_prs": 196
},
"bus_factor": 1,
"bot_contributors": 1,
"top_contributors": [
{
"type": "User",
"login": "ForteScarlet",
"commits": 2589,
"avatar_url": "https://avatars.githubusercontent.com/u/40045247?v=4"
},
{
"type": "User",
"login": "ForliyScarlet",
"commits": 111,
"avatar_url": "https://avatars.githubusercontent.com/u/101406343?v=4"
},
{
"type": "User",
"login": "LightQuanta",
"commits": 1,
"avatar_url": "https://avatars.githubusercontent.com/u/18213217?v=4"
}
],
"contributors_sampled": 3,
"top_contributor_share": 0.959
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"issue-handle.yml",
"issue-waiting-report.yml",
"publish-release.yml",
"publish-snapshot.yml",
"publish-v4-kdoc.yml",
"publish-v5-kdoc.yml",
"qodana_code_quality.yml",
"test-branch.yml",
"timeout-issue.yml"
],
"has_docs_dir": true,
"linter_configs": [],
"has_editorconfig": true,
"has_linter_config": false,
"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": null,
"reason": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": 10,
"reason": "13 out of 13 merged PRs checked by a CI test -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 10,
"reason": "all changesets reviewed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#code-review"
},
{
"name": "Contributors",
"score": 3,
"reason": "project has 1 contributing companies or organizations -- score normalized to 3",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#contributors"
},
{
"name": "Dangerous-Workflow",
"score": 0,
"reason": "dangerous workflow patterns detected",
"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": 10,
"reason": "30 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 10",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": 10,
"reason": "packaging workflow detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 0,
"reason": "dependency not pinned by hash detected -- score normalized to 0",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#pinned-dependencies"
},
{
"name": "SAST",
"score": 10,
"reason": "SAST tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 0,
"reason": "security policy file not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": null,
"reason": "no releases found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#signed-releases"
},
{
"name": "Token-Permissions",
"score": 0,
"reason": "detected GitHub workflow tokens with excessive permissions",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#token-permissions"
},
{
"name": "Vulnerabilities",
"score": 0,
"reason": "16 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "2c57c4dac06ce4ea0af3a9693bc0d4aa14180f9e",
"ran_at": "2026-07-25T04:10:41Z",
"aggregate_score": 5.1,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": true
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-25T01:16:19Z",
"oldest_open_prs": [
{
"number": 1171,
"created_at": "2026-06-25T01:39:11Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1175,
"created_at": "2026-06-25T01:39:52Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1182,
"created_at": "2026-06-25T01:41:20Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1183,
"created_at": "2026-06-25T01:41:24Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1194,
"created_at": "2026-06-27T19:02:27Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1195,
"created_at": "2026-06-27T19:02:32Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1196,
"created_at": "2026-06-27T19:02:37Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1197,
"created_at": "2026-06-27T19:02:56Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1198,
"created_at": "2026-06-27T19:03:01Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1199,
"created_at": "2026-06-27T19:03:10Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1200,
"created_at": "2026-06-27T19:03:17Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1202,
"created_at": "2026-06-27T19:04:19Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1203,
"created_at": "2026-06-27T19:04:29Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1205,
"created_at": "2026-07-04T19:02:32Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1206,
"created_at": "2026-07-04T19:02:43Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1208,
"created_at": "2026-07-11T19:02:32Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1209,
"created_at": "2026-07-11T19:02:41Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1212,
"created_at": "2026-07-18T19:02:38Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1213,
"created_at": "2026-07-18T19:09:06Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1214,
"created_at": "2026-07-18T19:09:17Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2026-07-14T14:11:51Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": [
{
"number": 22,
"created_at": "2020-12-20T10:49:43Z",
"last_comment_at": "2025-09-16T05:21:49Z",
"last_comment_author": "ForteScarlet"
},
{
"number": 23,
"created_at": "2020-12-20T10:50:53Z",
"last_comment_at": "2024-02-20T10:26:28Z",
"last_comment_author": "ForteScarlet"
},
{
"number": 61,
"created_at": "2021-01-21T09:44:14Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 480,
"created_at": "2022-10-20T09:06:47Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 621,
"created_at": "2023-03-14T10:18:59Z",
"last_comment_at": "2024-02-25T12:43:26Z",
"last_comment_author": "ForteScarlet"
},
{
"number": 756,
"created_at": "2024-01-26T18:18:55Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 806,
"created_at": "2024-03-06T21:17:37Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 872,
"created_at": "2024-07-09T16:45:54Z",
"last_comment_at": "2024-07-11T09:48:11Z",
"last_comment_author": "ForteScarlet"
},
{
"number": 884,
"created_at": "2024-07-18T10:03:43Z",
"last_comment_at": "2024-07-18T10:31:20Z",
"last_comment_author": "Flock-YT"
},
{
"number": 950,
"created_at": "2024-10-10T14:15:30Z",
"last_comment_at": "2025-09-17T08:14:21Z",
"last_comment_author": "ForteScarlet"
},
{
"number": 1047,
"created_at": "2025-04-18T07:20:34Z",
"last_comment_at": "2025-04-18T12:15:28Z",
"last_comment_author": "NoMathExpectation"
},
{
"number": 1134,
"created_at": "2025-12-27T08:20:37Z",
"last_comment_at": "2026-06-23T12:48:57Z",
"last_comment_author": "ForteScarlet"
},
{
"number": 1155,
"created_at": "2026-04-16T09:34:14Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 1161,
"created_at": "2026-05-19T14:56:52Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/simple-robot/simpler-robot",
"host": "github.com",
"name": "simpler-robot",
"owner": "simple-robot"
},
"metrics": {
"overall": {
"key": "overall",
"band": "good",
"name": "Overall health",
"note": null,
"notes": [],
"value": 71,
"inputs": {
"security": 61,
"vitality": 84,
"community": 73,
"governance": 54,
"engineering": 84
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 84,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 79,
"inputs": {
"commits_last_year": 153,
"human_commit_share": 0.9,
"days_since_last_push": 6,
"active_weeks_last_year": 22
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 6 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 6
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "22/52 weeks with commits",
"points": 15.2,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 22
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "153 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 153
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 10",
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 92,
"inputs": {
"releases_count": 100,
"latest_release_tag": "v5.0.0-Preview4",
"releases_from_tags": false,
"days_since_latest_release": 10,
"mean_days_between_releases": 56.2
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "100 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 100
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 10 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 10
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~56.2 days",
"points": 19.8,
"status": "partial",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 56.2
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 10
}
]
},
{
"key": "abandonment",
"band": "excellent",
"name": "Abandonment",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"cap": null,
"state": "maintained",
"guards": [],
"signals": [],
"red_flag": false,
"multiplier_pct": 100,
"declared_reason": null,
"unverified_reason": null,
"unanswered_open_prs": null,
"unanswered_open_issues": null,
"days_since_last_merged_pr": null,
"days_since_last_human_commit": 10,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 10 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 10
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "good",
"name": "Community & Adoption",
"value": 73,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "moderate",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 62,
"inputs": {
"forks": 45,
"stars": 562,
"watchers": 5,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "562 stars",
"points": 44.6,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 562
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "45 forks",
"points": 13.7,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 45
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "5 watchers",
"points": 3.3,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 5
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "excellent",
"name": "Community health",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"has_issue_template": false,
"has_code_of_conduct": true,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (LGPL-3.0)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "LGPL-3.0"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 13.5,
"status": "met",
"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": 0,
"status": "missed",
"details": [],
"max_points": 6.3
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "moderate",
"name": "Sustainability & Governance",
"value": 54,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 17,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 3,
"top_contributor_share": 0.959
},
"components": [
{
"key": "bus_factor",
"name": "Bus factor",
"detail": "1 contributor(s) cover half of all commits",
"points": 9,
"status": "partial",
"details": [
{
"code": "bus_factor",
"params": {
"count": 1
}
}
],
"max_points": 54
},
{
"key": "commit_distribution",
"name": "Commit distribution",
"detail": "top contributor authored 96% of commits",
"points": 0.9,
"status": "partial",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 96
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "3 contributors",
"points": 4.1,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 3
}
}
],
"max_points": 13.5
},
{
"key": "openssf_scorecard_contributors",
"name": "OpenSSF Scorecard: Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 3,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "excellent",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 88,
"inputs": {
"merged_prs": 528,
"open_issues": 14,
"closed_issues": 393,
"issue_closed_ratio": 0.966,
"closed_unmerged_prs": 196
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "97% of issues closed",
"points": 45.2,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 97
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "528/724 decided PRs merged",
"points": 27.9,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 528,
"decided": 724
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "all changesets reviewed",
"points": 15,
"status": "met",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": null,
"notes": [],
"value": 64,
"inputs": {
"followers": 66,
"owner_type": "Organization",
"is_verified": null,
"owner_login": "simple-robot",
"public_repos": 26,
"account_age_days": 2004
},
"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": "66 followers of simple-robot",
"points": 13.1,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 66,
"login": "simple-robot"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "26 public repos, account ~5 yr old",
"points": 21.4,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 26
}
},
{
"code": "account_age_years",
"params": {
"years": 5
}
}
],
"max_points": 25
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 84,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": null,
"notes": [],
"value": 74,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": true,
"has_linter_config": false,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "9 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 9
}
}
],
"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": null,
"points": 0,
"status": "missed",
"details": [],
"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": "13 out of 13 merged PRs checked by a CI test -- score normalized to 10",
"points": 20,
"status": "met",
"details": [],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"topics": [
"simbot",
"simple-robot",
"bot",
"qqbot",
"kook-bot",
"qq-bot",
"qq-guild-bot",
"java",
"kotlin",
"bot-framework",
"kotlin-coroutines",
"kotlin-multiplatform",
"telegram-bot"
],
"has_wiki": true,
"homepage": "https://simbot.forte.love",
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://simbot.forte.love",
"points": 15,
"status": "met",
"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": "13 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 13
}
}
],
"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": 61,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "moderate",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): Branch-Protection, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"branch_protection",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 51,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 16,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 2,
"scorecard_aggregate": 5.1
},
"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": "internal error: error during branchesHandler.setup: internal error: some github tokens can't read classic branch protection rules: https://github.com/ossf/scorecard-action/blob/main/docs/authentication/fine-grained-auth-token.md",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "13 out of 13 merged PRs checked by a CI test -- score normalized to 10",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "all changesets reviewed",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "contributors",
"name": "Contributors",
"detail": "project has 1 contributing companies or organizations -- score normalized to 3",
"points": 0.8,
"status": "partial",
"details": [],
"max_points": 2.5
},
{
"key": "dangerous_workflow",
"name": "Dangerous-Workflow",
"detail": "dangerous workflow patterns detected",
"points": 0,
"status": "missed",
"details": [],
"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": "30 commit(s) and 3 issue activity found in the last 90 days -- score normalized to 10",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "SAST tool detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "16 existing vulnerabilities detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "dependency_advisories",
"band": "excellent",
"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 187 resolved dependencies against OSV; 53 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": 187
}
},
{
"code": "advisories_unassessed",
"params": {
"count": 53
}
},
{
"code": "advisories_repo_graph_caveat",
"params": {}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 51,
"affected_packages": 17,
"assessed_packages": 187,
"unassessed_packages": 53,
"affected_by_severity": "critical 6, high 8, moderate 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": "excellent",
"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": 187,
"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": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 5
},
"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": 60,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "at_risk",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.922,
"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": "83 of 90 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 83,
"sampled": 90
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 68,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"yarn.lock"
],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [],
"has_devcontainer": false,
"has_linter_config": false,
"typecheck_configs": [],
"agent_commit_share": 0.02,
"toolchain_manifests": [
"benchmarks/v4-v3-core-benchmark/build.gradle.kts",
"build-logic/build.gradle.kts",
"build-logic/conventions/build.gradle.kts",
"build-logic/shared/build.gradle.kts",
"build.gradle.kts",
"internal-processors/build.gradle.kts",
"internal-processors/interface-uml-processor/build.gradle.kts",
"internal-processors/kook-api-reader/build.gradle.kts",
"internal-processors/kook-message-element-processor/build.gradle.kts",
"internal-processors/onebot-event-type-resolver-processor/build.gradle.kts",
"internal-processors/onebot-include-component-message-elements-processor/build.gradle.kts",
"internal-processors/qq-api-reader/build.gradle.kts",
"internal-processors/qq-dispatch-serializer-processor/build.gradle.kts",
"internal-processors/qq-intents-processor/build.gradle.kts",
"samples/build.gradle.kts",
"samples/qq-webhook-server-ktor/build.gradle.kts",
"samples/qq-webhook-server-spring-webflux/build.gradle.kts",
"samples/qq-webhook-server-spring/build.gradle.kts",
"simbot-api/build.gradle.kts",
"simbot-commons/build.gradle.kts",
"simbot-commons/simbot-common-annotations/build.gradle.kts",
"simbot-commons/simbot-common-apidefinition/build.gradle.kts",
"simbot-commons/simbot-common-atomic/build.gradle.kts",
"simbot-commons/simbot-common-collection/build.gradle.kts",
"simbot-commons/simbot-common-core/build.gradle.kts",
"simbot-commons/simbot-common-ktor-inputfile/build.gradle.kts",
"simbot-commons/simbot-common-stage-loop/build.gradle.kts",
"simbot-commons/simbot-common-streamable/build.gradle.kts",
"simbot-commons/simbot-common-suspend-runner/build.gradle.kts",
"simbot-commons/simbot-common-time/build.gradle.kts",
"simbot-component-kook/build.gradle.kts",
"simbot-component-kook/simbot-component-kook-api/build.gradle.kts",
"simbot-component-kook/simbot-component-kook-core/build.gradle.kts",
"simbot-component-kook/simbot-component-kook-stdlib/build.gradle.kts",
"simbot-component-onebot/build.gradle.kts",
"simbot-component-onebot/simbot-component-onebot-common/build.gradle.kts",
"simbot-component-onebot/simbot-component-onebot-v11/simbot-component-onebot-v11-common/build.gradle.kts",
"simbot-component-onebot/simbot-component-onebot-v11/simbot-component-onebot-v11-core/build.gradle.kts",
"simbot-component-onebot/simbot-component-onebot-v11/simbot-component-onebot-v11-event/build.gradle.kts",
"simbot-component-onebot/simbot-component-onebot-v11/simbot-component-onebot-v11-message/build.gradle.kts",
"simbot-component-qq/build.gradle.kts",
"simbot-component-qq/simbot-component-qq-guild-api/build.gradle.kts",
"simbot-component-qq/simbot-component-qq-guild-core/build.gradle.kts",
"simbot-component-qq/simbot-component-qq-guild-internal-ed25519/build.gradle.kts",
"simbot-component-qq/simbot-component-qq-guild-stdlib/build.gradle.kts",
"simbot-cores/simbot-core-spring-boot-starter-common/build.gradle.kts",
"simbot-cores/simbot-core-spring-boot-starter-v2/build.gradle.kts",
"simbot-cores/simbot-core-spring-boot-starter/build.gradle.kts",
"simbot-cores/simbot-core/build.gradle.kts",
"simbot-extensions/build.gradle.kts",
"simbot-extensions/simbot-extension-continuous-session/build.gradle.kts",
"simbot-gradles/build.gradle.kts",
"simbot-gradles/simbot-gradle-plugin/build.gradle.kts",
"simbot-gradles/simbot-gradle-suspendtransforms/build.gradle.kts",
"simbot-logger-slf4j2-impl/build.gradle.kts",
"simbot-logger/build.gradle.kts",
"simbot-processors/build.gradle.kts",
"simbot-processors/class-builder/simbot-processor-class-builder-annotation/build.gradle.kts",
"simbot-processors/class-builder/simbot-processor-class-builder-test/build.gradle.kts",
"simbot-processors/class-builder/simbot-processor-class-builder/build.gradle.kts",
"simbot-processors/simbot-processor-message-element-polymorphic-include/build.gradle.kts",
"simbot-quantcat/build.gradle.kts",
"simbot-quantcat/simbot-quantcat-annotations/build.gradle.kts",
"simbot-quantcat/simbot-quantcat-common/build.gradle.kts",
"simbot-test/build.gradle.kts",
"tests/spring-boot-starter-test/build.gradle.kts"
],
"dependency_bot_commit_share": 0.1
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "benchmarks/v4-v3-core-benchmark/build.gradle.kts, build-logic/build.gradle.kts, build-logic/conventions/build.gradle.kts (toolchain convention, no task runner)",
"points": 12.6,
"status": "partial",
"details": [
{
"code": "toolchain_convention",
"params": {
"files": "benchmarks/v4-v3-core-benchmark/build.gradle.kts, build-logic/build.gradle.kts, build-logic/conventions/build.gradle.kts"
}
}
],
"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": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "Kotlin (statically typed)",
"points": 11,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Kotlin"
}
}
],
"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": "2 of the last 100 commits agent-authored or agent-credited",
"points": 4,
"status": "partial",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 2,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "10 of the last 100 commits are automated dependency updates",
"points": 8,
"status": "met",
"details": [
{
"code": "dependency_bot_commits",
"params": {
"count": 10,
"sampled": 100
}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "ai_code_legibility",
"band": "excellent",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"primary_language": "Kotlin",
"largest_source_bytes": 44064,
"source_files_sampled": 1377,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Kotlin (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Kotlin"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/1377 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 1377,
"oversized": 0
}
}
],
"max_points": 55
}
]
},
{
"key": "ai_interfaces",
"band": "at_risk",
"name": "Machine-readable interfaces",
"note": null,
"notes": [],
"value": 40,
"inputs": {
"example_dirs": [
"example",
"samples"
],
"has_mcp_signal": false,
"api_schema_files": []
},
"components": [
{
"key": "api_schema_openapi_graphql_proto",
"name": "API schema (OpenAPI/GraphQL/proto)",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 40
},
{
"key": "mcp_server",
"name": "MCP server",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 20
},
{
"key": "runnable_examples",
"name": "Runnable examples",
"detail": "example, samples",
"points": 40,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "example, samples"
}
}
],
"max_points": 40
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token"
],
"report_type": "repository",
"generated_at": "2026-07-25T04:10:59.560357Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/s/simple-robot/simpler-robot.svg",
"full_name": "simple-robot/simpler-robot",
"license_state": "standard",
"license_spdx": "LGPL-3.0"
}