更新內容機械化+manifest 補上「宣告版本==產物版本」的閘+前端顯示同步器版本
回應 leo 08-06 兩問與兩項新需求。 ## ①「更新內容還要寫在 docs 裡,機械化要怎麼做」 答:改的是「寫在哪」,不是「誰來寫」。 - 單一真相源=docs-site/.../help/changelog.md(本來就存在,用戶語言那份) - 新增 changelog-section.sh:抽出某版段落(供 manifest.notes 投影用) + --check 模式當閘 - build-win.sh/build-mac.sh 接上閘:**changelog 找不到這版段落 ⇒ 中止打包** ⇒「忘了寫更新內容」變成不可能,而不是靠誰記得 - 已寫 v0.18.8 的用戶語言版本說明(本次五修) ## ② manifest 的閘:這次的病是從兩條規則中間的縫穿過去的 verifyManifest 對 daemon 只驗 ①version 欄在不在 ②file 指的檔存不存在。 08-06 那次**兩條都過**(宣告 v0.18.5、`-v0.18.4.zip` 檔案真的存在)⇒ 全綠放行。 新增第三條:宣告版本必須等於產物真正的版本 (a) 檔名要帶宣告的版本(光這條就足以擋下 08-06 那次) (b) .exe 再驗一層:版本字串要真的在二進位裡(檔名可改,內嵌版本改不了) 實測(用當時的真實 manifest 值重現): · 宣告 v0.18.5 + 檔名 -v0.18.4.zip → ❌ 擋下(mac/win 各一條) · 檔名改成 v0.18.8 但內容是 v0.18.7 那顆 → ❌ 擋下(規則 b) ## ③ 前端顯示同步器版本+下載入口 leo:「連我都沒辦法確認,所以用戶到底是否最新版他自己也不知道」 - /api/latest 新增 daemon 欄(version/notes/downloads),由 daemonOf(env) 讀釘點 manifest——與 releaseOf 同原則同真相源,不留手抄本。 下載網址走 raw + 釘點 sha,與 selfupdate.go:158 同源(不自創第二條路)。 - rag.arcrun.dev 步驟 4 補上**真的下載按鈕**(Win/Mac)+同步器版本+ 「這一版改了什麼」連結。以前這裡只有文案提到下載、沒有連結也沒有版本。 取不到就顯示「(查詢中)」並退回安裝說明頁——沿用 bf06ed7 的原則,不留手抄值。 ## 驗 · node --check worker.js(installer/landing)皆 OK · changelog 閘:v0.18.6 通過;不存在的 v0.18.7 → 退出碼 1 並印出可照抄的範本 · manifest 三條規則實測如上 · 未驗:線上畫面(要出貨後才有 daemon 欄位)⇒ ◐,不是 ✅
This commit is contained in:
@@ -11,6 +11,13 @@ cd "$(dirname "$0")"
|
||||
# ⇒ 只能靠打包時人工敲 VERSION= ⇒ 兩條打包線各敲各的 ⇒ manifest 說謊。
|
||||
# 理由與算法全文見 daemon-version.sh。
|
||||
VERSION="${VERSION:-$(./daemon-version.sh)}"
|
||||
|
||||
# 🔴 2026-08-06 機械閘:這一版的「更新內容」沒寫進 changelog ⇒ 不准打包。
|
||||
# leo:「給版本號、本版更新內容、打包產品、顯示在前端,這一整串都應該是機械化」。
|
||||
# 單一真相源=docs-site/.../help/changelog.md;manifest.notes 與前端全部投影自它。
|
||||
# 理由與格式見 changelog-section.sh。
|
||||
./changelog-section.sh "$VERSION" --check
|
||||
|
||||
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"
|
||||
|
||||
Reference in New Issue
Block a user