9cd0adab22
服務 J-1 / S6「我丟進去的檔案,查得到」的考題 G-6.2: 「要嘛查得到,要嘛**當場被告知這種檔案還不支援**,不准安靜地略過。」 本次只做後半句(轉檔本體另有人閘,等 leo 裁「那段 Go 住哪裡」)。 ## 真實現況比記載更糟 t16 寫的「PDF 被靜默略過」已不成立(t73 的轉檔層把 pdf/docx/xlsx/csv/pptx 都接上了,實測 2 頁中文 PDF 完整抽出)。**真正還在沉默的是別的東西**: 副檔名不在 allowedExt 的檔案在 scan.go 直接 `return nil`—— 不進事件、不進 manifest、不進 status、不進畫面。 使用者丟一份 .doc 進去,從頭到尾一個字都沒有。 實測基線(真檔):丟 .pdf/.md/.doc/.key/.jpg 進資料夾, `collector scan` 只吐出 pdf 與 md 兩個事件,另外三個檔沒留下任何痕跡。 ## 改了什麼 - scan.go:白名單閘不再是死巷。像文件的(.doc/.xls/.ppt/.pages/.key/ .numbers/.odt/.ods/.odp/.rtf/.epub/.wpd/.msg/.eml)逐檔留名; 其餘(圖片/影音/程式碼)只計總數——**避免 Obsidian 附件庫炸出幾百行噪音**。 - 兩個新欄位標 `json:"-"`:collector-trigger schema 是 additionalProperties:false,且 BuildSendablePayload 是淺拷貝 ⇒ 有 tag 就會漏到雲端被擋。這是給本機使用者看的,不上 wire。 - direct.go → status.json → App 首頁一張卡:講檔名與格式(「舊版報告.doc (舊版 Word)」),並告訴他不用重丟、也給替代路(另存成 PDF/.docx)。 - 刻意不進 manifest、不走 CarryForwardActivity:每輪由檔案系統重算, 不製造 t195 那種「跨輪欄位漏 carry 就靜默歸零」的債。 ## 順手修掉一個會讓驗收失效的回歸 同綑的 arcrun-collector 一路自稱 `dev`:退役 fyne 版 (arcrun-tray/build-mac.sh:24,t150/t72)本來就有版本注入, t194 換 Wails 時沒帶過來,Mac 與 Windows 兩邊都掉。 **幹活的是 collector**——它不報版本,就沒人能判斷修復有沒有到使用者手上。 ## 實測 - go test ./... 135 過 0 敗(新增 10 條:scan 5+首頁文案 5) - check-cis / check-render / check-tray 三閘全過;淺色深色都抓過畫面 - 從 **DMG 裡那支** collector 實跑:Info.plist 0.18.6、 collector 回報 v0.18.6 (build 20260806-0101)、 status.json 吐出 skipped_docs=[簡報.key, 舊版報告.doc]、other=1 ⚠️ 未出貨:推 bundles repo 在 GitHub,要 leo 開 D20 閘。 DMG 已備妥 dist/Arcrun-v0.18.6.dmg。 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
59 lines
3.0 KiB
Bash
Executable File
59 lines
3.0 KiB
Bash
Executable File
#!/usr/bin/env bash
|
||
# build-mac.sh — 打包 Arcrun.app(Wails 版,t194)
|
||
#
|
||
# 與 fyne 版最重要的差別:**要把 collector 同綑進 .app**。
|
||
# daemon 的本體是 `collector direct`(監看/萃卡/上傳),App 只是它的門面;
|
||
# 沒同綑 ⇒ 裝了也不會同步。
|
||
set -euo pipefail
|
||
cd "$(dirname "$0")"
|
||
VERSION="${VERSION:-$(git describe --tags --always --dirty 2>/dev/null || echo dev)}"
|
||
BUILD_TIME="$(date '+%Y%m%d-%H%M')"
|
||
LDFLAGS_VER="-X main.version=${VERSION} -X main.buildTime=${BUILD_TIME}"
|
||
export PATH="$PATH:$(go env GOPATH)/bin"
|
||
echo "🏷 版本:${VERSION}(build ${BUILD_TIME})"
|
||
|
||
echo "① 編 collector(同綑執行檔,純 stdlib、CGO_ENABLED=0)"
|
||
# 🔴 2026-08-06 補回版本注入(**Wails 換代時掉的**):
|
||
# 退役的 fyne 版 `arcrun-tray/build-mac.sh:24` 本來就有這個(t150/t72,
|
||
# leo 07-29「我的和下載下來的會是同一個嗎?」),t194 重寫成 Wails 版時沒帶過來
|
||
# ⇒ 同綑的 collector 一路自稱 `dev`,App 門面卻顯示 v0.18.x。
|
||
# **幹活的是 collector**:它不報版本,就沒人能判斷某個修復有沒有真的到使用者手上——
|
||
# 正是「版本號是 leo 唯一驗收介面」要擋的那個病。
|
||
# 實撞:v0.18.6 打包後 `arcrun-collector --version` 回 `dev`。
|
||
( cd ../.. && CGO_ENABLED=0 go build -ldflags "-s -w ${LDFLAGS_VER}" -o "cmd/arcrun-app/arcrun-collector" . )
|
||
|
||
# 🔴 2026-08-05(leo 開 DMG 檢查時抓到):Info.plist 的 CFBundleShortVersionString
|
||
# 是 **1.0.0**(Wails 預設),不是我們的版本號——因為 wails.json 沒有 info.productVersion,
|
||
# 而 `wails build` **沒有** CLI 旗標可指定。
|
||
# ⇒ 建置前把版本寫進 wails.json 的 info,建完還原(不污染版控)。
|
||
# 為什麼要修:使用者「關於」看到的、以及 Finder 顯示的版本都讀這個欄位;
|
||
# 永遠顯示 1.0.0 ⇒ 用戶無從判斷自己是不是新版(同 leo「版本號是唯一驗收介面」的病)。
|
||
PLIST_VER="${VERSION#v}"
|
||
cp wails.json wails.json.bak
|
||
python3 - "$PLIST_VER" <<'PY'
|
||
import json, sys
|
||
c = json.load(open('wails.json'))
|
||
c.setdefault('info', {})
|
||
c['info']['productVersion'] = sys.argv[1]
|
||
c['info']['productName'] = 'Arcrun'
|
||
json.dump(c, open('wails.json', 'w'), indent=2, ensure_ascii=False)
|
||
PY
|
||
trap 'mv -f wails.json.bak wails.json 2>/dev/null || true' EXIT
|
||
|
||
echo "② wails build"
|
||
wails build -clean -ldflags "${LDFLAGS_VER}"
|
||
|
||
APP="build/bin/Arcrun.app"
|
||
[ -d "build/bin/arcrun-app.app" ] && { rm -rf "$APP"; mv "build/bin/arcrun-app.app" "$APP"; }
|
||
|
||
echo "③ 同綑 collector 進 .app(App 用 os.Executable() 找同層)"
|
||
cp arcrun-collector "$APP/Contents/MacOS/arcrun-collector"
|
||
|
||
echo "④ ad-hoc 重簽(改過 bundle 內容必重簽,否則 launchd 拒開)"
|
||
codesign --force --deep --sign - "$APP" 2>/dev/null || true
|
||
|
||
rm -f arcrun-collector
|
||
echo "✅ 完成:$APP"
|
||
echo " 驗法:open '$APP' → 選單列出現 icon、Dock **不出現** icon"
|
||
echo " 點 icon → 立刻展開視窗;右鍵 → 只有「結束 Arcrun」"
|