6 Commits
Author SHA1 Message Date
jiantw83 fb80559159 feat(wiki): 體檢目錄頁改走專用存取庫,並補齊設定規格表
What:CHECK_CONTENTS 改由 wiki-repo CONTENTS 解析並透過 wiki-contents.sh upsert
寫入,CHECK_{HASH} 仍走 wiki-repo CHECK。目錄頁新增一欄裸 HASH 當比對鍵。主機名
改由程式取短名,不再交給模型自由填。

Why:比對鍵原本是含網址的儲存格,換主機或換存取庫就比對不到,每跑一次體檢就替同一台
機器多附一列,畫面上還看不出來。主機名短名與 FQDN 不一致時,同一台機器會分裂成兩張頁,
而助理巡檢那邊是用程式取值的,兩邊對不起來。

How:設定規格表同一輪補齊三處既有缺漏——補上漏掉的 JSC_WIKI_REPO_MONITOR,體檢本來
看不到它而孤兒掃描還會誤報;刪掉指向不存在頁面的 MAINTAIN 內容頁字樣;MAINTAIN 那一列
改成不需要使用者處理,免得體檢叫人去設一支管不到任何頁的變數。整列保留,刪掉會讓孤兒
掃描開始誤報那個變數。

Who:jsc-cli
2026-09-02 11:03:07 +08:00
jiantw83 e30bbf5780 feat(cli): 待修項目合併收成共用腳本,檢查改為併行
「待修項目」表原本由 doctor 與 setup 各寫一次。同一套合併與排序規則寫在
兩個地方,遲早各自漂移:一邊改了排序,另一邊漏掉一整類項目,而且沒有
任何地方看得出來。現在規則只留一份,兩支技能都呼叫它。輸入與輸出都是
TSV,一項都沒有時照樣印一列,呼叫端永遠有東西可以呈現。

doctor 的四項檢查彼此不共用資料,排成一列跑只是把等待時間乘上四倍,
現在同時啟動。doctor 呼叫接線腳本一律帶唯讀旗標,把「打錯一個子命令就
改到或刪掉檔案」的風險移進程式層,不再只靠指令打對。

deploy 的 CLI 偵測、版本結論與 marketplace 清單同樣互不相干,改成併行
取得。版本結論改讀版本守門腳本的單行結論,不再自己從表格推導。setup 把
已經確認過的模式與版本報告直接交給 deploy,操作者不必再答一次同樣的問題。

deploy、doctor、models 都補上結束碼分流:腳本回什麼碼就走哪條路,不再從
輸出內容猜。體檢目錄頁改成先讀回再更新自己那一列,整頁覆蓋會把別台機器
的紀錄一次抹掉。設定規格表補上技能盤點頁要用的環境變數,盤點頁才有地方
可寫。
2026-08-31 11:09:59 +08:00
jiantw83 98781a331f fix(deploy): 部署工具的重啟狀態檔路徑改為一支 CLI 一份
What:`tools/deploy.sh` 的 `restart` 那一行改印 `$JSC_HOME/restart-required.d/{CLI 代號}`,檔頭註解一併改寫成「轉呼叫 `restart-gate.sh require` 掛上這支 CLI 的閘門」。`tools/write-guides.sh` 產生的更新指引,狀態檔說明改成一支 CLI 一份、重啟只清自己那份、別支的閘門不受影響。`tools/config-spec.tsv` 的 `$JSC_HOME/restart-required` 那一列改成 `$JSC_HOME/restart-required.d` 目錄,說明改為「該 CLI 那份不存在代表這支沒有待重啟的部署」。

Why:`jsc-hooks` 這一輪把狀態檔改成一支 CLI 一份,路徑從單一檔案變成狀態目錄底下的一份。`deploy.sh` 印的是操作者接下來要看的檔案路徑,印錯就指向一個不存在的檔案;`write-guides.sh` 寫出的更新指引是下一輪部署的依據,留著舊路徑會讓人以為刪掉那個檔案就能解除閘門;`config-spec.tsv` 是 `/jsc-cli:doctor` 比對設定落點的依據,路徑對不上就查不到這份執行期暫態。

