jim800121chen c54f16fca0 Initial commit: visionA monorepo with local-tool subproject
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>
2026-04-11 22:10:38 +08:00

6.0 KiB
Raw Permalink Blame History

M1-9 Review — 複製 Wails installer shell 改名為 visiona-local

審查日期2026-04-11 審查對象/Users/jimchen/visionA/local-tool/visiona-local/ 任務描述:從 edge-ai-platform/installer/ 複製 Wails 殼層,改名為 visiona-local,只處理命名與 metadata不碰邏輯

結論: 通過

所有必要檔案就位,命名規則一致(visiona-local 全小寫 for module/binary/bundle ID、visionA-local 駝峰 for 產品顯示名Bundle ID 正確,三平台 wheels 都在Makefile target 已就緒但註解掉實際執行。platform_*.go / app.go 邏輯完全沒動,符合 M1-9 範圍。可以進 M1-10。


檢查清單

1. 必要檔案存在

檔案 狀態 備註
app.go 26502 bytes未動
main.go 623 bytes
wails.json
go.mod module visiona-local
go.sum 7137 bytes
platform_darwin.go 未動
platform_linux.go 未動
platform_windows.go 未動
embed.go //go:embed all:payload
build/darwin/Info.plist
frontend/ 有 index.html / app.js / style.css / wailsjs
wheels/ macos / linux / windows 三子目錄齊全

2. wails.json 內容

欄位 期望 實際 狀態
name visiona-local visiona-local
outputfilename visiona-local visiona-local
info.productName visionA-local(駝峰) visionA-local
info.companyName Innovedus Innovedus
author.name Innovedus
info.copyright Copyright 2026 Innovedus

3. go.mod module

module visiona-local
go 1.22.0
require github.com/wailsapp/wails/v2 v2.11.0

正確

4. Info.plist

欄位 期望 實際 狀態
CFBundleName visionA-local visionA-local
CFBundleDisplayName visionA-local visionA-local
CFBundleIdentifier com.innovedus.visiona-local com.innovedus.visiona-local
CFBundleExecutable {{.OutputFilename}}(由 wails 填入) {{.OutputFilename}}
CFBundleVersion / CFBundleShortVersionString {{.Info.ProductVersion}}
沒有殘留 {{.Name}} / {{.Identifier}} placeholder 僅剩 {{.OutputFilename}} / {{.Info.*}}Wails 標準欄位,會在 build 時填入)

說明:{{.OutputFilename}}{{.Info.ProductVersion}}{{.Info.Copyright}}{{.Info.Comments}} 等是 Wails 標準 template會在 wails build 時從 wails.json 填入,不是需要手動清掉的 placeholder。關鍵的 {{.Name}} / {{.Identifier}} 已經硬編碼為正確值。

5. 未誤動邏輯

  • app.go 26502 bytes、platform_*.go 體積與 edge-ai-platform 相近 → 未改動
  • grep edge-ai-platform 只在 platform_darwin.go / platform_linux.go 的資料目錄字串 literal 出現4 筆),符合 M1-9 不動邏輯的範圍

6. Makefile wails-macos target

wails-macos: ## wails build darwin/amd64 → visiona-local/build/bin/visiona-local.app
	@echo "[M1-9] wails-macos target 已就緒;實際執行在 M1-12 啟用"
	@echo "        cd visiona-local && wails build -platform darwin/amd64 -clean"
	# cd visiona-local && wails build -platform darwin/amd64 -clean

target 已寫入 .PHONY,實際 wails build 指令被註解掉,只印提示訊息,符合 M1-9 不跑 build 的要求。

7. wheels/ 三平台

平台 檔案 狀態
macOS KneronPLUS-2.0.0-py3-none-any.whl
Linux KneronPLUS-2.0.0-py3-none-any.whl
Windows KneronPLUS-3.1.2-py3-none-any.whl 版本差異屬正常KneronPLUS Windows 版本號本來就不同)

問題

🔴 Blocker

🟡 Major

🟢 Minor / 提示(不阻擋 M1-9 通過M1-10 處理)

  1. main.goTitle: "Edge AI Platform Installer"

    • 位置:visiona-local/main.go:18
    • 說明:視窗標題仍是原 installer 字串。M1-10 要整個改寫 app.go + main.go 為 visionA-local 的 Python 雙策略空殼,屆時會一併改為 "visionA-local Installer" 或類似。列為提示,不在 M1-9 修正。
  2. platform_darwin.go / platform_linux.go.edge-ai-platform 資料目錄字串

    • 位置:platform_darwin.go:17,22platform_linux.go:17,22
    • 說明:共 4 筆 literal對應原 installer 的 ~/.edge-ai-platform 資料目錄。依第四輪決策 R4-5新資料目錄為全小寫 visiona-localmacOS 改到 ~/Library/Application Support/visionA-local/)。題目明確說此屬 M1-10 範圍,此處只標記。
  3. embed.go//go:embed all:payload

    • 目前 visiona-local/沒有 payload/ 目錄,在 M1-11 打包前,go build / wails build 會失敗(pattern all:payload: no matching files found)。
    • M1-9 沒有要求 build 通過,且 Makefile wails-macos 實際指令已被註解,所以不阻擋此任務。但請 M1-10/M1-11 注意:在第一次嘗試 build 前,至少要先建立 payload/.gitkeep 或臨時空檔案,避免 embed 編譯炸掉。
  4. frontend/ 仍是原 installer 的舊 UIindex.html / app.js

    • M1-10 改寫 installer 邏輯時應同步改 UI此處僅確認檔案存在未檢查內容符合 M1-9 範圍。

可以進 M1-10 嗎?

可以

M1-9 目標(複製殼、改命名、改 metadata、不動邏輯已達成。M1-10 的工作建議如下:

  1. 改寫 main.go 的視窗標題為 visionA-local
  2. 改寫 app.go / platform_*.go 為 Python runtime 雙策略A 內嵌 python-build-standalone + B fallback 偵測系統 Python
  3. 更新 platform_darwin.go / platform_linux.go 的資料目錄常數(~/Library/Application Support/visionA-local/~/.config/visiona-local/
  4. 改寫 frontend/ installer UI
  5. 建立 payload/.gitkeep(避免 embed 編譯失敗)