SyncClipboard 生态的浏览器扩展(Chrome / Firefox),通过 WebDAV 实现剪贴板跨设备手动分享。与 SyncClipboard 和 Android 端完全互操作。
- 读取剪贴板 — 一键读取系统剪贴板(文本/图片)
- 上传到服务器 — 文本短于 1KB 内联 JSON,长文本/图片/文件写入
file/目录 - 从服务器下载 — 文本写入本地剪贴板,文件保存到浏览器下载目录;浏览器不接受的文件名会自动兼容化
- 选择本地文件 — 直接选择本地文件上传,不经过剪贴板
- 操作历史 — 最近上传/下载记录,可配置容量上限
- 连接管理 — 配置 WebDAV 服务器地址/用户名/密码,一键测试连接,成功自动保存
- 协议兼容 — 完整实现 SyncClipboard WebDAV 协议,与桌面端和移动端互操作
- WebDAV 服务 — 已实现,通过 WebDAV 服务器同步剪贴板
- Group 类型支持 — 待开发,上传和下载 Group 类型剪贴板内容(多条目组合)
extension/
├── manifest.json # Chrome Extension Manifest V3
├── popup.html/css/js # 弹出窗口 UI
├── options.html/css/js # 设置页面
├── browser-api.js # Chrome / Firefox API 适配层
├── webdav-client.js # WebDAV 协议客户端(零依赖)
├── storage.js # Chrome Storage 封装
└── storage-mock.js # 内存/文件存储(非扩展上下文使用)
tests/
├── extension.spec.js # Playwright E2E 测试
└── unit/
└── webdav-client.test.js # 协议单元测试
docs/
└── protocol.md # 协议文档
- 打开 Chrome,访问
chrome://extensions - 开启「开发者模式」
- 点击「加载已解压的扩展程序」,选择
extension/目录 - 点击扩展图标 → 设置 → 配置 WebDAV 服务器地址、用户名、密码
- 点击「Test Connection」测试连接,成功自动保存设置
- 回到弹出窗口,点击「Read Clipboard」读取剪贴板,点击「Upload to Server」上传
- 打开 Firefox,访问
about:debugging#/runtime/this-firefox - 点击「临时载入附加组件」,选择
extension/目录中的任意文件 - 后续步骤与 Chrome 相同
密码以 XOR 混淆形式存储在 storage.local 中,重启浏览器后仍然保留。
# 安装 Playwright 浏览器(首次运行测试前需要执行)
npx playwright install chromium firefox
# 单元测试
npm run test:unit
# Playwright E2E 测试
npm test # Chromium(默认)
npm run test:firefox # Firefox
npm run test:headed # 有头模式推送 tag 自动触发 GitHub Release:
git tag v1.0.0
git push origin v1.0.0详见 docs/protocol.md。核心数据结构为 camelCase 的 ProfileDto JSON,通过 /SyncClipboard.json 读写,大文件存放在 /file/ 目录。下载到本地时,如果浏览器拒绝原始文件名(例如点开头文件名),扩展会自动使用兼容的本地保存名。