impressionyang
|
3cf6b13392
|
fix: 更新 static 页面下载地址为 GitHub Releases
|
2026-06-12 15:31:03 +08:00 |
|
impressionyang
|
a273b1459a
|
feat: 添加产品说明静态页面
独立 HTML 页面,包含:
- Hero 区域(带动画波形和打字效果演示)
- 核心功能卡片(6 个功能点)
- 使用流程(4 步引导)
- 技术栈表格
- 下载入口(Windows / Linux)
- 常见问题手风琴组件
所有 CSS/JS 内联,无外部依赖,可直接在浏览器中打开展示。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-12 15:22:56 +08:00 |
|
impressionyang
|
fd9de6d7fa
|
fix: 清空日志改为通过 Logger 自身方法,避免句柄不一致导致空行
Logger 持有打开的文件句柄,用外部 QFile 句柄 truncate 会导致
Logger 写入位置异常,产生大量空行。现在通过 Logger::clearLogFile()
在持有锁的情况下 flush → resize(0) → seek(0),保证句柄一致。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-12 14:54:05 +08:00 |
|
impressionyang
|
71fd4f8a86
|
fix: 修复数据清理 — 日志文件改为清空内容而非删除
- 清除日志:使用 QIODevice::Truncate 清空文件内容,
保留文件避免 Logger 已打开的句柄指向已删除 inode
- 清除录音:保持删除模式(.wav 调试文件无活跃句柄)
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-12 14:46:50 +08:00 |
|
impressionyang
|
8bd95b77f0
|
feat: 配置页面增加数据清理功能
在界面底部增加"数据清理"区域,提供两个按钮:
- 清除日志文件:删除日志目录下所有 .log 文件,显示清除数量和释放空间
- 清除录音文件:删除调试音频目录下所有 .wav 文件,显示清除数量和释放空间
清理结果通过 QMessageBox 提示,操作记录写入日志。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-12 14:30:54 +08:00 |
|
impressionyang
|
f2776e24d7
|
docs: README 添加模型下载说明与图示
- 提供 HuggingFace 模型仓库链接
- 说明需下载 model.int8.onnx 和 tokens.txt 两个文件
- 添加模型下载图示
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-12 13:58:02 +08:00 |
|
impressionyang
|
231543476b
|
docs: 完善 README 使用说明
- 添加下载安装、快速开始、使用说明、快捷键、CapsLock 工作模式
- 补充语音输入和文件转写详细流程
- 添加系统托盘、状态栏说明和常见问题
- 更新 License 为 GPLv3
- 完善项目结构、技术栈、编译指南和命令行参数
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-12 10:49:21 +08:00 |
|
impressionyang
|
ab3064eb4e
|
docs: 添加 GNU GPLv3 授权文件
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-12 10:42:44 +08:00 |
|
impressionyang
|
c04af35b88
|
fix: 修复三处问题
1. Windows 重启使用 QProcess::startDetached 直接启动,移除 cmd /c start
方案,避免路径引号导致找不到程序的问题
2. 使用说明改为可调整大小、可滚动的 QDialog + QTextBrowser,
替代固定大小的 QMessageBox
3. 使用说明中默认语音快捷键从 F8 更新为长按 CapsLock
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-12 09:44:34 +08:00 |
|
impressionyang
|
0068dda47f
|
feat: 重构菜单并添加使用说明
文件菜单:只保留重启(Ctrl+R)和退出(Ctrl+Q)
托盘菜单:增加重启选项(显示主窗口 / 重启 / 退出)
帮助菜单:增加使用说明(F1),包含基本功能、快捷键、使用流程、
配置说明、系统托盘、状态栏、常见问题等详细说明
|
2026-06-12 09:38:09 +08:00 |
|
impressionyang
|
165c48c677
|
fix: 修复 Windows 上 Qt 内部 200x200 工具窗口(空白方块)问题
通过 EnumWindows 枚举并隐藏 Qt 在 Windows 上创建的 WS_EX_TOOLWINDOW
工具窗口(无标题栏、无边框),解决启动时出现的空白方块问题。
同时包含:
- Windows 使用原生 windows 风格替代 Fusion,避免渲染问题
- 托盘图标改为圆形轮廓,AudioWaveform 背景主题适配
- QSS 完善(MenuBar、录音按钮动态属性、StackedWidget 背景)
- 内联样式表改为 objectName/dynamic property,QSS 统一管理
- 日志记录版本信息、编译时间、Qt 版本、平台信息
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-12 09:21:18 +08:00 |
|
impressionyang
|
a3130d0d2a
|
fix: 修复 light 主题黑色方块 — 显式设置 light palette + 移除 tab 圆角
1. light 主题 palette 改用显式颜色(QPalette::Window #ffffff 等),
替代 standardPalette(),后者在 Fusion 风格下可能返回不正确的颜色
2. QTabWidget::pane 移除 border-radius,Fusion 风格下圆角会导致
裁剪区域渲染为黑色
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 19:37:20 +08:00 |
|
impressionyang
|
58eabec900
|
fix: 移除 QSS 中 QWidget/QFrame 全局背景色,修复运行时黑色方块
QWidget 和 QFrame 的全局 background-color 会影响 Qt 内部容器控件,
导致出现黑色方块。改为由 QPalette 处理背景色,QSS 仅针对具体控件。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 19:33:17 +08:00 |
|
impressionyang
|
3971358f86
|
fix: 图标改为圆角透明(128x128),四角白色区域变为透明
- 原图 2048x2048 缩小为 128x128
- 四角圆角裁切,白色背景变为透明
- 重新生成 ICO(128/64/48/32/16 多尺寸)
- Linux(Qt 资源 PNG)和 Windows(.rc 嵌入 ICO)均生效
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 19:28:12 +08:00 |
|
impressionyang
|
27bd78bf17
|
feat: 嵌入应用图标(窗口图标 + Windows exe 图标)
- 使用用户提供的 icon 图片作为应用图标
- Windows: .rc + windres 嵌入 exe 图标(256px 多尺寸 ICO)
- Qt: 窗口图标从 Qt 资源加载 PNG
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 19:20:16 +08:00 |
|
impressionyang
|
6824ce1f4a
|
feat: Windows隐藏启动控制台,关闭按钮改为隐藏到托盘
- CMakeLists.txt: Windows 使用 add_executable WIN32 构建 GUI 程序(无控制台)
- closeEvent: 点击关闭按钮隐藏到托盘而非退出程序
- 托盘菜单已有"显示主窗口"和双击恢复功能
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 19:15:02 +08:00 |
|
impressionyang
|
ae35404d26
|
feat: 主题切换(light/dark QSS)、QSS资源编译修复、托盘图标主题色
- 新增 main_dark.qss 暗色主题样式表
- 使用 .qrc + add_executable 方式确保 QSS 资源正确编译
- Application::applyTheme 动态切换主题和样式表
- 托盘图标 light 主题黑色、dark 主题白色
- Settings 保存后实时应用主题/字体
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 19:13:34 +08:00 |
|
impressionyang
|
f8173cd0c1
|
feat: 构建脚本每次强制重新编译 application.cpp 以更新编译时间
在 build-linux.sh 和 build-win.sh 中增加 touch application.cpp 步骤,
确保 __DATE__ 和 __TIME__ 每次构建都是最新的,日志中的编译时间
能准确反映本次构建的时间。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 17:31:43 +08:00 |
|
impressionyang
|
835b9fcdd8
|
feat: 托盘图标使用 QStyle 标准图标切换状态
- 就绪/停止: SP_MediaStop (■)
- 录音/识别: SP_MediaPlay (▶)
避免自定义绘制导致的黑色方块问题,使用 Qt 原生支持的
系统标准图标,跨平台兼容性好。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 17:27:55 +08:00 |
|
impressionyang
|
3ccdff0828
|
fix: 修复 CapsLock 重复复位和托盘图标黑色方块
1. 重复复位: onHotkeyDeactivated() 中移除 simulateCapsLock(),
只保留 onRecognitionComplete() 中的复位调用,确保只复位一次。
无音频时也调用 simulateCapsLock() 复位。
2. 托盘图标黑色方块: 移除自定义 QPixmap 绘制(在某些平台/主题下
渲染为黑色方块),改用应用窗口图标 + QStyle::SP_ComputerIcon 回退。
状态变化通过 tooltip 文字指示,不再切换不同颜色的图标。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 17:14:10 +08:00 |
|
impressionyang
|
c64a8123be
|
perf: 消除按键到录音 1s 延迟,按下立即录音
旧流程: 按下 → PreRecording → 1s 定时器 → Recording (延迟 ~1032ms)
新流程: 按下 → 立即 Recording (延迟 ~0ms)
状态机简化:
- 移除 PreRecording 状态和 1s 长按确认逻辑
- Idle → Activated → 直接 Recording
- Deactivated → 识别 → 复位 CapsLock → Cooldown
统计仍然保留,现在应该显示 0ms 延迟。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 16:45:55 +08:00 |
|
impressionyang
|
2152dcb296
|
feat: 统计按键触发到正在录音的延迟并在日志中打印
每次长按进入 Recording 状态时打印本次延迟,并维护累计统计:
⏱ 按键→录音延迟: 123ms (平均: 120ms, 最小: 98ms, 最大: 155ms, 累计: 5次)
使用 QElapsedTimer 精确计时。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 16:39:59 +08:00 |
|
impressionyang
|
ff7318efd6
|
perf: 预打开音频流,消除按键到录音 3-4s 延迟
根因: 每次按键时 Pa_OpenStream() + Pa_StartStream() 耗时 3-4s,
stop() 时又 Pa_CloseStream() + Pa_Terminate() 销毁流。
优化:
- AudioCapture::start() 复用已打开的流(参数匹配时跳过 OpenStream)
- AudioCapture::stop() 只 Pa_StopStream(),保留流
- 新增 stopAndClose() 彻底关闭流(析构和服务停止时使用)
- VoiceInputService::start() 时预打开音频流再立即 stop()
→ 后续 hotkey start() 只需 Pa_StartStream() (<100ms)
效果: 按键到录音延迟从 3-4s 降至 <100ms
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 16:26:20 +08:00 |
|
impressionyang
|
04ca41f4c3
|
fix: 恢复托盘图标状态更新(statusChanged 连接误删)
之前修复按键卡顿时误将 statusChanged 信号连接中的 updateTrayIcon() 调用移除,
导致托盘图标始终显示初始绿色,不随录音/识别状态变化。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 16:18:53 +08:00 |
|
impressionyang
|
1efaa6909a
|
fix: CapsLock 灯改为识别完成后复位,状态完全通过托盘图标指示
CapsLock 灯流程变更:
旧: 按下 → 灯亮 → 1s 灯灭 → 录音 → 松开 → 识别 → 注入
新: 按下 → 灯亮 → 1s 开始录音(灯保持亮) → 松开 → 识别 → 注入 → 灯灭
- 移除 timer callback 中的 simulateCapsLock()
- 移除 onHotkeyDeactivated Recording 分支的 simulateCapsLock()
- onRecognitionComplete() 开始时调用 simulateCapsLock() 复位灯
- stopRecordingAndTranscribe() 空音频时也复位灯
托盘图标指示:
绿色 ○ — 就绪/静默
黄色 ○ — 等待长按确认
红色 ● — 正在录音(CapsLock 灯亮)
橙色 ◉ — 正在识别
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 16:13:59 +08:00 |
|
impressionyang
|
0b9ea40d20
|
feat: 添加 Linux/Windows 构建和打包脚本
build-linux.sh:
- 支持 --clean --release --debug 参数
- 输出到 build_linux/ 目录
build-win.sh:
- 自动化 Windows 交叉编译 + 依赖收集 + 打包
- 自动收集 Qt6/MinGW/MSVC/ICU 等 30+ DLL
- 输出 dist_win/ 目录(可直接运行)+ dist/ 发布 zip
- 支持 --clean --release --debug 参数
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 16:06:25 +08:00 |
|
impressionyang
|
8425fb4a04
|
fix: 修复托盘图标/退出/卡顿 4 个问题
1. 关闭窗口无法退出: closeEvent 改为调用 doExit(),正常执行退出流程
2. 托盘右键无法退出: 统一使用 doExit() → qApp->quit(),与菜单/快捷键退出一致
3. 托盘图标更新慢: 6 个状态图标在 setupTrayIcon() 中预创建缓存,
updateTrayIcon() 只做 QMap 查找 + setIcon(),避免每次重建 QPixmap
4. 按键识别卡顿/误释放: simulateCapsLock() 在 XTest 模拟前后设置
CapsLockVoiceHotkey::ignoreEvents_ 标志,屏蔽 portal 的
Activated/Deactivated 回传信号,防止状态机被打断
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 16:01:00 +08:00 |
|
impressionyang
|
6bf22041f8
|
fix: 彻底修复 Windows 托盘图标不显示 + 添加版本编译时间日志
Windows 托盘修复:
- 设置 setQuitOnLastWindowClosed(false),关闭主窗口时不退出应用
- 关闭主窗口改为隐藏 (event->ignore()),托盘继续运行
- 托盘菜单"退出"调用 qApp->quit() 真正退出
- 图标简化为 16x16 QImage ARGB32 + 纯色圆,确保 Windows 兼容
- 先设置图标再 trayIcon_->show()
- 添加托盘气泡通知
日志增强:
- 启动日志显示版本号 (v0.1.0)
- 打印编译时间 (__DATE__ __TIME__),方便确认二进制是否更新
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 15:39:00 +08:00 |
|
impressionyang
|
dc2f8e5c4f
|
fix: 修复 Windows 托盘图标不显示问题
- 图标改为不透明深色背景 + 纯色圆形 + 白色符号,避免透明背景兼容性问题
- 图标尺寸从 22 增加到 32
- 添加托盘气泡通知提示用户
- 确保 updateTrayIcon 时检查图标可见性
- 配置 git credential.store 记住凭据
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 15:28:01 +08:00 |
|
|
|
4836a82cad
|
feat: 添加系统托盘图标,实时指示语音录制状态
托盘图标根据状态变色:绿色(就绪)、黄色(等待确认)、红色(录音中)、
橙色(识别中)。支持双击托盘显示/隐藏主窗口,右键托盘菜单显示窗口和退出。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 15:20:09 +08:00 |
|
|
|
277ac01f46
|
fix: 1s 后自动复位 CapsLock 灯,LED 作为录音状态指示器
按下 CapsLock → 灯亮 (PreRecording) → 1s 后灯灭 → 正式录音 (Recording)
→ 松开 → 识别 → 注入。Recording/Cooldown 状态屏蔽所有 Activated 信号防抖。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 15:03:09 +08:00 |
|
|
|
88b0d57722
|
fix: 长按松开后增加 CapsLock 复位
|
2026-06-11 14:52:17 +08:00 |
|
|
|
58a732e161
|
refactor: 用明确状态机重写 CapsLock 语音输入,彻底解决抖动
旧方案依赖多个布尔标志(capsResetDone_/cooldownActive_/longPressDetected_)
分散在各个处理函数中,复杂交互下容易产生竞态。
新方案使用明确四态状态机:
Idle → PreRecording(按下) → Recording(1s后) → Cooldown(松开后)
核心防抖:
- Recording 状态下屏蔽所有 Activated 信号
- Cooldown 状态下屏蔽所有 Activated 信号
- PreRecording 状态下忽略重复 Activated
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 14:46:08 +08:00 |
|
|
|
13d4aae725
|
fix: 长按 1s 录音 + 3s 复位 CapsLock 灯 + 防抖保护
- 分离两个定时器:longPressTimer(1s) 启动录音,capsResetTimer(3s) 复位灯
- 1s 时只确认录音状态,不操作 CapsLock 灯
- 3s 时才模拟 CapsLock 按键复位灯,避免手指抖动导致状态闪烁
- 松开时自动取消 3s 定时器,避免松开后再复位
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 14:38:30 +08:00 |
|
|
|
d4db8756b5
|
fix: 松开 CapsLock 后 1s 冷却期再检测下次按下
新增 cooldownTimer_ 和 cooldownActive_ 标志,
松开后启动 1s 冷却定时器,期间忽略所有 Activated 信号,
防止快速连续操作导致的重复触发。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 14:32:07 +08:00 |
|
|
|
74212ff564
|
fix: CapsLock 复位后忽略重复 Activated 信号
长按阈值触发 CapsLock 复位时设置 capsResetDone_ 标志,
松开前忽略任何重复的 Activated 信号,防止状态混乱。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 14:25:41 +08:00 |
|
|
|
1bb0d3895b
|
fix: 长按阈值调回 1s
|
2026-06-11 14:22:21 +08:00 |
|
|
|
072a571a89
|
fix: 长按 3s 立即复位 CapsLock,不等松开
CapsLock 语音输入流程调整为:
按下 CapsLock → 预录音 → 长按 3s → 立即复位 CapsLock → 正式录音 →
松开 → 停止录音 → 识别 → 注入文本
短按(< 3s)保持原有行为:模拟 CapsLock 切换大小写
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 14:19:52 +08:00 |
|
|
|
cf44a23c57
|
fix: 修复 CTC 重复字符识别和 CapsLock 复位时机
- CTC 解码新增空白帧检测:空白后出现相同 token 且置信度>0.5 时
保留为重复字符(如"好好好"),无空白时仍按 CTC 规则去重
- 长按松开后先模拟 CapsLock 恢复原始状态,再开始识别
确保识别结果注入时 CapsLock 状态已正确
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 14:15:26 +08:00 |
|
|
|
79085b862b
|
fix: 修复 chunkCompleted 信号文件路径为空的 bug
closeCurrentFile() 会清空 currentFilePath_,之前代码在 closeCurrentFile()
之后才读取 currentFilePath_ 赋值给 completedPath,导致 emit 的路径为空。
修复:在 closeCurrentFile() 之前先保存文件路径和时长。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 14:08:16 +08:00 |
|
|
|
f4b7149435
|
feat: 支持手动指定日志目录和调试音频目录
- 新增 app.log_dir 配置项,支持通过设置页面或命令行 (-l/--log-dir) 指定日志目录
- 调试音频目录 (audio.debug_dir) 已正确传入 StreamingAudioWriter
- 设置页面新增"通用设置"分组,包含日志目录选择
- 未设置时使用系统默认 AppDataLocation 路径
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 14:00:23 +08:00 |
|
|
|
801dbe1ec2
|
fix: 降低 VAD 能量阈值并添加 STT 推理诊断日志
- VAD 能量阈值从 0.015 降至 0.003,适配低增益麦克风
- transcribeChunk 添加 WAV 文件大小、样本数、RMS 诊断日志
- onChunkCompleted 增加空文件路径检查
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 13:50:37 +08:00 |
|
|
|
271fccb39b
|
fix: 修复 CapsLock 长按松开后未恢复大小写状态的问题
- 长按松开后调用 simulateCapsLock 模拟一次 CapsLock 按键恢复原始状态
- 新增 simulateKeysym 方法,正确处理 X11 keysym → keycode 转换
- Windows 端添加 X11 keysym → VK 虚拟键码映射
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 13:45:18 +08:00 |
|
|
|
8c2e787a25
|
feat: 添加 Windows 交叉编译支持与 ONNX Runtime MinGW 兼容方案
- 新增 C API shim (ort_api_shim.h) 解决 MinGW 与 ONNX Runtime 的 SAL 注解/_stdcall 兼容性问题
- 新增轻量级 C++ 包装器 (ort_minimal) 替代 onnxruntime_cxx_api.h
- cmake/dependencies.cmake 支持 Windows/ Linux 平台自动识别依赖路径
- 修复音频采集 paNonInterleaved bug(指针被误解析为 float 导致 RMS=inf)
- 修复 Windows 热键和 UI 相关代码
- 添加 MinGW 交叉编译工具链配置
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
|
2026-06-11 11:50:16 +08:00 |
|
|
|
01a39ddc8c
|
feat: 实现基于 VAD 的流式 WAV 录制识别方案
- 新增 StreamingAudioWriter 组件:持续录制 WAV 文件,VAD 检测静音段自动切换
- 静音检测:检测到 ~1s 连续静音后关闭当前文件,触发 chunkCompleted 信号
- STTTestPage 重构:移除缓冲区推理模式,改为 WAV 文件流式识别
- 每个 WAV 文件完成后在后台线程读取并推理,不阻塞继续录制
- 设置页面新增「调试音频目录」配置项
- 音频存储路径:debug 模式使用配置目录,非 debug 模式使用系统临时目录
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-05-13 15:33:03 +08:00 |
|
|
|
dc4ebab47c
|
feat: 添加音频输入设备选择器与音频电平诊断
- audio_capture 启动时输出详细设备信息(名称、Host API、采样率)
- 录音停止时输出 RMS 电平和峰值,帮助诊断音频质量问题
- 设置页面新增音频输入设备下拉选择,支持从 PortAudio 设备列表中手动选择
- 语音输入服务使用配置的音频设备和采样率参数
- 检测 monitor/output 类型设备时发出警告,避免选错回环设备
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-05-13 15:16:56 +08:00 |
|
|
|
a2b216092f
|
fix: 修复配置保存死锁,添加快捷键录制组件
- 修复 ConfigManager::set() 在持有锁时发射信号导致的死锁
- 添加 setBatch() 方法批量更新配置,只发射一次 configChanged
- 新增 HotkeyRecorder 组件:点击按钮后按键录制任意快捷键
- SettingsPage 保存配置改为批量写入,避免多次触发服务重启
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-05-13 14:49:55 +08:00 |
|
|
|
33ae22ce62
|
fix: 修复模型加载时机问题,在配置加载后才加载模型
Application 构造函数中调用 loadGlobalModel() 时,配置文件
尚未加载,导致模型路径始终为空。改为将 loadGlobalModel() 设为
公开方法,在 main() 中配置加载和命令行参数处理完成后显式调用。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-05-13 14:36:59 +08:00 |
|
|
|
6f55ec5780
|
feat: 添加状态栏显示模型名称和加载状态
主窗口底部状态栏实时显示模型加载状态:
- 已就绪:绿色显示"模型已就绪: <文件名>"
- 路径为空:红色显示"⚠️ 模型路径未设置"
- 加载失败:橙色显示"⚠️ 模型加载失败: <文件名>"
Application 新增 modelLoading 信号和 modelPath() 方法,
配置变化时自动刷新状态栏显示。
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-05-13 14:19:12 +08:00 |
|
|
|
ef97b962c3
|
refactor: 全局共享 STT 模型,避免重复加载
将 SenseVoiceEngine 提升为 Application 级别的全局单例,应用启动时
异步加载一次模型,实时语音识别、文件转写和快捷键语音输入共享同一实例。
- Application 创建并管理全局 SenseVoiceEngine,启动时加载模型
- STTTestPage、FileTranscribePage、VoiceInputService 不再各自
创建引擎,改为接收全局实例
- 移除各模块中冗余的 loadModel/loadModelAsync/unloadModel 调用
- 模型未加载时提供友好的等待提示,而非加载失败的错误弹窗
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|
2026-05-13 14:10:31 +08:00 |
|