From 825443c94207230def2fb467bfa6e665478e03f2 Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Sun, 07 Jun 2026 01:42:53 +0800
Subject: [PATCH] Bump version to 2.1.29 experimental

---
 privatevoice.src/frontend/package.json                             |    2 +-
 privatevoice.src/app.go                                            |    4 ++--
 privatevoice.src/frontend/package-lock.json                        |    4 ++--
 CHANGELOG.md                                                       |   16 ++++++++++++++++
 privatevoice.src/frontend/src/components/settings/AboutPage.svelte |    2 +-
 privatevoice.src/build/darwin/Info.plist                           |    6 ++++--
 privatevoice.src/build/windows/wails.exe.manifest                  |    2 +-
 7 files changed, 27 insertions(+), 9 deletions(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 02bb800..736069d 100755
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,21 @@
 # Changelog
 
+## v2.1.29 (2026-06-07)
+
+### 实验候选包
+
+- **X-ASR 960ms 实验模型**:新增 `x-asr-zh-en-960ms` 实验模型 profile,用于评估中英混输和未来“边说边出字”方向。
+- **macOS X-ASR streaming backend**:在 macOS 下接入 sherpa-onnx `OnlineRecognizer`,先复用现有“一段录音 -> 最终文本”听写流程验证模型效果,不改 live partial 上屏链路。
+- **本地模型安装脚本**:新增 `scripts/install-x-asr-zh-en-960ms.sh`,只下载 Hugging Face `chunk-960ms-model` 所需四个文件,不把大模型放入 git。
+- **回滚保护**:已创建 `codex/freeze-2.1.28-appstore-20260605.0353`,指向已上传成功的 2.1.28 App Store 源码基线。
+
+### 构建
+
+- build: `20260607.0141`
+- 说明: 本版本为 X-ASR 技术实验候选包,不是 App Store 正式上传包。
+
+---
+
 ## v2.1.28 (2026-06-04)
 
 ### 发布冻结
diff --git a/privatevoice.src/app.go b/privatevoice.src/app.go
index 320ec71..9e06899 100755
--- a/privatevoice.src/app.go
+++ b/privatevoice.src/app.go
@@ -27,8 +27,8 @@
 )
 
 const (
-	appVersion        = "2.1.28"
-	appBuild          = "20260605.0353"
+	appVersion        = "2.1.29"
+	appBuild          = "20260607.0141"
 	appDisplayVersion = appVersion + " (build " + appBuild + ")"
 	appName           = "PrivateVoice Dictation"
 
diff --git a/privatevoice.src/build/darwin/Info.plist b/privatevoice.src/build/darwin/Info.plist
index 699908a..14cae8f 100755
--- a/privatevoice.src/build/darwin/Info.plist
+++ b/privatevoice.src/build/darwin/Info.plist
@@ -17,11 +17,13 @@
     <key>CFBundlePackageType</key>
     <string>APPL</string>
     <key>CFBundleShortVersionString</key>
-    <string>2.1.28</string>
+    <string>2.1.29</string>
     <key>CFBundleVersion</key>
-    <string>20260605.0353</string>
+    <string>20260607.0141</string>
     <key>LSApplicationCategoryType</key>
     <string>public.app-category.productivity</string>
+    <key>ITSAppUsesNonExemptEncryption</key>
+    <false/>
     <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 39b6209..0b4a3d3 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.Dictation"
-    version="2.1.28.0"
+    version="2.1.29.0"
     processorArchitecture="*"/>
   <dependency>
     <dependentAssembly>
diff --git a/privatevoice.src/frontend/package-lock.json b/privatevoice.src/frontend/package-lock.json
index bb49170..c531e46 100755
--- a/privatevoice.src/frontend/package-lock.json
+++ b/privatevoice.src/frontend/package-lock.json
@@ -1,12 +1,12 @@
 {
   "name": "privatevoice-dictation-frontend",
-  "version": "2.1.28",
+  "version": "2.1.29",
   "lockfileVersion": 3,
   "requires": true,
   "packages": {
     "": {
       "name": "privatevoice-dictation-frontend",
-      "version": "2.1.28",
+      "version": "2.1.29",
       "dependencies": {
         "@wailsio/runtime": "latest"
       },
diff --git a/privatevoice.src/frontend/package.json b/privatevoice.src/frontend/package.json
index 2bee831..d5a0f09 100755
--- a/privatevoice.src/frontend/package.json
+++ b/privatevoice.src/frontend/package.json
@@ -1,7 +1,7 @@
 {
   "name": "privatevoice-dictation-frontend",
   "private": true,
-  "version": "2.1.28",
+  "version": "2.1.29",
   "type": "module",
   "scripts": {
     "dev": "vite dev",
diff --git a/privatevoice.src/frontend/src/components/settings/AboutPage.svelte b/privatevoice.src/frontend/src/components/settings/AboutPage.svelte
index 65c5bf3..252385b 100644
--- a/privatevoice.src/frontend/src/components/settings/AboutPage.svelte
+++ b/privatevoice.src/frontend/src/components/settings/AboutPage.svelte
@@ -3,7 +3,7 @@
   import { t } from '../../lib/i18n'
   import AppIcon from '../shared/AppIcon.svelte'
 
-  let version = $state('2.1.28 (build 20260604.0049)')
+  let version = $state('2.1.29 (build 20260607.0141)')
   const currentYear = new Date().getFullYear().toString()
   const aboutLinks = [
     { labelKey: 'about.sourceProjectLabel', urlKey: 'about.sourceUrl' },

--
Gitblit v1.9.3