Skip to content

ysh0566/paste3

Repository files navigation

Paste3

Paste3 是一个 macOS 剪贴板历史工具,目标是做一个本地优先、开源、面向开发者工作流的轻量 Paste 替代品。它会在菜单栏常驻,记录最近复制的内容,并提供类似底部浮层的横向历史浏览体验。

当前项目仍处于早期阶段,默认把隐私和可审计性放在功能复杂度之前。

当前能力

  • 监听系统剪贴板变化并保存历史记录。
  • 支持文本、链接、命令、图片、文件、富文本、HTML 和通用数据片段。
  • 使用 SwiftData 在本机持久化剪贴板历史。
  • 图片、富文本、HTML 和通用数据 payload 会保存到本机 Application Support 文件目录,SwiftData 只保留可检索元数据。
  • 按内容 hash 去重,同一内容从不同来源复制会分别保留。
  • 支持普通搜索,以及 app:type:from:pin: 查询过滤。
  • 支持暂停捕获、排除指定 App、删除单条记录、清空历史。
  • 菜单栏入口和底部 quick panel。
  • 支持复制回剪贴板;授权辅助功能权限后可自动粘贴回前台应用。
  • 默认保留最近 1 年历史,并可在设置中切换为 1-6 天、1-3 周、1-11 个月、1-3 年或永久保留。

隐私边界

剪贴板里经常包含 token、密码、代码片段、截图和内部链接。Paste3 的当前设计原则是:

  • 不上传剪贴板内容。
  • 不接入远程分析、遥测或崩溃上报。
  • 数据保存在本机 SwiftData 存储中。
  • 可在设置中暂停捕获或排除指定 Bundle ID,默认排除 1Password、Keychain Access 和 Passwords 等敏感 App。
  • 辅助功能权限只用于把选中的历史项自动粘贴回原前台应用。
  • 用户可以从菜单中清空历史记录。

搜索语法

搜索框支持普通关键词,也支持几个确定性过滤器:

  • app:Terminal:按来源 App 名称或 Bundle ID 过滤。
  • type:command:按内容类型过滤,支持 textlinkcommandimagefilerichdata
  • from:today:按时间过滤,支持 todayyesterdayweekmonthyear7d 这类相对天数。
  • pin:PR:按 Pinboard 名称过滤,pin:any 表示任意已 pin 项目。

更详细的说明见 PRIVACY.md

系统要求

  • macOS 14.0 或更高版本。
  • Xcode 16 或更高版本。项目使用 SwiftData 和 Swift Testing,建议使用较新的 Xcode。

本地开发

克隆仓库后可以直接用 Xcode 打开:

open paste3.xcodeproj

命令行运行单元测试:

xcodebuild test \
  -project paste3.xcodeproj \
  -scheme paste3 \
  -destination 'platform=macOS' \
  -derivedDataPath /private/tmp/paste3-derived-unit \
  CODE_SIGNING_ALLOWED=NO \
  -only-testing:paste3Tests \
  -skip-testing:paste3UITests

DEVELOPMENT_TEAM 在仓库中保持为空。需要本地签名、Archive 或发布时,请在 Xcode 中配置自己的 Apple Developer Team。

权限说明

Paste3 读取系统剪贴板不需要额外授权。自动粘贴到前台应用需要 macOS 辅助功能权限,因为它会模拟 Cmd+V

如果不授予辅助功能权限,仍然可以使用历史浏览和复制回剪贴板,只是不会自动向目标应用发送粘贴快捷键。

发布状态

目前还没有正式二进制发布。建议开发者先从源码构建运行。正式发布前还需要补充签名、notarization、安装包或 Homebrew Cask 流程。

贡献

贡献前请先阅读 CONTRIBUTING.md。安全或隐私问题请按 SECURITY.md 处理,不要在公开 issue 里粘贴真实敏感剪贴板内容。

许可证

本项目使用 MIT License,见 LICENSE

About

No description, website, or topics provided.

Resources

License

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages