M8-10a smoke test 抓到 M1 就潛藏的 P0 latent bug:server 預設 dataDir = <binary>/data,bundle 內解析成 Contents/Resources/bin/data/(空目錄), 實際 models.json + 8 個 .nef 住在 Contents/Resources/data/(上一層)。 Wails 又傳 --data-dir 成 user home(writable),同樣沒 models.json。 結果任何正式啟動路徑下 /api/models 都回 total: 0,M1-M7 smoke 從沒 跑過這個 endpoint 才漏抓。 修法:把「read-only bundle 內資料」和「writable user 資料」語意拆開。 - 新增 findFirstExisting(candidates, sentinel) helper - 新增 resolveBuiltInDataDir:①VISIONA_BUNDLE_LIB_DIR/data(AppImage) ②<base>/data ③<base>/../data ④<base>/../Resources/data ⑤<base>/../lib/visiona-local/data(Linux FHS)。命中條件是 models.json 存在為 regular file,避開 Wails build artifact 留下的 空 data/ 目錄 - main() 拆 builtInDataDir(modelRepo + flash.Service 用)與 dataDir (custom-models / sentinel / logs 用),職責分明 - flash.NewService 改吃 builtInDataDir — 它要解析 models.json 裡的 相對路徑 "data/nef/kl520/xxx.nef",來源是 bundle 不是 user home - resolveBridgeScript 同步修(同樣的技術債一起清),候選 env var 優先 + FHS fallback,避免 Linux AppImage 上 kneron_bridge.py 也找不到 - fallback 全 filepath.Abs 化,log.Printf 印嘗試過的路徑清單便於除錯 驗證(build / vet / test + smoke)全綠: - macOS bundle:/api/models → 15 models ✅ - dev mode(server/ 下 go run):15 models ✅ - Linux AppImage 模擬 + env var:命中候選 1 ✅ - Linux AppImage 模擬 + 無 env var:命中候選 5(FHS)✅ - 全不命中:log 印完整 tried 清單 + server 不 crash ✅ Reviewer 兩輪通過。第一輪抓到 Linux AppImage 未覆蓋(Major-1)+ 2 Minor + 2 Suggestion;第二輪確認全部處理到位、新發現兩項非阻擋風格建議列為 技術債。報告見 .autoflow/05-implementation/reviews/review-m8-10a-*.md。 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
visionA
Innovedus visionA monorepo. Currently contains:
Subprojects
local-tool/
visionA-local — local-first edge AI desktop tool, derived from edge-ai-platform. Wails + Go + Next.js, packaged as macOS dmg / Windows exe / Linux AppImage.
See local-tool/README.md for details.
License
TBD (internal use)
Description
Languages
Go
42.4%
TypeScript
33.7%
JavaScript
7.5%
Python
5.3%
Makefile
3.7%
Other
7.4%