Ariver
2026-06-13 8f593a641529e3982d2820e73fd82203b5cfb7f8
Build X-ASR local validation package
4 files modified
3 files added
194 ■■■■■ changed files
CHANGELOG.md 3 ●●●● patch | view | raw | blame | history
Release/PrivateVoice-Dictation-2.1.30-build20260613.2201-xasr-local-arm64/RELEASE_MANIFEST.md 39 ●●●●● patch | view | raw | blame | history
Release/PrivateVoice-Dictation-2.1.30-build20260613.2201-xasr-local-arm64/SHA256SUMS.txt 1 ●●●● patch | view | raw | blame | history
Release/PrivateVoice-Dictation-2.1.30-build20260613.2201-xasr-local-arm64/logs/xasr-2.1.30-build20260613.2201-arm64.log 145 ●●●●● patch | view | raw | blame | history
privatevoice.src/app.go 2 ●●● patch | view | raw | blame | history
privatevoice.src/build/darwin/Info.plist 2 ●●● patch | view | raw | blame | history
privatevoice.src/frontend/src/components/settings/AboutPage.svelte 2 ●●● patch | view | raw | blame | history
CHANGELOG.md
@@ -8,10 +8,11 @@
- **录音中实时字幕**:X-ASR 录音时复用现有动态浮窗显示小号实时字幕;松开热键后浮窗切到“识别中/完成”,最终文本仍按原流程粘贴到目标 App。
- **流式 session 接口**:新增 streaming engine/session 抽象,当前只由 X-ASR 使用;SenseVoice、Qwen3-ASR、Moonshine、Parakeet 行为保持不变。
- **录音增量读取**:Recorder 支持安全读取新增 PCM 样本,用于低延迟字幕,不影响最终录音样本收集。
- **macOS 上屏安全同步**:同步正式上架线的剪贴板校验与代际保护,降低关闭“保留到剪贴板”时误粘旧内容的风险。
### 构建
- build: `20260607.1127`
- build: `20260613.2201`
- 说明: 本版本为 X-ASR 实时字幕与尾句修复实验候选包,不是 App Store 正式上传包。
---
Release/PrivateVoice-Dictation-2.1.30-build20260613.2201-xasr-local-arm64/RELEASE_MANIFEST.md
New file
@@ -0,0 +1,39 @@
# PrivateVoice Dictation 2.1.30 build 20260613.2201 X-ASR Local ARM64
## 验证包
- 文件:`PrivateVoice Dictation-2.1.30-build20260613.2201-arm64-local.dmg`
- 路径:`/Users/ar/Projects/PrivateVoice/Release/PrivateVoice-Dictation-2.1.30-build20260613.2201-xasr-local-arm64/PrivateVoice Dictation-2.1.30-build20260613.2201-arm64-local.dmg`
- SHA256:`e3256be40322182e8cf6ba8d4ff051d10f891830289090b65a18999185e5c8af`
- 大小:约 `20M`
## 版本信息
- 分支:`codex/x-asr-experiment-2.1.29`
- App 版本:`2.1.30`
- Build:`20260613.2201`
- Bundle ID:`com.shanghai3168.privatevoicedictation`
- 架构:`arm64`
- 签名:`PrivateVoice Local Code Signing`
- 类型:本机验证 DMG,不是 App Store 上传包,不是 notarized Developer ID 正式分发包。
## 本包包含
- X-ASR 实时字幕与尾句保护实验分支现有功能。
- macOS 上屏安全修复:剪贴板写入校验、paste generation 保护、恢复前复核。
## 已验证
- `git diff --check`:通过。
- `plutil -lint privatevoice.src/build/darwin/Info.plist`:通过。
- `go test ./internal/input`:通过。
- `go test ./...`:通过;有既有 macOS 链接器版本 warning。
- `privatevoice.src/scripts/build-local-macos.sh arm64`:通过。
- App `codesign --verify --deep --strict`:通过。
- DMG `hdiutil verify`:通过。
- 主程序架构:`arm64`。
## 说明
- 这是给 M 系列 Mac 本机验证 X-ASR 效果的包。
- 如果复制到其他机器,可能因为本地签名证书不受信任而需要额外处理;本轮目标是当前机器验证。
Release/PrivateVoice-Dictation-2.1.30-build20260613.2201-xasr-local-arm64/SHA256SUMS.txt
New file
@@ -0,0 +1 @@
e3256be40322182e8cf6ba8d4ff051d10f891830289090b65a18999185e5c8af  /Users/ar/Projects/PrivateVoice/Release/PrivateVoice-Dictation-2.1.30-build20260613.2201-xasr-local-arm64/PrivateVoice Dictation-2.1.30-build20260613.2201-arm64-local.dmg
Release/PrivateVoice-Dictation-2.1.30-build20260613.2201-xasr-local-arm64/logs/xasr-2.1.30-build20260613.2201-arm64.log
New file
@@ -0,0 +1,145 @@
==> Preflight checks
Using existing local signing identity: PrivateVoice Local Code Signing
==> Cleaning old local build
==> Building frontend
> privatevoice-dictation-frontend@2.1.30 build
> vite build
vite v6.4.1 building for production...
transforming...
10:02:45 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">
10:02:45 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>
10:02:45 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-xXipat_2.css      35.60 kB │ gzip:  6.04 kB
dist/assets/index-CoSDf25U.js      144.99 kB │ gzip: 48.31 kB
✓ built in 469ms
==> Building Go binary (arm64)
# voicesnap
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/go.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000000.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000001.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000002.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000003.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000004.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000005.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000006.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000007.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000028.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000029.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000030.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000031.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000032.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000033.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000034.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000035.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000036.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000037.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000038.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000039.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000040.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000041.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000042.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000043.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000044.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000045.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000046.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000047.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000048.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000049.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000050.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000051.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000052.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000053.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000054.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: object file (/private/var/folders/tz/gdr6h5t96cj4r08kchkjx2b00000gn/T/go-link-3000549083/000055.o) was built for newer 'macOS' version (26.0) than being linked (11.0)
ld: warning: building for macOS-11.0, but linking with dylib '@rpath/libonnxruntime.1.24.4.dylib' which was built for newer version 14.0
==> Assembling PrivateVoice Dictation.app
==> Fixing rpaths
==> Code signing with stable local identity
/Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation.app/Contents/Frameworks/libonnxruntime.1.24.4.dylib: replacing existing signature
/Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation.app/Contents/Frameworks/libsherpa-onnx-c-api.dylib: replacing existing signature
/Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation.app/Contents/MacOS/PrivateVoice Dictation: replacing existing signature
/Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation.app: replacing existing signature
==> Verifying app signature
--prepared:/Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation.app/Contents/Frameworks/libsherpa-onnx-c-api.dylib
--validated:/Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation.app/Contents/Frameworks/libsherpa-onnx-c-api.dylib
--prepared:/Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation.app/Contents/Frameworks/libonnxruntime.1.24.4.dylib
--validated:/Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation.app/Contents/Frameworks/libonnxruntime.1.24.4.dylib
/Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation.app: valid on disk
/Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation.app: satisfies its Designated Requirement
Executable=/Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation.app/Contents/MacOS/PrivateVoice Dictation
Identifier=com.shanghai3168.privatevoicedictation
Format=app bundle with Mach-O thin (arm64)
CodeDirectory v=20500 size=28519 flags=0x10000(runtime) hashes=880+7 location=embedded
Signature size=1830
Authority=PrivateVoice Local Code Signing
Signed Time=Jun 13, 2026 at 22:02:58
Info.plist entries=15
TeamIdentifier=not set
Runtime Version=26.2.0
Sealed Resources version=2 rules=13 files=5
Internal requirements count=1 size=116
==> Creating DMG
created: /Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation-2.1.30-build20260613.2201-arm64-local.dmg
==> Signing DMG
正在检查“Protective Master Boot Record(MBR:0)”的校验和…
Protective Master Boot Record(MBR:0):已验证CRC32 $64FBFDFA
正在检查“GPT Header(Primary GPT Header:1)”的校验和…
    GPT Header(Primary GPT Header:1):已验证CRC32 $588312B5
正在检查“GPT Partition Data(Primary GPT Table:2)”的校验和…
GPT Partition Data(Primary GPT Table:已验证CRC32 $9BA757F6
正在检查“(Apple_Free:3)”的校验和…
                      (Apple_Free:3):已验证CRC32 $00000000
正在检查“disk image(Apple_APFS:4)”的校验和…
            disk image(Apple_APFS:4):已验证CRC32 $1DF0E27C
正在检查“(Apple_Free:5)”的校验和…
                      (Apple_Free:5):已验证CRC32 $00000000
正在检查“GPT Partition Data(Backup GPT Table:6)”的校验和…
GPT Partition Data(Backup GPT Table::已验证CRC32 $9BA757F6
正在检查“GPT Header(Backup GPT Header:7)”的校验和…
     GPT Header(Backup GPT Header:7):已验证CRC32 $50C07959
已验证CRC32 $73A2C4E7
hdiutil: verify: checksum of "/Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation-2.1.30-build20260613.2201-arm64-local.dmg" is VALID
==> Local build complete
  App: /Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation.app
  DMG: /Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation-2.1.30-build20260613.2201-arm64-local.dmg
  Compatibility DMG: /Users/ar/Projects/PrivateVoice/privatevoice.src/build/local/arm64/PrivateVoice Dictation-2.1.30-arm64-local.dmg
  Signing identity: PrivateVoice Local Code Signing
privatevoice.src/app.go
@@ -29,7 +29,7 @@
const (
    appVersion        = "2.1.30"
    appBuild          = "20260607.1127"
    appBuild          = "20260613.2201"
    appDisplayVersion = appVersion + " (build " + appBuild + ")"
    appName           = "PrivateVoice Dictation"
privatevoice.src/build/darwin/Info.plist
@@ -19,7 +19,7 @@
    <key>CFBundleShortVersionString</key>
    <string>2.1.30</string>
    <key>CFBundleVersion</key>
    <string>20260607.1127</string>
    <string>20260613.2201</string>
    <key>LSApplicationCategoryType</key>
    <string>public.app-category.productivity</string>
    <key>ITSAppUsesNonExemptEncryption</key>
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.30 (build 20260607.1127)')
  let version = $state('2.1.30 (build 20260613.2201)')
  const currentYear = new Date().getFullYear().toString()
  const aboutLinks = [
    { labelKey: 'about.sourceProjectLabel', urlKey: 'about.sourceUrl' },