Skip to content

Clipboard Sync 0.2.0

Choose a tag to compare

@github-actions github-actions released this 11 Sep 08:12
· 41 commits to main since this release
f225111

Added

  • Secure by default: choosing a database now encrypts the group with a random passphrase and signs it with an admin key (switch on the database screen); other devices receive the passphrase sealed through pairing. Settings → Privacy → Show passphrase reveals it for manual joins.
  • Device pairing: Settings → Devices → Add a device shows a QR code (or a copyable code) plus an 8-digit PIN; the other device scans or pastes it under Join another group (also offered on the welcome screen). The code carries the database settings encrypted with the PIN (Argon2id → AES-256-GCM), is valid for 5 minutes and is never recorded in clipboard history. The host chooses the new device's role and access duration and whether to share the passphrase (delivered sealed to the new device, never inside the code).
  • Device management: list every device with presence, block / unblock, remove, forget, change role (Send & receive, Send only, Receive only) and set temporary access. A blocked, removed or expired device stops itself, deletes its credentials, keys and passphrases, and tells the user. In a signed group these decisions are verified cryptographically — see docs/devices.md.
  • Send to… in the history menu pushes a clip to one device only (target_device_id).
  • Capture filters: Pause capture (also in the tray menu), Skip password-manager content (macOS concealed/transient pasteboard types, Windows ExcludeClipboardContentFromMonitorProcessing, Android 13+ EXTRA_IS_SENSITIVE; on by default) and Skip keys and tokens (credential-pattern heuristic).
  • Signed groups: every device has an Ed25519 / X25519 identity; every clip is signed and verified against the sender's admin-signed key; membership changes (status, role, expiry, keys, admin flag, key envelope) are signed by a group admin key with rollback protection. Holding the database credentials is no longer enough to pose as a device, lift a block, or take over the group. Settings → Devices → Secure this group upgrades existing groups; members confirm the admin fingerprint once.
  • Encryption key rotation: the admin issues a fresh random passphrase sealed to each verified device (X25519 + AES-GCM envelope covered by the admin signature). Removed or blocked devices cannot read clips sealed after the rotation; older history stays readable through a local keyring. Pairing delivers the passphrase the same way — it never travels inside the QR code.
  • Device rows carry status, role, expires_at, paired_by, app_version, sign_pub, box_pub, admin, admin_pub, membership_version, membership_sig, key_version, key_envelope; clips carry target_device_id, key_version, sig. Supabase and PocketBase need the upgrade snippet in their guide; other backends need nothing.

Changed

  • Heartbeats write only presence fields, so a block set by another device is never overwritten.
  • Local database schema v2 (adds target_device_id); migrates automatically.

Unsigned builds — see docs/release.md for Gatekeeper / SmartScreen steps.
Verify downloads with SHA256SUMS.txt.

What's Changed

New Contributors

Full Changelog: https://github.com/appfide/clipboard-sync/compare/v0.1.0...v0.2.0