 JefferyandClaude Opus 4.8
|
2b27da82c0
|
docs(release-cleanup): README 新增 failError 並更新行號
新增 failError 功能列表/使用範例,更新 validate/gitea-client 連結行號與更新時間。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 11:04:29 +08:00 |
|
 JefferyandClaude Opus 4.8
|
b9d7c4e970
|
test(release-cleanup): 補強逾時、非陣列、token 邊界與 failError 測試
新增 fetchAllPages 的 AbortError 逾時與非陣列回應測試、loadConfig 的
GITEA_TOKEN 邊界測試,以及 logger.failError 測試。測試共 47 項全數通過。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 11:04:29 +08:00 |
|
 JefferyandClaude Opus 4.8
|
f6d2ebeab2
|
refactor(release-cleanup): 收斂錯誤輸出並抽出驗證規則常數
- 新增 logger.failError 集中處理 Error/非 Error 的 stderr 輸出與堆疊,
index.js 改用之,移除重複的 reportFatal
- validate.js 將允許協定與 repository 格式抽為模組常數,便於維護擴充
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 11:04:29 +08:00 |
|
 JefferyandClaude Opus 4.8
|
0f4354bd01
|
fix(gitea-client): 強化分頁回應的 JSON 與錯誤內容處理
- res.json() 以 try-catch 包裹,解析失敗時補上 URL 上下文
- res.ok 為真時嚴格要求陣列,非陣列回應改為拋錯而非靜默結束
- 改用迴圈逐一 push 取代展開運算子,避免大量項目的堆疊風險
- 錯誤訊息中的回應內容經 sanitize(移除控制字元)防止 log 注入
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 11:04:29 +08:00 |
|
 JefferyandClaude Opus 4.8
|
245f66de8f
|
chore(ai-review): 更新 findings.json 與 exclusions.json
CI / AI Code Review (pull_request) Failing after 36s
移除已修復的 13 條 finding;保留 4 條設計取捨類(重試/TOCTOU/並行化)
待人工評估;將 token log 排版建議登記為誤報於 exclusions.json。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 10:55:45 +08:00 |
|
 JefferyandClaude Opus 4.8
|
a95945262d
|
docs(release-cleanup): 更新 README 功能列表與 Dockerfile 註解排版
README 新增 requireUrl/requireRepository、修正原始碼連結行號與更新時間;
Dockerfile 調整註解冒號/括號前的空白(無邏輯變更)。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 10:55:45 +08:00 |
|
 JefferyandClaude Opus 4.8
|
7c225d4122
|
test(release-cleanup): 補齊 cleanup/config/main 與新驗證函式測試
新增 cleanupReleases、cleanupOrphanTags 的失敗路徑與分類測試、
loadConfig 環境變數驗證測試、main 整合測試,以及 requireUrl/
requireRepository 與 content-type 檢查測試。測試共 41 項全數通過。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 10:55:45 +08:00 |
|
 JefferyandClaude Opus 4.8
|
154ab032bf
|
fix(release-cleanup): 強化輸入驗證、請求逾時與錯誤處理
解決 AI review 的安全性與健壯性問題:
- 驗證 GITEA_SERVER_URL 為合法 http/https URL(降低 SSRF 風險)
- 驗證 GITEA_REPOSITORY 為 owner/repo 形式並拒絕路徑穿越
- 為所有 fetch 請求加上 30 秒逾時(AbortSignal.timeout),避免卡死
- fetchAllPages 解析前檢查 content-type,非 JSON 時拋出明確錯誤
- selectReleasesToDelete 對無效 created_at 防呆,避免 NaN 排序
- index.js 匯出 main 並加上直接執行守衛,錯誤輸出含類型與堆疊
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 10:55:45 +08:00 |
|
 JefferyandClaude Opus 4.8
|
1f27a46f7b
|
docs(README): 建立專案 README 與功能/使用範例
新增專案列表、公開功能列表(連結至 develop 上的原始碼行)與使用範例;
連結指向 develop 分支以確保合併後仍有效。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 10:46:20 +08:00 |
|
 JefferyandClaude Opus 4.8
|
7e6f9ef3f6
|
docs(release-cleanup): 補齊 config/gitea-client/releases/tags 的 JSDoc
為 loadConfig、GiteaClient(含 fetchAllPages/deleteResource)、
selectReleasesToDelete/cleanupReleases、categorizeTags/cleanupOrphanTags
補上完整 JSDoc(參數、回傳、例外、行為說明)。僅註解變更。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 10:46:20 +08:00 |
|
 JefferyandClaude Opus 4.8
|
4bcc6a5014
|
docs(release-cleanup): 補上 index.js JSDoc 與 ci/cd workflow 註解
CI / AI Code Review (pull_request) Failing after 40s
為進入點主流程 main() 補上 JSDoc;為 ci.yaml/cd.yaml 加上用途說明與逐行註解。
皆為註解變更,不影響任何執行邏輯。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 10:36:25 +08:00 |
|
 JefferyandClaude Opus 4.8
|
15ffa4ffb6
|
test(release-cleanup): 新增 validate/releases/tags/gitea-client 單元測試
以 node:test 內建測試器涵蓋純函式(isEmptyOrNull/requireValue/requireInteger、
selectReleasesToDelete、categorizeTags)與 GiteaClient 分頁/刪除邏輯,共 19 項測試。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 10:35:19 +08:00 |
|
 JefferyandClaude Opus 4.8
|
b1aa8730a2
|
refactor(release-cleanup): 將清理邏輯由 bash 改寫為 Node.js 模組
依功能分組為 logger/validate/config/gitea-client/releases/tags 模組,
entrypoint.sh 改為呼叫 node /app/index.js,Dockerfile 改用 node:20-alpine 基底。
對外行為(清理舊 release 與未指定 release 的 tag)維持不變。
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
2026-06-26 10:35:19 +08:00 |
|