原始 JSON 报告 机器可读
{
"data": {
"repo": {
"topics": [
"chinese",
"cli",
"i18n",
"linter",
"localization",
"pre-commit",
"python",
"simplified-chinese",
"taiwan",
"text-processing",
"traditional-chinese"
],
"is_fork": false,
"size_kb": 10285,
"has_wiki": true,
"homepage": null,
"languages": {
"C#": 44033,
"Go": 50996,
"Java": 64339,
"Rust": 64583,
"Shell": 23472,
"Python": 1552490,
"Makefile": 56802,
"Dockerfile": 903,
"JavaScript": 2827,
"TypeScript": 54271
},
"pushed_at": "2026-07-25T02:11:59Z",
"created_at": "2025-12-25T23:49:33Z",
"owner_type": "User",
"updated_at": "2026-07-25T02:12:03Z",
"description": "Taiwan Traditional Chinese quality tool for AI-generated content (CLI + 6-language SDK, 31K terms / 100M-char zero-mistranslation validation)",
"is_archived": false,
"is_disabled": false,
"license_spdx": "MIT",
"default_branch": "main",
"license_spdx_raw": "MIT",
"primary_language": "Python",
"significant_languages": [
"Python"
]
},
"owner": {
"blog": "https://rajatim.blog",
"name": "rajatim",
"type": "User",
"login": "rajatim",
"company": null,
"location": "Taipei, Taiwan",
"followers": 0,
"avatar_url": "https://avatars.githubusercontent.com/u/5975535?v=4",
"created_at": "2013-11-19T02:34:10Z",
"is_verified": null,
"public_repos": 9,
"account_age_days": 4631
},
"license": {
"state": "standard",
"spdx_id": "MIT",
"raw_spdx": "MIT",
"file_present": true,
"scorecard_found": true,
"profile_has_license": true
},
"activity": {
"releases": [
{
"tag": "sdk/go/v4.4.2",
"kind": "other",
"published_at": "2026-07-18T22:40:23Z"
},
{
"tag": "v4.4.2",
"kind": "patch",
"published_at": "2026-07-18T22:37:20Z"
},
{
"tag": "sdk/go/v4.4.1",
"kind": "other",
"published_at": "2026-06-30T03:51:50Z"
},
{
"tag": "v4.4.1",
"kind": "patch",
"published_at": "2026-06-30T03:48:40Z"
},
{
"tag": "sdk/go/v4.4.0",
"kind": "other",
"published_at": "2026-06-11T00:37:03Z"
},
{
"tag": "v4.4.0",
"kind": "minor",
"published_at": "2026-06-11T00:33:37Z"
},
{
"tag": "sdk/go/v4.3.0",
"kind": "other",
"published_at": "2026-04-11T16:52:51Z"
},
{
"tag": "v4.3.0",
"kind": "minor",
"published_at": "2026-04-11T15:55:11Z"
},
{
"tag": "v4.2.1",
"kind": "patch",
"published_at": "2026-04-11T14:03:14Z"
},
{
"tag": "sdk/go/v4.2.1",
"kind": "other",
"published_at": "2026-04-11T14:02:49Z"
},
{
"tag": "v4.2.0",
"kind": "minor",
"published_at": "2026-04-11T10:41:00Z"
},
{
"tag": "v4.1.0",
"kind": "minor",
"published_at": "2026-04-11T06:03:23Z"
},
{
"tag": "v4.0.1",
"kind": "patch",
"published_at": "2026-04-09T23:32:26Z"
},
{
"tag": "v4.0.0",
"kind": "major",
"published_at": "2026-04-09T11:59:02Z"
},
{
"tag": "v3.4.0",
"kind": "minor",
"published_at": "2026-04-09T07:34:43Z"
},
{
"tag": "v3.3.0",
"kind": "minor",
"published_at": "2026-04-08T08:34:58Z"
},
{
"tag": "v3.2.1",
"kind": "patch",
"published_at": "2026-03-22T14:58:07Z"
},
{
"tag": "v3.2.0",
"kind": "minor",
"published_at": "2026-03-22T14:49:46Z"
},
{
"tag": "v3.1.0",
"kind": "minor",
"published_at": "2026-03-22T13:00:02Z"
},
{
"tag": "v3.0.0",
"kind": "major",
"published_at": "2026-03-22T12:14:39Z"
},
{
"tag": "v2.8.7",
"kind": "patch",
"published_at": "2026-01-18T06:16:23Z"
},
{
"tag": "v2.8.6",
"kind": "patch",
"published_at": "2026-01-13T04:23:12Z"
},
{
"tag": "v2.8.5",
"kind": "patch",
"published_at": "2026-01-04T22:19:21Z"
},
{
"tag": "v2.8.4",
"kind": "patch",
"published_at": "2026-01-04T14:39:42Z"
},
{
"tag": "v2.8.1",
"kind": "patch",
"published_at": "2026-01-04T12:15:04Z"
},
{
"tag": "v2.8.0",
"kind": "minor",
"published_at": "2026-01-04T06:20:49Z"
},
{
"tag": "v2.7.0",
"kind": "minor",
"published_at": "2026-01-03T02:21:03Z"
},
{
"tag": "v2.6.0",
"kind": "minor",
"published_at": "2026-01-02T19:19:05Z"
},
{
"tag": "v2.5.0",
"kind": "minor",
"published_at": "2025-12-29T15:57:14Z"
},
{
"tag": "v2.4.3",
"kind": "patch",
"published_at": "2025-12-27T04:46:41Z"
},
{
"tag": "v2.4.2",
"kind": "patch",
"published_at": "2025-12-27T02:23:10Z"
},
{
"tag": "v2.4.1",
"kind": "patch",
"published_at": "2025-12-27T02:17:35Z"
},
{
"tag": "v2.4.0",
"kind": "minor",
"published_at": "2025-12-26T05:05:30Z"
},
{
"tag": "v2.3.0",
"kind": "minor",
"published_at": "2025-12-26T04:41:22Z"
},
{
"tag": "v2.2.0",
"kind": "minor",
"published_at": "2025-12-26T03:30:43Z"
},
{
"tag": "v2.1.0",
"kind": "minor",
"published_at": "2025-12-26T03:08:21Z"
},
{
"tag": "v2.0.0",
"kind": "major",
"published_at": "2025-12-26T02:25:09Z"
},
{
"tag": "v1.5.0",
"kind": "minor",
"published_at": "2025-12-26T00:34:10Z"
}
],
"recent_commits": [
{
"oid": "b4989f5cfd29725d9d806a01dadae3a8cb14ba1a",
"body": null,
"is_bot": false,
"headline": "feat: 核准 CISA 個人安全語料批次",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-25T02:11:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "c4cf667259ce3857337c0e0eb7ad6ab624a37057",
"body": null,
"is_bot": false,
"headline": "docs: 釐清 CISA 語料抽取品質",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-24T15:06:46Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5a0b52e52acd5b9d48a494fba8efb15a84ff8840",
"body": null,
"is_bot": false,
"headline": "feat: 建立 CISA 個人安全語料批次",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-24T12:51:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ea957ba7fd8c51b32648c56c36a9db916dc15d92",
"body": null,
"is_bot": false,
"headline": "feat: approve CISA cyber hygiene batch",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-24T06:37:22Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f2100c9741a706c4d7a558c6df335e4c294f3bcc",
"body": null,
"is_bot": false,
"headline": "feat: 建立 CISA 資安語料批次",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-24T03:12:47Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "22384b6cfed55db856ffc3427955676384da5136",
"body": null,
"is_bot": false,
"headline": "feat: 核准正式文本實體護衛批次",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-24T02:14:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7adb2c5281cd7380eb9ddd5729acc8c7e7867a52",
"body": null,
"is_bot": false,
"headline": "fix: 保守修正批次十五分類",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-24T01:42:13Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6849e4e3c26687fb73596fd82036fb7506891359",
"body": null,
"is_bot": false,
"headline": "feat: 建立正式文本實體護衛批次",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-24T01:37:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4f83117ece03bbc41bbceb68fe54fc86be9284cc",
"body": null,
"is_bot": false,
"headline": "feat: 核准 AOSP Blind-v2 候選批次",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-24T01:19:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "674aeea34a2d7a5f85c96780c0ba4fee75426443",
"body": null,
"is_bot": false,
"headline": "feat: 建立 AOSP Blind-v2 候選批次",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-23T19:45:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ec9395583aa06e2088caa0967a0ca5ffc73a5371",
"body": null,
"is_bot": false,
"headline": "feat: 核准 Blind-v2 語義保留批次",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-23T19:31:04Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "96046a1b04168c454e359efbd3b1ac744d2d6429",
"body": null,
"is_bot": false,
"headline": "feat: 建立 Blind-v2 語義保留候選批次",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-23T19:12:32Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "4761ed612bf5aa235f84e810188cbd916ceb125c",
"body": null,
"is_bot": false,
"headline": "docs: 公開 Blind-v2 真實語料徵集入口",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-23T18:44:55Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2251f39d8f1087e3f56bd690c694dc8c3186acfb",
"body": null,
"is_bot": false,
"headline": "feat: 擴充 Blind-v2 候選語料至 981 筆",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-23T18:39:41Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "db7db447d134f0b5e9ed877aced8e9931eb290ce",
"body": null,
"is_bot": false,
"headline": "feat: 擴充 Blind-v2 OSHA 公有領域語料",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-23T16:52:02Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9287a02508c4ab6c06d270c419dbfc8ada6ec5d9",
"body": null,
"is_bot": false,
"headline": "feat: 擴充 Blind-v2 Ready.gov 公有領域語料",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-23T12:24:34Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5b56f6348493439c14082620fe43f03b2658d570",
"body": null,
"is_bot": false,
"headline": "feat: 建立 permissioned issue 匯入流程",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-23T07:55:29Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9fd8a53c500b1fbf36d8e0df335cd5e6b2e73246",
"body": null,
"is_bot": false,
"headline": "feat: 擴充 Blind-v2 候選來源與收集管線",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-23T07:33:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f238db8b793ebe69166ee55f5f3f367ed8bd625f",
"body": null,
"is_bot": false,
"headline": "feat: 建立 Blind-v2 來源分類首批複核",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-19T16:29:58Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "19b2d2deea9b0ff73049afc62e0d22066e9e1fa4",
"body": null,
"is_bot": false,
"headline": "feat: 固定 Blind-v2 第一批候選來源",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-19T16:01:10Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "956edd7f7cfd7df6becc77b4bf341e31ebf1988b",
"body": null,
"is_bot": false,
"headline": "feat: 建立 Blind-v2 評測治理骨架",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-19T15:38:24Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "011ed3f0bf9357758566a5b4552a4af5f65cd095",
"body": null,
"is_bot": false,
"headline": "鎖定 benchmark 競品執行環境",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-19T15:05:07Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "026b72fb419b3e7a151bf427d359d9c2e2170e3e",
"body": null,
"is_bot": false,
"headline": "記錄國教院 benchmark 評測結果",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-19T14:16:26Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "2f5ebba97b218f6f07dc71b030e40ae15f426ca6",
"body": null,
"is_bot": false,
"headline": "建立國教院術語 benchmark",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-19T14:15:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9fa15fe45b93cc82857d041dea9b73eb3b314f7a",
"body": null,
"is_bot": false,
"headline": "記錄 UD benchmark 評測結果",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-19T13:37:42Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "6a302f578b2f318c4a7f9597cf871b5812a5b984",
"body": null,
"is_bot": false,
"headline": "建立 UD 外部句級 benchmark",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-19T13:37:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "390615f6a0f51fc76c170750559afe48a8295ad0",
"body": null,
"is_bot": false,
"headline": "建立 benchmark 統計與治理基礎",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-19T13:09:19Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cd1d9756cf2389c20d954d3fb9c53c5143704432",
"body": null,
"is_bot": false,
"headline": "修正 benchmark 報告防洩漏機制",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-19T10:32:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "995f54afe09bcf26be6b6aa69dd111eb89afbc31",
"body": null,
"is_bot": false,
"headline": "docs: 完善 benchmark v2 執行規格",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-19T10:13:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0644f9d36cb623f2cf9d3fec15e271b98b54e1df",
"body": null,
"is_bot": false,
"headline": "docs: 建立外部 benchmark 與 blind-v2 計畫",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-19T09:57:15Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "71089fb9ab685073a9ac976cb84b477eb71e9c41",
"body": null,
"is_bot": false,
"headline": "fix: 強化發布流程的失敗關閉閘門",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-18T23:33:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "03a699e78f8a49645922dfe46564ac6cf7587c0c",
"body": null,
"is_bot": false,
"headline": "test: 公開環境略過私人 holdout 斷言",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-18T22:47:00Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "27c5ae8be000fc3b9ae81c2d8130b04b59929b5c",
"body": null,
"is_bot": false,
"headline": "fix: 統一發布驗證的 Python 環境",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-18T22:42:08Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "499b4dc1781e194c5556b4a52ed50a038a802acb",
"body": null,
"is_bot": false,
"headline": "fix: 移除 Go 比對器未使用方法",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-18T22:41:21Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "cc884923c63e442e32378ce931f1bee965f15379",
"body": null,
"is_bot": false,
"headline": "fix: 補齊發布驗證的 uv 環境",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-18T22:39:18Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e353b88a7224f70d6a4e8a8406bcf58150233b4b",
"body": null,
"is_bot": false,
"headline": "chore: release v4.4.2",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-18T22:37:11Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "5d3740538fd6695ea58fccbbb9f9e8d008e0e457",
"body": null,
"is_bot": false,
"headline": "feat: 提升準確度並強化多語言架構",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-18T22:30:59Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f67244158ee7b417013123b486089073d02fd099",
"body": null,
"is_bot": false,
"headline": "feat: 建立精準度驗證與回歸流程",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-07-16T06:05:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "96acdc9e01cc55203da552e173f4e4640e26ad77",
"body": "Sonatype Central API 新增 warnings 欄位,0.7.0 嚴格解析丟\nUnrecognizedPropertyException,讓 Java 發布流程誤報 BUILD FAILURE\n(v4.4.1 artifact 實際已成功發布到 Maven Central)。升級到最新\nstable 修正,並增強對未來 API 變動的容忍度。下次釋出生效。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(ci): 升級 central-publishing-maven-plugin 0.7.0→0.11.0",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-30T20:31:31Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "33ead4a82d7b2ee728cd1b6d5f6b1c6cdf6aaff4",
"body": null,
"is_bot": false,
"headline": "chore: release v4.4.1",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-30T03:48:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "156a6a3ae03553d6002cf699eabc483c10e8741c",
"body": "docs/plans/ 先前未排除,計畫內的簡→繁範例會被自身 hook 轉換\n(line 13 變成「軟體→軟體」無意義)。改寫該行並排除整個目錄。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: 修正計畫被 hook 轉換的範例並把 docs/plans/ 納入 .zhtwignore",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-28T20:50:52Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "338127ed47c9e2def1290f2b65d42d9b7c6cef55",
"body": "Phase 0 spike 證明價值在「抽樣→盲標→人工裁決」的人工流程,\n而非自動分桶 harness。據此:\n- 新增 scripts/spike_sample.py(抽 Book 句供盲標)\n- 新增 scripts/spike_eval.py(比對 convert vs 盲標,report-only,不自動分桶)\n- 計畫加 v2 修訂:Task 1–6 重型 harness 標為 SUPERSEDED,改用輕量流程\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: 加入輕量 spike 工具並修訂精準度計畫為 v2",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-28T20:48:56Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d344352488cf88bb984f6d328be6ce20c1d1dff9",
"body": "held-out 真實書籍語料盲測(30 句,非 corpus 自我循環)發現並修復:\n- 临时 過度轉換:暫時→臨時(暫時 zànshí ≠ 臨時 línshí;連帶 临时工/演员/服务)\n- 卧 殘留簡體字:補進安全字元層(卧室→臥室),Unihan 未收,加\n generate_charmap.py MANUAL_ADDITIONS 防 regenerate 遺失\n- 超声波→超音波 漏在地化補詞(醫療術語)\n- .zhtwignore 補 src/zhtw/data/charmap/(key 為簡體,避免被自身 hook 轉換)\n\ngolden battery 247→255 句;validate / 冪等 / 2269 pytest 全綠。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix: 修復 Phase 0 spike 發現的 3 個精準度問題",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-28T20:43:48Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "03346d4351aea5149f64951995b0feaf1ed69d76",
"body": null,
"is_bot": false,
"headline": "test: 擴充 corpus baseline 到 500 筆",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-27T09:31:27Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d096afbf98769236e95c928a3f609056506441d1",
"body": null,
"is_bot": false,
"headline": "test: 補強精準度語料與報告",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-27T08:56:16Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f59c336ff3a8828ab02c64dcafd38f9d37d29b44",
"body": null,
"is_bot": false,
"headline": "fix: 補周到保護下的週期詞轉換",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-27T08:32:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0ea565a2fd6949b1d4d50df70d9d964937a03852",
"body": null,
"is_bot": false,
"headline": "fix: 修復已知精準度落差",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-27T08:12:57Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d3029fe2c5244f6c26d12155051d4d9fb7091488",
"body": null,
"is_bot": false,
"headline": "fix: 補高信心精準度回歸",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-27T07:50:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "b371a8b671b76e274dcc85058083c4007d9baf9f",
"body": null,
"is_bot": false,
"headline": "chore: 修補依賴安全漏洞",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-27T07:16:51Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "fe217cfdee7d8f82eeff34b46c8a2fdd0dc633a6",
"body": null,
"is_bot": false,
"headline": "fix: 補 corpus 暴露的高信心詞條",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-27T06:53:25Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "ab32b589f37384e0b01651ded9b8300db95c875a",
"body": null,
"is_bot": false,
"headline": "docs: 定義精準度標準",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-26T23:05:40Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7dfca396a278d769aeab8fad03cd8926dc786432",
"body": null,
"is_bot": false,
"headline": "ci: 執行精選 corpus 語料測試",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-26T06:44:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "f3abf4cf9af3656708ff6c91cac1d5dbbd51082c",
"body": null,
"is_bot": false,
"headline": "test: 整合精選 corpus 語料測試",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-26T05:54:43Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e6d895cfbbcf8b857f528ec07bb5a80b08c22cdc",
"body": null,
"is_bot": false,
"headline": "fix: 補高信心 OpenCC 詞條覆蓋",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-26T05:47:05Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "3cfd8ac42be6eae8039b373ef739d7e361dcdad8",
"body": null,
"is_bot": false,
"headline": "test: 加入詞庫 target 冪等性稽核",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-26T01:34:36Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "d5127106678253ee1b22af7b646053b566584341",
"body": null,
"is_bot": false,
"headline": "fix: 讓 validate 通過並補冪等保護詞",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-26T01:16:54Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "e5e21f50ac48dacdc14db8a246acd6bf210f8917",
"body": null,
"is_bot": false,
"headline": "feat: 補高信心 IT 詞庫與精準度回歸測試",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-26T01:07:01Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "9177a33b68a8dcd54d6dd6eeb94043ef8d296880",
"body": null,
"is_bot": false,
"headline": "chore: release v4.4.0",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-11T00:33:33Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "7cc28b9154017eb2ec8d3e6141842bdef6f77158",
"body": "重掃時新偵測到的警報(sdk/typescript/pnpm-lock.yaml)。\nvitest 98 項測試通過。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(security): 升級 postcss 8.5.9→8.5.15(Dependabot medium,TS 開發依賴)",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-11T00:29:43Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c70a6724f61995ad97cad9fdfaee7010eeb7cc59",
"body": null,
"is_bot": false,
"headline": "docs: releasing.md 閘門清單補列 Dependabot 檢查",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-11T00:23:30Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "0aeb83588b4e70b0b8ea1db9a1accf0b10179c75",
"body": "- uv.lock:urllib3 2.6.3→2.7.0(2 個 high:跨來源 header 轉送、\n 解壓縮炸彈防護繞過)、idna 3.11→3.18(medium:CVE-2024-3651 補丁繞過)\n- scripts/release.sh 新增安全閘門:開放中的 medium+ Dependabot 警報\n 會擋下釋出(ALLOW_VULNS=1 可逃生),列出警報明細\n- RELEASE-CHECKLIST / releasing.md 同步更新閘門清單\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(security): 修復 3 個 Dependabot 弱點並列入釋出閘門",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-11T00:23:06Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4084652155372ca90c586f7d9083c1bf2ad33907",
"body": "Review 發現:make release 已存在但有 6 個靠記憶的缺口\n(git add -A 掃髒檔、無 CHANGELOG 閘門、無 Java 本地驗證、\n無分支/同步檢查、RELEASE-CHECKLIST.md 被引用卻不存在、\n發布後驗證與 Homebrew 全手動)。\n\n- scripts/release.sh:7 步閘門式釋出(main/乾淨樹/同步/tag 不存在/\n CHANGELOG 非空自動升級/pytest+mvn verify/y-N 確認),\n DRY_RUN 預演模式;notes 取自 CHANGELOG 區塊\n- scripts/release-ver\n[…]\n的核對清單\n (只剩人工判斷項),AGENTS.md / releasing.md 引用路徑同步修正\n- releasing.md:方法 A 改為 make release(修文件漂移),\n 發布後驗證一鍵化說明\n- CHANGELOG:補記本輪所有變更至 [Unreleased]\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(release): 釋出流程腳本化 — 閘門、雙 tag、發布後驗證一鍵化",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-11T00:06:23Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "db30088be4ead4c577f650c40438e875c746b8f1",
"body": "ZhtwConverterTest.convertAmbiguousChar 斷言 头发很干→頭髮很幹,\n這正是 2026-06 詞庫稽核修掉的錯轉(干 為 乾/幹/干 三向歧義字,\n依黃金規則不做無條件預設)。期望值更正為 頭髮很干(发→髮 仍由\n詞庫層轉換,裸 干 保留)。全 SDK 已掃描(含 unicode escape 解碼),\n此為唯一一處固化舊行為的硬寫斷言。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(sdk-java): 更新固化舊錯轉行為的測試斷言",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-10T23:55:08Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "39fa67fbb378d4bb39428dcf8b8a03b924da1c95",
"body": "問題:opencc.json 混有 MediaWiki ZhConversion(GPL-2.0-or-later)\n匯入詞條,與本專案 MIT 授權的相容性存疑,且隨 6 個 SDK 內嵌發佈。\n\n做法(key 級出處比對,上游:STPhrases/TWPhrases/TWVariantsRevPhrases):\n- 28,101 → 26,729 條:剔除 1,372 條「僅存在於 MediaWiki」的詞條;\n 保留者皆可獨立溯源至 OpenCC Apache-2.0 上游\n- 缺口補齊(非複製 GPL 資料):\n - chars.json +13 字形多變體單字(众→眾、伪→偽、启\n[…]\ncc.py 移除 zhconv 來源(防再生時混回)\n- THIRD_PARTY_NOTICES.md 更新:移除 MediaWiki 列、留歷史註記\n- sdk/data 重產並同步三份內嵌拷貝,Go SDK 測試通過\n\n926 項測試全綠(含 172 句黃金規則 battery)。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(license): 移除 MediaWiki GPL 詞條 — opencc.json 純 Apache-2.0 化",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-10T23:52:30Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "fa4b818e075288b782af0aecf0a95f2000bb2a0c",
"body": "問題:fix 路徑每次呼叫跑 3 次完整 Aho-Corasick 掃描\n(find_matches_with_lines 回報 + _apply_conversion_layers 內\nget_covered_positions/find_matches 各一次),check 路徑也有\n重複掃描;未覆蓋區段逐字 Python 迴圈處理。\n\n重構:\n- Matcher.scan():單次 automaton.iter 同時產出選定 matches +\n covered positions;選擇邏輯抽成 _select() 與 find_matches 共用\n- convert_text:一次\n[…]\n→ 6.7ms(2.1x, 0.36→0.76M 字/秒)\n fix balanced 14.5ms → 7.1ms(2.0x)\n check strict 8.8ms → 6.5ms(1.4x)\n\n926 項測試全數通過(含 172 句黃金規則 battery),行為等價。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "perf(converter): 單次 automaton 掃描 + str.translate fast path(2.1x)",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-10T23:44:56Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "1a1b6cac02567eaa32688f9755a4b4db78d8e6b6",
"body": "- sdk/data 重產(zhtw export):詞庫根因修復後同步資料檔與\n golden-test.json 至三份內嵌拷貝(rust/go),Go SDK 測試驗證通過\n- 新增 THIRD_PARTY_NOTICES.md:明確標註 opencc.json 含\n OpenCC(Apache-2.0)與 MediaWiki ZhConversion(GPL-2.0+)資料\n 及其與 MIT 主授權的關係\n- converter docstring 誠實化:模組與 convert_directory 宣稱的\n \"parallel processing\" 從未實作,workers 改標示為保留參數\n- AGENTS.md 版本標頭 4.2.1→4.3.0,並把 AGENTS.md 納入\n make bump 的 sed 清單(根因:不在清單內才會漂移)\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: 收尾 — SDK 資料重產、第三方授權聲明、文件誠實化",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-10T16:35:17Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "67499b45ec2c1fdd428ba36c47763e7cc0de1a48",
"body": "雙重根因(docs 反覆被 hook 腐化的元兇,前科 380e5d4):\n1. hook 直接 import 系統安裝的舊版 zhtw,用「已修正的舊詞條」\n 轉換 staged 檔案 — 本次它就用已刪除的 收藏→我的最愛、克→公克\n 腐化了新測試檔的 docstring\n2. hook 對 staged 檔逐一呼叫 convert_file(),完全繞過 .zhtwignore\n (tests/ 在 ignore 清單裡卻照樣被轉)\n\n修正:PYTHONPATH 指向 repo src/(dogfood 當前版本)+\nload_zhtwignore/is_ignored_by_patterns 過濾 + inject_protect_terms。\n順手把新測試檔的 zhtw:disable 移到第 1 行(docstring 之前)做縱深防禦,\n並還原被腐化的 docstring。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(hooks): pre-commit zhtw 改用 repo 當前程式碼並尊重 .zhtwignore",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-10T16:26:47Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "ae7c1d5f68131feb97d6cd8028f0650ba0f5065b",
"body": "`char_convert and sources and \"cn\" in sources` 在 sources=None\n(預設=全來源)時為 falsy,字元層靜默不生效,與 convert() 的\n`sources is None or \"cn\" in sources` 語義矛盾。CLI 不受影響\n(總是顯式傳 sources),但函式庫呼叫者用預設值會拿到不完整轉換。\n\n同步修正 effective_mode 的同型判斷,並新增兩個回歸測試。\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(converter): process_directory sources=None 時字元層被靜默關閉",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-10T16:24:21Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5b8dd3b3775baa1dac5caf07ea035f5b6905e9f0",
"body": "172 句歧義語境稽核發現三類系統性錯轉(寧可少轉,不要錯轉):\n\n1. UI 在地化詞被當全域裸詞(收藏→我的最愛、返回→回傳、保存→儲存、\n 评论→留言、撤销→復原、刷新→重新整理、查看→檢視、战略→策略、\n 渠道→通路、质量→品質、支持→支援、对象→物件、配置→設定、\n 程序→程式、项目→專案、默认→預設、文件→檔案、详情页→商品頁…)\n → 刪裸詞、補明確語境長詞(保存文件→儲存檔案、技术支持→技術支援、\n 项目经理→專案經理、默认值→預設值 等 80+ 條)\n 實證錯轉例:他收藏古董→他我的最愛古董、軍事戰略→軍事策略、\n 保存文化遺產→儲存文化遺產、\n[…]\n)、配置文件 組態檔→設定檔(現代用法)、\nhk/tech.json 同步刪 支持/程序 裸詞(司法程序同理)\n\n測試:新增 tests/test_golden_rule_battery.py(172 句固化回歸);\n更新 4 個舊測試中固化舊錯誤行為的斷言(恢复→還原 改 恢復 等)\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(terms): 黃金規則根因修復 — 裸詞長詞化、歧義字防火牆補洞、匯入資料清洗",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-10T16:24:21Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "a586604267942ad0f385bac8da78c9b7faf9c2ab",
"body": "問題:load_directory() 按字母序 merge,opencc.json(28k 條機器匯入)\n字母序排最後,會無聲覆蓋手工詞庫的同 key 條目。今天 36 個重疊 key\n恰好同值,但任何手工修改都可能被吃掉(修 邻里 時實際踩到)。\n\n修正:\n- dictionary.py:新增 BULK_FILES + iter_directory_files(),\n opencc.json 最先載入,手工檔按字母序後載 → key 碰撞手工必勝\n- cli.py validate:跨檔重複改為值感知 + bulk-aware\n (手工蓋 bulk = by design 資訊;手工互相衝突 = ⚠️ 問題)\n 原本 96 個警報中 36 個是同值噪音,現歸零,訊號可行動\n- test_dictionary_quality:衝突測試同步 bulk-aware;\n 新增 INTENTIONAL_IDENTITY 白名單機制(識別故意的保護 identity)\n\nCo-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(dictionary): 詞庫載入優先序明確化 — bulk 匯入先載、手工策展後載",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-10T16:23:40Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "380e5d41df12acfffa954f84b03b0b605b2f5489",
"body": "The docs reorg commit (f23557f) re-staged docs that the zhtw pre-commit hook then auto-converted simp->trad — but these docs DOCUMENT conversions and use Simplified text as 'before' examples, so converting them destroyed the examples (e.g. STRATEGIES.md SQL 'CASE WHEN name=\"用户\" THEN \"使用者\"' became a \n[…]\nExtended .zhtwignore to also protect superpowers/specs/ + the audit/dictionary report docs (they contain conversion examples too).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(docs): restore conversion-example docs corrupted by simp->trad hook",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-03T09:17:43Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f23557f48ffde7a11bd6aa6b2fb7e0ae2879c4e3",
"body": "docs/ had 6 flat files + 2 non-canonical subdirs (superpowers/, zhtw-db/). Reorganized per file-structure-standard: superpowers/+zhtw-db/ -> docs/features/; audit reports + DICTIONARY-COVERAGE -> docs/reports/; CI-CD-INTEGRATION -> docs/deployment/; CLI-ADVANCED + RELEASE-CHECKLIST -> docs/guides/. \n[…]\nzhtw pre-commit hook converted residual Simplified Chinese in the moved docs to Traditional (repo policy for the tool's own docs).\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: organize docs/ into canonical topic taxonomy",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-06-03T07:47:12Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "f4bd4e8b04921a77229d270a7c2f2389ca5db213",
"body": "Framing line was missed in the original migration (Edit failed after git mv rename). Content unchanged — only inserted the source-of-truth note after the title.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs(agents): add AGENTS.md-first framing line",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-05-30T09:06:11Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "6558e123dda5515b6d9f5e40f18623113eddba66",
"body": "AGENTS.md is source of truth (Codex reads natively, no @import); CLAUDE.md/GEMINI.md are @AGENTS.md wrappers. Made the header tool-agnostic and removed a stray '(以下為完整內容)' marker line. 0 Claude-specific content. Content preserved (0 lines unaccounted). 125 lines — within budget, no slimming needed.\n\nCo-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore(agents): adopt AGENTS.md-first layout (mixed Codex/Gemini/Claude)",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-05-30T07:52:22Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7b1aa7c191b2bd2c0d3625b3771acf78866fba63",
"body": "Update README hero (zh + en) to lead with AI output post-processing\nas the primary use case. Add explicit Use Cases section covering AI\ncontent QA, i18n localization, technical docs, and enterprise\ncompliance. Existing technical content (OpenCC comparison, validation\nrigor against 100M-char corpus, 6-language SDK distribution)\npreserved unchanged.\n\nCo-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: reposition zhtw as AI-generated content quality tool",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-30T11:43:14Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "45708de1e4ec7cb955884483e971284dbdfac052",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: gitignore .claude/scheduled_tasks.lock (ScheduleWakeup runtime)",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-14T11:34:01Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "288c790d5fba018a7e3397241e2aecb2046118c9",
"body": "…移除 atty)\n\n兩個 RUSTSEC alert 都在 sdk/rust/Cargo.lock 的 transitive dep:\n\n- #17 rand: phf_generator 0.11 帶進 rand 0.8.5;phf 0.13 改用 fastrand\n- #16 atty: criterion 0.4 帶進 atty 0.2.14(unmaintained,無 patched 版本);\n criterion 0.5 換成 is-terminal\n\nbuild.rs 改寫:phf_codegen 0.13 把 entry value 從「copy 值」改成「borrow &\n[…]\nlap 鎖到符合 MSRV (rust-version=1.80) 的版本(避免\n2.5+/4.6+ 強制要 Rust 1.81/1.85),對外不變動 MSRV 契約。\n\n測試:cargo test --all 29 passed;cargo bench --no-run 編譯通過。\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(rust): dependabot — phf 0.11→0.13 (移除 rand) + criterion 0.4→0.5 (…",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-14T11:25:39Z",
"body_truncated": true,
"is_coding_agent": true
},
{
"oid": "fe76a3a1545aa22e504ca47012f3190ccc4e8acd",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: add CLAUDE.local.md to .gitignore (batch optimization)",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T17:58:51Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "5605929916d8895d06fa4a6feeb013608a8fffd7",
"body": "- 新增 docs/RELEASE-CHECKLIST.md — 完整逐項核對清單\n- make bump 新增:binary URL 版本更新、SDK README 版本同步、Cargo.lock 刷新\n- releasing.md / CLAUDE.md 引用核對清單\n- 常見踩坑記錄(Go subdirectory tag、binary URL、Cargo.lock)\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: 版本釋出核對清單 + make bump 自動化補強",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T17:34:56Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "4874a8d1b52f51e52434a0e220b94f21b4e152d1",
"body": "- 補 4 個 SDK README:Java、Rust、Go、C# (.NET)(TypeScript/WASM 已有)\n- README/README.en 補 npm + crates.io badges\n- Standalone binary 下載連結 v4.2.0 → v4.3.0\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: 補 SDK README + badges + 版本修正",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T17:32:00Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "771531aa24bf0d6b2da0948c3d5838caa26978d7",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: Cargo.lock 升版 4.3.0 + gitignore 補 obj/bin/examples",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T17:23:06Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "21dffaf9690c547073dec879f71b30fa5462c814",
"body": "- 新增 6 語言 benchmark(Python/Java/TypeScript/Go/Rust/C#)\n- README 加入效能基準表、C# SDK 安裝段落、NuGet badge\n- 修正 benchmark 檔案以對應各 SDK 實際 API\n- 「五種語言 SDK」→「六種語言 SDK」,C# 從 Planned → Stable\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat: 跨 SDK 效能基準 + README 更新 C# SDK 為 Stable",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T16:27:37Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "0a31b252ec907cd911c39d8d9c514b501e82ce3a",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "chore: bump all SDKs to 4.3.0 — C# SDK + Go CLI binary",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T15:52:59Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "47cdc78df1fbdeb55d938606669049ff5f533067",
"body": "1. 拆 build 為兩步:先 dotnet build Zhtw.csproj(驗證雙 target),\n 再 build test project(--no-dependencies)\n2. dotnet test --no-build 避免重複編譯\n3. release 時 pack + push 到 NuGet.org\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "ci(dotnet): netstandard2.0 build 驗證 + NuGet publish job",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T15:48:05Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "8894434d1ac64c531211fc60b017990813c64c47",
"body": "C# 類別內 member name 優先於 type name,\nAmbiguityMode() 方法遮蔽 AmbiguityMode enum。\n用 global::Zhtw.AmbiguityMode 消歧義,公開 API 不變。\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(dotnet): AmbiguityMode 方法名與 enum 同名衝突",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T15:39:05Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "d247312d8e7b940aff7f96769d1ca0efab2e3c04",
"body": "SDK-style projects auto-include all *.cs recursively.\nZhtw.csproj at sdk/dotnet/ was picking up tests/**/*.cs,\ncausing xunit reference errors on the library project.\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(dotnet): exclude tests/ from library compilation",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T15:37:27Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f1d84d86080c0904f583f705577c4a851fa625d0",
"body": "multi-target netstandard2.0+net8.0, AC automaton, three-layer converter,\ngolden tests (19 convert + 19 check + 9 lookup), CI workflow\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(dotnet): C# (.NET) SDK — Convert/Check/Lookup API",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T15:36:19Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "bd1916c525fddf502e7295499702328966813123",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "ci(dotnet): workflow 自身編輯也觸發 CI",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T15:36:12Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "58bce39364dd8e446cb316b31d14fb59b7cf86a9",
"body": "1. CI: dotnet build/test 改指 tests/Zhtw.Tests.csproj(原本指 library\n 目錄,0 測試也會綠燈)\n2. Zhtw.csproj: 加 InternalsVisibleTo(\"Zhtw.Tests\") 讓測試組件存取\n internal AC 型別\n3. BasicMatch: \"she\"@1-4 在 leftmost-longest greedy 下會擋住\n \"hers\"@2-6,修正為 Assert.Single\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(dotnet): CI 指向測試專案 + InternalsVisibleTo + BasicMatch 修正",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T15:29:17Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "c0e36e42bf239ef98e225a92ade8a6e03ece824a",
"body": "StringInfo.LengthInTextElements 回傳 grapheme cluster 數,\n含組合字元時會少算 codepoint。改用 CodepointLength() 一致。\n同時修正 ArgumentException paramName 為公開方法參數名。\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(dotnet): CodepointHelper 用 codepoint 計數取代 grapheme cluster",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T15:20:03Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "0aa01ff4d9221ae2c3b16d2315057390a858fad2",
"body": "bin/Release/net8.0 → Zhtw.Tests → tests → dotnet → sdk (6 ..)\n\nCo-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "fix(dotnet): golden test path — 6 levels up from bin/ to sdk/",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T15:14:59Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "b000a03691bc41e3b1173862fea21c65f5a9b270",
"body": null,
"is_bot": false,
"headline": "test(dotnet): golden tests — convert/check/lookup parity with all SDKs",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T15:09:52Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "66aab72d0c46889524aa65342869977fd81a8287",
"body": null,
"is_bot": false,
"headline": "ci(dotnet): real build + test workflow",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T15:09:49Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "65ec2d97ceb794ac15a218e97b25e73c79e55720",
"body": "Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(dotnet): ConverterBuilder + ZhtwConvert static API",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T15:08:44Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "e6085995c8534be83a5a28fdfc5f93b7a5b2c5b0",
"body": "Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(dotnet): Converter — three-layer Convert/Check/Lookup",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T15:07:37Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "7cbde4e1b95420c3f27b9618749c75e0eece3ff4",
"body": null,
"is_bot": false,
"headline": "feat(dotnet): Aho-Corasick automaton + 6 unit tests",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T15:05:53Z",
"body_truncated": false,
"is_coding_agent": false
},
{
"oid": "bf733bccdc349ef77d2b64f95c6d4e1de83c4384",
"body": "Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(dotnet): CodepointHelper + ZhtwData — embedded JSON loader",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T15:03:54Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "f32e61ce9ef827dd36f71fc678e2097fdafabce2",
"body": "….0+net8.0\n\nCo-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "feat(dotnet): project scaffolding + Types — multi-target netstandard2…",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T15:02:43Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "1f52a727e53765296f46771215f4e1f2ba9edb83",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: C# (.NET) SDK 實作計畫 — 7 tasks, TDD, multi-target",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T14:47:39Z",
"body_truncated": false,
"is_coding_agent": true
},
{
"oid": "33f0f7d985b54fe06bdc8faab1d63507b459d88f",
"body": "Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>",
"is_bot": false,
"headline": "docs: C# SDK spec 修正簡體範例被 hook 轉繁 + zhtw:disable",
"author_name": "rajatim",
"author_login": "rajatim",
"committed_at": "2026-04-11T14:41:06Z",
"body_truncated": false,
"is_coding_agent": true
}
],
"releases_count": 38,
"commits_last_year": 446,
"latest_release_at": "2026-07-18T22:40:23Z",
"latest_release_tag": "sdk/go/v4.4.2",
"releases_from_tags": false,
"days_since_last_push": 0,
"active_weeks_last_year": 16,
"days_since_latest_release": 6,
"mean_days_between_releases": 10.9
},
"community": {
"has_readme": true,
"has_license": true,
"has_description": true,
"has_contributing": true,
"health_percentage": 71,
"has_issue_template": false,
"has_code_of_conduct": false,
"has_pull_request_template": false
},
"ecosystem": {
"packages": [
{
"name": "zhtw",
"exists": true,
"license": "MIT",
"keywords": [
"ai-tools",
"chinese",
"converter",
"i18n",
"l10n",
"localization",
"nlp",
"simplified",
"taiwan",
"text-processing",
"traditional",
"vibe-coding",
"Development Status :: 5 - Production/Stable",
"Environment :: Console",
"Intended Audience :: Developers",
"License :: OSI Approved :: MIT License",
"Natural Language :: Chinese (Simplified)",
"Natural Language :: Chinese (Traditional)",
"Operating System :: OS Independent",
"Programming Language :: Python :: 3",
"Programming Language :: Python :: 3.10",
"Programming Language :: Python :: 3.11",
"Programming Language :: Python :: 3.12",
"Programming Language :: Python :: 3.13",
"Topic :: Software Development :: Internationalization",
"Topic :: Software Development :: Localization",
"Topic :: Text Processing :: Linguistic"
],
"ecosystem": "pypi",
"matches_repo": true,
"registry_url": "https://pypi.org/project/zhtw/",
"is_deprecated": false,
"latest_version": "4.4.2",
"repository_url": "https://github.com/rajatim/zhtw",
"versions_count": 35,
"total_downloads": null,
"dependents_count": null,
"deprecation_note": null,
"maintainers_count": null,
"monthly_downloads": 536,
"first_published_at": "2025-12-26T00:47:28.746152Z",
"latest_published_at": "2026-07-18T22:52:32.751174Z",
"latest_version_yanked": null,
"days_since_latest_publish": 6
}
]
},
"popularity": {
"forks": 0,
"stars": 12,
"watchers": 0,
"fork_history": {
"days": [],
"complete": true,
"collected": 0,
"total_forks": 0
},
"star_history": null,
"open_issues_and_prs": 11
},
"ai_readiness": {
"has_nix": false,
"example_dirs": [],
"has_llms_txt": false,
"has_dockerfile": true,
"has_mcp_signal": false,
"bootstrap_files": [
"Makefile"
],
"api_schema_files": [],
"has_devcontainer": false,
"typecheck_configs": [
"sdk/typescript/tsconfig.json",
"src/zhtw/py.typed"
],
"toolchain_manifests": [
"benchmarks/bench_csharp.csproj",
"sdk/dotnet/Zhtw.csproj",
"sdk/dotnet/tests/Zhtw.Tests/Zhtw.Tests.csproj",
"sdk/go/go.mod",
"sdk/java/pom.xml",
"sdk/rust/Cargo.toml",
"sdk/rust/zhtw-wasm/Cargo.toml",
"sdk/rust/zhtw/Cargo.toml"
],
"largest_source_bytes": 420150,
"source_files_sampled": 182,
"oversized_source_files": 1,
"agent_instruction_files": [
"AGENTS.md",
"CLAUDE.md",
"GEMINI.md"
],
"agent_instruction_max_bytes": 5430
},
"dependencies": {
"manifests": [
"benchmarks/bench_csharp.csproj",
"pyproject.toml"
],
"advisories": {
"error": null,
"scope": "published_package",
"source": "osv",
"findings": [],
"collected": true,
"malicious": [],
"truncated": false,
"by_severity": {},
"advisory_count": 0,
"affected_count": 0,
"assessed_count": 3,
"malicious_count": 0,
"assessed_package": "pypi:zhtw@4.4.2",
"unassessed_count": 0,
"direct_affected_count": 0
},
"ecosystems": [
"nuget",
"pypi"
],
"dependencies": [
{
"name": "click",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=8.0"
},
{
"name": "pyahocorasick",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=2.0"
},
{
"name": "charset-normalizer",
"manifest": "pyproject.toml",
"ecosystem": "pypi",
"version_constraint": ">=3.0"
}
],
"all_dependencies": {
"error": null,
"source": "github-sbom",
"packages": [
{
"name": "charset-normalizer",
"direct": true,
"version": "3.4.7",
"ecosystem": "pypi"
},
{
"name": "click",
"direct": true,
"version": "8.3.2",
"ecosystem": "pypi"
},
{
"name": "pyahocorasick",
"direct": true,
"version": "2.3.0",
"ecosystem": "pypi"
},
{
"name": "aho-corasick",
"direct": false,
"version": "1.1.4",
"ecosystem": "crates"
},
{
"name": "anes",
"direct": false,
"version": "0.1.6",
"ecosystem": "crates"
},
{
"name": "anstyle",
"direct": false,
"version": "1.0.14",
"ecosystem": "crates"
},
{
"name": "arrayref",
"direct": false,
"version": "0.3.9",
"ecosystem": "crates"
},
{
"name": "arrayvec",
"direct": false,
"version": "0.7.6",
"ecosystem": "crates"
},
{
"name": "async-trait",
"direct": false,
"version": "0.1.89",
"ecosystem": "crates"
},
{
"name": "autocfg",
"direct": false,
"version": "1.5.0",
"ecosystem": "crates"
},
{
"name": "blake3",
"direct": false,
"version": "1.5.5",
"ecosystem": "crates"
},
{
"name": "bumpalo",
"direct": false,
"version": "3.20.2",
"ecosystem": "crates"
},
{
"name": "cast",
"direct": false,
"version": "0.3.0",
"ecosystem": "crates"
},
{
"name": "cc",
"direct": false,
"version": "1.2.60",
"ecosystem": "crates"
},
{
"name": "cfg-if",
"direct": false,
"version": "1.0.4",
"ecosystem": "crates"
},
{
"name": "ciborium",
"direct": false,
"version": "0.2.2",
"ecosystem": "crates"
},
{
"name": "ciborium-io",
"direct": false,
"version": "0.2.2",
"ecosystem": "crates"
},
{
"name": "ciborium-ll",
"direct": false,
"version": "0.2.2",
"ecosystem": "crates"
},
{
"name": "clap",
"direct": false,
"version": "4.5.39",
"ecosystem": "crates"
},
{
"name": "clap_builder",
"direct": false,
"version": "4.5.39",
"ecosystem": "crates"
},
{
"name": "clap_lex",
"direct": false,
"version": "0.7.7",
"ecosystem": "crates"
},
{
"name": "constant_time_eq",
"direct": false,
"version": "0.3.1",
"ecosystem": "crates"
},
{
"name": "criterion",
"direct": false,
"version": "0.5.1",
"ecosystem": "crates"
},
{
"name": "criterion-plot",
"direct": false,
"version": "0.5.0",
"ecosystem": "crates"
},
{
"name": "crossbeam-deque",
"direct": false,
"version": "0.8.6",
"ecosystem": "crates"
},
{
"name": "crossbeam-epoch",
"direct": false,
"version": "0.9.18",
"ecosystem": "crates"
},
{
"name": "crossbeam-utils",
"direct": false,
"version": "0.8.21",
"ecosystem": "crates"
},
{
"name": "crunchy",
"direct": false,
"version": "0.2.4",
"ecosystem": "crates"
},
{
"name": "daachorse",
"direct": false,
"version": "1.0.0",
"ecosystem": "crates"
},
{
"name": "either",
"direct": false,
"version": "1.15.0",
"ecosystem": "crates"
},
{
"name": "fastrand",
"direct": false,
"version": "2.4.1",
"ecosystem": "crates"
},
{
"name": "find-msvc-tools",
"direct": false,
"version": "0.1.9",
"ecosystem": "crates"
},
{
"name": "futures-core",
"direct": false,
"version": "0.3.32",
"ecosystem": "crates"
},
{
"name": "futures-task",
"direct": false,
"version": "0.3.32",
"ecosystem": "crates"
},
{
"name": "futures-util",
"direct": false,
"version": "0.3.32",
"ecosystem": "crates"
},
{
"name": "half",
"direct": false,
"version": "2.4.1",
"ecosystem": "crates"
},
{
"name": "hermit-abi",
"direct": false,
"version": "0.5.2",
"ecosystem": "crates"
},
{
"name": "is-terminal",
"direct": false,
"version": "0.4.17",
"ecosystem": "crates"
},
{
"name": "itertools",
"direct": false,
"version": "0.10.5",
"ecosystem": "crates"
},
{
"name": "itoa",
"direct": false,
"version": "1.0.18",
"ecosystem": "crates"
},
{
"name": "js-sys",
"direct": false,
"version": "0.3.95",
"ecosystem": "crates"
},
{
"name": "libc",
"direct": false,
"version": "0.2.185",
"ecosystem": "crates"
},
{
"name": "libm",
"direct": false,
"version": "0.2.16",
"ecosystem": "crates"
},
{
"name": "memchr",
"direct": false,
"version": "2.8.0",
"ecosystem": "crates"
},
{
"name": "minicov",
"direct": false,
"version": "0.3.8",
"ecosystem": "crates"
},
{
"name": "nu-ansi-term",
"direct": false,
"version": "0.50.3",
"ecosystem": "crates"
},
{
"name": "num-traits",
"direct": false,
"version": "0.2.19",
"ecosystem": "crates"
},
{
"name": "once_cell",
"direct": false,
"version": "1.21.4",
"ecosystem": "crates"
},
{
"name": "oorandom",
"direct": false,
"version": "11.1.5",
"ecosystem": "crates"
},
{
"name": "phf",
"direct": false,
"version": "0.13.1",
"ecosystem": "crates"
},
{
"name": "phf_codegen",
"direct": false,
"version": null,
"ecosystem": "crates"
},
{
"name": "phf_codegen",
"direct": false,
"version": "0.13.1",
"ecosystem": "crates"
},
{
"name": "phf_generator",
"direct": false,
"version": "0.13.1",
"ecosystem": "crates"
},
{
"name": "phf_macros",
"direct": false,
"version": "0.13.1",
"ecosystem": "crates"
},
{
"name": "phf_shared",
"direct": false,
"version": "0.13.1",
"ecosystem": "crates"
},
{
"name": "pin-project-lite",
"direct": false,
"version": "0.2.17",
"ecosystem": "crates"
},
{
"name": "plotters",
"direct": false,
"version": "0.3.7",
"ecosystem": "crates"
},
{
"name": "plotters-backend",
"direct": false,
"version": "0.3.7",
"ecosystem": "crates"
},
{
"name": "plotters-svg",
"direct": false,
"version": "0.3.7",
"ecosystem": "crates"
},
{
"name": "proc-macro2",
"direct": false,
"version": "1.0.106",
"ecosystem": "crates"
},
{
"name": "quote",
"direct": false,
"version": "1.0.45",
"ecosystem": "crates"
},
{
"name": "rayon",
"direct": false,
"version": "1.12.0",
"ecosystem": "crates"
},
{
"name": "rayon-core",
"direct": false,
"version": "1.13.0",
"ecosystem": "crates"
},
{
"name": "regex",
"direct": false,
"version": "1.12.3",
"ecosystem": "crates"
},
{
"name": "regex-automata",
"direct": false,
"version": "0.4.14",
"ecosystem": "crates"
},
{
"name": "regex-syntax",
"direct": false,
"version": "0.8.10",
"ecosystem": "crates"
},
{
"name": "rustversion",
"direct": false,
"version": "1.0.22",
"ecosystem": "crates"
},
{
"name": "same-file",
"direct": false,
"version": "1.0.6",
"ecosystem": "crates"
},
{
"name": "serde",
"direct": false,
"version": "1.0.228",
"ecosystem": "crates"
},
{
"name": "serde-wasm-bindgen",
"direct": false,
"version": "0.6.5",
"ecosystem": "crates"
},
{
"name": "serde_core",
"direct": false,
"version": "1.0.228",
"ecosystem": "crates"
},
{
"name": "serde_derive",
"direct": false,
"version": "1.0.228",
"ecosystem": "crates"
},
{
"name": "serde_json",
"direct": false,
"version": "1.0.149",
"ecosystem": "crates"
},
{
"name": "shlex",
"direct": false,
"version": "1.3.0",
"ecosystem": "crates"
},
{
"name": "siphasher",
"direct": false,
"version": "1.0.2",
"ecosystem": "crates"
},
{
"name": "slab",
"direct": false,
"version": "0.4.12",
"ecosystem": "crates"
},
{
"name": "syn",
"direct": false,
"version": "2.0.117",
"ecosystem": "crates"
},
{
"name": "thiserror",
"direct": false,
"version": "2.0.18",
"ecosystem": "crates"
},
{
"name": "thiserror-impl",
"direct": false,
"version": "2.0.18",
"ecosystem": "crates"
},
{
"name": "tinytemplate",
"direct": false,
"version": "1.2.1",
"ecosystem": "crates"
},
{
"name": "unicode-ident",
"direct": false,
"version": "1.0.24",
"ecosystem": "crates"
},
{
"name": "walkdir",
"direct": false,
"version": "2.5.0",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen",
"direct": false,
"version": "0.2.118",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-futures",
"direct": false,
"version": "0.4.68",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-macro",
"direct": false,
"version": "0.2.118",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-macro-support",
"direct": false,
"version": "0.2.118",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-shared",
"direct": false,
"version": "0.2.118",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-test",
"direct": false,
"version": null,
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-test",
"direct": false,
"version": "0.3.68",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-test-macro",
"direct": false,
"version": "0.3.68",
"ecosystem": "crates"
},
{
"name": "wasm-bindgen-test-shared",
"direct": false,
"version": "0.2.118",
"ecosystem": "crates"
},
{
"name": "web-sys",
"direct": false,
"version": "0.3.95",
"ecosystem": "crates"
},
{
"name": "winapi-util",
"direct": false,
"version": "0.1.11",
"ecosystem": "crates"
},
{
"name": "windows-link",
"direct": false,
"version": "0.2.1",
"ecosystem": "crates"
},
{
"name": "windows-sys",
"direct": false,
"version": "0.61.2",
"ecosystem": "crates"
},
{
"name": "zmij",
"direct": false,
"version": "1.0.21",
"ecosystem": "crates"
},
{
"name": "com.google.code.gson:gson",
"direct": false,
"version": "2.11.0",
"ecosystem": "maven"
},
{
"name": "org.ahocorasick:ahocorasick",
"direct": false,
"version": "0.6.3",
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-compiler-plugin",
"direct": false,
"version": "3.13.0",
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-gpg-plugin",
"direct": false,
"version": "3.2.7",
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-javadoc-plugin",
"direct": false,
"version": "3.11.2",
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-resources-plugin",
"direct": false,
"version": "3.3.1",
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-shade-plugin",
"direct": false,
"version": "3.6.0",
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-source-plugin",
"direct": false,
"version": "3.3.1",
"ecosystem": "maven"
},
{
"name": "org.apache.maven.plugins:maven-surefire-plugin",
"direct": false,
"version": "3.5.2",
"ecosystem": "maven"
},
{
"name": "org.junit.jupiter:junit-jupiter",
"direct": false,
"version": "5.11.4",
"ecosystem": "maven"
},
{
"name": "org.openjdk.jmh:jmh-core",
"direct": false,
"version": "1.37",
"ecosystem": "maven"
},
{
"name": "org.openjdk.jmh:jmh-generator-annprocess",
"direct": false,
"version": "1.37",
"ecosystem": "maven"
},
{
"name": "org.sonatype.central:central-publishing-maven-plugin",
"direct": false,
"version": "0.11.0",
"ecosystem": "maven"
},
{
"name": "@emnapi/core",
"direct": false,
"version": "1.10.0",
"ecosystem": "npm"
},
{
"name": "@emnapi/runtime",
"direct": false,
"version": "1.10.0",
"ecosystem": "npm"
},
{
"name": "@emnapi/wasi-threads",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/aix-ppc64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/android-arm",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/android-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/android-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/darwin-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/darwin-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/freebsd-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/freebsd-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-arm",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-ia32",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-loong64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-mips64el",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-ppc64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-riscv64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-s390x",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/linux-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/netbsd-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/netbsd-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/openbsd-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/openbsd-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/openharmony-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/sunos-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/win32-arm64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/win32-ia32",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@esbuild/win32-x64",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "@jridgewell/gen-mapping",
"direct": false,
"version": "0.3.13",
"ecosystem": "npm"
},
{
"name": "@jridgewell/resolve-uri",
"direct": false,
"version": "3.1.2",
"ecosystem": "npm"
},
{
"name": "@jridgewell/sourcemap-codec",
"direct": false,
"version": "1.5.5",
"ecosystem": "npm"
},
{
"name": "@jridgewell/trace-mapping",
"direct": false,
"version": "0.3.31",
"ecosystem": "npm"
},
{
"name": "@napi-rs/wasm-runtime",
"direct": false,
"version": "1.1.6",
"ecosystem": "npm"
},
{
"name": "@oxc-project/types",
"direct": false,
"version": "0.133.0",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-android-arm64",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-darwin-arm64",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-darwin-x64",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-freebsd-x64",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-arm-gnueabihf",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-arm64-gnu",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-arm64-musl",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-ppc64-gnu",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-s390x-gnu",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-x64-gnu",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-linux-x64-musl",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-openharmony-arm64",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-wasm32-wasi",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-win32-arm64-msvc",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/binding-win32-x64-msvc",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "@rolldown/pluginutils",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-android-arm-eabi",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-android-arm64",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-darwin-arm64",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-darwin-x64",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-freebsd-arm64",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-freebsd-x64",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-arm-gnueabihf",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-arm-musleabihf",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-arm64-gnu",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-arm64-musl",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-loong64-gnu",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-loong64-musl",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-ppc64-gnu",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-ppc64-musl",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-riscv64-gnu",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-riscv64-musl",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-s390x-gnu",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-x64-gnu",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-linux-x64-musl",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-openbsd-x64",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-openharmony-arm64",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-win32-arm64-msvc",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-win32-ia32-msvc",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-win32-x64-gnu",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@rollup/rollup-win32-x64-msvc",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "@standard-schema/spec",
"direct": false,
"version": "1.1.0",
"ecosystem": "npm"
},
{
"name": "@tybys/wasm-util",
"direct": false,
"version": "0.10.3",
"ecosystem": "npm"
},
{
"name": "@types/chai",
"direct": false,
"version": "5.2.3",
"ecosystem": "npm"
},
{
"name": "@types/deep-eql",
"direct": false,
"version": "4.0.2",
"ecosystem": "npm"
},
{
"name": "@types/estree",
"direct": false,
"version": "1.0.9",
"ecosystem": "npm"
},
{
"name": "@types/node",
"direct": false,
"version": "20.19.39",
"ecosystem": "npm"
},
{
"name": "@types/whatwg-mimetype",
"direct": false,
"version": "3.0.2",
"ecosystem": "npm"
},
{
"name": "@types/ws",
"direct": false,
"version": "8.18.1",
"ecosystem": "npm"
},
{
"name": "@vitest/expect",
"direct": false,
"version": "4.1.9",
"ecosystem": "npm"
},
{
"name": "@vitest/mocker",
"direct": false,
"version": "4.1.9",
"ecosystem": "npm"
},
{
"name": "@vitest/pretty-format",
"direct": false,
"version": "4.1.9",
"ecosystem": "npm"
},
{
"name": "@vitest/runner",
"direct": false,
"version": "4.1.9",
"ecosystem": "npm"
},
{
"name": "@vitest/snapshot",
"direct": false,
"version": "4.1.9",
"ecosystem": "npm"
},
{
"name": "@vitest/spy",
"direct": false,
"version": "4.1.9",
"ecosystem": "npm"
},
{
"name": "@vitest/utils",
"direct": false,
"version": "4.1.9",
"ecosystem": "npm"
},
{
"name": "acorn",
"direct": false,
"version": "8.17.0",
"ecosystem": "npm"
},
{
"name": "any-promise",
"direct": false,
"version": "1.3.0",
"ecosystem": "npm"
},
{
"name": "assertion-error",
"direct": false,
"version": "2.0.1",
"ecosystem": "npm"
},
{
"name": "buffer-image-size",
"direct": false,
"version": "0.6.4",
"ecosystem": "npm"
},
{
"name": "bundle-require",
"direct": false,
"version": "5.1.0",
"ecosystem": "npm"
},
{
"name": "cac",
"direct": false,
"version": "6.7.14",
"ecosystem": "npm"
},
{
"name": "chai",
"direct": false,
"version": "6.2.2",
"ecosystem": "npm"
},
{
"name": "chokidar",
"direct": false,
"version": "4.0.3",
"ecosystem": "npm"
},
{
"name": "commander",
"direct": false,
"version": "4.1.1",
"ecosystem": "npm"
},
{
"name": "confbox",
"direct": false,
"version": "0.1.8",
"ecosystem": "npm"
},
{
"name": "consola",
"direct": false,
"version": "3.4.2",
"ecosystem": "npm"
},
{
"name": "convert-source-map",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "debug",
"direct": false,
"version": "4.4.3",
"ecosystem": "npm"
},
{
"name": "detect-libc",
"direct": false,
"version": "2.1.2",
"ecosystem": "npm"
},
{
"name": "entities",
"direct": false,
"version": "7.0.1",
"ecosystem": "npm"
},
{
"name": "es-module-lexer",
"direct": false,
"version": "2.1.0",
"ecosystem": "npm"
},
{
"name": "esbuild",
"direct": false,
"version": "0.28.1",
"ecosystem": "npm"
},
{
"name": "estree-walker",
"direct": false,
"version": "3.0.3",
"ecosystem": "npm"
},
{
"name": "expect-type",
"direct": false,
"version": "1.4.0",
"ecosystem": "npm"
},
{
"name": "fdir",
"direct": false,
"version": "6.5.0",
"ecosystem": "npm"
},
{
"name": "fix-dts-default-cjs-exports",
"direct": false,
"version": "1.0.1",
"ecosystem": "npm"
},
{
"name": "fsevents",
"direct": false,
"version": "2.3.3",
"ecosystem": "npm"
},
{
"name": "happy-dom",
"direct": false,
"version": "20.10.6",
"ecosystem": "npm"
},
{
"name": "joycon",
"direct": false,
"version": "3.1.1",
"ecosystem": "npm"
},
{
"name": "lightningcss",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-android-arm64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-darwin-arm64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-darwin-x64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-freebsd-x64",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-arm-gnueabihf",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-arm64-gnu",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-arm64-musl",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-x64-gnu",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-linux-x64-musl",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-win32-arm64-msvc",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lightningcss-win32-x64-msvc",
"direct": false,
"version": "1.32.0",
"ecosystem": "npm"
},
{
"name": "lilconfig",
"direct": false,
"version": "3.1.3",
"ecosystem": "npm"
},
{
"name": "lines-and-columns",
"direct": false,
"version": "1.2.4",
"ecosystem": "npm"
},
{
"name": "load-tsconfig",
"direct": false,
"version": "0.2.5",
"ecosystem": "npm"
},
{
"name": "magic-string",
"direct": false,
"version": "0.30.21",
"ecosystem": "npm"
},
{
"name": "mlly",
"direct": false,
"version": "1.8.2",
"ecosystem": "npm"
},
{
"name": "ms",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "mz",
"direct": false,
"version": "2.7.0",
"ecosystem": "npm"
},
{
"name": "nanoid",
"direct": false,
"version": "3.3.15",
"ecosystem": "npm"
},
{
"name": "object-assign",
"direct": false,
"version": "4.1.1",
"ecosystem": "npm"
},
{
"name": "obug",
"direct": false,
"version": "2.1.3",
"ecosystem": "npm"
},
{
"name": "opencc-js",
"direct": false,
"version": "1.4.1",
"ecosystem": "npm"
},
{
"name": "pathe",
"direct": false,
"version": "2.0.3",
"ecosystem": "npm"
},
{
"name": "picocolors",
"direct": false,
"version": "1.1.1",
"ecosystem": "npm"
},
{
"name": "picomatch",
"direct": false,
"version": "4.0.4",
"ecosystem": "npm"
},
{
"name": "pirates",
"direct": false,
"version": "4.0.7",
"ecosystem": "npm"
},
{
"name": "pkg-types",
"direct": false,
"version": "1.3.1",
"ecosystem": "npm"
},
{
"name": "postcss",
"direct": false,
"version": "8.5.15",
"ecosystem": "npm"
},
{
"name": "postcss-load-config",
"direct": false,
"version": "6.0.1",
"ecosystem": "npm"
},
{
"name": "readdirp",
"direct": false,
"version": "4.1.2",
"ecosystem": "npm"
},
{
"name": "resolve-from",
"direct": false,
"version": "5.0.0",
"ecosystem": "npm"
},
{
"name": "rolldown",
"direct": false,
"version": "1.0.3",
"ecosystem": "npm"
},
{
"name": "rollup",
"direct": false,
"version": "4.62.2",
"ecosystem": "npm"
},
{
"name": "siginfo",
"direct": false,
"version": "2.0.0",
"ecosystem": "npm"
},
{
"name": "source-map",
"direct": false,
"version": "0.7.6",
"ecosystem": "npm"
},
{
"name": "source-map-js",
"direct": false,
"version": "1.2.1",
"ecosystem": "npm"
},
{
"name": "stackback",
"direct": false,
"version": "0.0.2",
"ecosystem": "npm"
},
{
"name": "std-env",
"direct": false,
"version": "4.1.0",
"ecosystem": "npm"
},
{
"name": "sucrase",
"direct": false,
"version": "3.35.1",
"ecosystem": "npm"
},
{
"name": "thenify",
"direct": false,
"version": "3.3.1",
"ecosystem": "npm"
},
{
"name": "thenify-all",
"direct": false,
"version": "1.6.0",
"ecosystem": "npm"
},
{
"name": "tinybench",
"direct": false,
"version": "2.9.0",
"ecosystem": "npm"
},
{
"name": "tinyexec",
"direct": false,
"version": "0.3.2",
"ecosystem": "npm"
},
{
"name": "tinyexec",
"direct": false,
"version": "1.2.4",
"ecosystem": "npm"
},
{
"name": "tinyglobby",
"direct": false,
"version": "0.2.17",
"ecosystem": "npm"
},
{
"name": "tinyrainbow",
"direct": false,
"version": "3.1.0",
"ecosystem": "npm"
},
{
"name": "tree-kill",
"direct": false,
"version": "1.2.2",
"ecosystem": "npm"
},
{
"name": "ts-interface-checker",
"direct": false,
"version": "0.1.13",
"ecosystem": "npm"
},
{
"name": "tslib",
"direct": false,
"version": "2.8.1",
"ecosystem": "npm"
},
{
"name": "tsup",
"direct": false,
"version": "8.5.1",
"ecosystem": "npm"
},
{
"name": "tsx",
"direct": false,
"version": "4.22.4",
"ecosystem": "npm"
},
{
"name": "typescript",
"direct": false,
"version": "5.9.3",
"ecosystem": "npm"
},
{
"name": "ufo",
"direct": false,
"version": "1.6.4",
"ecosystem": "npm"
},
{
"name": "undici-types",
"direct": false,
"version": "6.21.0",
"ecosystem": "npm"
},
{
"name": "vite",
"direct": false,
"version": "8.0.16",
"ecosystem": "npm"
},
{
"name": "vitest",
"direct": false,
"version": "4.1.9",
"ecosystem": "npm"
},
{
"name": "whatwg-mimetype",
"direct": false,
"version": "3.0.0",
"ecosystem": "npm"
},
{
"name": "why-is-node-running",
"direct": false,
"version": "2.3.0",
"ecosystem": "npm"
},
{
"name": "ws",
"direct": false,
"version": "8.21.0",
"ecosystem": "npm"
},
{
"name": "Microsoft.NET.Test.Sdk",
"direct": false,
"version": "17.11.1",
"ecosystem": "nuget"
},
{
"name": "System.Text.Json",
"direct": false,
"version": "8.0.5",
"ecosystem": "nuget"
},
{
"name": "xunit",
"direct": false,
"version": "2.9.2",
"ecosystem": "nuget"
},
{
"name": "xunit.runner.visualstudio",
"direct": false,
"version": "2.8.2",
"ecosystem": "nuget"
},
{
"name": "annotated-types",
"direct": false,
"version": "0.7.0",
"ecosystem": "pypi"
},
{
"name": "attrs",
"direct": false,
"version": "26.1.0",
"ecosystem": "pypi"
},
{
"name": "certifi",
"direct": false,
"version": "2026.2.25",
"ecosystem": "pypi"
},
{
"name": "cffi",
"direct": false,
"version": "2.0.0",
"ecosystem": "pypi"
},
{
"name": "cfgv",
"direct": false,
"version": "3.5.0",
"ecosystem": "pypi"
},
{
"name": "colorama",
"direct": false,
"version": "0.4.6",
"ecosystem": "pypi"
},
{
"name": "coverage",
"direct": false,
"version": "7.13.5",
"ecosystem": "pypi"
},
{
"name": "cryptography",
"direct": false,
"version": "49.0.0",
"ecosystem": "pypi"
},
{
"name": "distlib",
"direct": false,
"version": "0.4.0",
"ecosystem": "pypi"
},
{
"name": "exceptiongroup",
"direct": false,
"version": "1.3.1",
"ecosystem": "pypi"
},
{
"name": "filelock",
"direct": false,
"version": "3.25.2",
"ecosystem": "pypi"
},
{
"name": "google-ai-generativelanguage",
"direct": false,
"version": "0.6.15",
"ecosystem": "pypi"
},
{
"name": "google-api-core",
"direct": false,
"version": "2.25.2",
"ecosystem": "pypi"
},
{
"name": "google-api-core",
"direct": false,
"version": "2.30.2",
"ecosystem": "pypi"
},
{
"name": "google-api-python-client",
"direct": false,
"version": "2.194.0",
"ecosystem": "pypi"
},
{
"name": "google-auth",
"direct": false,
"version": "2.49.1",
"ecosystem": "pypi"
},
{
"name": "google-auth-httplib2",
"direct": false,
"version": "0.3.1",
"ecosystem": "pypi"
},
{
"name": "google-generativeai",
"direct": false,
"version": "0.8.6",
"ecosystem": "pypi"
},
{
"name": "googleapis-common-protos",
"direct": false,
"version": "1.74.0",
"ecosystem": "pypi"
},
{
"name": "grpcio",
"direct": false,
"version": "1.80.0",
"ecosystem": "pypi"
},
{
"name": "grpcio-status",
"direct": false,
"version": "1.71.2",
"ecosystem": "pypi"
},
{
"name": "httplib2",
"direct": false,
"version": "0.31.2",
"ecosystem": "pypi"
},
{
"name": "identify",
"direct": false,
"version": "2.6.18",
"ecosystem": "pypi"
},
{
"name": "idna",
"direct": false,
"version": "3.18",
"ecosystem": "pypi"
},
{
"name": "iniconfig",
"direct": false,
"version": "2.3.0",
"ecosystem": "pypi"
},
{
"name": "jsonschema",
"direct": false,
"version": "4.26.0",
"ecosystem": "pypi"
},
{
"name": "jsonschema-specifications",
"direct": false,
"version": "2025.9.1",
"ecosystem": "pypi"
},
{
"name": "nodeenv",
"direct": false,
"version": "1.10.0",
"ecosystem": "pypi"
},
{
"name": "packaging",
"direct": false,
"version": "26.0",
"ecosystem": "pypi"
},
{
"name": "platformdirs",
"direct": false,
"version": "4.9.6",
"ecosystem": "pypi"
},
{
"name": "pluggy",
"direct": false,
"version": "1.6.0",
"ecosystem": "pypi"
},
{
"name": "pre-commit",
"direct": false,
"version": "4.5.1",
"ecosystem": "pypi"
},
{
"name": "proto-plus",
"direct": false,
"version": "1.27.2",
"ecosystem": "pypi"
},
{
"name": "protobuf",
"direct": false,
"version": "5.29.6",
"ecosystem": "pypi"
},
{
"name": "pyasn1",
"direct": false,
"version": "0.6.3",
"ecosystem": "pypi"
},
{
"name": "pyasn1-modules",
"direct": false,
"version": "0.4.2",
"ecosystem": "pypi"
},
{
"name": "pycparser",
"direct": false,
"version": "3.0",
"ecosystem": "pypi"
},
{
"name": "pydantic",
"direct": false,
"version": "2.12.5",
"ecosystem": "pypi"
},
{
"name": "pydantic-core",
"direct": false,
"version": "2.41.5",
"ecosystem": "pypi"
},
{
"name": "pygments",
"direct": false,
"version": "2.20.0",
"ecosystem": "pypi"
},
{
"name": "pyparsing",
"direct": false,
"version": "3.3.2",
"ecosystem": "pypi"
},
{
"name": "pypdf",
"direct": false,
"version": "5.9.0",
"ecosystem": "pypi"
},
{
"name": "pytest",
"direct": false,
"version": "9.0.3",
"ecosystem": "pypi"
},
{
"name": "pytest-cov",
"direct": false,
"version": "7.1.0",
"ecosystem": "pypi"
},
{
"name": "python-discovery",
"direct": false,
"version": "1.2.2",
"ecosystem": "pypi"
},
{
"name": "pyyaml",
"direct": false,
"version": "6.0.3",
"ecosystem": "pypi"
},
{
"name": "referencing",
"direct": false,
"version": "0.37.0",
"ecosystem": "pypi"
},
{
"name": "requests",
"direct": false,
"version": "2.33.1",
"ecosystem": "pypi"
},
{
"name": "rpds-py",
"direct": false,
"version": "0.30.0",
"ecosystem": "pypi"
},
{
"name": "rpds-py",
"direct": false,
"version": "2026.6.3",
"ecosystem": "pypi"
},
{
"name": "ruff",
"direct": false,
"version": "0.15.9",
"ecosystem": "pypi"
},
{
"name": "tomli",
"direct": false,
"version": "2.4.1",
"ecosystem": "pypi"
},
{
"name": "tqdm",
"direct": false,
"version": "4.67.3",
"ecosystem": "pypi"
},
{
"name": "typing-extensions",
"direct": false,
"version": "4.15.0",
"ecosystem": "pypi"
},
{
"name": "typing-inspection",
"direct": false,
"version": "0.4.2",
"ecosystem": "pypi"
},
{
"name": "uritemplate",
"direct": false,
"version": "4.2.0",
"ecosystem": "pypi"
},
{
"name": "urllib3",
"direct": false,
"version": "2.7.0",
"ecosystem": "pypi"
},
{
"name": "virtualenv",
"direct": false,
"version": "21.2.0",
"ecosystem": "pypi"
},
{
"name": "zhtw",
"direct": false,
"version": "4.4.2",
"ecosystem": "pypi"
}
],
"collected": true,
"truncated": false,
"total_count": 347,
"direct_count": 3,
"indirect_count": 344
}
},
"maintainership": {
"issues": {
"open_prs": 2,
"merged_prs": 2,
"open_issues": 9,
"closed_ratio": 0.75,
"closed_issues": 27,
"closed_unmerged_prs": 7
},
"bus_factor": 1,
"bot_contributors": 0,
"top_contributors": [
{
"type": "User",
"login": "rajatim",
"commits": 447,
"avatar_url": "https://avatars.githubusercontent.com/u/5975535?v=4"
}
],
"contributors_sampled": 1,
"top_contributor_share": 1
},
"quality_signals": {
"has_ci": true,
"has_tests": true,
"ci_workflows": [
"benchmark-competitors.yml",
"ci.yml",
"go-binary.yml",
"publish.yml",
"sdk-conformance.yml",
"sdk-dotnet.yml",
"sdk-go.yml",
"sdk-java.yml",
"sdk-rust.yml",
"sdk-typescript.yml"
],
"has_docs_dir": true,
"linter_configs": [],
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": true
},
"security_signals": {
"lockfiles": [
"Cargo.lock",
"package-lock.json",
"pnpm-lock.yaml",
"uv.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": 3,
"reason": "branch protection is not maximal on development and all 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": 0,
"reason": "project has 0 contributing companies or organizations -- score normalized to 0",
"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": 0,
"reason": "no update tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#dependency-update-tool"
},
{
"name": "Fuzzing",
"score": 0,
"reason": "project is not fuzzed",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#fuzzing"
},
{
"name": "License",
"score": 10,
"reason": "license file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#license"
},
{
"name": "Maintained",
"score": 10,
"reason": "30 commit(s) and 10 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": 0,
"reason": "no SAST tool detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#sast"
},
{
"name": "Security-Policy",
"score": 10,
"reason": "security policy file detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#security-policy"
},
{
"name": "Signed-Releases",
"score": 0,
"reason": "Project has not signed or included provenance with any releases.",
"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": "42 existing vulnerabilities detected",
"documentation_url": "https://github.com/ossf/scorecard/blob/c395761df6afe1a69e476bc60a013a94bcbc153f/docs/checks.md#vulnerabilities"
}
],
"commit": "b4989f5cfd29725d9d806a01dadae3a8cb14ba1a",
"ran_at": "2026-07-25T05:17:57Z",
"aggregate_score": 3.9,
"scorecard_version": "v5.5.0"
},
"has_codeql_workflow": false,
"has_security_policy": true,
"has_dependabot_config": false
},
"contribution_flow": {
"collected": true,
"ci_last_run_at": "2026-07-25T02:12:34Z",
"oldest_open_prs": [
{
"number": 45,
"created_at": "2026-07-23T10:39:34Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 46,
"created_at": "2026-07-23T10:39:42Z",
"last_comment_at": null,
"last_comment_author": null
}
],
"last_merged_pr_at": "2026-04-09T23:22:40Z",
"ci_last_conclusion": "FAILURE",
"oldest_open_issues": [
{
"number": 6,
"created_at": "2025-12-26T04:10:19Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 8,
"created_at": "2025-12-26T04:10:41Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 10,
"created_at": "2025-12-26T04:48:18Z",
"last_comment_at": "2025-12-30T21:05:51Z",
"last_comment_author": "rajatim"
},
{
"number": 11,
"created_at": "2025-12-26T05:21:34Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 32,
"created_at": "2026-04-11T04:37:47Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 36,
"created_at": "2026-07-19T09:57:48Z",
"last_comment_at": "2026-07-19T15:13:33Z",
"last_comment_author": "rajatim"
},
{
"number": 43,
"created_at": "2026-07-19T10:07:07Z",
"last_comment_at": "2026-07-23T18:40:51Z",
"last_comment_author": "rajatim"
},
{
"number": 44,
"created_at": "2026-07-19T10:07:09Z",
"last_comment_at": null,
"last_comment_author": null
},
{
"number": 47,
"created_at": "2026-07-23T18:40:04Z",
"last_comment_at": null,
"last_comment_author": null
}
]
}
},
"config": {
"disabled_metrics": [],
"disabled_categories": [],
"disabled_components": {}
},
"source": {
"url": "https://github.com/rajatim/zhtw",
"host": "github.com",
"name": "zhtw",
"owner": "rajatim"
},
"metrics": {
"overall": {
"key": "overall",
"band": "moderate",
"name": "Overall health",
"note": null,
"notes": [],
"value": 62,
"inputs": {
"security": 51,
"vitality": 81,
"community": 43,
"governance": 43,
"engineering": 89
},
"components": []
},
"categories": [
{
"key": "vitality",
"band": "good",
"name": "Vitality",
"value": 81,
"weight": 0.22,
"metrics": [
{
"key": "development_activity",
"band": "good",
"name": "Development activity",
"note": null,
"notes": [],
"value": 75,
"inputs": {
"commits_last_year": 446,
"human_commit_share": 1,
"days_since_last_push": 0,
"active_weeks_last_year": 16
},
"components": [
{
"key": "push_recency",
"name": "Push recency",
"detail": "last push 0 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "push_recency",
"params": {
"days": 0
}
}
],
"max_points": 36
},
{
"key": "commit_cadence",
"name": "Commit cadence",
"detail": "16/52 weeks with commits",
"points": 11.1,
"status": "partial",
"details": [
{
"code": "commit_cadence_weeks",
"params": {
"weeks": 16
}
}
],
"max_points": 36
},
{
"key": "commit_volume",
"name": "Commit volume",
"detail": "446 commits in the last year",
"points": 18,
"status": "met",
"details": [
{
"code": "commits_last_year",
"params": {
"count": 446
}
}
],
"max_points": 18
},
{
"key": "openssf_scorecard_maintained",
"name": "OpenSSF Scorecard: Maintained",
"detail": "30 commit(s) and 10 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": null,
"notes": [],
"value": 90,
"inputs": {
"releases_count": 38,
"latest_release_tag": "sdk/go/v4.4.2",
"releases_from_tags": false,
"days_since_latest_release": 6,
"mean_days_between_releases": 10.9
},
"components": [
{
"key": "ships_releases",
"name": "Ships releases",
"detail": "38 releases published",
"points": 27,
"status": "met",
"details": [
{
"code": "releases_published",
"params": {
"count": 38
}
}
],
"max_points": 27
},
{
"key": "release_recency",
"name": "Release recency",
"detail": "latest release 6 days ago",
"points": 36,
"status": "met",
"details": [
{
"code": "release_recency",
"params": {
"days": 6
}
}
],
"max_points": 36
},
{
"key": "release_cadence",
"name": "Release cadence",
"detail": "a release every ~10.9 days",
"points": 27,
"status": "met",
"details": [
{
"code": "release_cadence",
"params": {
"gap": 10.9
}
}
],
"max_points": 27
},
{
"key": "openssf_scorecard_signed_releases",
"name": "OpenSSF Scorecard: Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"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": 0,
"days_since_last_human_commit_is_floor": false
},
"components": [
{
"key": "project_is_still_maintained",
"name": "Project is still maintained",
"detail": "last human commit 0 days ago",
"points": 100,
"status": "met",
"details": [
{
"code": "abandonment_maintained",
"params": {
"days": 0
}
}
],
"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": 43,
"weight": 0.18,
"metrics": [
{
"key": "popularity",
"band": "critical",
"name": "Popularity & adoption",
"note": null,
"notes": [],
"value": 17,
"inputs": {
"forks": 0,
"stars": 12,
"watchers": 0,
"growth_state": "unverified",
"growth_factor_pct": 100,
"growth_unverified_reason": "no_history"
},
"components": [
{
"key": "stars",
"name": "Stars",
"detail": "12 stars",
"points": 16.9,
"status": "partial",
"details": [
{
"code": "stars",
"params": {
"count": 12
}
}
],
"max_points": 60
},
{
"key": "forks",
"name": "Forks",
"detail": "0 forks",
"points": 0,
"status": "missed",
"details": [
{
"code": "forks",
"params": {
"count": 0
}
}
],
"max_points": 25
},
{
"key": "watchers",
"name": "Watchers",
"detail": "0 watchers",
"points": 0,
"status": "missed",
"details": [
{
"code": "watchers",
"params": {
"count": 0
}
}
],
"max_points": 15
}
]
},
{
"key": "community_health",
"band": "good",
"name": "Community health",
"note": null,
"notes": [],
"value": 70,
"inputs": {
"has_readme": true,
"has_license": true,
"has_contributing": true,
"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 (MIT)",
"points": 22.5,
"status": "met",
"details": [
{
"code": "license_standard",
"params": {}
},
{
"code": "license_spdx",
"params": {
"spdx": "MIT"
}
}
],
"max_points": 22.5
},
{
"key": "contributing_guide",
"name": "CONTRIBUTING guide",
"detail": null,
"points": 18,
"status": "met",
"details": [],
"max_points": 18
},
{
"key": "code_of_conduct",
"name": "Code of conduct",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 13.5
},
{
"key": "issue_template",
"name": "Issue template",
"detail": null,
"points": 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
}
]
},
{
"key": "ecosystem_adoption",
"band": "at_risk",
"name": "Ecosystem adoption (downloads)",
"note": "Excluded from scoring (no data or not applicable): Registry dependents. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"registry_dependents"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 46,
"inputs": {
"packages": [
"zhtw"
],
"dependents": null,
"ecosystems": "pypi",
"total_downloads": null,
"monthly_downloads": 536
},
"components": [
{
"key": "monthly_downloads",
"name": "Monthly downloads",
"detail": "536 downloads/month across pypi",
"points": 36.4,
"status": "partial",
"details": [
{
"code": "downloads_monthly",
"params": {
"count": 536,
"ecosystems": "pypi"
}
}
],
"max_points": 80
},
{
"key": "registry_dependents",
"name": "Registry dependents",
"detail": "not reported by this ecosystem",
"points": 0,
"status": "excluded",
"details": [
{
"code": "not_reported_by_this_ecosystem",
"params": {}
}
],
"max_points": 20
}
]
}
],
"description": "Does the project have users, downloads, attention, and a welcoming setup for contributors?"
},
{
"key": "governance",
"band": "at_risk",
"name": "Sustainability & Governance",
"value": 43,
"weight": 0.24,
"metrics": [
{
"key": "maintainer_resilience",
"band": "critical",
"name": "Maintainer resilience (bus factor)",
"note": null,
"notes": [],
"value": 10,
"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 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"details": [],
"max_points": 10
}
]
},
{
"key": "responsiveness",
"band": "at_risk",
"name": "Issue & PR responsiveness",
"note": null,
"notes": [],
"value": 44,
"inputs": {
"merged_prs": 2,
"open_issues": 9,
"closed_issues": 27,
"issue_closed_ratio": 0.75,
"closed_unmerged_prs": 7
},
"components": [
{
"key": "issue_resolution",
"name": "Issue resolution",
"detail": "75% of issues closed",
"points": 35.1,
"status": "partial",
"details": [
{
"code": "issues_closed_share",
"params": {
"share": 75
}
}
],
"max_points": 46.75
},
{
"key": "pr_acceptance",
"name": "PR acceptance",
"detail": "2/9 decided PRs merged",
"points": 8.5,
"status": "partial",
"details": [
{
"code": "decided_prs_merged",
"params": {
"merged": 2,
"decided": 9
}
}
],
"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": "at_risk",
"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": 37,
"inputs": {
"followers": 0,
"owner_type": "User",
"is_verified": null,
"owner_login": "rajatim",
"public_repos": 9,
"account_age_days": 4631
},
"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": "0 followers of rajatim",
"points": 0,
"status": "missed",
"details": [
{
"code": "owner_followers",
"params": {
"count": 0,
"login": "rajatim"
}
}
],
"max_points": 25
},
{
"key": "track_record",
"name": "Track record",
"detail": "9 public repos, account ~12 yr old",
"points": 19.3,
"status": "partial",
"details": [
{
"code": "public_repos",
"params": {
"count": 9
}
},
{
"code": "account_age_years",
"params": {
"years": 12
}
}
],
"max_points": 25
}
]
},
{
"key": "package_maintenance",
"band": "excellent",
"name": "Package maintenance",
"note": null,
"notes": [],
"value": 100,
"inputs": {
"packages": [
"zhtw"
],
"ecosystems": "pypi",
"any_deprecated": false,
"min_days_since_publish": 6
},
"components": [
{
"key": "published_resolvable",
"name": "Published & resolvable",
"detail": "1 package(s) on pypi",
"points": 25,
"status": "met",
"details": [
{
"code": "packages_published",
"params": {
"count": 1,
"ecosystems": "pypi"
}
}
],
"max_points": 25
},
{
"key": "publish_recency",
"name": "Publish recency",
"detail": "latest publish 6 days ago",
"points": 35,
"status": "met",
"details": [
{
"code": "publish_recency",
"params": {
"days": 6
}
}
],
"max_points": 35
},
{
"key": "version_history",
"name": "Version history",
"detail": "35 published versions",
"points": 20,
"status": "met",
"details": [
{
"code": "published_versions",
"params": {
"count": 35
}
}
],
"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": "excellent",
"name": "Engineering Quality",
"value": 89,
"weight": 0.2,
"metrics": [
{
"key": "engineering_practices",
"band": "excellent",
"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": 92,
"inputs": {
"has_ci": true,
"has_tests": true,
"has_editorconfig": false,
"has_linter_config": true,
"has_precommit_config": true
},
"components": [
{
"key": "ci_workflows",
"name": "CI workflows",
"detail": "10 workflow(s)",
"points": 24,
"status": "met",
"details": [
{
"code": "ci_workflows",
"params": {
"count": 10
}
}
],
"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": 16,
"status": "met",
"details": [],
"max_points": 16
},
{
"key": "pre_commit_hooks",
"name": "Pre-commit hooks",
"detail": null,
"points": 9.6,
"status": "met",
"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": "excellent",
"name": "Documentation",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"topics": [
"chinese",
"cli",
"i18n",
"linter",
"localization",
"pre-commit",
"python",
"simplified-chinese",
"taiwan",
"text-processing",
"traditional-chinese"
],
"has_wiki": true,
"homepage": null,
"has_readme": true,
"has_docs_dir": true,
"has_description": true
},
"components": [
{
"key": "readme",
"name": "README",
"detail": null,
"points": 30,
"status": "met",
"details": [],
"max_points": 30
},
{
"key": "documentation_directory",
"name": "Documentation directory",
"detail": null,
"points": 25,
"status": "met",
"details": [],
"max_points": 25
},
{
"key": "documentation_homepage_site",
"name": "Documentation / homepage site",
"detail": null,
"points": 0,
"status": "missed",
"details": [],
"max_points": 15
},
{
"key": "repository_description",
"name": "Repository description",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
},
{
"key": "topics",
"name": "Topics",
"detail": "11 topics",
"points": 10,
"status": "met",
"details": [
{
"code": "topics_count",
"params": {
"count": 11
}
}
],
"max_points": 10
},
{
"key": "wiki",
"name": "Wiki",
"detail": null,
"points": 10,
"status": "met",
"details": [],
"max_points": 10
}
]
}
],
"description": "Are baseline engineering and documentation practices in place?"
},
{
"key": "security",
"band": "moderate",
"name": "Security",
"value": 51,
"weight": 0.16,
"metrics": [
{
"key": "security_posture",
"band": "at_risk",
"name": "Security posture",
"note": "Excluded from scoring (no data or not applicable): CI-Tests. Remaining weights renormalized.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"ci_tests"
]
}
},
{
"code": "weights_renormalized",
"params": {}
}
],
"value": 39,
"inputs": {
"source": "openssf_scorecard",
"checks_evaluated": 17,
"scorecard_version": "v5.5.0",
"checks_inconclusive": 1,
"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 is not maximal on development and all release branches",
"points": 2.2,
"status": "partial",
"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 0 contributing companies or organizations -- score normalized to 0",
"points": 0,
"status": "missed",
"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": "no update tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 7.5
},
{
"key": "fuzzing",
"name": "Fuzzing",
"detail": "project is not fuzzed",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "license",
"name": "License",
"detail": "license file detected",
"points": 2.5,
"status": "met",
"details": [],
"max_points": 2.5
},
{
"key": "maintained",
"name": "Maintained",
"detail": "30 commit(s) and 10 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": "no SAST tool detected",
"points": 0,
"status": "missed",
"details": [],
"max_points": 5
},
{
"key": "security_policy",
"name": "Security-Policy",
"detail": "security policy file detected",
"points": 5,
"status": "met",
"details": [],
"max_points": 5
},
{
"key": "signed_releases",
"name": "Signed-Releases",
"detail": "Project has not signed or included provenance with any releases.",
"points": 0,
"status": "missed",
"details": [],
"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": "42 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): No advisories left outstanding. Remaining weights renormalized. Matched the pypi:zhtw@4.4.2 runtime dependency closure — what installing the published package pulls in — 3 packages. Reachability is not analyzed.",
"notes": [
{
"code": "excluded_no_data",
"params": {
"components": [
"no_advisories_left_outstanding"
]
}
},
{
"code": "weights_renormalized",
"params": {}
},
{
"code": "advisories_scope_published",
"params": {
"package": "pypi:zhtw@4.4.2",
"assessed": 3
}
},
{
"code": "advisories_reachability",
"params": {}
}
],
"value": 100,
"inputs": {
"source": "osv",
"advisories": 0,
"affected_packages": 0,
"assessed_packages": 3,
"unassessed_packages": 0,
"affected_by_severity": "none",
"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": "no indirect dependency carries a known advisory",
"points": 25,
"status": "met",
"details": [
{
"code": "no_indirect_advisories",
"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": 3,
"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": 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": "good",
"name": "AI Readiness",
"value": 83,
"weight": 0,
"metrics": [
{
"key": "ai_agent_context",
"band": "excellent",
"name": "Agent context & guidance",
"note": null,
"notes": [],
"value": 85,
"inputs": {
"has_llms_txt": false,
"legible_history_share": 0.93,
"agent_instruction_files": [
"AGENTS.md",
"CLAUDE.md",
"GEMINI.md"
],
"agent_instruction_max_bytes": 5430
},
"components": [
{
"key": "agent_instructions",
"name": "Agent instructions",
"detail": "AGENTS.md, CLAUDE.md, GEMINI.md",
"points": 45,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "AGENTS.md, CLAUDE.md, GEMINI.md"
}
}
],
"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": "93 of 100 human commits state their intent (structured subject or explanatory body)",
"points": 40,
"status": "met",
"details": [
{
"code": "legible_history",
"params": {
"legible": 93,
"sampled": 100
}
}
],
"max_points": 40
}
]
},
{
"key": "ai_verify_loop",
"band": "good",
"name": "Verify loop (build / test / typecheck)",
"note": null,
"notes": [],
"value": 82,
"inputs": {
"has_nix": false,
"has_tests": true,
"lockfiles": [
"Cargo.lock",
"package-lock.json",
"pnpm-lock.yaml",
"uv.lock"
],
"has_dockerfile": true,
"typed_language": false,
"bootstrap_files": [
"Makefile"
],
"has_devcontainer": false,
"has_linter_config": true,
"typecheck_configs": [
"sdk/typescript/tsconfig.json",
"src/zhtw/py.typed"
],
"agent_commit_share": 0.42,
"toolchain_manifests": [
"benchmarks/bench_csharp.csproj",
"sdk/dotnet/Zhtw.csproj",
"sdk/dotnet/tests/Zhtw.Tests/Zhtw.Tests.csproj",
"sdk/go/go.mod",
"sdk/java/pom.xml",
"sdk/rust/Cargo.toml",
"sdk/rust/zhtw-wasm/Cargo.toml",
"sdk/rust/zhtw/Cargo.toml"
],
"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": null,
"points": 11,
"status": "met",
"details": [],
"max_points": 11
},
{
"key": "static_type_checking",
"name": "Static type checking",
"detail": "sdk/typescript/tsconfig.json, src/zhtw/py.typed",
"points": 11,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "sdk/typescript/tsconfig.json, src/zhtw/py.typed"
}
}
],
"max_points": 11
},
{
"key": "reproducible_environment",
"name": "Reproducible environment",
"detail": "Dockerfile, lockfile",
"points": 10,
"status": "met",
"details": [
{
"code": "file_list",
"params": {
"files": "Dockerfile, lockfile"
}
}
],
"max_points": 10
},
{
"key": "demonstrated_agent_practice",
"name": "Demonstrated agent practice",
"detail": "42 of the last 100 commits agent-authored or agent-credited",
"points": 10,
"status": "met",
"details": [
{
"code": "agent_authored_commits",
"params": {
"count": 42,
"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": "good",
"name": "Code legibility for models",
"note": null,
"notes": [],
"value": 82,
"inputs": {
"primary_language": "Python",
"largest_source_bytes": 420150,
"source_files_sampled": 182,
"oversized_source_files": 1
},
"components": [
{
"key": "type_checkable_code",
"name": "Type-checkable code",
"detail": "Python with type-check config (sdk/typescript/tsconfig.json, src/zhtw/py.typed)",
"points": 27,
"status": "partial",
"details": [
{
"code": "typecheck_config_language",
"params": {
"files": "sdk/typescript/tsconfig.json, src/zhtw/py.typed",
"language": "Python"
}
}
],
"max_points": 45
},
{
"key": "manageable_file_sizes",
"name": "Manageable file sizes",
"detail": "1/182 source files over 60KB",
"points": 54.7,
"status": "partial",
"details": [
{
"code": "oversized_source_files",
"params": {
"kb": 60,
"sampled": 182,
"oversized": 1
}
}
],
"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"
],
"report_type": "repository",
"generated_at": "2026-07-25T05:18:04.297402Z",
"schema_version": "0.27.0",
"badge_url": "https://raw.githubusercontent.com/inspect-software/badges/main/v1/r/rajatim/zhtw.svg",
"full_name": "rajatim/zhtw",
"license_state": "standard",
"license_spdx": "MIT"
}