edit | blame | history | raw

2026-06-29 双构建线

用户目标

  • 解决 2.1.36 本地验证包在 macOS Monterey 12.7.4 M1 上无法打开的问题。
  • 必须采用双构建线:
  • macOS 14+ 默认构建继续支持 Qwen3-ASR。
  • macOS 14 以下兼容构建禁用 Qwen3-ASR。
  • 为保证 UI 一致性,Monterey 兼容包中 Qwen3-ASR 不隐藏,只置灰禁用并说明需要 macOS 14+。

已完成事项

  • 确认根因:默认依赖 github.com/k2-fsa/sherpa-onnx-go-macos@v1.13.2 内置 libonnxruntime.1.24.4.dylib,最低系统版本为 macOS 14.0,导致 Monterey 不能启动。
  • 新增 Monterey 兼容构建线:
  • privatevoice.src/go.monterey.mod
  • privatevoice.src/go.monterey.sum
  • privatevoice.src/scripts/build-local-macos-monterey.sh
  • 保持主 go.mod 不降级,默认 macOS 14+ 构建继续使用 sherpa v1.13.2 并支持 Qwen3-ASR。
  • 默认 macOS 14+ 构建声明 LSMinimumSystemVersion=14.0;Monterey 兼容脚本覆盖为 LSMinimumSystemVersion=11.0
  • monterey_compat build tag 隔离 Qwen3-ASR 编译路径:
  • 默认构建编译 Qwen3-ASR 配置。
  • Monterey 构建编译 Qwen3-ASR 拒绝路径。
  • 后端新增模型构建能力状态:
  • 默认构建:qwen3-asr-0.6b 支持。
  • Monterey 构建:qwen3-asr-0.6b 返回 supportedInBuild=falseunsupportedReason=requires_macos_14
  • 前端输入配置页保留 Qwen3-ASR 条目,但在 Monterey 兼容包里置灰、禁用按钮,并提示“Qwen3-ASR 需要 macOS 14 或更高版本,本兼容包暂不支持下载。”
  • 版本更新为 2.1.37 (build 20260629.0059),并更新 CHANGELOG.md

关键决策

  • 不再把整个项目依赖降级到旧 sherpa;改为双构建线,避免牺牲 macOS 14+ 用户的 Qwen3-ASR 能力。
  • Monterey 兼容线使用 sherpa v1.12.20,因为该线的 onnxruntime 最低系统版本为 macOS 11.0,且比 v1.11.4 更新。
  • Qwen3-ASR 在 Monterey 包中不隐藏,只置灰禁用,避免 UI 列表结构在不同包中跳变。

文件变更

  • Commit: 4f52723 Add Monterey compatibility build line
  • 主要文件:
  • privatevoice.src/internal/engine/engine_darwin_qwen3.go
  • privatevoice.src/internal/engine/engine_darwin_qwen3_monterey.go
  • privatevoice.src/internal/model/build_capabilities*.go
  • privatevoice.src/internal/modelselection/selection.go
  • privatevoice.src/services/engine_service.go
  • privatevoice.src/frontend/src/components/settings/LanguagePage.svelte
  • privatevoice.src/scripts/build-local-macos.sh
  • privatevoice.src/scripts/build-local-macos-monterey.sh
  • privatevoice.src/go.monterey.mod
  • privatevoice.src/go.monterey.sum
  • CHANGELOG.md

验证结果

  • go test ./... 通过。
  • go test -modfile=go.monterey.mod -tags=monterey_compat ./... 通过。
  • npm run build 通过;仍有既有 Svelte a11y warning,非本轮新增。
  • 默认 macOS 14+ DMG 与 Monterey 兼容 DMG 均构建通过,签名和 hdiutil verify 通过。
  • 构建产物:
  • 默认 macOS 14+ 包:/Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation-2.1.37-build20260629.0059-arm64-local.dmg
  • /Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation-2.1.37-build20260629.0059-arm64-monterey-local.dmg
  • 兼容短名:/Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation-2.1.37-arm64-monterey-local.dmg
  • SHA256:
  • 默认 macOS 14+ 包:8ebdcbbc7f25a8dc1e30bd9289a705b180ff47bdc68532f20678c63ec6007073
  • Monterey 兼容包:fb930fdc279773f9431649f0655fa4a3582be5f31d2f1a0922c1ee20d4097e63
  • 最低系统版本校验:
  • 默认 macOS 14+ 包:Info.plist LSMinimumSystemVersion=14.0libonnxruntime.1.24.4.dylib minos 14.0
  • Monterey 兼容包:Info.plist LSMinimumSystemVersion=11.0
  • libonnxruntime.1.17.1.dylibminos 11.0
  • libsherpa-onnx-c-api.dylibminos 11.0
  • Monterey 包内 Frameworks 只包含:
  • libonnxruntime.1.17.1.dylib
  • libsherpa-onnx-c-api.dylib
  • 未发现 com.apple.quarantine 扩展属性。

未决问题

  • 仍需用户在真实 macOS Monterey 12.7.4 M1 上安装打开验证。
  • 默认 macOS 14+ 包尚未重新打包,本轮只交付 Monterey 兼容验证包。
  • Go 链接阶段在当前机器上会输出“object file built for newer macOS version”的 warning,但最终 Monterey 兼容包的主程序和 dylib minos 均为 11.0。

后续建议

  • 若 Monterey 真实机验证通过,可以保留两个分发入口:
  • macOS 14+:默认包,支持 Qwen3-ASR。
  • macOS 11-13:Monterey 兼容包,禁用 Qwen3-ASR。
  • 发布文案或下载页需要明确说明 Qwen3-ASR 需要 macOS 14 或更高版本。