Files
arcrun-collector/cmd/arcrun-app/check-cis.sh
T
Leo 5a48abb784 t193 四修:裁淨版 lockup+側邊欄選中態照 portal(leo 兩點)
## ① logo 比例不對+深色仍有白底+旁邊大量空白
三個症狀同一個根:**我用的是未裁淨的原始 PNG**。
portal 的註解早就寫著:原始 1840x560 **只有 32% 高度是實際字形**,上下大留白
⇒ 同 height 字看起來很小;留白處露出 paper-on-ink 自帶的 Ink 底板=白底。
portal 用的是裁淨版(986x176),但**只內嵌在它的 HTML base64 裡**,我抄不到才用了原始圖。

修:
- 從 portal 的 base64 抽出兩張裁淨版,存成 arcrun-cis/trimmed/ 供全站共用
- 兩張**都是透明底**(實測四邊留白 0)⇒ 深色模式**拿掉 Ink 底板**
- 空白是**版面**造成:側欄 232px 扣 padding 剩 184px,logo 高 24px 只有 134px ⇒ 空 50px
  ⇒ 側欄對齊 portal 的 216px,logo 改 width:100% 填滿可用寬度

實測(渲染後量像素):
  logo 26px 高 × 151px 寬,右側剩餘空白 1px(原本 50px)
  深色:側欄底(18,18,18) vs logo 上下皆(18,18,18) ⇒ 落差 0,無白底

## ② 側邊欄選中態太粗糙
leo:「參考現在 Portal 的格式⋯⋯這個比現在膠囊反紅精緻,重點是跟 portal 的形象符合」
修:逐字照 portal 的 #sidenav .nav.on ——
    **不是實心膠囊**,而是 amber 字色 + 8% amber 底 + 右側 2px amber 邊。
    側欄右緣也照 portal 用 2px amber 35%。
實測:選中列底(237,228,222)=amber 8%、右緣(176,74,47)=Relation、未選(242,241,237)=Canvas。

## 機械閘加三項守衛
- 不准用未裁淨的原始 lockup(字會太小)
- 選中態必須有 border-right-color: var(--amber)
- 不准再出現 border-radius:999px(膠囊,leo 已否決)
兩支閘全過;style.css 仍 0 個 hex。
2026-08-05 00:02:46 +08:00

58 lines
3.3 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# check-cis.sh — CIS 合規機械檢查(t193)
#
# 🔴 leo 2026-08-04:「CIS 已經提供規範,你做的**連 Logo 都沒放上去**,
# 這跟美不美有關係嗎?要求放進 CIS 是**硬要求**,**你做為檢查有嗎?沒有怎麼交貨?**」
# ⇒ 交貨前先跑這支。不過就不准交。
set -uo pipefail
cd "$(dirname "$0")"
# 色票/字體/紋理在共用底層;版面在 style.css ⇒ 兩份都要看
CSS=frontend/src/arcrun-cis.css
LAYOUT=frontend/src/style.css
HTML=frontend/index.html
FAIL=0
ok(){ printf " ✅ %s\n" "$1"; }
ng(){ printf " ❌ %s\n" "$1"; FAIL=1; }
echo "━━━ CIS 合規檢查 ━━━"
# ① 官方色票(arcrun-cis/README.md 的 Colour 表)必須逐個出現
for t in "#FDFCFB:Paper" "#F2F1ED:Canvas" "#17181A:Ink" "#B04A2F:Relation" "#D9784F:Relation-dark"; do
hex="${t%%:*}"; name="${t##*:}"
grep -qi "$hex" "$CSS" && ok "色票 $name $hex" || ng "缺色票 $name $hex"
done
# ② 不准自創顏色:抓不在白名單內的 hex
# 版面檔**一個 hex 都不准有**(顏色一律 var(--...)
STRAY_LAYOUT=$(grep -oiE '#[0-9a-f]{6}' "$LAYOUT" || true)
[ -z "$STRAY_LAYOUT" ] && ok "版面檔沒有寫死顏色" || ng "版面檔出現 hex$STRAY_LAYOUT"
STRAY=$(grep -oiE '#[0-9a-f]{6}' "$CSS" | tr 'a-f' 'A-F' | sort -u \
| grep -vE '#(FDFCFB|F2F1ED|17181A|B04A2F|D9784F|1D7A48|7FE0A8|B03A26|E58575|1B1C1E|1E1F21|1D6B40|A8E8C4)' || true)
[ -z "$STRAY" ] && ok "沒有自創顏色" || ng "出現非 CIS 色:$(echo $STRAY | tr '\n' ' ')"
# ③ Logo 必須真的放進去(leo 點名的那條)
grep -q "arcrun-lockup-h-ink-trimmed.png" "$HTML" && ok "淺色 lockup(裁淨版)已放" || ng "缺淺色裁淨版 lockup"
grep -q "arcrun-lockup-h-paper-trimmed.png" "$HTML" && ok "深色 lockup(裁淨版)已放" || ng "缺深色裁淨版 lockup"
[ -f frontend/src/assets/arcrun-lockup-h-ink-trimmed.png ] && ok "lockup 檔案存在" || ng "lockup 檔案不存在"
# 🔴 不准用未裁淨的原始 PNG:1840x560 只有 32% 高是字形,同 height 看起來字很小
grep -qE 'lockup-h-(ink|paper-on-ink)\.png' "$HTML" && ng "用到未裁淨的原始 lockup(字會太小)" || ok "沒用未裁淨的原始圖"
# 側邊欄選中態要照 portalamber 字+8% 底+右緣 2px),不是實心膠囊
grep -q "border-right-color: var(--amber)" "$LAYOUT" && ok "選中態同 portal(右緣 amber" || ng "選中態未照 portal"
grep -q "border-radius: 999px" "$LAYOUT" && ng "還在用膠囊選中態(leo 已否決)" || ok "沒有膠囊選中態"
grep -q "lockup-h.svg" "$HTML" 2>/dev/null && ng "用到已作廢的 SVG lockup(字腔缺失)" || ok "沒用作廢的 SVG lockup"
# ④ 深淺色都要成立(portal 有 data-theme,這裡也要)
grep -q 'data-theme="dark"' "$CSS" && ok "有深色模式色票" || ng "缺深色模式"
# ⑤ 字體與背景紋理要與 portal 一致
grep -q "IBM Plex Sans" "$CSS" && ok "字體同 portal" || ng "字體與 portal 不一致"
grep -q "repeating-linear-gradient" "$CSS" && ok "紙張紋理同 portal" || ng "缺 portal 的紙張紋理"
# ⑥ App icon 用官方檔
[ -f build/appicon.png ] && ok "app icon 存在" || ng "缺 app icon"
echo
[ $FAIL -eq 0 ] && echo "✅ CIS 檢查全過" || echo "❌ CIS 檢查未過——**不准交貨**"
exit $FAIL