release: v0.1.5 develop 到 master #24

Merged
admin merged 6 commits from develop into master 2026-08-27 04:14:05 +00:00
Member

摘要

  • 需求描述:把 jsc-gitea 0.1.5 從 develop 放行到 master。內容是使用者 15 條規則第一群「SDLC 執行流程」六條在本存取庫的落實:新增盯 PR 到合併的輪詢腳本 tools/pr-watch.sh,並在 tools/gitea.sh 補上 pr-get、pr-edit 兩個子指令,讓呼叫端能讀回既有 PR 的標題與描述再決定要不要改。
  • 計畫名稱:無
  • 計畫頁:無
  • 分析頁:無

變更內容

檔案 為什麼改
tools/pr-watch.sh 新增。盯一支 PR 到合併或關閉,取代各技能各自寫一套輪詢迴圈。輪詢間隔預設 60 秒,JSC_PR_WATCH_INTERVAL 可覆寫;不自動逾時退場;已回報過的留言記在狀態檔,不重複回報。退出碼 0 表示已合併或關閉、10 表示有新留言要呼叫端接手、2 表示參數錯誤或第一輪就連不上 Gitea、3 表示查不到該 PR。
tools/gitea.sh 新增 pr-get 與 pr-edit。pr-get 用固定三段格式印出標題、base 分支與描述,呼叫端不必解析 JSON 就能比對差異;pr-edit 從檔案讀描述,一次更新標題與描述,多行內容與全形標點都裝得下。
README.md 補上 pr-get、pr-edit、pr-watch.sh 的用法,並把 JSC_HOME、JSC_PR_WATCH_INTERVAL 列進環境變數表。
AGENTS.md 新增一條呼叫慣例:盯 PR 等合併一律用 tools/pr-watch.sh,不要自己寫輪詢迴圈。
plugin.json、.claude-plugin/plugin.json、.codex-plugin/plugin.json 三份 manifest 版本同步升到 0.1.5。

設計重點

  • 這一段才會讓已安裝的 CLI 抓到新內容。 marketplace 與 jsc-hooks/hooks/version-guard.sh 都讀存取庫的預設分支 master——version-guard.sh 取 raw plugin.json 時刻意不指定 ref,拿到的就是預設分支那一份。所以內容留在 develop 上再完整,已經安裝的 CLI 一律抓不到,版本檢查也照舊回報舊版本。階梯的前三級 feat/sdlc-flow-rules/{子功能} → feat/sdlc-flow-rules/main → develop 都已走完,這是最後一級,也是唯一會讓使用者端真的拿到新內容的一級。
  • 行為變更清單。 新增 tools/pr-watch.sh 一支腳本;gitea.sh 新增 pr-get、pr-edit 兩個子指令。既有子指令的行為與輸出格式都沒有動,本批對既有呼叫端是純新增。
  • 退出碼 10 是刻意留的。 pr-watch.sh 只負責偵測,不替呼叫端決定怎麼修留言:收到 10 就把印出來的留言交回決策樹,處理完再重新盯一次。腳本不做判斷,判斷才留在技能裡。
  • 升級後立刻感受到的差異。 本存取庫提供的是工具,感受得到的差異來自呼叫端:
    • R3 分支階梯(jsc-git 0.0.8):PR 的 base 一律由 jsc-git/tools/base-branch.sh --derive 推導,越級的 PR 會被擋下來。推不出唯一合法基底就中止並詢問使用者,不再悄悄退回 develop。
    • R4 工作包隔離(jsc-hooks 0.2.3、jsc-sdlc 0.1.9):動一支 PR 之前先比對歸屬,不是自己領的那一包就擋;查無歸屬則放行只提醒。
    • 逃生門是 JSC_WP_GATE=off,設了就整體放行工作包閘門。
  • 相關紀錄:工作日誌在 https://gitea.jsc.idv.tw/knowledges/LOG/wiki/LOG_FB8DF0B5,決策紀錄在 https://gitea.jsc.idv.tw/knowledges/QUESTION/wiki/QUESTION_FB8DF0B5 的 2026-08-27 一節。

測試結果

  • git log --oneline origin/master..origin/develop:6 個 commit,最上面是已合併的 plugins/gitea#23,其下是 #22 與四個實作提交,沒有夾帶別批的內容。
  • git diff --stat origin/master origin/develop:7 個檔案、183 行新增、4 行刪除,與上表逐項對得上,沒有預期外的檔案。
  • 本次放行不含任何新的程式碼變更,內容與已合併的 plugins/gitea#22、plugins/gitea#23 完全相同。腳本層的測試在那兩支 PR 已經跑過,這支 PR 沒有重跑。

前置 Push Request

  • 無
## 摘要 - 需求描述:把 `jsc-gitea` 0.1.5 從 `develop` 放行到 `master`。內容是使用者 15 條規則第一群「SDLC 執行流程」六條在本存取庫的落實:新增盯 PR 到合併的輪詢腳本 `tools/pr-watch.sh`,並在 `tools/gitea.sh` 補上 `pr-get`、`pr-edit` 兩個子指令,讓呼叫端能讀回既有 PR 的標題與描述再決定要不要改。 - 計畫名稱:無 - 計畫頁:無 - 分析頁:無 ## 變更內容 | 檔案 | 為什麼改 | | --- | --- | | `tools/pr-watch.sh` | 新增。盯一支 PR 到合併或關閉,取代各技能各自寫一套輪詢迴圈。輪詢間隔預設 60 秒,`JSC_PR_WATCH_INTERVAL` 可覆寫;不自動逾時退場;已回報過的留言記在狀態檔,不重複回報。退出碼 0 表示已合併或關閉、10 表示有新留言要呼叫端接手、2 表示參數錯誤或第一輪就連不上 Gitea、3 表示查不到該 PR。 | | `tools/gitea.sh` | 新增 `pr-get` 與 `pr-edit`。`pr-get` 用固定三段格式印出標題、base 分支與描述,呼叫端不必解析 JSON 就能比對差異;`pr-edit` 從檔案讀描述,一次更新標題與描述,多行內容與全形標點都裝得下。 | | `README.md` | 補上 `pr-get`、`pr-edit`、`pr-watch.sh` 的用法,並把 `JSC_HOME`、`JSC_PR_WATCH_INTERVAL` 列進環境變數表。 | | `AGENTS.md` | 新增一條呼叫慣例:盯 PR 等合併一律用 `tools/pr-watch.sh`,不要自己寫輪詢迴圈。 | | `plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` | 三份 manifest 版本同步升到 0.1.5。 | ## 設計重點 - **這一段才會讓已安裝的 CLI 抓到新內容。** marketplace 與 `jsc-hooks/hooks/version-guard.sh` 都讀存取庫的**預設分支** `master`——`version-guard.sh` 取 raw `plugin.json` 時刻意不指定 ref,拿到的就是預設分支那一份。所以內容留在 `develop` 上再完整,已經安裝的 CLI 一律抓不到,版本檢查也照舊回報舊版本。階梯的前三級 `feat/sdlc-flow-rules/{子功能}` → `feat/sdlc-flow-rules/main` → `develop` 都已走完,這是最後一級,也是唯一會讓使用者端真的拿到新內容的一級。 - **行為變更清單。** 新增 `tools/pr-watch.sh` 一支腳本;`gitea.sh` 新增 `pr-get`、`pr-edit` 兩個子指令。既有子指令的行為與輸出格式都沒有動,本批對既有呼叫端是純新增。 - **退出碼 10 是刻意留的。** `pr-watch.sh` 只負責偵測,不替呼叫端決定怎麼修留言:收到 10 就把印出來的留言交回決策樹,處理完再重新盯一次。腳本不做判斷,判斷才留在技能裡。 - **升級後立刻感受到的差異。** 本存取庫提供的是工具,感受得到的差異來自呼叫端: - R3 分支階梯(`jsc-git` 0.0.8):PR 的 base 一律由 `jsc-git/tools/base-branch.sh --derive` 推導,**越級的 PR 會被擋下來**。推不出唯一合法基底就中止並詢問使用者,不再悄悄退回 `develop`。 - R4 工作包隔離(`jsc-hooks` 0.2.3、`jsc-sdlc` 0.1.9):動一支 PR 之前先比對歸屬,**不是自己領的那一包就擋**;查無歸屬則放行只提醒。 - 逃生門是 `JSC_WP_GATE=off`,設了就整體放行工作包閘門。 - 相關紀錄:工作日誌在 <https://gitea.jsc.idv.tw/knowledges/LOG/wiki/LOG_FB8DF0B5>,決策紀錄在 <https://gitea.jsc.idv.tw/knowledges/QUESTION/wiki/QUESTION_FB8DF0B5> 的 2026-08-27 一節。 ## 測試結果 - `git log --oneline origin/master..origin/develop`:6 個 commit,最上面是已合併的 `plugins/gitea#23`,其下是 `#22` 與四個實作提交,沒有夾帶別批的內容。 - `git diff --stat origin/master origin/develop`:7 個檔案、183 行新增、4 行刪除,與上表逐項對得上,沒有預期外的檔案。 - 本次放行不含任何新的程式碼變更,內容與已合併的 `plugins/gitea#22`、`plugins/gitea#23` 完全相同。腳本層的測試在那兩支 PR 已經跑過,**這支 PR 沒有重跑**。 ## 前置 Push Request - 無
jiantw83 added 6 commits 2026-08-27 04:00:45 +00:00
What:`tools/gitea.sh` 新增 `pr-get` 與 `pr-edit`。`pr-get` 印出一支 PR 的標題、base 分支與描述,前三行固定 `title`、`base`、`body` 三個標記,第 4 行起是描述原文;`pr-edit` 從檔案讀描述,一次更新標題與描述。

Why:分支已經有 PR 時,每次認可之後都要比對標題、描述與前置 PR 依賴三項,有差才更新。原本只有 `pr-create` 與 `pr-status`,讀不到既有 PR 的標題與描述,比不了就只能重開一支 PR 或整支蓋掉,兩種都會把審查中的討論打斷。

How:`pr-get` 把唯一會多行的描述放在輸出最後一段,呼叫端用 `head -n1`、`sed -n 2p`、`tail -n +4` 就取得到三個欄位,全程不必解析 JSON。`pr-edit` 的描述走檔案而不走參數,多行內容與全形標點才裝得下;描述檔不存在回 `2`,API 呼叫失敗回 `4`,成功印 `OK {owner}/{repo}#{編號}`。

Who:`jsc-git:pr` 的既有 PR 校準步驟,以及任何要先比對 PR 現況再決定改不改的呼叫端。
What:新增 `tools/pr-watch.sh`,盯一支 PR 直到它合併或關閉。退出碼 `0` 是已合併或已關閉、`10` 是有新留言要呼叫端接手、`2` 是參數錯誤或第一輪就連不上 Gitea、`3` 是查不到該 PR。輪詢間隔預設 60 秒,`JSC_PR_WATCH_INTERVAL` 可覆寫。

Why:等 PR 合併原本靠各技能自己寫輪詢迴圈,間隔與退場條件每支都不一樣,還常常自動逾時退場,PR 明明還開著就被當成收尾。改用一支共用腳本之後,等待行為只有一種,而且盯到 PR 收尾為止。

How:資料一律經同目錄的 `gitea.sh`(`pr-status`、`pr-comments`),不自行拼 API。已回報過的留言把最後一筆時間戳寫進狀態檔,預設 `$JSC_HOME/pr-watch/{owner}-{repo}-{編號}.seen`,同一則不重複回報;狀態檔還不存在時把既有留言整批回報一次,寧可重複也不漏掉開始盯之前的審查意見。PR 收尾那一輪若還有沒回報的留言,照樣印出來再退出,退出碼仍是 `0`。`pr-status` 對不存在的 PR 會印「? none none」並正常結束,所以 state 只認 `open` 與 `closed`、merged 只認 `true` 與 `false`,對不上就回 `3`,PR 編號打錯不會變成永遠輪詢一支不存在的 PR。

Who:`jsc-sdlc:implement` 開完工作包 PR 之後的等待合併,以及任何要盯 PR 的技能。
What:README 的指令清單補上 `pr-get`、`pr-edit` 與 `pr-watch.sh` 三項與各自的退出碼,環境變數表補 `JSC_HOME` 與 `JSC_PR_WATCH_INTERVAL`;AGENTS.md 新增一條規則,盯 PR 等合併一律用 `tools/pr-watch.sh`,不要自己寫輪詢迴圈。

Why:新指令沒寫進 README,呼叫端就只能翻腳本原始碼。`pr-watch.sh` 的退出碼 `10` 更要講清楚:它不是錯誤,是「有新留言,換你處理」的交棒訊號,看成錯誤就會把留言吞掉。

How:README 依既有版面把三項排進指令區塊,另補一段說明退出碼 `10` 的設計意圖。AGENTS.md 把新規則插進第 5 條,原第 5 條順延為第 6 條。

Who:讀 `jsc-gitea` 說明的人,以及依 AGENTS.md 行事的代理。
What:`plugin.json`、`.claude-plugin/plugin.json`、`.codex-plugin/plugin.json` 的 `version` 由 0.1.4 改為 0.1.5。

Why:本次新增 `pr-get`、`pr-edit` 與 `pr-watch.sh`,屬於行為變更,版本要跟著往上走,各 CLI 才知道要更新。

How:三份只改 `version` 一個欄位,其餘內容不動,三份保持同一版號。

Who:`jsc-gitea` 外掛的套件描述檔。
Reviewed-on: #22
admin approved these changes 2026-08-27 04:14:02 +00:00
admin merged commit d239341dec into master 2026-08-27 04:14:05 +00:00
Sign in to join this conversation.
No Reviewers
No labels
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: plugins/gitea#24