Informe JSON sin procesar legible por máquina
{
"data": {
"repo": {
"topics": [
"mysql",
"redis",
"config",
"mongodb",
"elasticsearch",
"http",
"etcd",
"grpc"
],
"is_fork": false,
"size_kb": 37004,
"has_wiki": true,
"homepage": "https://github.com/abulo/layout",
"languages": {
"Go": 1694465,
"Shell": 4351,
"Makefile": 2430
},
"pushed_at": "2026-07-17T14:49:24Z",
"created_at": "2020-08-06T06:19:02Z",
"owner_type": "User",
"updated_at": "2026-07-17T14:49:50Z",
"description": "Go微服务",
"is_archived": false,
"is_disabled": false,
"license_spdx": "Apache-2.0",
"default_branch": "v3",
"license_spdx_raw": "Apache-2.0",
"primary_language": "Go",
"significant_languages": [
"Go"
]
},
"owner": {
"blog": null,
"name": "Captain",
"type": "User",
"login": "abulo",
"company": "Community",
"location": "127.0.0.1",
"followers": 24,
"avatar_url": "https://avatars.githubusercontent.com/u/1535443?v=4",
"created_at": "2012-03-14T05:12:16Z",
"is_verified": null,
"public_repos": 18,
"account_age_days": 5243
},
"license": {
"state": "standard",
"spdx_id": "Apache-2.0",
"raw_spdx": "Apache-2.0",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "v3.8.51",
"kind": "patch",
"published_at": "2026-07-17T14:49:48Z"
},
{
"tag": "v3.8.50",
"kind": "patch",
"published_at": "2026-06-25T13:14:10Z"
},
{
"tag": "v3.8.49",
"kind": "patch",
"published_at": "2026-03-11T15:48:17Z"
},
{
"tag": "v3.8.48",
"kind": "patch",
"published_at": "2026-01-17T05:38:10Z"
},
{
"tag": "v3.8.47",
"kind": "patch",
"published_at": "2025-12-31T00:57:50Z"
},
{
"tag": "v3.8.46",
"kind": "patch",
"published_at": "2025-12-16T23:41:46Z"
},
{
"tag": "v3.8.45",
"kind": "patch",
"published_at": "2025-11-30T13:04:09Z"
},
{
"tag": "v3.8.44",
"kind": "patch",
"published_at": "2025-11-18T14:31:55Z"
},
{
"tag": "v3.8.43",
"kind": "patch",
"published_at": "2025-07-20T02:53:29Z"
},
{
"tag": "v3.8.42",
"kind": "patch",
"published_at": "2025-07-16T08:30:54Z"
},
{
"tag": "v3.8.41",
"kind": "patch",
"published_at": "2025-07-10T13:08:37Z"
},
{
"tag": "v3.8.40",
"kind": "patch",
"published_at": "2025-07-07T00:55:42Z"
},
{
"tag": "v3.8.39",
"kind": "patch",
"published_at": "2025-06-25T13:58:39Z"
},
{
"tag": "v3.8.38",
"kind": "patch",
"published_at": "2025-06-24T12:45:13Z"
},
{
"tag": "v3.8.37",
"kind": "patch",
"published_at": "2025-06-20T00:52:52Z"
},
{
"tag": "v3.8.36",
"kind": "patch",
"published_at": "2025-06-11T05:17:43Z"
},
{
"tag": "v3.8.35",
"kind": "patch",
"published_at": "2025-06-08T08:29:57Z"
},
{
"tag": "v3.8.34",
"kind": "patch",
"published_at": "2025-06-03T11:38:12Z"
},
{
"tag": "v3.8.33",
"kind": "patch",
"published_at": "2025-05-29T07:26:48Z"
},
{
"tag": "v3.8.32",
"kind": "patch",
"published_at": "2025-05-22T10:30:21Z"
},
{
"tag": "v3.8.31",
"kind": "patch",
"published_at": "2025-05-15T07:42:06Z"
},
{
"tag": "v3.8.30",
"kind": "patch",
"published_at": "2025-05-09T09:23:12Z"
},
{
"tag": "v3.8.29",
"kind": "patch",
"published_at": "2025-04-26T00:45:43Z"
},
{
"tag": "v3.8.28",
"kind": "patch",
"published_at": "2025-04-15T02:53:44Z"
},
{
"tag": "v3.8.27",
"kind": "patch",
"published_at": "2025-04-13T14:51:39Z"
},
{
"tag": "v3.8.26",
"kind": "patch",
"published_at": "2025-03-25T14:30:34Z"
},
{
"tag": "v3.8.23",
"kind": "patch",
"published_at": "2025-03-17T15:56:28Z"
},
{
"tag": "v3.8.22",
"kind": "patch",
"published_at": "2025-03-09T05:25:33Z"
},
{
"tag": "v3.8.21",
"kind": "patch",
"published_at": "2025-03-04T13:30:11Z"
},
{
"tag": "v3.8.20",
"kind": "patch",
"published_at": "2025-02-26T01:06:41Z"
},
{
"tag": "v3.8.19",
"kind": "patch",
"published_at": "2025-02-22T16:38:48Z"
},
{
"tag": "v3.8.18",
"kind": "patch",
"published_at": "2025-02-15T03:21:19Z"
},
{
"tag": "v3.8.17",
"kind": "patch",
"published_at": "2025-02-07T08:49:55Z"
},
{
"tag": "v3.8.16",
"kind": "patch",
"published_at": "2025-01-21T00:43:00Z"
},
{
"tag": "v3.8.15",
"kind": "patch",
"published_at": "2024-12-31T06:10:31Z"
},
{
"tag": "v3.8.14",
"kind": "patch",
"published_at": "2024-12-24T04:14:18Z"
},
{
"tag": "v3.8.13",
"kind": "patch",
"published_at": "2024-12-07T07:57:12Z"
},
{
"tag": "v3.8.12",
"kind": "patch",
"published_at": "2024-11-18T03:36:42Z"
},
{
"tag": "v3.8.11",
"kind": "patch",
"published_at": "2024-10-17T14:40:39Z"
},
{
"tag": "v3.8.10",
"kind": "patch",
"published_at": "2024-10-14T13:03:12Z"
},
{
"tag": "v3.8.8",
"kind": "patch",
"published_at": "2024-10-01T12:52:53Z"
},
{
"tag": "v3.8.7",
"kind": "patch",
"published_at": "2024-09-25T12:45:41Z"
},
{
"tag": "v3.8.6",
"kind": "patch",
"published_at": "2024-08-29T15:40:25Z"
},
{
"tag": "v3.8.5",
"kind": "patch",
"published_at": "2024-08-14T05:54:54Z"
},
{
"tag": "v3.8.4",
"kind": "patch",
"published_at": "2024-08-14T05:26:59Z"
},
{
"tag": "v3.8.3",
"kind": "patch",
"published_at": "2024-08-09T15:51:47Z"
},
{
"tag": "v3.8.2",
"kind": "patch",
"published_at": "2024-07-31T06:55:06Z"
},
{
"tag": "v3.8.0",
"kind": "minor",
"published_at": "2024-07-30T07:06:54Z"
},
{
"tag": "v3.7.30",
"kind": "patch",
"published_at": "2024-07-27T15:15:10Z"
},
{
"tag": "v3.7.29",
"kind": "patch",
"published_at": "2024-07-11T07:56:00Z"
},
{
"tag": "v3.7.28",
"kind": "patch",
"published_at": "2024-07-03T02:29:52Z"
},
{
"tag": "v3.7.27",
"kind": "patch",
"published_at": "2024-06-29T14:15:07Z"
},
{
"tag": "v3.7.26",
"kind": "patch",
"published_at": "2024-06-24T09:54:47Z"
},
{
"tag": "v3.7.25",
"kind": "patch",
"published_at": "2024-06-13T02:04:03Z"
},
{
"tag": "v3.7.24",
"kind": "patch",
"published_at": "2024-06-05T15:48:37Z"
},
{
"tag": "v3.7.23",
"kind": "patch",
"published_at": "2024-06-03T08:39:28Z"
},
{
"tag": "v3.7.22",
"kind": "patch",
"published_at": "2024-05-31T14:25:27Z"
},
{
"tag": "v3.7.21",
"kind": "patch",
"published_at": "2024-05-27T11:40:15Z"
},
{
"tag": "v3.7.20",
"kind": "patch",
"published_at": "2024-05-15T03:07:58Z"
},
{
"tag": "v3.7.19",
"kind": "patch",
"published_at": "2024-05-14T10:51:41Z"
},
{
"tag": "v3.7.18",
"kind": "patch",
"published_at": "2024-05-08T01:16:34Z"
},
{
"tag": "v3.7.16",
"kind": "patch",
"published_at": "2024-04-26T02:26:36Z"
},
{
"tag": "v3.7.13",
"kind": "patch",
"published_at": "2024-04-09T09:40:28Z"
},
{
"tag": "v3.7.12",
"kind": "patch",
"published_at": "2024-04-05T07:35:04Z"
},
{
"tag": "v3.7.9",
"kind": "patch",
"published_at": "2024-03-22T07:08:32Z"
},
{
"tag": "v3.7.8",
"kind": "patch",
"published_at": "2024-03-16T05:59:09Z"
},
{
"tag": "v3.7.7",
"kind": "patch",
"published_at": "2024-03-10T15:34:07Z"
},
{
"tag": "v3.7.4",
"kind": "patch",
"published_at": "2024-02-19T06:16:53Z"
},
{
"tag": "v3.7.2",
"kind": "patch",
"published_at": "2024-02-07T02:57:48Z"
},
{
"tag": "v3.6.18",
"kind": "patch",
"published_at": "2023-11-09T02:14:50Z"
},
{
"tag": "v3.6.17",
"kind": "patch",
"published_at": "2023-10-31T14:43:08Z"
},
{
"tag": "v3.6.15",
"kind": "patch",
"published_at": "2023-10-13T01:25:29Z"
},
{
"tag": "v3.6.14",
"kind": "patch",
"published_at": "2023-09-26T03:06:28Z"
},
{
"tag": "v3.6.11",
"kind": "patch",
"published_at": "2023-09-10T02:51:29Z"
},
{
"tag": "v3.6.10",
"kind": "patch",
"published_at": "2023-09-05T14:34:22Z"
},
{
"tag": "v3.6.9",
"kind": "patch",
"published_at": "2023-08-29T01:48:13Z"
},
{
"tag": "v3.6.8",
"kind": "patch",
"published_at": "2023-08-22T13:27:08Z"
},
{
"tag": "v3.6.7",
"kind": "patch",
"published_at": "2023-08-09T07:10:54Z"
},
{
"tag": "v3.6.5",
"kind": "patch",
"published_at": "2023-07-12T10:43:03Z"
},
{
"tag": "v3.6.4",
"kind": "patch",
"published_at": "2023-06-09T08:41:03Z"
},
{
"tag": "v3.6.1",
"kind": "patch",
"published_at": "2023-05-04T15:46:17Z"
},
{
"tag": "v3.6.0",
"kind": "minor",
"published_at": "2023-04-20T08:40:15Z"
},
{
"tag": "v3.5.4",
"kind": "patch",
"published_at": "2023-04-03T14:09:02Z"
},
{
"tag": "v3.5.3",
"kind": "patch",
"published_at": "2023-03-22T02:39:20Z"
},
{
"tag": "v3.5.1",
"kind": "patch",
"published_at": "2023-03-15T16:10:01Z"
},
{
"tag": "v3.5.0",
"kind": "minor",
"published_at": "2023-03-15T08:59:25Z"
},
{
"tag": "v3.4.9",
"kind": "patch",
"published_at": "2023-03-14T09:14:04Z"
},
{
"tag": "v3.4.7",
"kind": "patch",
"published_at": "2023-03-14T05:16:55Z"
},
{
"tag": "v3.4.4",
"kind": "patch",
"published_at": "2023-03-14T02:28:44Z"
},
{
"tag": "v3.4.0",
"kind": "minor",
"published_at": "2023-02-28T16:18:21Z"
},
{
"tag": "v3.3.6",
"kind": "patch",
"published_at": "2023-02-22T06:44:20Z"
},
{
"tag": "v3.3.4",
"kind": "patch",
"published_at": "2023-02-14T14:11:34Z"
},
{
"tag": "v3.3.1",
"kind": "patch",
"published_at": "2023-02-14T07:20:37Z"
},
{
"tag": "toolkit/v3.2.42",
"kind": "other",
"published_at": "2023-02-10T08:31:31Z"
},
{
"tag": "v3.2.42",
"kind": "patch",
"published_at": "2023-02-10T08:31:18Z"
},
{
"tag": "toolkit/v3.2.41",
"kind": "other",
"published_at": "2023-02-10T05:36:59Z"
},
{
"tag": "v3.2.41",
"kind": "patch",
"published_at": "2023-02-10T05:37:17Z"
},
{
"tag": "v3.2.40",
"kind": "patch",
"published_at": "2023-02-10T03:30:28Z"
},
{
"tag": "v3.2.38",
"kind": "patch",
"published_at": "2023-02-09T12:23:52Z"
},
{
"tag": "v3.2.37",
"kind": "patch",
"published_at": "2023-02-09T08:56:35Z"
}
],
"recent_commits": [
{
"oid": "4e599709b208ea1760b6eb2a53faca01e4dcf898",
"body": "更新了多个第三方依赖包到最新版本,包括:\n- ratelVersion 从 v3.8.50 升级到 v3.8.51\n- github.com/pkg/sftp 从 v1.13.10 升级到 v1.13.11\n- go.etcd.io/etcd 相关包从 v3.6.13 升级到 v3.7.0\n- golang.org/x 系列包升级到最新版本\n- google.golang.org/grpc 从 v1.82.0 升级到 v1.82.1\n- 其他间接依赖包也同步更新到最新版本",
"is_bot": false,
"headline": "chore(deps): 更新依赖包版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2026-07-17T14:48:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8c1a72987823001dd50e47ac538d3a1c3796adfb",
"body": null,
"is_bot": false,
"headline": "chore(deps): 更新etcd和grpc依赖版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2026-07-02T08:25:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9826a6d4ca59f8ae2b44eb3f06485748cf398760",
"body": "更新了多个第三方库的版本,包括:\n- github.com/cloudwego/hertz 从 v0.10.4 到 v0.10.5\n- github.com/jlaffaye/ftp 从 v0.2.0 到 v0.2.1\n- github.com/redis/go-redis 相关包从 v9.20.0 到 v9.21.0\n- golang.org/x 系列包多个版本更新\n- gorm.io/gorm 从 v1.31.1 到 v1.31.2\n- github.com/bytedance 和 github.com/cloudwego 相关包版本更新\n- 移除了 github.com/hashicorp/errwrap 和 github.com/hashicorp/go-multierror 依赖",
"is_bot": false,
"headline": "chore(deps): 更新项目依赖版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2026-06-25T13:10:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d09d03e291d4a0ac1159e4ba1e201b2c6f41af58",
"body": "- 添加完整的目录结构导航\n- 详细介绍 Ratel 框架的核心特性、设计理念和快速开始指南\n- 完善架构组件说明,包括 Server 层、Client 层、Core 核心层、Stores 存储层和 Registry 注册中心\n- 补充微服务治理能力相关内容,如限流、熔断、链路追踪、指标监控和日志系统\n- 增加工具集、项目结构、开发指南、性能优势等章节\n- 添加应用场景、常见问题和贡献指南\n- 删除多余的空行,优化文档格式和可读性",
"is_bot": false,
"headline": "docs(README): 更新文档内容并添加详细框架介绍",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2026-06-03T08:54:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a03609ce0528073d0c3d4315ff6aa9cc4b2c0e00",
"body": "升级 redis/go-redis 从 v9.19.0 到 v9.20.0\n升级 etcd 相关包从 v3.6.11 到 v3.6.12\n更新 ratel 版本号从 v3.8.49 到 v3.8.50",
"is_bot": false,
"headline": "chore(deps): 升级依赖包版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2026-06-03T08:19:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a09de5494e1087acc9e279860fb6dee729c15498",
"body": "添加了github.com/hibiken/asynq v0.26.0作为新的任务队列依赖,\n同时更新了多个现有依赖包的版本号,包括:\n- tdewolff/parse/v2从v2.8.12升级到v2.8.13\n- opentelemetry相关包从v1.43.0升级到v1.44.0\n- golang.org/x/crypto从v0.51.0升级到v0.52.0\n- golang.org/x/image从v0.40.0升级到v0.41.0\n- grpc-gateway/v2从v2.28.0升级到v2.29.0\n- 添加了github.com/robfig/cron/v3 v3.0.1间接依赖\n- 更新了其他多个间接依赖包版本",
"is_bot": false,
"headline": "feat: 添加asynq依赖并更新多个第三方库版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2026-05-28T04:32:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "780a741522130ccf1fe0ffd5fab9c3c3315b8350",
"body": "移除应用程序启动时服务器和工作器的多余变量赋值,\n优化RollingWindow中的循环结构以提高性能,\n统一使用range语法简化for循环。\n\nrefactor(ecode): 简化Status接口定义为any类型\n\n将Status接口定义改为any类型,简化类型约束。\n\nperf(env): 优化app实例ID生成方法\n\n使用fmt.Appendf替代字符串拼接方式生成app实例ID,\n提高内存使用效率。\n\nrefactor(logger): 统一测试代码中的循环语法\n\n将测试代码中的传统for循环改为range语法,\n使代码更加简洁易读。\n\nrefactor(resource): 优化\n[…]\netSliceMap函数中的循环边界条件,\n确保正确处理键值数组。\n\nrefactor(toolkit): 清理构建标签和优化查找算法\n\n移除冗余的构建标签注释,\n使用slices.Contains替代手写查找循环。\n\nrefactor(util): 优化数组和字符串处理函数\n\n使用min/max函数简化边界检查,\n使用strings.Builder优化字符串拼接操作,\n改进循环语法使代码更简洁。",
"is_bot": false,
"headline": "refactor(core): 移除多余的变量赋值和优化循环结构",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2026-05-16T05:30:15Z",
"body_truncated": true,
"is_coding_agent": false
},
{
"oid": "89805ce92c9c59f9025119881c3d052fbaaec670",
"body": "升级了多个Go模块依赖包到最新版本,包括:\n- github.com/fsnotify/fsnotify 从 v1.10.0 到 v1.10.1\n- golang.org/x 系列包(crypto, image, mod, text, net, sys, term)到更新版本\n- google.golang.org/grpc 从 v1.80.0 到 v1.81.1\n- google.golang.org/genproto/googleapis/rpc 到最新版本\n\n同时移除了间接依赖 github.com/dgryski/go-rendezvous",
"is_bot": false,
"headline": "chore(deps): 更新项目依赖包版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2026-05-16T05:10:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4fdec9c50bb00dcca4a774d1fd22c96edd15f476",
"body": "- 升级 github.com/fatih/color 从 v1.18.0 到 v1.19.0\n- 升级 github.com/fsnotify/fsnotify 从 v1.9.0 到 v1.10.0\n- 升级 github.com/issue9/term/v3 从 v3.4.4 到 v3.4.5\n- 升级 github.com/redis/go-redis 相关包从 v9.18.0 到 v9.19.0\n- 升级 go.opentelemetry.io/otel 相关包从 v1.42.0 到 v1.43.0\n- 升级 golang.org/x 相关包到更新版本\n- 移除 github.com/nyaruka/phonenumbers 间接依赖\n\nfeat(stores): 为Redis和SQL客户端添加Name字段支持\n\n- 在Redis客户端中添加Name字段用于节点标识\n- 在SQL客户端中添加Name字段用于数据库连接标识\n- 更新客户端获取逻辑以包含Name字段在资源管理器中\n- 添加WithName选项函数支持自定义客户端名称",
"is_bot": false,
"headline": "chore(go.mod): 更新依赖包版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2026-05-07T13:20:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "30e41c646401a85c2120a210ecf1f3b9388b9fd9",
"body": "更新了多个第三方库的版本,包括:\n- github.com/cloudwego/hertz 从v0.10.3到v0.10.4\n- github.com/gin-gonic/gin 从v1.11.0到v1.12.0\n- github.com/redis/go-redis 相关库从v9.17.2到v9.18.0\n- go.opentelemetry.io/otel 相关库从v1.39.0到v1.42.0\n- golang.org/x 系列库的多个版本更新\n- github.com/bytedance/sonic 从v1.14.0到v1.15.0\n- github.com/go-playground/validator/v10 从v10.27.0到v10.30.1\n- 以及其他多个间接依赖库的版本更新",
"is_bot": false,
"headline": "chore(deps): 更新项目依赖版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2026-03-11T15:46:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "13ee7bfa3ceb3aaacbc4a7b9420f7f2e55f36d8d",
"body": "- 升级 ratel 版本从 v3.8.48 到 v3.8.49\n- 将 Go 版本从 1.25.0 升级到 1.26.0\n- 移除 stores/sql 包中的 pagination 和 scope 结构体\n- 在 util/time.go 中新增 ToTime 函数用于毫秒级时间戳转换",
"is_bot": false,
"headline": "feat(util): 添加毫秒级时间戳转换功能",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2026-03-11T15:46:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3d1be987510071a554f3b70c9b4e6bf7dd4301bf",
"body": null,
"is_bot": false,
"headline": "Merge branches 'v3' and 'v3' of github.com:abulo/ratel into v3",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2026-01-17T05:36:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5959829bae190d553a60369ed4c0b93d8d836d2f",
"body": "feat(trace): 增加重试配置和重连机制\n\n为 OpenTelemetry 追踪配置添加重试功能,包括 HTTP 和 gRPC 的重试配置,\n以及 gRPC 的重连周期设置。\n\nchore(deps): 更新依赖包版本\n\n更新 logrus、golang.org/x 系列包以及其他相关依赖到最新版本。\n\nfeat(grpc): 添加 gRPC keepalive 参数配置\n\n为 gRPC 服务器配置 keepalive 参数,包括最大连接空闲时间、连接年龄、\n心跳间隔等参数,以及连接执行策略。\n\nfeat(redis): 增加 Redis 客户端超时配置选项\n\n为 Redis 客户端添加拨号超时、读取超时、写入超时、池超时、空闲超时\n和空闲检查频率等配置选项。\n\nfix(util): 改进主机名解析错误处理\n\n当无法找到指定主机时返回具体的错误信息,而不是返回 nil 错误。",
"is_bot": false,
"headline": "chore(core): 更新版本号从v3.8.47到v3.8.48",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2026-01-17T05:35:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ad61da8ff22261b5c894e5a8654d9ce6b5a5af67",
"body": "…n permissions\n\nCo-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>",
"is_bot": false,
"headline": "Potential fix for code scanning alert no. 9: Workflow does not contai…",
"author_name": "Captain",
"author_login": "abulo",
"committed_at": "2026-01-03T03:13:38Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5b816a3dec226bc0087cc32227fc214732059cb3",
"body": "- 将core/env/const.go中的ratelVersion从v3.8.46更新到v3.8.47\n- 升级etcd相关依赖版本从v3.6.6到v3.6.7\n- 升级gRPC相关依赖版本从v1.77.0到v1.78.0\n- 修复SQL日志记录器中时间戳类型错误,从null.DateTime改为null.TimeStamp\n- 修正toolkit中索引名称解析的分隔符,从冒号(:)改为下划线(_)",
"is_bot": false,
"headline": "chore(core): 更新ratel版本号至v3.8.47",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-12-31T00:56:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b602c89cd6dc79dfbcb2e33da1c456446f33cb85",
"body": "- 将 ratelVersion 从 v3.8.45 更新至 v3.8.46\n- 批量更新 go.mod 中的依赖项版本,包括 opentelemetry、golang.org/x 系列、\n google.golang.org/grpc 及其他多个模块\n- 新增 PropsSearch 工具函数用于生成搜索字段配置\n- 在 Vue 页面模板中注册 PropsSearch 函数以便使用",
"is_bot": false,
"headline": "build(go): 升级依赖版本并新增工具函数",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-12-16T23:40:06Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "081d0dc95ccb5dfb3eb17571512a7896612210d3",
"body": "将 github.com/redis/go-redis/extra/rediscmd/v9 从 v9.17.1 更新到 v9.17.2\n将 github.com/redis/go-redis/v9 从 v9.17.1 更新到 v9.17.2",
"is_bot": false,
"headline": "build(go): 更新 redis 依赖版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-12-02T02:30:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "80d68a37ada9ccfcc30381bd174988774948e4ba",
"body": "- 将 从 v3.8.44 升级至 v3.8.45\n- 更新多个 Go 模块依赖,包括 redis、crypto、genproto 和 net 等\n- 移除旧的 backend 和 frontend 命令实现文件\n- 引入统一的 project 命令替代原有的 backend 和 frontend 命令\n- 调整 main.go 中的命令注册逻辑以适应新的结构",
"is_bot": false,
"headline": "build(go): 更新依赖版本并重构项目创建命令",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-11-30T13:03:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "84216e8604a84e1e053126dcd9009f2cd8c3aa96",
"body": "将 ratelVersion 常量从 v3.8.45 回退到 v3.8.44",
"is_bot": false,
"headline": "fix(core): 回退 ratel 版本号",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-11-18T14:31:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6bb4452221cc787f265b3c13c0852d16414f1512",
"body": "更新 ratelVersion 至 v3.8.45,并升级多个 Go 模块依赖至最新版本。\n同时修改 toolkit/base/util.go 中的 Props 函数,将 search 配置从\n\"valueType: input\" 调整为 \"el: input, span: 2\",以适配新的前端表单项结构。",
"is_bot": false,
"headline": "build(go): 更新依赖版本并调整前端组件属性",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-11-18T14:30:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "facb8419d96f34d57020ff8f145338be9b6dae09",
"body": "将 RedisDriver 和 RedisZSetDriver 中的错误日志输出语句注释掉,\n避免在正常流程中产生不必要的日志信息。",
"is_bot": false,
"headline": "fix(redisdriver): 注释掉注册服务错误日志",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-10-23T02:29:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3712adb553865c8f36be2ec92d31d92f52b4b8c4",
"body": "将 Redis 客户端从旧版本迁移至 github.com/redis/go-redis/v9,并统一使用\nredis.UniversalClient 接口以提升兼容性和扩展性。同时清理了不必要的 fmt 打印语句,\n并优化了部分 Redis 命令的错误处理逻辑与返回值使用方式。",
"is_bot": false,
"headline": "refactor(redis): 更新 Redis 客户端依赖并优化调用方式",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-10-23T01:34:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "8231fdb7f83a85179a566cfd1c21f8d166cf8714",
"body": "将 github.com/cloudwego/hertz 从 v0.10.2 升级到 v0.10.3",
"is_bot": false,
"headline": "build(go.mod): 更新 hertz 依赖版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-10-22T08:25:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4ce3c6d8a486234d09c32f3f808657d4eba89def",
"body": "更新了 go.mod 文件中的依赖包版本,包括 github.com/tdewolff/parse/v2、\ngolang.org/x/crypto、golang.org/x/image、golang.org/x/mod、\ngolang.org/x/text、google.golang.org/genproto/googleapis/rpc 以及\ngolang.org/x/net、golang.org/x/sys、golang.org/x/term 和\ngolang.org/x/tools 等间接依赖。",
"is_bot": false,
"headline": "build(go): 更新多个依赖包版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-10-21T06:36:12Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5b1f05ea27d532c689336c7bcb52643456dc1cf0",
"body": "将 `null.TimeStamp` 类型替换为 `null.DateTime` 类型,以统一时间字段的处理方式。",
"is_bot": false,
"headline": "feat(core/logger/sql): 更新时间戳类型为日期时间类型",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-10-21T06:25:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0f4c98afe97cf28898922e9fcd1ec56786b16743",
"body": "更新以下依赖包到最新版本:\n- google.golang.org/genproto/googleapis/rpc 从 v0.0.0-20250929231259-57b25ae835d4 更新到 v0.0.0-20251006185510-65f7160b3a87\n- google.golang.org/grpc 从 v1.75.1 更新到 v1.76.0\n- google.golang.org/protobuf 从 v1.36.9 更新到 v1.36.10",
"is_bot": false,
"headline": "build(go): 更新 google.golang.org 相关依赖版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-10-07T12:27:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d960da6e16a5227c0c4826377e8ea32a701e856a",
"body": "更新 go-redis/v9 及其扩展库 rediscmd/v9 从 v9.14.0 到 v9.15.1,\n同时将 google.golang.org/genproto/googleapis/rpc 从\nv0.0.0-20250922171735-9219d122eba9 更新至\nv0.0.0-20250929231259-57b25ae835d4。",
"is_bot": false,
"headline": "build(go): 更新 redis 和 genproto 依赖版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-09-30T01:18:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e50536826623616602a77c847d92721146df9043",
"body": "将 google.golang.org/genproto/googleapis/rpc 依赖版本从\nv0.0.0-20250908214217-97024824d090 更新至\nv0.0.0-20250922171735-9219d122eba9",
"is_bot": false,
"headline": "build(go.mod): 更新 google.golang.org/genproto/googleapis/rpc 版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-09-25T13:12:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "20ee6d0f575fddff100ef50f173e1f42d50e293d",
"body": "更新了 go.mod 中的多个直接和间接依赖项,包括 gin、redis、etcd、grpc 等核心库及其相关依赖,以确保项目使用最新的稳定版本,提升系统稳定性与安全性。",
"is_bot": false,
"headline": "build(go): 更新多个依赖版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-09-21T11:55:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2ddbed1b7b1a7b77bc65a359dd744bc3e4e2a587",
"body": "- prometheus/client_golang 从 v1.23.0 升级到 v1.23.1\n- redis/go-redis/extra/rediscmd/v9 和 redis/go-redis/v9 从 v9.12.1 升级到 v9.13.0\n- spf13/cobra 从 v1.9.1 升级到 v1.10.1\n- gorm.io/gorm 从 v1.30.2 升级到 v1.30.3\n- prometheus/common 从 v0.65.0 升级到 v0.66.0\n- spf13/pflag 从 v1.0.6 升级到 v1.0.9\n- 新增 grafana/regexp v0.0.0-20240518133315-a468a5bfb3bc\n- 新增 gopkg.in/yaml.v2 v2.4.0",
"is_bot": false,
"headline": "build: 更新多个依赖至最新版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-09-04T14:50:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3db9fd8a533150c481a2bc3217ed64414ad51f74",
"body": "- 在 GitHub Actions 中将 Go 语言版本从 1.24 升级到 1.25\n- 此更新有助于利用 Go 1.25 中的性能改进和新功能",
"is_bot": false,
"headline": "build(ci): 升级 Go 语言版本到 1.25",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-08-31T16:00:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0121bdaba9900a9f61c2060fa309d83eb1462db1",
"body": "- 将 Go 版本从 1.24.0 升级到 1.25.0\n- 更新多个依赖库版本,包括:\n - go.opentelemetry.io/otel 相关库从 1.37.0 升级到 1.38.0\n - gorm.io/gorm 从 1.30.1 升级到 1.30.2\n - github.com/cenkalti/backoff/v5 从 5.0.2 升级到 5.0.3\n - github.com/grpc-ecosystem/grpc-gateway/v2 从 2.27.1 升级到 2.27.2\n - go.opentelemetry.io/proto/otlp 从 1.7.0 升级到 1.7.1\n - golang.org/x/net 从 0.42.0 升级到 0.43.0\n - google.golang.org/genproto/googleapis/api 升级到最新提交版本\n- 移除 toolchain go1.24.5",
"is_bot": false,
"headline": "build: 升级 Go 版本并更新依赖",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-08-31T16:00:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "954647e794b264f081d9cfe066b6a4b6eaa29cda",
"body": "- 在 baseBalancer 中添加 ExitIdle 方法,用于唤醒空闲连接\n- 更新 go.mod 中多个依赖的版本,包括 grpc、redis、prometheus 等\n- 更新 ratel 版本号至 v3.8.44",
"is_bot": false,
"headline": "feat(client): 更新负载均衡器并升级依赖版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-08-27T16:11:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "18559eb498ac2ea2e9453940819f1eb584fb6fdc",
"body": "- 将 Ratel 版本号从 v3.8.42 升级到 v3.8.43\n- 更新 go-pinyin 依赖库版本从 v0.20.0 到 v0.21.0",
"is_bot": false,
"headline": "build(env): 更新 Ratel 版本号和依赖库版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-07-20T02:52:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d7cec7b8033e42f813c992c4818d20d963b29a10",
"body": "- 将 Ratel 版本号从 v3.8.41 升级到 v3.8.42\n- 更新 golang.org/x/crypto 从 v0.39.0 到 v0.40.0\n- 更新 google.golang.org/genproto/googleapis/rpc 从 v0.0.0-20250707201910-8d1bb00bc6a7 到 v0.0.0-20250715232539-7130f93afb79\n- 更新 golang.org/x/sys 从 v0.33.0 到 v0.34.0\n- 更新 golang.org/x/term 从 v0.32.0 到 v0.33.0",
"is_bot": false,
"headline": "build: 更新项目版本和依赖",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-07-16T08:29:39Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d598ee35aa2e3e6f0aa62880a8cfeaa70820c512",
"body": "- 移除了多个间接依赖的包\n- 优化了项目的依赖结构",
"is_bot": false,
"headline": "build: 更新 go.mod 文件",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-07-10T13:07:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5c175a6de23fd27d2fb92095880757329445ddcb",
"body": "- 将 Ratel 版本号从 v3.8.40 升级到 v3.8.41\n- 更新多个依赖包到最新版本,包括 etcd、golang.org/x/* 等",
"is_bot": false,
"headline": "build(deps): 更新依赖并升级 Ratel 版本号",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-07-10T13:06:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "45dec8c5a197fc7e20e925261a1d705b305e0b72",
"body": "- 在 DataType 中添加 timestamptz 类型的处理逻辑\n- 更新 ModuleDaoConvertProto、ApiToProto 等函数以支持 timestamptz 类型\n- 修改 PostgreSQLDialector 函数,设置 WithoutReturning 为 false\n- 更新项目依赖版本:\n - hertz: v0.10.0 -> v0.10.1\n - gookit/ini/v2: v2.3.0 -> v2.3.1\n - go-viper/mapstructure/v2: v2.2.1 -> v2.3.0\n - gookit/goutil: v0.6.18 -> v0.7.0\n- 将 ratel 版本号更新为 v3.8.40",
"is_bot": false,
"headline": "feat(core): 添加对 PostgreSQL timestamptz 类型的支持",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-07-07T00:54:31Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "068c9a9c68267a3e61974ffab0beb038d4baf91c",
"body": "- 调整了 baseBalancer 结构体字段的排列顺序,以提高内存局部性\n- 移除了未使用的 taosdata 驱动依赖\n- 更新了多个依赖库版本:\n - redis/go-redis 从 v9.10.0 升级到 v9.11.0\n - go.opentelemetry.io/otel 从 v1.36.0 升级到 v1.37.0\n - go.logr/logr 从 v1.4.2 升级到 v1.4.3\n - grpc-ecosystem/grpc-gateway 从 v2.26.3 升级到 v2.27.1\n - go.opentelemetry.io/proto/otlp 从 v1.6.0 升级到 v1.7.0\n - google.golang.org/genproto/googleapis/api 更新到最新提交\n- 删除了未使用的 util/string_test.go 文件",
"is_bot": false,
"headline": "refactor(client): 优化 baseBalancer 结构体布局",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-06-25T13:57:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "00dfcc74368d4d91e988115c8267bd0d01843f57",
"body": "- 将 Ratel 版本号从 v3.8.37 升级到 v3.8.38\n- 删除了 pagination 包中的 page.go 和 page_test.go 文件\n- 优化了 util 包中的多个函数,提高了代码质量和性能",
"is_bot": false,
"headline": "refactor(ratel): 更新版本号并移除未使用的分页功能",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-06-24T12:43:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "622d420319e0d273a0cdd885c06775c25fc84c39",
"body": "- 删除了 Client 结构体中的 TDengine 相关字段\n- 移除了 TDengine 的 Dsn 和 Dialector 方法\n- 删除了 TDengine 相关的插件代码\n- 优化了 ClientManager 的 Dsn 和 Dialector 方法,移除了对 TDengine 的支持",
"is_bot": false,
"headline": "refactor(stores): 移除 TDengine 相关代码",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-06-24T12:05:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "132930e2ff1ea806d13ef72f13bd50a581723f5a",
"body": "- 在 TDengineDsn 函数中添加了时区参数配置\n- 这个改动允许用户在连接 TDengine 数据库时指定时区",
"is_bot": false,
"headline": "feat(stores): 为 TDengine 连接字符串添加时区参数",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-06-20T00:51:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "534621b61060ac853c27da8affe428a15d16fbe8",
"body": "- 将 Ratel 版本号从 v3.8.36 升级到 v3.8.37",
"is_bot": false,
"headline": "build: 更新 Ratel 版本号",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-06-20T00:48:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f9f8451328110dac0315da9409dedd7856dfddfb",
"body": "- 实现 TDengine 方言和迁移功能\n- 添加创建表和索引的语法支持\n- 实现基本的 CRUD 操作\n- 添加事务相关的方法(目前不支持)",
"is_bot": false,
"headline": "feat(stores): 添加 TDengine 数据库支持",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-06-20T00:48:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f8783563e122b7f8beaa5c6b88ad995b31188e4f",
"body": "- 新增 TDengine 数据库驱动常量和连接配置\n- 实现 TDengine 的 Dsn 和 Dialector 方法\n- 在 Client 结构中添加 ConnectionMode 字段,用于支持 TDengine 不同的连接模式",
"is_bot": false,
"headline": "feat(stores/sql): 添加 TDengine 数据库支持",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-06-20T00:48:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "1ff21136a68b454404d72e62fe1e5228de6d78cc",
"body": "- 新增 taosdata/driver-go/v3 依赖,版本为 v3.7.1\n- 更新 hashicorp/go-version 依赖,从 v1.6.0 升级到 v1.7.0",
"is_bot": false,
"headline": "build: 更新 go.mod 依赖版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-06-20T00:48:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "816f59dd5c59e4d5fac65bde6be159096e62f001",
"body": "- 新增 ClickHouse、MySQL 和 PostgreSQL 数据库的 Dsn 和 Dialector 方法\n- 为每个数据库实现特定的连接字符串生成逻辑\n- 确保每个数据库的连接配置符合其官方推荐的格式",
"is_bot": false,
"headline": "feat(stores/sql): 添加 ClickHouse、MySQL 和 PostgreSQL 数据库的支持",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-06-20T00:47:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2450986c58ad44b53e7f386c6f6be689bb1391b2",
"body": "- 添加 go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0\n- 移除 github.com/cenkalti/backoff/v4 v4.2.1\n- 移除 go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.36.0 (间接依赖)",
"is_bot": false,
"headline": "build: 更新 go.mod 依赖版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-06-11T05:16:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "60f648d77504bc985d02868e3b0c1023123b0427",
"body": "- 将 Ratel 版本号从 v3.8.35 升级到 v3.8.36\n- 更新 go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp 依赖版本从 v1.19.0 到 v1.36.0",
"is_bot": false,
"headline": "build: 升级 Ratel 版本号和更新依赖",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-06-11T05:15:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f7e1df6e6d6f52fb4b9da30d40068cafe9f91484",
"body": "- 将 Ratel 版本号从 v3.8.34 升级到 v3.8.35",
"is_bot": false,
"headline": "build: 更新 Ratel 版本号",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-06-08T08:24:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fa4a67602ee9fdc953c3513fe7253210d8414be1",
"body": "- 移除了对 c.filter 是否为 nil 的判断,仅通过判断其长度来控制删除操作\n- 这种改动简化了代码逻辑,确保了在执行删除操作前对过滤条件的正确性进行验证",
"is_bot": false,
"headline": "fix(stores/mongodb): 优化删除操作的安全性检查",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-06-08T08:23:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d1db6ac72753eb86dcd3e3888d0c7ae3d0e94939",
"body": "- 在 search.go 文件中,修复了 findByAC 函数的逻辑错误\n- 添加 break 语句以正确处理搜索过程中的跳转",
"is_bot": false,
"headline": "fix(filter): 修复 AC 自动机搜索算法",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-06-08T08:23:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a1632802fd43998846739f92a21cd160f75aea1d",
"body": "- 在 Config 结构中添加 Protocol 字段,用于选择使用 HTTP 或 gRPC 协议\n- 实现 WithProtocol 选项函数,用于设置协议类型\n- 修改 NewConfig 函数,默认使用 HTTP 协议\n- 重构 Build 函数,根据协议类型创建相应的 OpenTelemetry Exporter\n- 支持 http 和 grpc 两种协议与 Endpoint 进行通信",
"is_bot": false,
"headline": "feat(trace): 添加对 OpenTelemetry 协议的支持",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-06-08T08:23:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c6aa979c6fa4ba65e3c2aba7ed8a76b236ec80e0",
"body": "移除了 try 函数中对错误信息进行格式化的多余步骤。现在,错误信息将直接使用 util.FunctionName(fn) 获取函数名,而不会进行不必要的字符串格式化。这个修改简化了错误信息的处理过程,并略微提高了性能。",
"is_bot": false,
"headline": "fix(core/goroutine): 移除错误信息中的冗余格式化",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-06-08T08:23:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a6f50e6b3fab3916e4a5fb05408a88e21861a3a3",
"body": "- 更新 redis、etcd、mongo、jaeger、grpc 等多个依赖的版本\n- 添加 backoff 相关库作为新依赖\n- 更新部分间接依赖的版本",
"is_bot": false,
"headline": "build: 更新 Go 依赖版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-06-08T08:22:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "06bb96c6f3f4fe4c07c155daaee3b5137413820f",
"body": "- 将 Ratel 版本号从 v3.8.33 升级到 v3.8.34\n- 更新 github.com/spf13/cast 依赖版本从 v1.8.0 到 v1.9.2",
"is_bot": false,
"headline": "build: 更新项目版本和依赖",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-06-03T11:37:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c97a93f2a8ce5e110f59f763b89c6a61a75d4b9b",
"body": "- 移除了不必要的 context 和 time 包\n- 注释掉了与阻塞配置相关的代码\n- 将 grpc.DialContext 替换为 grpc.NewClient\n- 简化了错误处理逻辑",
"is_bot": false,
"headline": "refactor(client): 重构 gRPC 客户端初始化逻辑",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-06-03T11:37:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7b73fb11dcee69643d48db3913c1de7c7d9f2240",
"body": "- 将 Ratel 版本号从 v3.8.32 升级到 v3.8.33\n- 更新多个依赖库到最新版本,包括 redis、google、gorm、clickhouse 等",
"is_bot": false,
"headline": "build(deps): 更新依赖并升级 Ratel 版本号",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-05-29T07:25:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "31ffbbf8a1ed75466a60222d33a8b0a095e89a5d",
"body": "- 将 Ratel 版本号从 v3.8.31 升级到 v3.8.32",
"is_bot": false,
"headline": "build: 更新 Ratel 版本号",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-05-22T10:29:20Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "61f42d2b04a9a4a63263f2fe680cab4c10f3b77f",
"body": "- 更新 go.mod 中的多个依赖包版本\n- 修改 Redis 客户端配置,禁用身份验证并设置协议版本为 2",
"is_bot": false,
"headline": "build(deps): 更新依赖并调整 Redis 客户端配置",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-05-22T10:28:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0e1a963be7e87851effe20c84120a5234921ba8f",
"body": "- 将 Ratel 版本从 v3.8.30 升级到 v3.8.31\n- 更新 go.mod 中的多个依赖版本\n- 在 Redis 客户端配置中启用 UnstableResp3 支持",
"is_bot": false,
"headline": "feat(core): 升级 Ratel 版本并更新依赖",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-05-15T07:40:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9c8fe4cbc3fe0f34897a0e706506f92b7940a0fb",
"body": "- 新增 ACLSetUser、ACLDelUser、ACLList、ACLCat、ACLCatArgs 等 ACL 相关命令的支持\n- 添加 ClusterMyID 命令的支持\n- 移除 gears 相关的命令支持\n- 更新 Redis 版本至 v9.8.0\n- 更新其他依赖版本",
"is_bot": false,
"headline": "feat(redis): 添加 ACL 相关命令支持",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-05-09T09:22:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4f7f5dbc860302fb993638df2939268cfe8cf476",
"body": "- 将 Ratel 版本号从 v3.8.28 升级到 v3.8.29\n- 更新 go.mod 文件中的多个依赖包版本\n - github.com/gookit/ini/v2 从 v2.2.3 升级到 v2.3.0\n - google.golang.org/grpc 从 v1.71.1 升级到 v1.72.0\n - gorm.io/gorm 从 v1.25.12 升级到 v1.26.0\n - google.golang.org/genproto/googleapis/api 从 v0.0.0-20250106144421-5f5ef82da422 更新到 v0.0.0-20250218202821-56aae31c358a\n - google.golang.org/genproto/googleapis/rpc 从 v0.0.0-20250414145226-207652e42e2e 更新到 v0.0.0-20250425173222-7b384671a197",
"is_bot": false,
"headline": "build: 更新项目依赖并升级 Ratel 版本号",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-26T00:44:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e966dd1866171cd06b9ad7a4f2b0a9d4c8f670ed",
"body": "- 移除工作流名称中的 \"with Config\"\n- 添加 permissions 配置,授予必要的权限\n- 重命名 job 从 \"generate-changelog\" 到 \"build\"\n- 在 checkout 步骤中添加 token",
"is_bot": false,
"headline": "ci: 更新 Auto Release 工作流",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-15T03:01:23Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2c7bcc8c8161cacd325642ae0f40e138d0b9f30a",
"body": "- 调整发布日期的格式,增加 Emoji 标识\n- 优化代码结构,提高可读性",
"is_bot": false,
"headline": "docs: 优化版本更新日志的格式和内容",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-15T02:52:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2a441488ee95135ece97b02c604902d205e18123",
"body": "- 将 google.golang.org/genproto/googleapis/rpc 的提交哈希从 20250409194420-de1ac958c67a 更新到 20250414145226-207652e42e2e",
"is_bot": false,
"headline": "build: 更新 googleapis/rpc 版本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-15T02:48:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "87458416461299bffab43c2ef99c1ee96f0aa301",
"body": "- 统计提交数量、受影响文件数量和贡献者信息\n- 添加发布日期和下载统计信息\n- 优化日志格式,增加统计信息和贡献者列表",
"is_bot": false,
"headline": "ci(release): 优化日志生成脚本并添加统计信息",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-15T02:44:56Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "da938cf1eb81440b47af3f54246e3aef82dd1625",
"body": "- 简化了日志条目类型提取逻辑\n- 使用正则表达式直接匹配和处理提交主题\n- 移除了未使用的代码行,提高了代码可读性",
"is_bot": false,
"headline": "ci: 优化日志分类处理脚本",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-15T02:28:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "45d42d33ced6560f3dd2a1cfdef72622ccb70e41",
"body": "- 修改了 release.yml 文件中的正则表达式,以更准确地提取提交类型和分类\n- 优化了代码注释,增加了对提取过程的解释,提高代码可读性",
"is_bot": false,
"headline": "ci: 优化提取提交类型和分类的正则表达式",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-15T02:21:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "af02175b2fc1ce055e3a95319693ca3b0a5d7a7c",
"body": "- 重构了生成 changelog 的脚本,简化了逻辑并提高了可读性\n- 优化了提交类型解析和分类逻辑,支持更灵活的提交格式\n- 调整了版本范围处理,增加了对首次发布版本的支持\n- 移除了不必要的注释和冗余代码,提高了脚本的执行效率",
"is_bot": false,
"headline": "ci(release): 优化生成发布日志的 GitHub Actions 工作流",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-15T02:15:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c1e86c806e95bfb5971da36190da68dba80ba565",
"body": "- 移除了 release.yml 中的多余空行和连字符\n- 在 release.yml 工作流中:\n - 删除了安装 yq 的步骤\n - 优化了 parse_commit_type 函数,移除了不必要的 echo 语句\n - 修改了 yq 命令的输出格式为 tsv",
"is_bot": false,
"headline": "build: 优化 release.yml 配置文件和工作流",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-15T01:57:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4e2787d963f5c303bd5354f2ba1f5a7a639bf009",
"body": "- 更新分类系统,增加更多分类并支持大小写不敏感匹配\n- 添加提交类型解析函数,支持多种格式\n- 优化变更日志生成逻辑,按配置顺序输出分类\n- 增加发布日期信息\n- 采用轻量级 yq (Go 版本) 替代 Snap 版本",
"is_bot": false,
"headline": "ci(release): 优化版本发布流程和变更日志生成",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-15T01:42:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e354febcbe9e3c595b31633104809ac8ea7b8a48",
"body": "- 安装 yq 工具以解析配置文件\n- 通过配置文件动态生成变更日志\n- 优化日志生成逻辑,支持未分类提交的处理\n- 调整工作流名称和步骤名称以更好地反映流程",
"is_bot": false,
"headline": "ci(github): 重构自动发布流程并支持配置文件",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-15T01:33:28Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e3ffda994148bb882d6ea8b9804ad9856c786f72",
"body": "- 优化 release.yml 工作流,大幅减少代码量\n- 使用自定义脚本生成版本更新内容\n- 支持按约定式提交规范分类提交记录\n- 生成 changelog.md 文件作为发布说明\n- 采用 ncipollo/release-action 创建版本发布",
"is_bot": false,
"headline": "ci: 重构 GitHub Actions 发布流程",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-15T01:22:45Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6e7143fb81fac967604fd0daa89d4b6580044329",
"body": "- 优化标签和提交对比逻辑\n- 重构 PR 处理函数,提高代码可读性\n- 优化生成的发布内容,包括分类、贡献者统计和发布信息\n- 增加错误处理和数据验证,提高流程的稳定性",
"is_bot": false,
"headline": "ci(release): 优化 GitHub Actions 自动发布流程",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-15T01:07:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "725b79fd893b47c9b8858bbe3efbf6a203edfc75",
"body": "- 重构了 release.yml 文件,提高了代码可读性和维护性\n- 优化了配置解析和 PR 分类逻辑,提升了处理效率\n- 改进了贡献者统计和发布内容生成方式,增强了可定制性\n- 简化了最终发布步骤,提高了发布流程的可靠性",
"is_bot": false,
"headline": "ci(release): 优化 GitHub Actions 自动发布流程",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-15T00:59:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b5f738370ca79d39a2dc20743f86c20ee5003735",
"body": "- 重构了 release.yml 文件结构,提高了可读性和可维护性\n- 优化了 release notes 的生成逻辑,提高了代码复用性和效率\n- 改进了贡献者统计和排序方法,更加准确地反映了贡献者的工作\n- 更新了发布信息的格式,增加了更多有用的统计信息",
"is_bot": false,
"headline": "ci(release): 优化 Auto Release 工作流",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-14T12:59:38Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4cbded7f620876907d47aeffa04d67824365f532",
"body": null,
"is_bot": false,
"headline": "ci: 流程修改",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-14T12:53:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ec1195a831cc811d6f3edd862c0c7c99279a4efc",
"body": "- 删除了 release.yml 文件中的自定义分类规则\n- 保留了新功能的分类",
"is_bot": false,
"headline": "docs: 移除 release.yml 中的自定义分类规则",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-14T12:48:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ed3735e3fbfee090f0eb0d121971e2640065dd87",
"body": "- 重构了 release.yml 文件,提高了代码可读性和维护性\n- 使用 jq 处理 JSON 数据,减少了 JavaScript 代码复杂性\n- 优化了获取 PR 信息的逻辑,提高了效率\n- 改进了贡献者统计和分类处理的方法\n- 更新了发布流程,使用 softprops/action-gh-release@v1 代替 actions/create-release@v1",
"is_bot": false,
"headline": "ci(release): 优化 GitHub Actions 自动发布流程",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-14T12:46:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "dc378c215be5e7663f2e30ff56c5339b886b13bc",
"body": "- 将 js-yaml 的 safeLoad 方法替换为 load 方法,以支持旧版 YAML 文件\n- 添加统计信息部分到发布说明中,包括提交数和受影响的文件数",
"is_bot": false,
"headline": "ci(release): 更新 release.yml 以支持旧版 YAML 解析",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-14T12:33:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "04bb0beef84679305bf870415f31d348b9deeae1",
"body": "- 在发布流程中添加安装 js-yaml 依赖的步骤\n- 移除生成发布说明时的多余空行",
"is_bot": false,
"headline": "ci(release): 安装 js-yaml 依赖并优化发布说明生成",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-14T11:20:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "030ee52927ad01365c3ab238146d041e74f003ce",
"body": "- 移除了未使用的对 '@actions/github' 的引用\n- 添加了空行以提高代码可读性",
"is_bot": false,
"headline": "build(ci): 优化 release 脚本并移除未使用代码",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-14T11:17:50Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "07250b18817455828e7cf3f28e653ef6a76eccb2",
"body": "- 重写 .github/release.yml 文件结构,简化配置\n- 更新 .github/workflows/release.yml 工作流,增加自定义发布说明生成逻辑\n- 新增统计信息和贡献者列表,丰富发布内容\n- 优化发布流程,确保发布说明准确反映变更和贡献",
"is_bot": false,
"headline": "ci: 重构发布工作流并添加自定义发布说明",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-14T11:14:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "392c3a1a600f726d5ce3979b46373e6a91aef3de",
"body": "- 注释掉了创建 Release 时使用的 tag_name 和 draft 参数\n- 这个修改可能是为了暂时禁用自动发布 Release 功能,或者进行某些测试",
"is_bot": false,
"headline": "ci(release): 注释掉 GitHub Action 发布 Release 的部分步骤",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-13T16:07:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4dca094c632952407b9bc251dd56b601961307d6",
"body": "- 修改 release.yml 文件结构,将 categories 配置移至 changelog 下\n- 注释掉生成官方发布说明的步骤\n- 更新创建发布时的配置,使用 generate_release_notes: true 以自动生成发布说明",
"is_bot": false,
"headline": "ci: 更新发布流程",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-13T16:06:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4831cb60bf55a35a4d27a2c3cdfe582245746278",
"body": "- 注释掉丰富发布说明的步骤\n- 直接使用 GitHub 提供的发布说明\n- 移除统计信息和贡献者部分",
"is_bot": false,
"headline": "ci(release): 精简发布流程",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-13T15:59:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9ac7e542600cb799f5d5e04c76458f621ae77d4a",
"body": "- 删除了 release.yml 文件中生成统计信息的代码块\n- 简化了发布说明的结构,仅保留官方发布说明",
"is_bot": false,
"headline": "docs(release): 移除发布说明中的统计信息部分",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-13T15:46:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ec214a29df954df0864f44385333a95d980392c0",
"body": "- 移除了不必要的多行内容填充步骤\n- 使用环境变量直接插入统计信息\n- 简化了发布日志的构建过程,提高了可读性和效率",
"is_bot": false,
"headline": "ci(release): 优化构建发布日志的流程",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-13T15:42:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "33d6b2c6c1611942023e743b62a98d34145109dc",
"body": "- 将 Release Notes 内容添加到环境变量中\n- 使用多行内容填充 RELEASE_NOTES,提高可读性和灵活性",
"is_bot": false,
"headline": "ci(release): 优化 Release Notes 生成流程",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-13T15:36:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ea9a8ddd2e79e8b4a3af8ec37319d4ec84908213",
"body": "- 移除了 heredoc 语法和 delimiter 的使用\n- 恢复了注释掉的代码片段\n- 优化了 RELEASE_NOTES 变量的生成逻辑",
"is_bot": false,
"headline": "ci(release): 精简发布笔记的生成过程",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-13T15:33:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a7ce4309ba90772eef91053958a0ef15e54f1814",
"body": "- 使用 heredoc 语法安全处理多行文本\n- 采用 delimiter 避免特殊字符冲突\n- 注释保留原始逻辑以供参考",
"is_bot": false,
"headline": "ci(release): 优化发布说明构建流程",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-13T15:16:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b3d525332f5ef4aed54363f18d536440d09b20a1",
"body": "- 将 Ratel 版本号从 v3.8.27 升级到 v3.8.28\n- 从 go.mod 文件中移除了对 github.com/bytedance/sonic 的替换依赖",
"is_bot": false,
"headline": "build: 更新 Ratel 版本号并移除 sonic 依赖",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-13T14:50:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "96823f9df11d5399754148e98037373160c26a90",
"body": "- 重构发布流程,使用 GitHub Actions 自动生成发布说明\n- 更新 go.mod 中的依赖版本:\n - hertz 从 v0.9.6 升级到 v0.9.7\n - sonic 从 v1.12.7 升级到 v1.13.2\n - googleapis/rpc 从 v0.0.0-20250407143221-ac9807e6c755 升级到 v0.0.0-20250409194420-de1ac958c67a\n- 在服务器配置中添加了最大请求体大小、最大保持请求体大小和读缓冲区大小的设置",
"is_bot": false,
"headline": "ci(release): 优化发布流程并升级依赖",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-13T14:47:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "820de135e55b00d45099bc0afc4458e7653b1ff4",
"body": "- 将 Ratel 版本号从 v3.8.26 升级到 v3.8.27\n- 更新多个依赖库版本,包括 fsnotify、issue9/term/v3、prometheus/client_golang、viper 等\n- 升级 go.etcd.io/etcd 相关库到 v3.5.21\n- 更新 golang.org/x 系列库版本,包括 crypto、image、sync、text 等\n- 将 google.golang.org/grpc 从 v1.71.0 升级到 v1.71.1\n- 更新间接依赖库版本,包括 etcd、terminfo、klauspost/compress 等",
"is_bot": false,
"headline": "build: 升级依赖并更新 Ratel 版本号",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-04-08T12:48:09Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2b4a47427592a91406180e5655d81432efcd8ac5",
"body": "- 将 Ratel 版本号从 v3.8.25 升级到 v3.8.26\n- 更新多个依赖库版本:\n - github.com/pkg/sftp 从 v1.13.8 升级到 v1.13.9\n - go.etcd.io/etcd/api/v3 和 client/v3 从 v3.5.19 升级到 v3.5.20\n - google.golang.org/genproto/googleapis/rpc 更新到新提交版本\n - google.golang.org/protobuf 从 v1.36.5 升级到 v1.36.6\n - go.etcd.io/etcd/client/pkg/v3 从 v3.5.19 升级到 v3.5.20",
"is_bot": false,
"headline": "perf: 更新项目版本和依赖",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-03-25T14:29:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0af23a617e0c22712728877836467b65be8db110",
"body": null,
"is_bot": false,
"headline": "ci: 优化发布流程和提交信息筛选",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-03-21T17:22:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "82510f8c3376b60cedb5815e925963870ade6853",
"body": null,
"is_bot": false,
"headline": "perf: 升级依赖并更新版本号",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-03-21T17:19:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5ba4164c3fb91d6b8aa40326a75e5f3653ff1bd1",
"body": "- 将生成的发布说明写入 changelog.md 文件,而不是环境变量\n- 使用 bodyfile 参数替代 body 参数,指向 changelog.md 文件\n- 简化了发布说明的处理流程,提高了可读性和维护性",
"is_bot": false,
"headline": "ci: 更新发布流程,使用 changelog.md 文件代替环境变量",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-03-17T23:45:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "a6ef25c5e6c5513e4656a8fa67ab4789536f6f4b",
"body": "- 将 Ratel 版本号从 v3.8.23 升级到 v3.8.24",
"is_bot": false,
"headline": "build: 更新 Ratel 版本号",
"author_name": "abulo.hoo",
"author_login": "abulo",
"committed_at": "2025-03-17T23:41:20Z",
"body_truncated": false,
"is_coding_agent": false
}
],
"releases_count": 100,
"commits_last_year": 33,
"latest_release_at": "2026-07-17T14:49:48Z",
"latest_release_tag": "v3.8.51",
"releases_from_tags": false,
"days_since_last_push": 5,
"active_weeks_last_year": 21,
"days_since_latest_release": 5,
"mean_days_between_releases": 40.7
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": false,
"health_percentage": 42,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "github.com/abulo/ratel/v3",
"exists": true,
"license": null,
"keywords": [],
"ecosystem": "go",
"matches_repo": true,
"registry_url": "https://pkg.go.dev/github.com/abulo/ratel/v3",
"is_deprecated": false,
"latest_version": "v3.8.51",
"repository_url": "https://github.com/abulo/ratel",
"versions_count": 206,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": null,
"first_published_at": null,
"latest_published_at": "2026-07-17T14:48:49Z",
"latest_version_yanked": null,
"days_since_latest_publish": 5
}
]
},
"popularity": {
"forks": 4,
"stars": 22,
"watchers": 3,
"fork_history": {
"days": [
{
"date": "2021-06-23",
"count": 1
},
{
"date": "2023-03-11",
"count": 1
},
{
"date": "2024-01-09",
"count": 1
},
{
"date": "2025-04-27",
"count": 1
}
],
"complete": true,
"collected": 4,
"total_forks": 4
},
"star_history": null,
"open_issues_and_prs": 1
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": false,
"has_mcp_signal": false,
"bootstrap_files": [
"Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [],
"toolchain_manifests": [
"go.mod"
],
"largest_source_bytes": 45347,
"source_files_sampled": 382,
"oversized_source_files": 0,
"agent_instruction_files": [],
"agent_instruction_max_bytes": null
},
"dependencies": {
"manifests": [
"go.mod"
],
"advisories": {
"error": null,
"scope": null,
"source": null,
"findings": [],
"collected": false,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 0,
"malicious_count": 0,
"assessed_package": null,
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"go"
],
"dependencies": [
{
"name": "github.com/AlecAivazis/survey/v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.3.7"
},
{
"name": "github.com/cloudwego/hertz",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.10.5"
},
{
"name": "github.com/codegangsta/inject",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.0.0-20150114235600-33e0aa1cb7c0"
},
{
"name": "github.com/disintegration/imaging",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.6.2"
},
{
"name": "github.com/fatih/color",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.19.0"
},
{
"name": "github.com/fatih/structs",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.1.0"
},
{
"name": "github.com/fsnotify/fsnotify",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.10.1"
},
{
"name": "github.com/gin-gonic/gin",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.12.0"
},
{
"name": "github.com/golang/freetype",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.0.0-20170609003504-e2365dfdc4a0"
},
{
"name": "github.com/golang/protobuf",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.5.4"
},
{
"name": "github.com/google/uuid",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.6.0"
},
{
"name": "github.com/gookit/ini/v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.3.2"
},
{
"name": "github.com/gorilla/websocket",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.5.3"
},
{
"name": "github.com/grpc-ecosystem/go-grpc-prometheus",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.2.0"
},
{
"name": "github.com/h2non/bimg",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.1.9"
},
{
"name": "github.com/hibiken/asynq",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.26.0"
},
{
"name": "github.com/issue9/term/v3",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v3.4.5"
},
{
"name": "github.com/jlaffaye/ftp",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.2.1"
},
{
"name": "github.com/mozillazg/go-pinyin",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.21.0"
},
{
"name": "github.com/olivere/elastic/v7",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v7.0.32"
},
{
"name": "github.com/opentracing/opentracing-go",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.2.0"
},
{
"name": "github.com/pkg/errors",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.9.1"
},
{
"name": "github.com/pkg/sftp",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.13.11"
},
{
"name": "github.com/prometheus/client_golang",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.23.2"
},
{
"name": "github.com/redis/go-redis/extra/rediscmd/v9",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v9.21.0"
},
{
"name": "github.com/redis/go-redis/v9",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v9.21.0"
},
{
"name": "github.com/sirupsen/logrus",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.9.4"
},
{
"name": "github.com/smallnest/weighted",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.0.0-20230419055410-36b780e40a7a"
},
{
"name": "github.com/spf13/cast",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.10.0"
},
{
"name": "github.com/spf13/cobra",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.10.2"
},
{
"name": "github.com/spf13/viper",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.21.0"
},
{
"name": "github.com/streadway/amqp",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.1.0"
},
{
"name": "github.com/stretchr/testify",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.11.1"
},
{
"name": "github.com/tdewolff/parse/v2",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v2.8.13"
},
{
"name": "go.etcd.io/etcd/api/v3",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v3.7.0"
},
{
"name": "go.etcd.io/etcd/client/v3",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v3.7.0"
},
{
"name": "go.mongodb.org/mongo-driver",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.17.9"
},
{
"name": "go.opentelemetry.io/otel",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.44.0"
},
{
"name": "go.opentelemetry.io/otel/bridge/opentracing",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.44.0"
},
{
"name": "go.opentelemetry.io/otel/exporters/otlp/otlptrace",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.44.0"
},
{
"name": "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.44.0"
},
{
"name": "go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.44.0"
},
{
"name": "go.opentelemetry.io/otel/sdk",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.44.0"
},
{
"name": "go.opentelemetry.io/otel/trace",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.44.0"
},
{
"name": "go.uber.org/multierr",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.11.0"
},
{
"name": "golang.org/x/crypto",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.54.0"
},
{
"name": "golang.org/x/image",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.44.0"
},
{
"name": "golang.org/x/mod",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.38.0"
},
{
"name": "golang.org/x/sync",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.22.0"
},
{
"name": "golang.org/x/text",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.40.0"
},
{
"name": "google.golang.org/genproto/googleapis/rpc",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.0.0-20260715232425-e75dac1f907d"
},
{
"name": "google.golang.org/grpc",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.82.1"
},
{
"name": "google.golang.org/protobuf",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.36.11"
},
{
"name": "gorm.io/driver/clickhouse",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v0.7.0"
},
{
"name": "gorm.io/driver/mysql",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.6.0"
},
{
"name": "gorm.io/driver/postgres",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.6.0"
},
{
"name": "gorm.io/gorm",
"manifest": "go.mod",
"ecosystem": "go",
"version_constraint": "v1.31.2"
}
],
"all_dependencies": {
"error": "GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository",
"source": null,
"packages": [],
"collected": false,
"truncated": false,
"total_count": null,
"direct_count": null,
"indirect_count": null
}
},
"maintainership": {
"issues": {
"open_prs": 1,
"merged_prs": 4,
"open_issues": 0,
"closed_ratio": null,
"closed_issues": 0,
"closed_unmerged_prs": 3
},
"bus_factor": 1,
"bot_contributors": 1,
"top_contributors": [
{
"type": "User",
"login": "abulo",
"commits": 840,
"avatar_url": "https://avatars.githubusercontent.com/u/1535443?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"go.yml",
"release.yml"
],
"has_docs_dir": false,
"linter_configs": [
".golangci.yml"
],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"security_signals": {
"lockfiles": [],
"scorecard": {
"checks": [
{
"name": "Binary-Artifacts",
"score": 10,
"reason": "no binaries found in the repo",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#binary-artifacts"
},
{
"name": "Branch-Protection",
"score": 0,
"reason": "branch protection not enabled on development/release branches",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#branch-protection"
},
{
"name": "CI-Tests",
"score": null,
"reason": "no pull request found",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#ci-tests"
},
{
"name": "CII-Best-Practices",
"score": 0,
"reason": "no effort to earn an OpenSSF best practices badge detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#cii-best-practices"
},
{
"name": "Code-Review",
"score": 0,
"reason": "Found 0/30 approved changesets -- score normalized to 0",
"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": 10,
"reason": "no 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": 7,
"reason": "9 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#maintained"
},
{
"name": "Packaging",
"score": null,
"reason": "packaging workflow not detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#packaging"
},
{
"name": "Pinned-Dependencies",
"score": 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": 0,
"reason": "no 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": 2,
"reason": "8 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "4e599709b208ea1760b6eb2a53faca01e4dcf898",
"ran_at": "2026-07-23T00:30:32Z",
"aggregate_score": 3.9,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": false,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-17T19:03:13Z",
"oldest_open_prs": [
{
"number": 8,
"created_at": "2026-01-03T03:10:16Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2023-03-15T09:02:03Z",
"ci_last_conclusion": "SUCCESS",
"oldest_open_issues": []
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/abulo/ratel",
"host": "github.com",
"name": "ratel",
"owner": "abulo"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 58,
"inputs": {
"security": 39,
"vitality": 83,
"community": 38,
"governance": 47,
"engineering": 78
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 83,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 71,
"inputs": {
"commits_last_year": 33,
"human_commit_share": 1,
"days_since_last_push": 5,
"active_weeks_last_year": 21
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 5 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 5
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "21/52 weeks with commits",
"points": 14.5,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 21
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "33 commits in the last year",
"points": 13.8,
"status": "partial",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 33
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "9 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7",
"points": 7,
"status": "partial",
"details": [],
"max_points": 10
}
]
},
{
"key": "release_discipline",
"band": "excellent",
"name": "Release discipline",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 100,
"inputs": {
"releases_count": 100,
"latest_release_tag": "v3.8.51",
"releases_from_tags": false,
"days_since_latest_release": 5,
"mean_days_between_releases": 40.7
},
"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 5 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 5
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~40.7 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 40.7
}
}
],
"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": 5,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 5 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 5
}
}
],
"max_points": 100
}
]
}
],
"description": "Is the project alive — is code being written and are releases shipping?"
},
{
"key": "community",
"band": "at_risk",
"name": "Community & Adoption",
"value": 38,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 27,
"inputs": {
"forks": 4,
"stars": 22,
"watchers": 3,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "22 stars",
"points": 21.4,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 22
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "4 forks",
"points": 4,
"status": "partial",
"details": [
{
"code": "forks",
"params": {
"count": 4
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "3 watchers",
"points": 1.7,
"status": "partial",
"details": [
{
"code": "watchers",
"params": {
"count": 3
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "moderate",
"name": "Community health",
"note": null,
"notes": [],
"value": 50,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": false,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 22.5,
"status": "met",
"details": [],
"max_points": 22.5
},
{
"key": "license",
"name": "License",
"detail": "recognized license (Apache-2.0)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "Apache-2.0"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.2
},
{
"key": "pr_template",
"name": "PR template",
"detail": null,
"points": 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": "at_risk",
"name": "Sustainability & Governance",
"value": 47,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 13,
"inputs": {
"bus_factor": 1,
"contributors_sampled": 1,
"top_contributor_share": 1
},
"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 100% of commits",
"points": 0,
"status": "missed",
"details": [
{
"code": "top_contributor_share",
"params": {
"share": 100
}
}
],
"max_points": 22.5
},
{
"key": "contributor_breadth",
"name": "Contributor breadth",
"detail": "1 contributors",
"points": 1.4,
"status": "partial",
"details": [
{
"code": "contributors_sampled",
"params": {
"count": 1
}
}
],
"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": "at_risk",
"name": "Issue & PR responsiveness",
"note": "Excluded from scoring (no data or not applicable): Issue resolution. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"issue_resolution"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 41,
"inputs": {
"merged_prs": 4,
"open_issues": 0,
"closed_issues": 0,
"issue_closed_ratio": null,
"closed_unmerged_prs": 3
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "no issues or no data",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_issues_or_data",
"params": {}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "4/7 decided PRs merged",
"points": 21.9,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 4,
"decided": 7
}
}
],
"max_points": 38.25
},
{
"key": "openssf_scorecard_code_review",
"name": "OpenSSF Scorecard: Code-Review",
"detail": "Found 0/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
}
]
},
{
"key": "stewardship",
"band": "moderate",
"name": "Ownership & stewardship",
"note": "Excluded from scoring (no data or not applicable): Verified domain. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"verified_domain"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 52,
"inputs": {
"followers": 24,
"owner_type": "User",
"is_verified": null,
"owner_login": "abulo",
"public_repos": 18,
"account_age_days": 5243
},
"components": [
{
"key": "ownership_backing",
"name": "Ownership backing",
"detail": "personal (user) account",
"points": 10,
"status": "partial",
"details": [
{
"code": "owner_personal",
"params": {}
}
],
"max_points": 30
},
{
"key": "verified_domain",
"name": "Verified domain",
"detail": "not applicable to user accounts",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_applicable_to_user_accounts",
"params": {}
}
],
"max_points": 20
},
{
"key": "owner_reach",
"name": "Owner reach",
"detail": "24 followers of abulo",
"points": 10.1,
"status": "partial",
"details": [
{
"code": "owner_followers",
"params": {
"count": 24,
"login": "abulo"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "18 public repos, account ~14 yr old",
"points": 21.3,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 18
}
},
{
"code": "account_age_years",
"params": {
"years": 14
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"github.com/abulo/ratel/v3"
],
"ecosystems": "go",
"any_deprecated": false,
"min_days_since_publish": 5
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on go",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "go"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 5 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 5
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "206 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 206
}
}
],
"max_points": 20
},
{
"key": "not_deprecated",
"name": "Not deprecated",
"detail": "active, not deprecated or yanked",
"points": 20,
"status": "met",
"details": [
{
"code": "package_not_deprecated",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Will the project survive its people — bus factor, responsiveness, who backs it, and package upkeep?"
},
{
"key": "engineering",
"band": "good",
"name": "Engineering Quality",
"value": 78,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "good",
"name": "Engineering practices",
"note": "Excluded from scoring (no data or not applicable): OpenSSF Scorecard: CI-Tests. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"openssf_scorecard_ci_tests"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 80,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": false
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "2 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 2
}
}
],
"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": ".golangci.yml",
"points": 16,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yml"
}
}
],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 9.6
},
{
"key": "editorconfig",
"name": ".editorconfig",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 6.4
},
{
"key": "openssf_scorecard_ci_tests",
"name": "OpenSSF Scorecard: CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 20
}
]
},
{
"key": "documentation",
"band": "good",
"name": "Documentation",
"note": null,
"notes": [],
"value": 75,
"inputs": {
"topics": [
"mysql",
"redis",
"config",
"mongodb",
"elasticsearch",
"http",
"etcd",
"grpc"
],
"has_wiki": true,
"homepage": "https://github.com/abulo/layout",
"has_readme": true,
"has_docs_dir": false,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": "https://github.com/abulo/layout",
"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": "8 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 8
}
}
],
"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": "at_risk",
"name": "Security",
"value": 39,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): CI-Tests, Packaging, Signed-Releases. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"ci_tests",
"packaging",
"signed_releases"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 39,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 15,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 3,
"scorecard_aggregate": 3.9
},
"components": [
{
"key": "binary_artifacts",
"name": "Binary-Artifacts",
"detail": "no binaries found in the repo",
"points": 7.5,
"status": "met",
"details": [],
"max_points": 7.5
},
{
"key": "branch_protection",
"name": "Branch-Protection",
"detail": "branch protection not enabled on development/release branches",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "ci_tests",
"name": "CI-Tests",
"detail": "no pull request found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 2.5
},
{
"key": "cii_best_practices",
"name": "CII-Best-Practices",
"detail": "no effort to earn an OpenSSF best practices badge detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 2.5
},
{
"key": "code_review",
"name": "Code-Review",
"detail": "Found 0/30 approved changesets -- score normalized to 0",
"points": 0,
"status": "missed",
"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": "no dangerous workflow patterns detected",
"points": 10,
"status": "met",
"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": "9 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 7",
"points": 5.2,
"status": "partial",
"details": [],
"max_points": 7.5
},
{
"key": "packaging",
"name": "Packaging",
"detail": "packaging workflow not detected",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 5
},
{
"key": "pinned_dependencies",
"name": "Pinned-Dependencies",
"detail": "dependency not pinned by hash detected -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "sast",
"name": "SAST",
"detail": "no SAST tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file not detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "no releases found",
"points": 0,
"status": "excluded",
"details": [
{
"code": "no_data",
"params": {}
}
],
"max_points": 7.5
},
{
"key": "token_permissions",
"name": "Token-Permissions",
"detail": "detected GitHub workflow tokens with excessive permissions",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "vulnerabilities",
"name": "Vulnerabilities",
"detail": "8 existing vulnerabilities detected",
"points": 1.5,
"status": "partial",
"details": [],
"max_points": 7.5
}
]
},
{
"key": "high_risk_jurisdiction_exposure",
"band": "excellent",
"name": "High-Risk Jurisdiction Exposure",
"note": "Only high-confidence self-published location evidence affects this multiplier. Ambiguous matches are review-only; country evidence is not proof of nationality, citizenship, legal registration, malicious intent, or sanctions status.",
"notes": [
{
"code": "jurisdiction_evidence_limits",
"params": {}
}
],
"value": 100,
"inputs": {
"meaning": "self-published location evidence; not nationality or citizenship",
"red_flag": false,
"exposures": [],
"policy_countries": [
"Russia",
"Iran",
"North Korea"
],
"review_only_matches": 0,
"assessed_self_published_locations": 2
},
"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": 62,
"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.99,
"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": "99 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 99,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "moderate",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 64,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [],
"has_dockerfile": false,
"typed_language": true,
"bootstrap_files": [
"Makefile"
],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [],
"agent_commit_share": 0.01,
"toolchain_manifests": [
"go.mod"
],
"dependency_bot_commit_share": 0
},
"components": [
{
"key": "one_command_bootstrap",
"name": "One-command bootstrap",
"detail": "Makefile",
"points": 18,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Makefile"
}
}
],
"max_points": 18
},
{
"key": "automated_tests",
"name": "Automated tests",
"detail": null,
"points": 22,
"status": "met",
"details": [],
"max_points": 22
},
{
"key": "lint_format_config",
"name": "Lint / format config",
"detail": ".golangci.yml",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": ".golangci.yml"
}
}
],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "Go (statically typed)",
"points": 11,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "1 of the last 100 commits agent-authored or agent-credited",
"points": 2,
"status": "partial",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 1,
"sampled": 100
}
}
],
"max_points": 10
},
{
"key": "automated_maintenance",
"name": "Automated maintenance",
"detail": "no automated dependency updates observed",
"points": 0,
"status": "missed",
"details": [
{
"code": "no_dependency_automation",
"params": {}
}
],
"max_points": 8
},
{
"key": "openssf_scorecard_pinned_dependencies",
"name": "OpenSSF Scorecard: Pinned-Dependencies",
"detail": "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": "Go",
"largest_source_bytes": 45347,
"source_files_sampled": 382,
"oversized_source_files": 0
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Go (statically typed)",
"points": 45,
"status": "met",
"details": [
{
"code": "statically_typed_language",
"params": {
"language": "Go"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "0/382 source files over 60KB",
"points": 55,
"status": "met",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 382,
"oversized": 0
}
}
],
"max_points": 55
}
]
}
],
"description": "How well is the repo equipped to be developed and maintained with AI coding agents? An independent, experimental badge — weight 0.0, so it is surfaced on its own and does not affect the overall health score."
}
],
"metrics_version": "1.13.0"
},
"warnings": [
"Star history unavailable: GitHub GraphQL error: Resource not accessible by personal access token",
"GitHub dependency-graph SBOM unavailable (404); the dependency graph may be disabled for this repository"
],
"report_type": "repository",
"generated_at": "2026-07-23T00:30:37.365520Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/a/abulo/ratel.svg",
"full_name": "abulo/ratel",
"license_state": "standard",
"license_spdx": "Apache-2.0"
}