Skip to content

feat(desktop-emotes): 新增 Cindy Ping 桌面表情轮盘 - #196

Merged
zqchris merged 4 commits into
makecindy:mainfrom
GaoWeiLiuXD:feature/cindy-ping
Oct 23, 2026
Merged

zqchris merged 4 commits into
makecindy:mainfrom
GaoWeiLiuXD:feature/cindy-ping

Conversation

@GaoWeiLiuXD

@GaoWeiLiuXD GaoWeiLiuXD commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator

Scope

提供可配置的 macOS 桌面表情轮盘,将鼠标处的窗口信息送到 Cindy 项目、会话或伙伴。

  • 范围:desktop-emotes/、.tests/desktop-emotes.test.mjs、provisioning.json 和仓库双语 README 中的插件目录项。
  • 完成标准:按住快捷键在鼠标处唤出轮盘,松键确认;逐表情配置目标与模型;两秒等待期内可撤销;截图通过 Cindy 附件链路投递;Agent 与设置页共用配置校验及 revision。
  • 不包含客户端改动、Windows/Linux 适配、公开发布或全量自动安装。

What changed / 改了什么

新增 Cindy Ping 0.3.7,要求 Cindy ≥ 0.1.114、macOS ≥ 14,支持 Apple Silicon 和 Intel。

  • 默认 Command + G,默认四项全部只展示、没有内置任务指令。十一张内置表情,也可选择本地图片;支持拖动排序、Pin 和增删。
  • 每项可直达指定项目/会话/伙伴,或在轮盘中选择目标、查看最近三个活跃目标;已有会话和伙伴保留接收方配置,新建任务可单独选模型。
  • 表情立即显示,后续行为等待两秒;新的只展示表情取消上一个待执行动作。支持排队/插话,截图作为消息附件;不保存窗口材料到插件 KV,不重放未知投递。
  • Agent 可读配置、带 revision 更新配置、查询目标及模型;保存不会立即取材或发送,没有独立对话入口。
  • 补齐并发配置保护、投递及撤回中的持久恢复状态、已创建任务记录、保存回执同步、英文设置页回退和四语言工具目录。文字取材核对原窗口编号、归属和唯一对应关系,无法确认时返回缺项。图片保持原尺寸、逐像素无损转为 WebP,使二进制资源总额符合仓库上限。

Why / 为什么

为桌面操作提供无需切换窗口或输入文字的可配置入口。已逐项核对仓内 25 个现有插件的场景、工具清单及网络声明:最接近的浏览器和 OpenDesign 插件分别处理网页与设计稿;本插件处理任意桌面窗口处的主动轮盘输入,不增加通用搜索、绘图或应用自动化工具。

未找到已确认的同名新插件提案;本 PR 的产品准入仍待维护者确认。首次登记 audience: {"emails": []},不自动安装到任何用户,不扩大其他插件受众。

Checklist

  • 已审查完整 diff;无凭据、真实用户数据、历史原型、本地配置、安装包或 node_modules。
  • ghost.json 只声明实际使用的任务、目标和 Node 能力,必要性见下方。
  • 投递区分未执行/已接受/未知;未知结果暂停,撤销及重启不清除待核对标记,不自动重发。
  • 工具描述、设置文案及双语文档与实现一致;四语言目录完整。
  • 包版本为 0.3.7;新插件采用 manifest v3,最低客户端 0.1.114。
  • Cindy device verification / Cindy 实机验证 — 本次最终 0.3.7 包已完成实机安装与验证。
  • 未降低或移除 minCindyVersion。
  • 新插件提案的维护者确认尚待补齐;audience 决策已写明。
  • 本地化检查已运行并通过。
  • Node 文件为直接维护的源代码,没有待重建的第三方 Worker bundle;原生 helper 已从随附 Swift 源码重建。
  • 无新增第三方运行依赖,无需第三方依赖许可证清单。
  • 提交包含作者一致的 DCO sign-off。

Tool declaration changes / 工具声明改动

新增 status、get_config、configure、list_targets、list_models。查询只返回配置、状态或目标元数据,不读取会话历史。配置必须先读取 revision;目标及模型使用查询得到的真实标识,保留未修改字段,旧快照被拒绝。没有供 Agent 直接发表情或投递消息的工具。

Verification / 验证

  • npm ci --prefix desktop-emotes --ignore-scripts --offline、npm run check:通过,无第三方 npm 依赖。
  • 插件隔离回归:macOS 20/20,通过两秒等待与撤销、迟到采集、配置冲突、附件、排队/插话、未知回执及撤回重启保护、旧配置创建任务后被替代、保存回执同步与新草稿保护。原生窗口身份检查覆盖七种场景;该项在 Linux CI 明确跳过。
  • 仓库包契约:24/24;localization、provisioning、binary-dependencies 检查通过;提交树与预检树一致。
  • publish-workflows 在本机 Bash 3.2 下有三项因大小写语法不受支持而失败;首轮 Linux CI 已全部通过。未修改仓库发布脚本,当前提交继续由相同 Linux runner 核验。
  • 无窗口设置页检查:自动保存、缺项就地提示、切换表情、固定目标选择、快捷键录制、英文切换、日语英文回退、WebP 渲染和旧页面拒绝覆盖均通过;检查引擎已退出,没有调用真实宿主投递。
  • npm run build:Apple Swift 6.4 / macOS SDK 27.0,目标 macOS 14,arm64 与 x86_64 均编译成功;universal Mach-O、ad-hoc 签名验证通过。Intel 尚未实机运行。
  • 11 张 WebP 的 1254 × 1254 RGBA 与原 PNG 逐字节一致;macOS NSImage 解码全部成功。Git 二进制资源合计 10,392,212 bytes < 10 MiB。
  • 使用仓库 .github/scripts/package-plugin.sh 打包并校验 ZIP、manifest、许可证和运行文件。包 10,082,701 bytes,解压 10,628,808 bytes,42 个条目。

