Skip to content

SnipForge 0.2.0

Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 04 Nov 14:15
· 20 commits to main since this release

[0.2.0] - 2026-11-03

剪贴板 · 富文本与隐私

对照 TieZ 的剪贴板实现补齐三块:

  • 富文本 HTML 保留(以前挂在 📋 计划里的那条)。采集时读 Windows 的
    HTML Format,粘贴时同时写 CF_UNICODETEXT 和 HTML —— 从网页复制的表格、
    带样式的文字,粘到 Word / 邮件 / 飞书里格式不丢;记事本、终端这类只认纯文本的
    地方照常能粘。去重仍按纯文本 hash:同一段话复制两次不该变成两条历史
  • 隐私遮罩预览:列表里手机号、身份证、银行卡、邮箱自动打码
    (138****8000 / 110101********1234)。只影响显示,选中后写进剪贴板的
    还是原文。面板和主窗口都生效 —— 投屏、录屏、旁边有人的时候不至于把证件号念出来
  • 按来源程序筛选:卡片底部的程序名现在可点,点一下只看那个程序里的复制记录;
    再点一下(或点顶部「来自 xxx ✕」)取消
  • 粘贴为纯文本:面板里 Alt+Enter,丢掉网页带来的字体颜色等样式,
    只把文字塞过去。配合上面的富文本保留,两种场景各取所需

不做的事:WebDAV / MQTT 跨设备同步。这个工具的定位是本地常驻,剪贴板历史里
经常有密码和证件号,不上传比"能同步"重要。

鼠标手势 · 支持画字母

以前只能认方向(←→↑↓ 及其组合)和 S / H 两个形状,画 W、V、B、M
一律落到"未绑定"。原因是形状和方向串共用同一批字符:D 既是"向下划"
又是"字母 D",加一个字母就得跟方向抢名字。

现在按主流工具的做法拆开:

  • 一笔画字母基本都认:A B C D E F G H J K L M N P R S T U V W X Y
    (I 是一条竖线、等于方向串;O 是闭合圆;Q 一笔画不自然)
  • 形状用 @ 前缀,和方向串分处两个命名空间:@W 是字母,DR 是方向。
    用户手写 W 也认(自动补前缀)
  • 形状没绑动作时自动回落方向串:画 Z 会先认成 @Z,没绑就落回 RLR,
    「画 Z 排除当前程序」照常工作,不需要为每个字母补绑定
  • 配置迁移 v4:老绑定里的 S / H 自动改成 @S / @H
  • S 补了两个斜写模板(±10°):点云不抗旋转,以前斜着写 S 认不出
  • 形状识别从主 crate 搬到 snipforge-core,第一次有了真正能跑的测试
    (letters_recognize_themselves:每个字母 6 个抖动/缩放变体必须认回自己)

鼠标手势 · 手感修复

反馈「划起来不流畅、不灵活,和其它手势工具差距极大」。定位到四个实现问题,
全部在轨迹层和默认参数上,与 UI 框架无关:

  • 不再每帧重建 GDI 资源:画笔、画刷、字体改成随窗口缓存,只在分辨率或
    轨迹色变化时重建。以前每帧 CreateFontW 一次,字体面查询就是几毫秒
  • 重绘合并 + 66fps 上限:高刷鼠标每秒上千次位移,以前每次都投递一次重绘,
    消息队列被灌满,表现是轨迹越划越落后于光标
  • 只贴脏区:以前每帧清空并回贴整个虚拟屏(4K 双屏 800 万像素每帧),
    现在只处理「轨迹包围盒 ∪ 浮标包围盒 ∪ 上一帧范围」
  • 灵敏度默认值 30/55 → 16/38:旧值划一小段没反应、短促手势划不出方向。
    配置里两个值都还是旧默认的自动升级(v3 迁移),自己调过的不动
  • 浮标停留 520 → 240ms:连续划两个手势不再互相干扰
  • 轨迹采样加 2px 阈值,去掉一像素一报的抖动点

决策记录

  • 新增 docs/ADR-001-ui-stack.md:评估 Rust + egui 迁移,结论是不迁。
    内存 27 MB 不是瓶颈,且 egui 的立即模式对全屏覆盖层是负优化;
    手势卡顿的根因在 GDI 重绘方式,换框架解决不了。文档里留了重新评估的触发条件