edit | blame | history | raw

2026-06-25 P1验证收尾

用户目标

保存当前会话,便于后续继续接手 P1 验证包、关于页视觉修复、下载状态问题和本地模型清理事项。

已完成事项

  • 读取并遵守全局规则 /Users/ar/.codex/AGENTS.md 与项目规则 /Users/ar/Projects/PrivateVoice/AGENTS.md
  • P1 模型下载取消能力已完成并提交:
  • 7999e66 Add cancellable model downloads
  • 后端下载器支持 context 取消。
  • 语言页和首次设置页支持取消 / 重新下载。
  • 取消后不走 fallback、不写半成品安装状态。
  • About 页支持与反馈 URL 换行问题已修复并提交:
  • e533a8c Fix about page support link wrapping
  • About 页桌面宽度下 URL 保持单行,小窗口保留安全换行。
  • 下载状态错乱问题已修复并提交:
  • a5adc6d Sync model download state in settings
  • 修复现象:后端仍在下载 zipformer-ko,前端却回到 Download,再次点击显示原始 JSON:model zipformer-ko is already downloading
  • 新增 GetModelDownloadStatus(),前端加载、进度、取消、完成事件均同步 active download 状态。
  • 新增服务层测试 TestEngineServiceDownloadStatusTracksCancelAndFinish
  • 已生成新的本地验证 DMG,包含 P1 + About 页修复 + 下载状态同步:
  • /Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation-2.1.35-build20260623.1435-arm64-local.dmg
  • SHA256:76852667e065f6d3a18021483954e84ae797d9665cfc5150ce424ac02126301f
  • App 元数据:version 2.1.35,build 20260623.1435,bundle id com.shanghai3168.privatevoicedictation

验证记录

  • go test ./services ./internal/model -run 'TestEngineServiceDownloadStatusTracksCancelAndFinish|TestDownloadProfileCancelStopsWithoutFallbackOrState' -count=1:通过
  • go test ./services ./internal/model:通过
  • npm run build:通过;仍有既有 Svelte a11y warning,非本轮引入
  • git diff --check:通过
  • ./scripts/build-local-macos.sh arm64:通过
  • 构建脚本内 app 签名校验:通过
  • hdiutil verify:通过

关键决策

  • 当前 DMG 是本地验证包,不是正式 App Store 发布包。
  • 本轮没有递增正式版本号、没有更新 CHANGELOG、没有生成 release manifest / tag。
  • 下载慢或下载失败属于后续 P2 下载源 / 网络优化问题;本轮只修 P1 状态错乱和取消反馈。
  • 用户希望删除中文、英文之外的模型以释放硬盘空间;已经确认模型根目录:
  • /Users/ar/Library/Application Support/PrivateVoice Input/models

本地模型现状

只读检查到的模型目录与大小:

  • sensevoice:约 228 MB,中文/多语基础,建议保留。
  • qwen3-asr-0.6b:约 954 MB,中文高级,建议保留。
  • x-asr-zh-en-960ms:约 586 MB,中英实验,建议保留。
  • moonshine-en:约 274 MB,英文,建议保留。
  • parakeet-en:约 633 MB,英文,建议保留。
  • parakeet-tdt-0.6b-v3:约 640 MB,英文,建议保留。
  • zipformer-ja-reazonspeech:约 741 MB,日语,可删除。
  • .downloads / .staging:当前约 0B,可清理但释放空间很少。

建议删除前先在 App 中切回中文或英文并彻底退出 App。保守清理命令:

rm -rf "$HOME/Library/Application Support/PrivateVoice Input/models/zipformer-ja-reazonspeech"
rm -rf "$HOME/Library/Application Support/PrivateVoice Input/models/.downloads"
rm -rf "$HOME/Library/Application Support/PrivateVoice Input/models/.staging"

未决问题

  • 用户仍需真实验证新 DMG:
  • 韩语模型下载中切页面 / 切语言后回来,按钮应保持 Cancel正在取消
  • 不应再显示 already downloading 的原始 JSON。
  • About 页支持与反馈 URL 不应再出现尾部单字母换行。
  • 如果模型仍下载不下来,需要进入 P2:下载源可用性、速度、断点续传、取消后清理和镜像策略。
  • 正式发布包仍需单独执行版本递增、CHANGELOG、manifest、tag 和发布门禁。

后续建议

  • 验证当前 DMG 后,如果 P1 状态通过,再决定是否做 P2 下载体验。
  • 可以在语言页新增模型删除按钮,把手动文件清理变成产品内可控操作。