Commit Graph

4 Commits

Author SHA1 Message Date
Leo 8dd15fbe43 t150: 小幫手自我更新(背景備妥+重啟完成)+版本一致性
leo 07-29 三句話定調:
「小白不會動不動就刪除再裝新的」
「如果它都掛着,那準備好就告訴他重啓更新」
「**我要他下載多幾次他就放棄了,所以抓到一個客戶後不能讓他有機會離開**」

① 版本一致性(leo:「我的和下載下來的會是同一個嗎?」)
   真因:build-mac.sh L22/build-windows.sh L46 **只有 tray 注入版本,collector 沒有**
   ⇒ 托盤顯示 tray 的版本,實際幹活的 collector 無版本可查、可能不同版。
   修:collector 加 version/buildTime 變數與 --version 旗標;兩個 build 腳本都改為
   兩支注入同一個 LDFLAGS_VER(各 2 處)。
   驗:collector --version → v0.15.0 (build 20260729-2238);tray 內含同一組值。

② 自我更新(leo 選 1+3:完全自動,但要有提醒與手動檢查)
   - 背景每日檢查 manifest 的 daemon 版本(單一 CDN 靜態檔,非 GitHub API,不違反不輪詢紅線)
   - 有新版**默默下載並驗 sha256**,備妥後選單變「🟢 新版已就緒 — 點此重新啟動完成更新」
   - daemon 常駐不重啟 ⇒ 不偷換正在跑的自己;使用者按一下才 ditto 覆蓋並重啟
   - 另有「檢查更新…」讓人隨時手動按(不必等每日排程)
   - 驗章不符或解壓失敗=保留舊版不動(壞掉的 .app 比舊版更糟)
   ⇒ **封測者完全不必再下載任何東西**

驗:go build/go vet 過;三個版本比較測試通過(dev 不提示/同版不提示/新版要提示);
未剝離符號版確認 5 個更新函式在 build 範圍內
(註:打包版被 -s -w 剝符號,用 grep/strings 驗會誤判為「功能沒進去」)。
2026-07-29 22:40:58 +08:00
Leo 5e122b47ec feat(t77-lite): Windows 合併成單一 exe——go:embed 把 collector 吃進 tray
leo 07-28:「Windows 解開有 2 個 exe,被瀏覽器擋住,如果只有 1 個,
我還可以把 exe 改成 e_e 讓朋友改回來,但現在這樣完全不行」。
做法:build-windows.sh 先編 collector.exe 到 tray 目錄供 //go:embed,
tray 啟動時 ensureEmbeddedCollector() sha256 比對後解壓到 ~/.arcrun-rag/bin/,
失敗 fallback 同層(舊版相容);Mac 走 build-tag no-op 完全不動。
驗收(總管親跑):PE32+ GUI exe/zip 僅 1 檔 16.9MB<20MB jsDelivr 上限/
collector 特徵字串在 exe 肚裡(grep=1)/Mac go build+test 全綠/tray 測試綠。
(實作=子 CC;build+驗收+commit=總管)
2026-07-28 12:15:13 +08:00
Leo 1b58cd1a35 fix(t72): build-windows.sh 補版本注入(Mac 有、Windows 漏了)+tray go.mod tidy
實測抓到:Windows 版編出來 v0.10.0 命中 0——版本注入只加在 build-mac.sh,
Windows 那支漏了(我今天改的那份在 detached worktree,沒進分支)。

v0.10.0 兩平台實測:
  Mac  zip 15.92MB|托盤 21.15MB(strip)|collector 14.46MB(含 PDFium)
  Win  zip 16.86MB|tray 22.40MB|collector 15.15MB
  兩者皆 < jsDelivr 20MB
  指紋全中:v0.10.0/版本列/結束 Arcrun RAG/PDF 打不開(轉檔層)

順帶修:tray go.mod 需 tidy 才編得過(合併後又被覆蓋,撞了兩次)。
2026-07-27 21:17:50 +08:00
Leo 26dd6960c2 feat(t72): Windows 交叉編譯腳本——Mac 上就編得出 Windows 托盤(推翻「要真機」假設)
任務板一直寫「fyne GUI 沙箱編不了 CGo+GL → 歸屬真機」,本機實測推翻一半:
裝 mingw-w64 後 Mac 直接交叉編譯成功,不需 Windows 機器/Docker/fyne-cross。

  CGO_ENABLED=1 GOOS=windows CC=x86_64-w64-mingw32-gcc \
    go build -ldflags "-H windowsgui -s -w"
  → PE32+ executable (GUI) x86-64, for MS Windows

正確說法是「編得出來、但驗不了」——編譯是 Mac 的事,跑起來對不對才是真機的事。

另兩條路實測皆失敗(訊息留在文件):
- CGO_ENABLED=0 → go-gl/gl 無 non-cgo 實作
- CGO_ENABLED=1 無交叉編譯器 → 退回 host clang 報 -mthreads 不支援

體積(解掉 t72 的 zip 疑慮):tray 加 -s -w 40.8MB→23.5MB、collector 6.5MB,
zip 合計 13.9MB=在 jsDelivr 20MB 上限內,Windows 版不會踩到 Mac 版那個坑。

腳本已實跑通過。 未驗=托盤 icon/選資料夾對話框/SmartScreen 實際行為(要真 Windows)。
詳 system-dev/docs/3-specs/rag-wave1/windows-build-and-os-split.md

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 18:34:59 +08:00