Skip to content

[codex] add macOS auto paste - #86

Merged
cnYui merged 5 commits into
mainfrom
codex/macos-stage2-auto-paste-submit
Jun 2, 2026
Merged

cnYui merged 5 commits into
mainfrom
codex/macos-stage2-auto-paste-submit

Conversation

@cnYui

@cnYui cnYui commented Jun 1, 2026

Copy link
Copy Markdown
Owner

变更

  • 为 macOS 增加普通听写和语音翻译自动粘贴链路。
  • 在主进程 keyboard IPC 中按平台分发 Windows 与 macOS 粘贴逻辑。
  • macOS 粘贴前检查可信输入目标,粘贴后恢复剪贴板,失败时返回结构化 reason 供悬浮面板兜底。
  • 更新 README、macOS roadmap、AGENTS 和相关测试。

影响

  • Windows 自动粘贴与自动学习路径保持不变。
  • macOS 自由提问仍固定展示悬浮面板,不做选区、不做自动学习、不做 MPS、不做打包。
  • macOS 实际自动粘贴依赖 Accessibility 权限。

验证

  • git diff --check
  • node --check electron-app/main.js
  • node --check electron-app/keyboard-ipc.js
  • node --check electron-app/macos-platform-capabilities.js
  • clang -fobjc-arc -framework ApplicationServices -framework AppKit -framework Foundation electron-app/macos-platform-helper.m -o /tmp/speakmore-macos-platform-helper-test
  • node --test electron-app/.test.js electron-app/.test.mjs
  • cd electron-app/renderer && npm test
  • npm run renderer:build

备注

本地 helper 烟测中,前台应用识别正常;当前终端/Electron 未授予 Accessibility 权限,因此实际粘贴需要授权后手测。

@cnYui

cnYui commented Jun 1, 2026

Copy link
Copy Markdown
Owner Author

Codex 客观 review

结论:未发现阻断合入 macos 的问题。

检查点:

  • Windows 路径仍保留原 SendKeys + 自动学习逻辑,macOS 分支不会启动 Windows 自动学习。
  • macOS 自动粘贴前会检查可信输入目标,并使用录音启动时的焦点快照降低焦点漂移误粘贴风险。
  • 自动粘贴失败会返回结构化 reason,renderer 现有兜底会展示悬浮面板,结果不会静默丢失。
  • 自由提问、选区、MPS、打包和自动学习没有被纳入本次阶段 2。
  • 已补充 macOS 粘贴成功、焦点漂移、剪贴板恢复失败和 keyboard IPC 平台分发测试。

风险/备注:

  • PR base 按要求指向 main,因此 GitHub 页面会展示 macos 分支相对 main 的累计 macOS 差异,不只包含阶段 2 的单提交。
  • macOS Cmd+V 没有系统级粘贴完成回执,本实现用事件发送成功 + 固定 settle 延迟作为 MVP 判定;需要 Accessibility 授权后做真实应用手测。
  • 本机 helper 烟测显示当前终端/Electron 未授予 Accessibility 权限,实际自动粘贴需要用户在系统设置授权。

@cnYui
cnYui merged commit db7f275 into main Jun 2, 2026
1 check passed
@cnYui
cnYui deleted the codex/macos-stage2-auto-paste-submit branch June 2, 2026 12:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant