edit | blame | history | raw

Changelog

v2.1.2 (2026-05-18)

Bug 修复

  • 全屏窗口下悬浮指示器不显示:macOS 悬浮指示器从普通 NSWindow 调整为非激活 NSPanel,窗口层级提升到状态栏级别,并补充 Transient / IgnoresCycle / FullScreenAuxiliary / CanJoinAllSpaces 行为,确保任意 App 全屏 Space 下也能显示录音胶囊。

构建

  • build: 20260518.1623

v2.1.1 (2026-02-27)

Bug 修复

  • 设置开关闪烁错误值:开机自启动、音效反馈、自动隐藏等开关在后端数据加载完成前不渲染,避免先显示默认值再跳变
  • 开机自启动开关重启后显示未开启:开关区域加 loading 守卫,后端返回真实状态后才渲染
  • 历史保留天数重启后回退默认:保留天数选择器同样加 loading 守卫
  • 热键显示为"Ctrl"而非"R-Ctrl":启动时从后端加载真实热键名称,默认右 Ctrl 正确显示为 R-Ctrl

v2.2.0 (2026-02-26)

新功能

  • macOS 支持 — 跨平台正式支持 macOS,与 Windows 功能对齐
  • 原生 AppKit + CoreGraphics 浮动指示器(胶囊样式,与 Windows 一致)
  • NSEvent 全局监听 + CGEventSource 修饰键轮询实现全局热键
  • CGEvent 模拟按键实现文字粘贴
  • 兼容 macOS 26,首次启动引导授予辅助功能权限
  • 关于页添加 GitHub 链接 — 点击可直接跳转项目仓库

改进

  • 移除旧版 C# 项目(VoiceSnap.Engine、VoiceSnapWPF),仓库仅保留 Go 版本
  • README 更新为跨平台文档

v2.1.0 (2026-02-26)

Bug 修复

  • 开机自启动开关不记忆:重启后开关状态从后端(注册表)加载,不再恢复默认值
  • 历史保留时长不记忆:修复"永久保留"(0天) 重启后回退为 30 天的问题
  • 设置项初始值不同步:音效反馈、自动隐藏开关也从后端加载真实状态
  • F10/F11/F12 快捷键名称错误:F10 显示为 "F:" 等乱码,改用 Sprintf 正确显示

新功能

  • 语气词自动过滤:识别结果自动去除"嗯、啊、呃、额、哦"等中文语气词和 um/uh/hmm 等英文填充词
  • 自由对讲静音自动停止:连续 3 秒无声自动结束录音并识别(含 2 秒开头保护期),无需手动按键停止
  • 胶囊指示器 DPI 自适应:根据系统 DPI 缩放胶囊大小、字体、动画,高分屏不再显示过小

v2.0.0 (2026-02-15) — Go 跨平台重写

VoiceSnap 2.0 使用 Go + Wails v3 + Svelte 从零重写,目标是更小体积、更优体验、未来跨平台。

重写亮点

  • 全新技术栈:从 C# WPF/.NET 8 迁移至 Go + Wails v3 + Svelte 5
  • 体积缩减 57%:运行文件从 ~80 MB 降至 ~34 MB(不含模型)
  • 内存优化:~400 MB(含模型),相比 WPF 版 ~500 MB
  • Apple Design UI:全新设计语言,白色卡片 + #f2f2f7 分组背景 + SVG 图标
  • 原生浮动指示器:Win32 GDI+ Layered Window,无焦点抢夺

新功能

  • 两种输入模式:长按说话 + 短按自由说话(WPF 版仅长按)
  • 录音音效反馈:马林巴风格双音提示(开始升调、完成降调),可在设置中关闭
  • 录音时长显示:指示器实时显示录音计时(0:00 格式),长按和自由说话模式均支持
  • Escape 取消录音:录音中按 Esc 立即取消,比组合键更直觉
  • 剪贴板保护:粘贴前保存旧剪贴板内容,粘贴后自动恢复
  • 识别历史:自动保存最近 50 条识别结果,支持复制、单条删除、清除所有,可设置保留时长(7/30/90天/永久)
  • 麦克风设备选择:下拉菜单列出所有输入设备,点击切换,选择自动保存
  • 中英混合优化:识别后自动在中英文/数字之间插入空格,句首字母自动大写,清理 SenseVoice 特殊标记
  • 指示器位置记忆:浮动指示器支持鼠标拖拽,位置自动保存到配置文件,下次启动恢复
  • 隐私声明:关于页展示离线/无需注册/开源三条隐私保证,让用户安心
  • 中英双语界面:自动跟随系统语言,托盘菜单同步本地化
  • 自定义快捷键:支持 Ctrl / Alt / Shift / 功能键 / 字母键 / 空格等

技术细节

模块 实现
音频录制 malgo (miniaudio),16kHz/16-bit/mono PCM
语音识别 sherpa-onnx SenseVoice,DirectML GPU → CPU 自动回退
全局热键 GetAsyncKeyState 30ms 轮询,支持长按/短按/组合键过滤
文字粘贴 Win32 剪贴板 + SendInput Ctrl+V,失败回退 Unicode SendInput
浮动指示器 Win32 GDI+ Layered Window,WS_EX_NOACTIVATE + TOPMOST,可拖拽 + 位置记忆
文本后处理 CJK/ASCII 边界自动加空格,句首大写,特殊标记清理
音效合成 Go 程序化生成 WAV (48kHz, 基频+谐波+指数衰减),winmm.dll PlaySound
识别历史 JSON 文件持久化,最多 50 条,按保留天数自动清理
前端 Svelte 5 + Vite 6 + TypeScript,~80 KB 产物
配置 JSON 格式,兼容 WPF 版 config.json

与 v1.x WPF 版对比

v2.0 Go v1.3.2 WPF
运行文件体积 ~34 MB ~80 MB
运行内存 ~400 MB ~500 MB
自由说话模式
录音音效 有(可关闭)
录音计时
Esc 取消
剪贴板保护
识别历史 有(50条)
麦克风切换
中英混合优化 有(自动加空格+大写)
指示器拖拽 有(位置记忆)
多语言 UI 中/英 中/英
跨平台 Windows + macOS 仅 Windows

v1.3.2 (2026-01-21) — WPF 版

  • 全链路异步化:识别+粘贴移至后台线程,彻底消除 UI 卡顿
  • 彻底移除 Python 依赖:纯原生 C# + C++ 引擎
  • 原生剪贴板重构:Win32 API,解决 CLIPBRD_E_CANT_OPEN
  • 新增"模拟打字"模式:解决同花顺等终端无法粘贴
  • 焦点保护:WS_EX_NOACTIVATE
  • 自动集成 VC++ Redistributable DLL

v1.3.1 (2026-01-02) — WPF 版

  • 修复剪贴板偶发锁定
  • 修复 Ctrl 键与粘贴操作冲突
  • 修复 ONNX Stream 内存泄漏
  • 新增安全粘贴机制
  • 新增空闲 30 秒自动内存回收

v1.3.0 — WPF 版

  • 新增 DirectML 硬件加速
  • 新增应用内自动更新
  • 新增 VAD 能量检测
  • 新增音频设备热插拔支持
  • 新增双地址模型下载备份