Skip to content

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 21 May 10:43
· 36 commits to main since this release
clipboardwire v0.4.0

Highlights

- File transfer (PROTOCOL v0.3.0). New `file_chunk` frame type
  carries 4 MiB pieces of a file through the same hub; the receiver
  assembles + verifies the SHA-256 and saves to
  `~/Downloads/clipboardwire/`.
- OS file-clipboard integration. Ctrl+C a file in
  Nautilus/Explorer/Finder on one machine, Ctrl+V in the other
  machine's file manager pastes the saved file. Backends:
  - Linux X11: `text/uri-list` selection via x11-clipboard.
  - Windows: CF_HDROP via clipboard-win.
  - macOS: NSPasteboardTypeFileURL via objc2-app-kit.
  Wayland: Xwayland fallback covers most distros; native
  protocol coming in a v0.4.x patch.
- `clipboardwire send <FILE>` subcommand for one-shot
  programmatic sends (no clipboard interaction required).
- Tray icon status overlay. Colored dot mirrors the menu's
  Status line — green/amber/red/none.
- "Pin from server" button in the Settings dialog: one-click
  TLS handshake, capture peer cert, save next to config,
  populate `tls_ca_file`.
- macOS .app bundle + .dmg installer in the release workflow,
  hand-rolled with sips + iconutil + hdiutil. App lives in the
  menu bar (LSUIElement) — no Dock entry.
- Homebrew tap: `brew install --cask davefx/clipboardwire/clipboardwire`.
- Settings dialog window icon matches the tray + .desktop branding.
- macOS in CI matrix with tray smoke + singleton-lock +
  embedded-hub-binds + file-clipboard roundtrip running on every
  push.

Notable bug fix surfaced during the development of this release:
the file-transfer one-shot subprocess would intermittently drop
its queued chunks because `select!` raced on a simultaneous drop
of both outbound channels — fixed by draining outbound_files
before exit. And the Linux X11 backend was releasing the
clipboard selection immediately after every set (Clipboard
handle dropped per call) — now held for process lifetime in a
OnceLock.

Breaking
- PROTOCOL_VERSION bumps from clipboardwire/0.2.0 to
  clipboardwire/0.3.0. Older clients that didn't understand
  `file_chunk` just ignored them, so the wire is backwards-
  compatible for the existing clip frame surface.