Ariver
2026-06-03 95c5cdd691f173ead217f7a3df8b46f7fc2b0737
Prepare Round 4 QA package version
7 files modified
3 files added
97 ■■■■■ changed files
02-P-NBL/round-4/logs/git-diff-check-20260603-2.1.22.log patch | view | raw | blame | history
02-P-NBL/round-4/logs/go-test-all-20260603-2.1.22.log 23 ●●●●● patch | view | raw | blame | history
02-P-NBL/round-4/logs/npm-run-build-20260603-2.1.22.log 38 ●●●●● patch | view | raw | blame | history
CHANGELOG.md 18 ●●●●● patch | view | raw | blame | history
privatevoice.src/app.go 4 ●●●● patch | view | raw | blame | history
privatevoice.src/build/config.yml 2 ●●● patch | view | raw | blame | history
privatevoice.src/build/darwin/Info.plist 4 ●●●● patch | view | raw | blame | history
privatevoice.src/build/windows/wails.exe.manifest 2 ●●● patch | view | raw | blame | history
privatevoice.src/frontend/package-lock.json 4 ●●●● patch | view | raw | blame | history
privatevoice.src/frontend/package.json 2 ●●● patch | view | raw | blame | history
02-P-NBL/round-4/logs/git-diff-check-20260603-2.1.22.log
02-P-NBL/round-4/logs/go-test-all-20260603-2.1.22.log
New file
@@ -0,0 +1,23 @@
?       voicesnap    [no test files]
?       voicesnap/internal/audio    [no test files]
ok      voicesnap/internal/config    0.516s
ok      voicesnap/internal/correctioncsv    1.074s
?       voicesnap/internal/dock    [no test files]
ok      voicesnap/internal/engine    1.205s
ok      voicesnap/internal/history    3.819s
?       voicesnap/internal/hotkey    [no test files]
?       voicesnap/internal/input    [no test files]
ok      voicesnap/internal/language    2.281s
?       voicesnap/internal/logger    [no test files]
ok      voicesnap/internal/model    1.927s
ok      voicesnap/internal/modelselection    2.690s
?       voicesnap/internal/overlay    [no test files]
?       voicesnap/internal/paths    [no test files]
?       voicesnap/internal/permissions    [no test files]
?       voicesnap/internal/singleinstance    [no test files]
?       voicesnap/internal/sound    [no test files]
?       voicesnap/internal/startup    [no test files]
?       voicesnap/internal/textproc    [no test files]
?       voicesnap/internal/updater    [no test files]
ok      voicesnap/internal/userdict    3.080s
?       voicesnap/services    [no test files]
02-P-NBL/round-4/logs/npm-run-build-20260603-2.1.22.log
New file
@@ -0,0 +1,38 @@
> privatevoice-input-frontend@2.1.22 build
> vite build
vite v6.4.1 building for production...
transforming...
4:11:23 PM [vite-plugin-svelte] src/components/update/UpdateDialog.svelte:28:0 Elements with the 'dialog' interactive role must have a tabindex value
https://svelte.dev/e/a11y_interactive_supports_focus
26:
27: <!-- svelte-ignore a11y_click_events_have_key_events -->
28: <div class="overlay" onclick={onclose} role="dialog">
          ^
29:   <!-- svelte-ignore a11y_click_events_have_key_events -->
30:   <div class="dialog" onclick={(e) => e.stopPropagation()} role="document">
4:11:23 PM [vite-plugin-svelte] src/components/update/UpdateDialog.svelte:30:2 Non-interactive element `<div>` should not be assigned mouse or keyboard event listeners
https://svelte.dev/e/a11y_no_noninteractive_element_interactions
28: <div class="overlay" onclick={onclose} role="dialog">
29:   <!-- svelte-ignore a11y_click_events_have_key_events -->
30:   <div class="dialog" onclick={(e) => e.stopPropagation()} role="document">
            ^
31:     <h2 class="title">{t('update.title')}</h2>
32:     <p class="version">{t('update.version', { version: info.version })}</p>
4:11:23 PM [vite-plugin-svelte] src/components/shared/ToggleSwitch.svelte:17:0 Buttons and links should either contain text or have an `aria-label`, `aria-labelledby` or `title` attribute
https://svelte.dev/e/a11y_consider_explicit_label
15: </script>
16:
17: <button
           ^
18:   class="toggle"
19:   class:active={checked}
✓ 163 modules transformed.
rendering chunks...
computing gzip size...
dist/index.html                      0.41 kB │ gzip:  0.28 kB
dist/assets/app-icon-Bs-pS5hx.png  400.98 kB
dist/assets/index-Bm3gykhy.css      35.00 kB │ gzip:  5.92 kB
dist/assets/index-QkfSvZCU.js      142.09 kB │ gzip: 47.42 kB
✓ built in 1.56s
CHANGELOG.md
@@ -1,5 +1,23 @@
# Changelog
## v2.1.22 (2026-06-03)
### QA 候选包
- **Round 4 Parakeet English 高级模型**:English 语言版本新增 `parakeet-en` 可选高级模型,默认模型仍保持 `moonshine-en`。
- **Nemo Transducer backend**:macOS sherpa-onnx 接入 Parakeet NeMo Transducer 配置,支持 `encoder.int8.onnx`、`decoder.int8.onnx`、`joiner.int8.onnx`、`tokens.txt` 四文件结构。
- **模型选择 UI**:设置页新增 English 模型选择卡片,支持 Moonshine 与 Parakeet 下载、切换、当前状态展示和进度展示。
- **语言隔离保护**:手动选择的模型必须兼容当前语言;切回中文后继续使用 SenseVoice 默认路径,不让 English 模型污染中文配置。
- **下载失败保护**:Parakeet 下载中断后不会破坏当前 Moonshine/SenseVoice;下一次同模型下载前会清理旧 partial,避免残留大体积临时目录。
- **真机 QA**:已完成 Parakeet 真实下载、加载、英文识别、断网英文识别、重启持久化、Moonshine 回退、中文 SenseVoice 回归和用户数据保护验证。
### 构建
- build: `20260603.1608`
- 说明: 本版本为 Round 4 QA 通过后的测试包候选,待生成 DMG、release manifest、验证并打 tag 后交付用户验收。
---
## v2.1.21 (2026-06-03)
### QA 候选包
privatevoice.src/app.go
@@ -27,8 +27,8 @@
)
const (
    appVersion        = "2.1.21"
    appBuild          = "20260603.1327"
    appVersion        = "2.1.22"
    appBuild          = "20260603.1608"
    appDisplayVersion = appVersion + " (build " + appBuild + ")"
    appName           = "PrivateVoice Input"
privatevoice.src/build/config.yml
@@ -7,7 +7,7 @@
  description: "Private offline voice input tool"
  copyright: "(c) 2026, PrivateVoice"
  comments: "Private.Offline"
  version: "2.1.20"
  version: "2.1.22"
dev_mode:
  root_path: .
privatevoice.src/build/darwin/Info.plist
@@ -15,9 +15,9 @@
    <key>CFBundlePackageType</key>
    <string>APPL</string>
    <key>CFBundleShortVersionString</key>
    <string>2.1.21</string>
    <string>2.1.22</string>
    <key>CFBundleVersion</key>
    <string>20260603.1327</string>
    <string>20260603.1608</string>
    <key>LSMinimumSystemVersion</key>
    <string>11.0</string>
    <key>NSMicrophoneUsageDescription</key>
privatevoice.src/build/windows/wails.exe.manifest
@@ -3,7 +3,7 @@
  <assemblyIdentity
    type="win32"
    name="PrivateVoice.Input"
    version="2.1.20.0"
    version="2.1.22.0"
    processorArchitecture="*"/>
  <dependency>
    <dependentAssembly>
privatevoice.src/frontend/package-lock.json
@@ -1,12 +1,12 @@
{
  "name": "privatevoice-input-frontend",
  "version": "2.1.21",
  "version": "2.1.22",
  "lockfileVersion": 3,
  "requires": true,
  "packages": {
    "": {
      "name": "privatevoice-input-frontend",
      "version": "2.1.21",
      "version": "2.1.22",
      "dependencies": {
        "@wailsio/runtime": "latest"
      },
privatevoice.src/frontend/package.json
@@ -1,7 +1,7 @@
{
  "name": "privatevoice-input-frontend",
  "private": true,
  "version": "2.1.21",
  "version": "2.1.22",
  "type": "module",
  "scripts": {
    "dev": "vite dev",