Todo 或 In Progress。In Progress。Done,补一句完成结果。flagsChanged 事件正常进入,flags=0x80140,但 physicalDown=false 导致 pollDown=false。eventDown=true、pollDown=true,并成功触发录音流程。20260518.1554VoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-build20260518.1554-arm64-local.dmgVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmg 已替换为同一份新包。/Applications/VoiceSnap.app;启动日志验证 build 20260518.1554。20260518.1541VoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-build20260518.1541-arm64-local.dmgVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmg 已替换为同一份新包。/Applications/VoiceSnap.app;启动日志验证 build 20260518.1541。source、physicalDown、trackedDown、recentDown、event tap 启动尝试/失败/禁用次数。20260518.0230VoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-build20260518.0230-arm64-local.dmgVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmg 已替换为同一份新包。/Applications/VoiceSnap.app;启动日志验证 build 20260518.0230,辅助功能权限已通过,event tap 已启动。VoiceSnapGo/scripts/build-local-macos.sh,用于本地构建、稳定签名、生成 DMG,可选安装到 /Applications。VoiceSnap Local Code Signing,签名 .app、内部 dylib 和 .dmg。Authority=VoiceSnap Local Code Signing。20260518.0211VoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-build20260518.0211-arm64-local.dmgVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmg 已替换为同一份新包。/Applications/VoiceSnap.app;本次签名身份变化后需要在系统设置里重新添加一次辅助功能权限。ma_device_stop 与音频回调互等导致 App 假死的问题。Recorder.StopAndGetSamples() 持有录音互斥锁调用 device.Stop();底层 ma_device_stop 等待音频回调结束,而音频回调同时等待同一把锁,形成互等。Stop/Uninit,避免底层停止设备时阻塞音频回调。Stopping audio device、Audio device stopped、Audio device uninitialized。20260518.0125VoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-build20260518.0125-arm64-local.dmgVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmg 已替换为同一份新包。/Applications/VoiceSnap.app,并在日志中验证一次完整停止链路。VoiceSnapGo/build/darwin/tray_icon.png 的有效内容区域从约 156x156 放大到约 220x220。20260517.2306VoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-build20260517.2306-arm64-local.dmgVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmg 已替换为同一份新包。/Applications/VoiceSnap.app。/Users/ar/.codex/generated_images/019e2f69-755a-74a2-9a61-0e390fda0463/ig_0a6e87fd2c8e3f65016a09c4c865688191ade9691cb608b2e4.pngVoiceSnapGo/build/darwin/macos26_mic_app_icon.pngVoiceSnapGo/build/darwin/icon.icnsVoiceSnapGo/build/darwin/VoiceSnap-macos26-mic.icns20260517.2142VoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-build20260517.2142-arm64-local.dmgVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmg 已替换为同一份新包。/Applications/VoiceSnap.app,安装后图标 hasAlpha: yes。VoiceSnapGo/build/darwin/app_icon_source.pngVoiceSnapGo/build/darwin/refined_mic_app_icon.pngVoiceSnapGo/build/darwin/VoiceSnap-refined-mic.icnsVoiceSnapGo/build/darwin/icon.icnsVoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-build20260517.2046-arm64-local.dmgVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmg 已替换为同一份新包。/Users/ar/Downloads/VoiceSnap-2.1.1/VoiceSnapGo/build/windows/icon.icoVoiceSnapGo/build/darwin/original_app_icon.pngVoiceSnapGo/build/darwin/VoiceSnap-original.icnsVoiceSnapGo/build/darwin/icon.icnsVoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-build20260517.2039-arm64-local.dmgVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmg 已替换为同一份新包。UserDictService.GetAll 返回时按 createdAt 倒序排列,时间相同时按 id 倒序兜底。VoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-build20260517.1811-arm64-local.dmgVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmg 已替换为同一份新包。Hotkey combination source 日志,后续如果还被判定组合键,可以直接看到触发源。VoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-build20260517.1631-arm64-local.dmgVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmg 已替换为同一份新包。Hotkey marked as combination 拦截,原因是 macOS 侧边 Option 查询会把左 Alt 误报为按下。VoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-build20260517.1622-arm64-local.dmgVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmg 已替换为同一份新包。2.1.1 (build 20260517.1614)。CFBundleVersion 改为 20260517.1614,安装后的 /Applications/VoiceSnap.app 已验证。version、build、executable 和 dataDir。VoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-build20260517.1614-arm64-local.dmgVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmg 已替换为同一份新包。L-Alt/R-Alt 原始事件序号、事件类型、flags、事件状态、轮询状态。~/Library/Application Support/VoiceSnap/app.logVoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmgflagsChanged 修饰键状态逻辑,避免重复事件把右 Alt 状态翻转错误。VoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmgCGEventTap 事件源追踪键盘状态。VoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmg[2026-05-17 15:24:08] INFO ...。VoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmgflagsChanged 事件追踪左右修饰键状态。VoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmgApplication Support/VoiceSnap,避免更新 App 后丢失。~/Library/Application Support/VoiceSnapconfig.json、userdict.json、history.json、models/sensevoice、app.log.app/Contents/MacOS 位置复制缺失数据到新目录,不覆盖已有新数据。VoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmgR-Ctrl 改为 R-Alt。R-Alt 时左 Alt 不能触发。userdict-20260517-1503.json。from 和 to 字段。VoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmg.app/.dmg。VoiceSnapGo/build/darwin/app_icon.pngVoiceSnapGo/build/darwin/icon.icnsVoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmguserdict.json。.app/.dmg,本次只替换图标资源,不改业务代码。VoiceSnapGo/build/local/arm64/VoiceSnap.appVoiceSnapGo/build/local/arm64/VoiceSnap-2.1.1-arm64-local.dmg.icns。VoiceSnapGo/build/darwin/approved_app_icon.pngVoiceSnapGo/build/darwin/VoiceSnap-approved.icns/Users/ar/Downloads/VoiceSnap-approved.icns