Leo
|
6275daa555
|
t185/t186:三站 nav bar 補齊+自更新改走 raw(jsDelivr @main ref 解析卡死)
## t185:用戶原本根本進不去 docs
leo:「從用戶角度看,**你沒有 nav bar 用戶怎麼進去**?」
——docs 建好了但首頁零連結,只有知道網址的人找得到=同一個病
(能力做出來了,入口沒出現在用戶會看的地方)。
- rag/install 兩站各加同一條 nav(首頁/安裝/說明文件,當前頁 highlight)
- **下載步驟旁**另加 Mac/Windows 分流連結——入口要放在「用戶正在卡住的地方」,
不能只靠頁首 nav
實測(線上抓 href,非只看 200):
rag.arcrun.dev → /docs/、/docs/start/install-mac/、/docs/start/install-windows/
install.arcrun.dev → /docs/
## t186:自更新改打 raw.githubusercontent(推翻 t150 二修的判斷)
真兇不是檔案快取,是 **jsDelivr 的 ref 解析(main→commit)被快取**,
與 purge 都清不掉。08-04 三條路同時比對坐實:
@main 1.4.9/v0.15.6(卡住,x-cache MISS,MISS 仍吐舊)/@sha 與 raw 皆 1.4.10/v0.15.7
zip 能靠改帶版本號檔名繞開,**manifest.json 檔名寫死在 code 裡繞不了** ⇒ 只能換來源。
D20 合規:t150 那輪否決 raw 的理由「那是實名讀」是**誤判**——
D20 對實名的定義是「URL 帶 token@/clone private 殼」,
daemon 這個請求不帶任何憑證=**匿名讀**,D20:22 明列「✅ 放行,不計數」。
副效益:portal 下載按鈕本來就走 raw ⇒ 兩條路同源,不再有「下載頁對、檢查更新錯」。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-04 19:29:17 +08:00 |
|
Leo
|
9fcd82b517
|
v0.15.7:改名 Arcrun.app+發 DMG(拖進 Applications)+MSIX 正式身分
leo 08-04:「如果當初 mac 打包就是 dmg 用拖的,現在 oscar 那裡就解決了,
如果當初 msix 就用了,現在另一個人也是更新就可以」——遠慮該在第一版就有。
原則:**用戶好用、白癡化**。
① 改名 Arcrun RAG.app → Arcrun.app(leo:「不要 rag,要 arcrun.app」)
五處引用一起改(selfupdate.go/build-mac.sh/build-dmg.sh/t184_test.go/README)
② 新增 build-dmg.sh:DMG 內含 Arcrun.app + Applications 捷徑
=Mac 幾十年的標準做法,開起來就暗示你拖進去 ⇒ **從源頭讓 app 待在對的位置**。
坑:hdiutil 預設檔案系統會把「Arcrun RAG.app」截成「RAG.app」⇒ 加 -fs HFS+ 解。
DMG 治源頭、t184 是安全網,兩個都要(已裝在別處的人不會因改發 DMG 就自動變好)。
③ MSIX 用 .env 的正式 Partner Center 身分重打(**不是佔位值**)
回讀 AppxManifest 逐欄驗證:
Identity Name Uncle6.Arcrun
Publisher CN=DE038286-31A5-47CF-B83F-FF6B206BF591
PublisherDisplayName Uncle6
Version 0.15.7.0
仍含 PLACEHOLDER False
實測(t184 端到端,模擬 Oscar 的情境):
app 放 /tmp/oscar-test/Downloads/(不在 /Applications)→ 跑更新覆蓋
→ 該處 app 變成 v0.15.7 ✅
→ /Applications 沒有被無中生有一個副本 ✅
路徑推導三種放置位置皆正確(Downloads/Applications/Desktop)
產物 sha256:
dmg 0eb3f76b60bf6891 mac zip f264dda7391f3006
win 32fe44450ca77c62 msix 5bf7c911b8f3a817
⛔ 誠實標記:MSIX 能否實際安裝**這台 Mac 驗不到**(Add-AppxPackage 只有 Windows)。
已驗的是包結構合法(unpack 過 blockmap 雜湊)+身分欄位正確。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-04 18:12:53 +08:00 |
|
Leo
|
0021c274e8
|
t184:自更新蓋回「正在跑的那個 .app」——修 Oscar 更新完又跳回舊版
leo 08-04 實撞(Oscar 截圖):托盤顯示「🟢 新版 v0.15.6 已就緒」,
點下去重啟後**版本又是 v0.15.4**。同一套機制在 leo 機器正常。
真兇=`selfupdate.go` 寫死 `/Applications/Arcrun RAG.app`:
· leo 有把 app 放進 /Applications ⇒ 剛好蓋對他正在跑的那份 ⇒ 一直正常
· Oscar 從下載資料夾直接跑 ⇒ 蓋到一個他沒在跑的路徑
· 而且 **ditto 會自動建出該目錄並回傳成功**(實測 exit 0,非報錯)
⇒ 畫面說「更新完成」、版本卻永遠是舊的=**靜默失敗**
⇒ 不是新舊 Mac 的差別,是 **app 放置位置**的差別(leo 機器實查證實)。
修法:改用 os.Executable() 往上推 .app(runningAppBundlePath),
更新**當前真的在跑的那份**——放哪都能更新,也不再無中生有 /Applications 副本。
找不到 .app 結構時誠實回錯,不猜路徑亂蓋(蓋錯比不更新更難查)。
⚠️ 「檢查更新」這條路**保留且必須修好**——leo:「這是我解決每次都要撞
沒簽章問題的解法,不能說它無用」。本次是修它,不是繞過它。
測試:新增 t184_test.go(不得回傳寫死 /Applications/.app 推導對三種放置位置
/ditto 靜默建目錄的認知回歸);順手把 t182 的 TestAccountEngineLabel 改寫成
新判準(explicit 決定,非 config 殘留字串)。兩模組全綠。
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
2026-08-04 17:57:46 +08:00 |
|
Leo
|
0c93475ab9
|
t150 二修:繞開 jsDelivr @main 的 7 天快取(否則更新機制形同虛設)
實測(07-29):jsDelivr 對 @main 回 cache-control max-age=604800=**7 天**
⇒ 用戶小幫手連續七天看不到新版;下載 zip 同理會抓到舊檔 ⇒ sha256 不符 ⇒ 更新永遠失敗。
修:manifest 與 zip 下載都帶 ?t=<unix> 繞快取(實測即取得最新)。
不用 raw.githubusercontent——那是實名讀 GitHub,受 D20 頻率閘管制。
另修副作用:檔名要用去掉查詢字串的網址算,否則存成 ...zip?t=1785... 怪檔名。
|
2026-07-29 22:47:46 +08:00 |
|
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 |
|