local-tool/: visionA-local desktop app
- M1: Wails shell + Go server + Next.js UI + Mock mode (macOS dmg ready)
- M2: i18n (zh-TW/en) + Settings 4-tab refactor
- M3: Embedded Python 3.12 runtime (python-build-standalone) + KneronPLUS wheels
- M4: Windows Inno Setup script (build on Windows runner)
- M5: Linux AppImage script + udev rule (build on Linux runner)
- M6: ffmpeg (GPL, pending legal review) + yt-dlp bundled
- Lifecycle: watchServer health check, fatal native dialog,
Wails IPC raise endpoint, stale process cleanup
.autoflow/: full PRD / Design Spec / Architecture / Testing docs
(4 rounds tri-party discussion + cross review)
.github/workflows/: macOS / Windows / Linux build CI
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
5.1 KiB
5.1 KiB
7. 發佈與交付策略
7.1 發佈通路(Q 決定:內部 Gitea / GitHub Releases)
決策:
- ✅ 內部 Gitea Releases(首選)
- ✅ GitHub Releases(備援 / 合作夥伴用)
- ❌ 不上 Mac App Store、Microsoft Store、Snap Store、Flatpak
理由:
- 內部工具性質,不需要商店觸達
- 商店上架需要 sandbox(App Store)、開發者帳號 / 簽章(所有商店),均已被 Q2 排除
- Gitea / GitHub Releases 提供版本管理與下載追蹤即可
7.2 發佈頻率
| 類型 | 頻率 | 觸發 |
|---|---|---|
| 主版本(1.0、2.0) | 1-2 次/年 | 重大功能加減 |
| 次版本(1.1、1.2) | 1 次/月 | 新功能 / 重大改進 |
| 修補版本(1.0.1) | 隨時 | Bug fix / 安全性 |
7.3 發佈產出物
每個 release 包含以下檔案:
| 檔名 | 平台 | 格式 | 預計大小 |
|---|---|---|---|
visionA-local-{version}-macos-x64.dmg |
macOS 14/15 x86_64 | .dmg |
~220 MB |
visionA-local-{version}-windows-x64.exe |
Windows 10/11 x86_64 | Inno Setup .exe |
~200 MB |
visionA-local-{version}-linux-x64.AppImage |
Ubuntu 22.04/24.04 x86_64 | .AppImage |
~200 MB |
visionA-local-{version}-checksums.txt |
全平台 | 文字 | < 1 KB(SHA256) |
RELEASE_NOTES.md |
全平台 | Markdown | 依版本而異 |
注意:不提供 ARM 架構、不提供 .deb / .rpm / .pkg。
7.4 發佈前檢查清單(Launch Checklist)
每次 release 前必須通過:
功能面
- 三平台安裝檔可於對應 OS 成功安裝(手動測試)
- 三平台首次啟動可完成 First-Run 流程
- 三平台均可接 Kneron USB 並 connect 成功
- 三平台 Mock 模式可啟動並顯示假推論結果
- 三平台攝影機串流正常
- 三平台前端 cluster / relay / tray UI 已完全清除(第三輪 Q-C 決策,M1 必達)
效能面
- 安裝時間 ≤ 3 分鐘(測試機 SSD)
- 首次推論時間 ≤ 15 秒
- Mock idle CPU ≤ 3%、RAM ≤ 400 MB
- 安裝檔大小符合 6.2 節上限
相容性
- macOS 14 + 15 各測試一次
- Windows 10 + 11 各測試一次
- Ubuntu 22.04 + 24.04 各測試一次
文件
- RELEASE_NOTES.md 已撰寫
- 安裝指南更新(含 Gatekeeper / SmartScreen 警告處理)
- 內部 Wiki / Slack 通知已準備好
非需要項目(明確不做)
程式碼簽章(Q2)notarization(Q2)法律文件(Terms / Privacy)(內部工具)商店審核auto-update 清單(Q6)
7.5 發佈流程
1. 開發完成 → 合併到 main branch
2. 打 tag:git tag v1.0.0 && git push --tags
3. CI 觸發 → 三平台 build(GitHub Actions 或 self-hosted runner)
├─ macOS runner:wails build -platform darwin/amd64 → .dmg
├─ Windows runner:wails build -platform windows/amd64 → Inno Setup → .exe
└─ Linux runner:wails build -platform linux/amd64 → appimagetool → .AppImage
4. 產生 checksums.txt
5. 人工執行 Launch Checklist
6. 上傳到 Gitea / GitHub Releases
7. 內部公告(Slack channel / Email):
- 新版本號
- 主要變更
- 下載連結
- 升級說明(因為沒 auto-update,需手動下載)
7.6 使用者升級路徑
因為 Q6 決定不做 auto-update:
1. 使用者從 Slack / Email 得知有新版
2. 手動到 Gitea / GitHub Releases 下載新版安裝檔
3. 安裝新版(舊版 config / 模型資料保留在 OS 慣例資料目錄;macOS:`~/Library/Application Support/visiona-local/`)
4. 首次啟動新版會自動讀取舊 config
舊版本相容性:
- config.json 結構必須向後相容(加欄位可以、改語意要寫 migration)
- 模型檔案格式不變(.nef 為 Kneron 標準)
- logs 目錄結構不變
7.7 Rollback 策略
若新版本爆出重大問題:
- 在 Gitea / GitHub Releases 將該版本標記為 pre-release 或刪除
- 內部通知:「請暫停升級 vX.Y.Z,改用 vX.Y.Z-1」
- 使用者已升級者:手動下載舊版重裝(config 資料保留)
因為無 auto-update,rollback 成本相對低。
7.8 支援與回報
- Bug 回報通路:內部 Slack channel / Gitea Issues
- Feature Request:同上
- 文件:內部 Wiki
- 無 SLA,best-effort 支援
7.9 長期維護策略
visionA-local 的維護預算應與 edge-ai-platform 主線共用:
- 核心業務邏輯(device / model / inference / camera)的修改同步從 edge-ai-platform cherry-pick
- visionA-local 特有的部分(installer、payload、tray、wails shell)獨立維護
- 目標:visionA-local 的獨有程式碼 < 30%,其餘都能與 edge-ai-platform 共享
7.10 非目標再次確認(發佈相關)
本章節再次強調發佈相關的非目標:
- ❌ 不上任何商店(Mac App Store / Microsoft Store / Snap Store 等)
- ❌ 不做程式碼簽章(macOS Developer ID / Windows EV cert)
- ❌ 不做 notarization
- ❌ 不做 auto-update
- ❌ 不做 telemetry / crash report
- ❌ 不做 license key
- ❌ 不做法律文件(Terms / Privacy Policy)— 因為是內部工具
- ❌ 不支援 ARM 架構(未來再評估)