bd0cead00e
leo 2026-08-04 看過 v0.16.0 畫面後:
「功能都有了,但美感非常糟糕⋯⋯跟 CIS 完全無關,每個功能都開一個小小的 popup 視窗,
非常缺乏整體感,這要理解的是原始的技術選擇是否出錯?」
「我的要求是符合 CIS,在風格上跟 portal 一樣」
「CIS 已經提供規範,你做的連 Logo 都沒放上去,這跟美不美有關係嗎?
要求放進 CIS 是硬要求,你做為檢查有嗎?沒有怎麼交貨?」
## 我的兩個錯
1. **動工前沒提醒做不到**——decisions-summary.md:314 的 D-daemon-UI
是我 07-27 自己寫的調研(結論:fyne 全自繪、CSS 套不進去),寫完就沒再看。
今天動工前該查它卻直接開寫,浪費 leo 的時間與 token。
2. **沒做 CIS 檢查就交貨**——連 logo 都沒放。
## 換 Wails(WebView 殼)
前端就是 HTML/CSS ⇒ 可以直接用 portal 那份色票與 lockup。
- style.css 的色票/字體/紙張紋理**逐字取自** portal 的 :root
(matrix/arcrun:console-ui/public/portal/index.html),不自創任何顏色
- CIS lockup 官方 PNG,淺色 ink 版/深色 paper 版,切換規則同 portal
(避開 08-01 作廢的自產 SVG——字腔缺失)
- 對話框改**內嵌覆蓋層**,不再每個功能開一個小 popup
- 原生資料夾選擇器(macOS powerbox 會自動授予該資料夾存取權,
fyne 自繪 picker 拿不到;未來上 Mac App Store 是硬需求)
- 同步中的圓點會呼吸 ⇒ 看得出來在動(issue #17)
- 無帳號時是 onboarding 引導,不是空白面板
## 連線邏輯逐字沿用,不重寫
connect.go 的 normalizePortalURL/fetchConfigByLogin 取自 arcrun-tray/main.go,
含 t86 個資外洩事故的防線(不同實例=新增帳號,絕不覆蓋舊帳號的資料夾)。
今天已犯過一次「重寫別人修好的東西還修得更差」,不再犯第二次。
## 新增 check-cis.sh(交貨前必跑)
機械檢查六類:官方色票逐個到齊/**不准出現非 CIS 色**/logo 真的放進去/
不可用作廢 SVG/深色模式/字體與紙張紋理同 portal/app icon。
實跑 14 項全過。以後「沒跑過就不准交」。
⚠️ 未驗:實際畫面要 leo 開來看(我開不了視窗)。
47 lines
2.3 KiB
Bash
Executable File
47 lines
2.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
# check-cis.sh — CIS 合規機械檢查(t193)
|
|
#
|
|
# 🔴 leo 2026-08-04:「CIS 已經提供規範,你做的**連 Logo 都沒放上去**,
|
|
# 這跟美不美有關係嗎?要求放進 CIS 是**硬要求**,**你做為檢查有嗎?沒有怎麼交貨?**」
|
|
# ⇒ 交貨前先跑這支。不過就不准交。
|
|
set -uo pipefail
|
|
cd "$(dirname "$0")"
|
|
CSS=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
|
|
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)' || true)
|
|
[ -z "$STRAY" ] && ok "沒有自創顏色" || ng "出現非 CIS 色:$(echo $STRAY | tr '\n' ' ')"
|
|
|
|
# ③ Logo 必須真的放進去(leo 點名的那條)
|
|
grep -q "arcrun-lockup-h-ink.png" "$HTML" && ok "淺色 lockup 已放" || ng "缺淺色 lockup"
|
|
grep -q "arcrun-lockup-h-paper-on-ink.png" "$HTML" && ok "深色 lockup 已放" || ng "缺深色 lockup"
|
|
[ -f frontend/src/assets/arcrun-lockup-h-ink.png ] && ok "lockup 檔案存在" || ng "lockup 檔案不存在"
|
|
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
|