Skip to content

chore: 外掛釘版、每週漏洞檢查、核准版本、本機腳本路徑防護 - #42

Open
kielchang wants to merge 5 commits into
devfrom
chore/ci-scripts-hardening
Open

kielchang wants to merge 5 commits into
devfrom
chore/ci-scripts-hardening

Conversation

@kielchang

Copy link
Copy Markdown
Owner

疊在 #41 之上:請先依序合併 #38、#39、#40、#41,合併後這個 PR 只剩自己的一筆改動。

改了什麼/為什麼

自動檢查與發佈(不進版):

  • workflow 用到的第三方外掛一律釘 commit SHA,後面註解版號(現行 v4 標籤指向同一版,行為不變)。
  • .github/dependabot.yml:每月把外掛新版整理成一個 PR 開到 dev。程式套件不走 Dependabot。
  • .github/workflows/audit.yml:每週檢查套件漏洞。執行期套件(--omit=dev)高風險以上才亮紅燈;開發工具與文件站只列在 run 摘要。
  • 核准清單加「核准版本」:staging → main 的 PR 要填 PR 目前 head 的前 7 碼以上,pr-gate 比對;核准後再推 commit 就轉紅、要重新驗收。PR 模板、ARCHITECTURE、CLAUDE.md 同步。
  • 必過檢查綁定 workflow 路徑(ruleset 的 workflows 規則)只有組織帳號能用,維持檢查名+app id 的綁法,ARCHITECTURE 記下原因。

repo 設定與本機腳本:

  • .gitignore 補本機設定與憑證類檔案;@dooping/react 標 private。
  • scripts/lib/paths.mjs:6 個本機靜態伺服器(壞掉的 % 回 400、路徑檢查改用 isInside)、host-sync(名稱與 target 不得跑出宿主目錄)、REGISTRY_OUT(空字串、..、絕對路徑、repo 根目錄一律擋,避免整個刪掉)、Windows 經 cmd 的參數加引號。

文件:

  • AGENTS.md 寫明測過的 shadcn 版本、送回饋可加 --web。
  • ARCHITECTURE〈外掛釘版與套件漏洞〉〈同一個網域:瀏覽器儲存只放介面偏好〉。

守衛:workflow-contract +3、release-gate、paths、browser-storage、registry-content(AGENTS.md 的 shadcn 版本=套用驗收用的版本)。

注意:Dependabot 設定與 audit.yml 的排程,都要等合併進預設分支(main)之後才生效。下一次 staging → main 的 PR 開始要填「核准版本」。

自查

  • npm run build:tokens → npm run typecheck → npm test 全綠(31 檔/410 條)
  • 改了 packages/react/src → 不適用(只動 package.json 的 private,registry 無變動)
  • 版號 → 不適用(不影響取用端抄走的內容)
  • CHANGELOG → 不適用
  • 措辭過去領域化詞表
  • 反向驗證 14 項,每項拿掉都會紅;另外跑過全部 Storybook/宿主/文件站/套用驗收

🤖 Generated with Claude Code

kielchang and others added 5 commits October 10, 2026 12:15
桌面版的收合入口改成側欄右緣、固定在底部的拉環:點一下、左右拖拉或
Enter/空白鍵切換,滑鼠移上去有提示。offcanvas 收合時拉環留在視窗左緣。
SidebarTrigger 只在行動版渲染,負責開抽屜。

- 元件:sidebar、app-shell(註解改寫成規則句)
- stories:圖示欄、完全隱藏改用拉環;新增「拉環拖拉與鍵盤」
- 文件:元件頁〈應用外殼與側欄〉補拉環規則
- 版號 0.15.0、CHANGELOG、registry 與內部試裝宿主重新產生

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
csvEscape 遇到以 = + - @、Tab、CR 開頭的文字,前面補 ',試算表打開時
不會當公式執行。數字型別與只有正負號+數字的文字(-1,200、+5%)不補,
匯出後仍能計算。DataTable 的「匯出 CSV」走的就是它。

- 新守衛 tests/csv.test.ts(反向驗證 6 項)、守衛台帳補一列
- 文件:〈lib〉csvEscape 說明、〈列印與匯出〉匯出規則
- CHANGELOG 併入 0.15.0;registry 與內部試裝宿主重新產生

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
DataTable 的 toolbar 可以給函式 ({ rows }) => …,rows 是目前篩選排序後的
全部列(不分頁),跟「匯出 CSV」同一份。直接放元素的寫法照舊。
保留格式的 Excel、報表、圖表圖片由平台自己實作,用它取資料。

- 新 story「平台自訂匯出」(反向驗證:只給當頁、給原始資料都會紅)
- 〈列印與匯出〉新增「平台自己做的匯出:照畫面的呈現方式」:
  表格與圖表對照表,匯出一律用淺色模式的值(白底)
- 〈DataTable〉〈Charts〉指向對照表
- CHANGELOG 併入 0.15.0;registry 與內部試裝宿主重新產生

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
元件(併入 0.15.0):
- safeNavUrl:導覽連結只放行相對路徑、http、https、mailto、tel,
  javascript: 這類換成 #;SidebarNav、AppMenubar、CommandPalette 都經過它
- 側欄收合態往右彈出的外部子連結補 target/rel,與展開態一致
- 表格網址被改壞照常顯示:每頁筆數不在選項裡退回 pageSize、排序鍵
  只認欄位(valueOf 原本會讓表格丟例外)、壞掉的 % 保留原字、
  __proto__ 這類欄名略過
- Tooltip side="right" 泡泡一開始就 fixed,不再撐寬錨點(偏約 76px);
  拉環拿掉繞過用的固定尺寸

dooping-check:
- lock 裡專案外的路徑不讀;非官方來源提醒;本機資料夾不印 shadcn 指令;
  建議指令參數加引號、含特殊字元不印;Actions 輸出跳脫 % 與換行
- 檔頭舊編號改寫成規則句,自 self-contained-refs PENDING 移除 3 檔

守衛:nav/table-url-state/dooping-check 單元測試,story「連結網址白名單」
「網址被改壞」、拉環提示位置;反向驗證 13 項。文件、CHANGELOG、registry
與內部試裝宿主同步。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
自動檢查與發佈:
- workflow 的第三方外掛一律釘 commit SHA(20 處,現行 v4 指向同一版,行為不變)
- Dependabot 每月把外掛新版整理成一個 PR 開到 dev
- audit.yml 每週檢查套件漏洞:只有執行期套件(--omit=dev)高風險以上亮紅燈,
  開發工具與文件站只列在摘要
- 核准清單要填「核准版本」,發版閘比對 PR 目前的 head;核准後再推 commit 就轉紅
- ruleset 的 workflows 規則只有組織帳號能用,維持檢查名+app id 綁定(文件記原因)

repo 與本機腳本:
- .gitignore 補本機設定、環境變數檔、金鑰、.npmrc;@dooping/react 標 private
- scripts/lib/paths.mjs:isInside、safeDecode、outputDirUnder、shellArgs
  - 6 個靜態伺服器:壞跳脫回 400、改用 isInside(前綴相同的兄弟資料夾不再放行)
  - host-sync:item 名稱與 target 跑出宿主目錄就不寫
  - REGISTRY_OUT:空字串、..、絕對路徑、repo 根目錄一律擋(避免 rmSync 刪掉 repo)
  - Windows 經 cmd 的參數加引號

文件:
- AGENTS.md 寫明測過的 shadcn 版本、回饋可加 --web
- ARCHITECTURE「外掛釘版與套件漏洞」「同一個網域:瀏覽器儲存只放介面偏好」

守衛:workflow-contract +3、release-gate、paths、browser-storage、registry-content
(AGENTS.md 的 shadcn 版本=SHADCN);反向驗證 14 項。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant