From 95c5cdd691f173ead217f7a3df8b46f7fc2b0737 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Wed, 03 Jun 2026 16:12:21 +0800
Subject: [PATCH] Prepare Round 4 QA package version
---
02-P-NBL/round-4/logs/git-diff-check-20260603-2.1.22.log | 0
02-P-NBL/round-4/logs/npm-run-build-20260603-2.1.22.log | 38 +++++++++++++++++++
privatevoice.src/frontend/package.json | 2
privatevoice.src/app.go | 4 +-
privatevoice.src/build/config.yml | 2
privatevoice.src/frontend/package-lock.json | 4 +-
02-P-NBL/round-4/logs/go-test-all-20260603-2.1.22.log | 23 +++++++++++
CHANGELOG.md | 18 +++++++++
privatevoice.src/build/darwin/Info.plist | 4 +-
privatevoice.src/build/windows/wails.exe.manifest | 2
10 files changed, 88 insertions(+), 9 deletions(-)
diff --git a/02-P-NBL/round-4/logs/git-diff-check-20260603-2.1.22.log b/02-P-NBL/round-4/logs/git-diff-check-20260603-2.1.22.log
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/02-P-NBL/round-4/logs/git-diff-check-20260603-2.1.22.log
diff --git a/02-P-NBL/round-4/logs/go-test-all-20260603-2.1.22.log b/02-P-NBL/round-4/logs/go-test-all-20260603-2.1.22.log
new file mode 100644
index 0000000..51a5840
--- /dev/null
+++ b/02-P-NBL/round-4/logs/go-test-all-20260603-2.1.22.log
@@ -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]
diff --git a/02-P-NBL/round-4/logs/npm-run-build-20260603-2.1.22.log b/02-P-NBL/round-4/logs/npm-run-build-20260603-2.1.22.log
new file mode 100644
index 0000000..ecd4908
--- /dev/null
+++ b/02-P-NBL/round-4/logs/npm-run-build-20260603-2.1.22.log
@@ -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
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 202bde4..f836437 100755
--- a/CHANGELOG.md
+++ b/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 候选包
diff --git a/privatevoice.src/app.go b/privatevoice.src/app.go
index ae058d4..e0f641f 100755
--- a/privatevoice.src/app.go
+++ b/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"
diff --git a/privatevoice.src/build/config.yml b/privatevoice.src/build/config.yml
index 9586ab2..56437e9 100755
--- a/privatevoice.src/build/config.yml
+++ b/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: .
diff --git a/privatevoice.src/build/darwin/Info.plist b/privatevoice.src/build/darwin/Info.plist
index 1b2ca44..3b7f6f6 100755
--- a/privatevoice.src/build/darwin/Info.plist
+++ b/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>
diff --git a/privatevoice.src/build/windows/wails.exe.manifest b/privatevoice.src/build/windows/wails.exe.manifest
index 3ad227e..b5ff815 100755
--- a/privatevoice.src/build/windows/wails.exe.manifest
+++ b/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>
diff --git a/privatevoice.src/frontend/package-lock.json b/privatevoice.src/frontend/package-lock.json
index 0495032..e0dcfee 100755
--- a/privatevoice.src/frontend/package-lock.json
+++ b/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"
},
diff --git a/privatevoice.src/frontend/package.json b/privatevoice.src/frontend/package.json
index f3b9a71..6352b09 100755
--- a/privatevoice.src/frontend/package.json
+++ b/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",
--
Gitblit v1.9.3