构建提交:8b430178b26e01d7454c1b6973e391a0bb09424a。

本地包 SHA-256:0c08a938e49b0eda8f37c9aa889b6d4419d37e0b385b66845972c0c11d14ffaa。

原生可执行文件 SHA-256:6971135d56ca19457d30e54fcc8145b5495d422f8b11243eb3612d137cabd23c。

本次最终 0.3.7 .cindy 包已完成 Cindy 实机验证。PR CI 会提供最终测试包及独立 source metadata,不能用本地包哈希代替 CI 包哈希。

Sensitive changes / 敏感变更

需要维护者人工 review:新插件产品准入、图片及预编译原生资源、agent.tasks / agent.targets 和常驻 Node 能力。

  • 常驻 Node 仅启动固定随包 helper,无 shell 拼接、远程下载或动态执行。全局快捷键和窗口取材由 macOS 原生代码完成;不读取剪贴板、不持续录屏,不申请新的系统授权。
  • 仅通过 Cindy 的任务和目标 API 访问宿主。插件自主网络仅使用同源 /kv、/app-context、/wake、/agent-models;无外部服务地址、网络 hosts、OAuth 或 secret 声明。
  • 任务取材可能包含目标窗口可见的敏感内容,动作可产生模型费用。辅助功能文本跳过密码控件,截图仍包含窗口实际可见内容。只展示不取材。
  • 图片为为本插件生成的原创插画;预编译 helper 附完整 Swift 源码和双架构构建脚本,未单独公证。请人工目检资源与执行边界。
  • 空 audience,未扩大到全量;未改发布 workflow 或审查策略。

提供 macOS 轮盘、逐表情目标与模型配置、两秒撤销窗口、附件投递及 Agent 配置工具。补齐配置版本冲突保护、未知投递恢复、四语言目录和隔离回归检查。首次登记采用空 audience,不自动安装。

Signed-off-by: liugaowei <liugaowei@xd.com>
@github-actions

github-actions Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

🤖 Contributor checklist / 贡献检查清单

✅ No missing items detected by this bot. Remaining checks (version bump, tests, packaging) are reported by Verify pull request; maintainers will review. / 本机器人未发现缺失项;版本号、测试、打包由 Verify pull request 报告,维护者会继续 review。

Updated automatically for 8b43017 (author association: COLLABORATOR). See CONTRIBUTING.md / CONTRIBUTING.zh-CN.md. 本评论自动更新。

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review 🔄 Running since 2026-10-23T06:47:48.132985Z 8b43017 New commits
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@greptile-apps

greptile-apps Bot commented Oct 23, 2026 •

Copy link
Copy Markdown

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] 本轮未发现新的代码阻断项,但仍需维护者人工审查并补齐最终包实机验收。

Summary

敏感变更,需要维护者人工 review。风险:high。

新增 macOS 桌面表情轮盘,支持按表情配置项目、会话或伙伴投递。

  • A held shortcut opens an emote wheel at the pointer.
  • Configured emotes send window context to Cindy after a short wait.
  • Settings and Agent tools share one versioned emote configuration.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[快捷键选择表情] --> B{只展示?}
  B -->|是| C[展示并取消待执行动作]
  B -->|否| D[等待两秒及目标选定]
  D --> E[读取原窗口材料]
  E --> F[先保存投递记录]
  F --> G[通过 Cindy 投递]
  G --> H{结果是否确认?}
  H -->|是| I[更新投递状态]
  H -->|否| J[保留记录并暂停]
  J --> K[用户核对后恢复]
Loading

Reviews (2) · Last reviewed commit: "fix(desktop-emotes): 同步设置保存后的规范化结果" · Reviewed by Greptile

Comment thread desktop-emotes/main.js Outdated
Comment thread desktop-emotes/native/EmoteHelper.swift
Comment thread desktop-emotes/settings.js

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 17dbfaf105

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread desktop-emotes/main.js Outdated
Comment thread desktop-emotes/main.js
Comment thread desktop-emotes/ghost.json
Signed-off-by: liugaowei <liugaowei@xd.com>
Signed-off-by: liugaowei <liugaowei@xd.com>
Signed-off-by: liugaowei <liugaowei@xd.com>

@zqchris zqchris left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

能力都在 ghost.json 里声明,宿主可知;无外联、不申请新系统授权,audience 为空。同意准入。

@zqchris
zqchris merged commit 0dd6304 into makecindy:main Oct 23, 2026
14 checks passed
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.

2 participants