How:三處都只跟著改路徑與說明,掛閘門的動作本來就是轉呼叫 `jsc-hooks` 的 `restart-gate.sh require`,這裡不重寫一份判定,也不自己組狀態檔內容——路徑與格式的唯一來源留在 `restart-gate.sh`。`config-spec.tsv` 那一列的型別仍是 `global` 的執行期暫態、備份與還原都維持 `none`,欄位數不變。

Who:`jsc-cli:deploy` 的部署收尾與更新指引,對齊 `jsc-hooks` 一支 CLI 一份的重啟狀態檔。
2026-08-27 18:49:58 +08:00
jiantw83 9377c2fbc7 feat(config-spec): 設定規格表補上重啟閘門、兩份指引與四項既有設定共九列
What:`tools/config-spec.tsv` 新增九列。這次新增的五項:`JSC_RESTART_GATE`、`JSC_WIKI_REPO_SKILLSET`、`$JSC_HOME/update-guide.md`、`$JSC_HOME/remove-guide.md`、`$JSC_HOME/restart-required`;補登既有但漏列的四項:`JSC_LANG_GUARD`、`JSC_COMMENT_SCOPE`、`JSC_CHANGED_FILE`、`JSC_SIMPLIFIED_FILE`。

Why:這一份是體檢與設定共用的唯一規格表,`scan-config.sh` 與 `/jsc-cli:doctor` 都讀它。沒登錄的設定項體檢查不到,等於機器上有一批設定沒人管;`orphans` 那一側也對不起來。準則寫的「新增設定時要同步補一列」就是為了這件事。

How:兩份指引標 `manual`,缺了就重跑 `/jsc-cli:deploy`,不由體檢自動補。`$JSC_HOME/restart-required` 與 `JSC_CHANGED_FILE`、`JSC_SIMPLIFIED_FILE` 都是執行期暫態,驗證與修法欄一律標 `none` 與 `-`:不存在是正常狀態,標成必要項會讓體檢把「沒有待重啟的部署」誤判成缺失。三個 `off` 開關(`JSC_RESTART_GATE`、`JSC_LANG_GUARD`、`JSC_COMMENT_SCOPE`)預設值一律寫 `on`,說明欄講明什麼情況才關。九列的欄位數與既有列一致為 8 欄。

Who:`scan-config.sh`、`/jsc-cli:doctor` 的執行環境體檢與 `/jsc-cli:setup` 的引導設定。
2026-08-27 16:34:16 +08:00
jiantw83 ffff2152c2 feat(config-spec): 登錄 JSC_PR_WATCH_INTERVAL 設定項
What:`tools/config-spec.tsv` 新增一列 `JSC_PR_WATCH_INTERVAL`:型別 `env`、全域、非必填、預設 `60`、檢查方式 `set`、缺少時 `ask`,說明寫明它是 `pr-watch.sh` 輪詢 PR 狀態的間隔秒數,實作在 `jsc-gitea/tools/pr-watch.sh`。

Why:設定規格表是 jsc 環境變數的清單正本,`jsc-cli` 的部署與體檢都讀它。新變數沒登錄進來,體檢就看不到它,使用者也無從得知有這個旋鈕可以調。

How:只加一列,排在同為 `jsc-hooks` 系列旋鈕的 `JSC_VERSION_TTL` 之後,欄位順序與既有各列相同;說明點名實作位置,讀表的人才知道去哪裡查行為。

Who:`jsc-cli:deploy` 與環境體檢,以及要調整盯 PR 頻率的使用者。
2026-08-27 11:20:30 +08:00
jiantw83 2adf9a172e feat(doctor): 新增執行環境體檢技能
What: 新增 jsc-cli:doctor,一次體檢技能版本、Hook 接線、全域設定與自我設定,只讀不改,結果寫進 wiki CHECK_{HASH}。
Why: 安裝或更新技能組之後,沒有任何工具說得出這台機器還缺什麼。設定散在環境變數、rc 檔與專案目錄,出錯時只能一個一個猜。
How: 版本比對複用 jsc-hooks 的 version-guard.sh report,接線狀態複用新加的 wire-cli.sh status(唯讀),設定則由 tools/scan-config.sh 比對 tools/config-spec.tsv 判定必要或選擇。規格表是必要性的唯一判準,掃描只負責抓出漏登錄的變數。
Who: 體檢與修復流程,搭配 jsc-cli:setup 收尾。
2026-08-26 10:43:37 +08:00