Skip to content

feat(ui,clipboard): consolidate UI/UX and implement HTML/Image sync#8

Merged
daredoole merged 6 commits intomainfrom
feature/rich-ui-clipboard
Apr 28, 2026
Merged

feat(ui,clipboard): consolidate UI/UX and implement HTML/Image sync#8
daredoole merged 6 commits intomainfrom
feature/rich-ui-clipboard

Conversation

@daredoole
Copy link
Copy Markdown
Owner

@daredoole daredoole commented Apr 28, 2026

Summary

Consolidates UI/UX and implements full HTML/Image clipboard synchronization.

Changes since last review:

  • Tray Stability: Flattened tray menu and implemented change-detection in visual updates to prevent the menu from closing prematurely on KDE/GNOME.
  • Network Hardening: Fixed a high-frequency reconnect loop that occurred when TCP connected but the handshake failed, causing system-wide UI jitter/flickering.
  • README Revamp: Reorganized documentation to put Quick Start and Installation at the top for better user onboarding.
  • Bug Fixes: Removed blocking modal startup hints that could hang the GTK main thread.

Features:

  • Seamless Text, HTML, and Image clipboard sync.
  • Professional GTK3 configuration forms.
  • Improved systemd service management and status reporting.

Closes #8

daredoole and others added 6 commits April 27, 2026 23:13
- Replaced fragmented Zenity dialogs with professional Python/GTK3 forms.
- Decluttered Tray menu with new 'Advanced' submenu and improved status labels.
- Implemented full HTML and Image clipboard synchronization via MIME-aware backends.
- Updated README.md with high-fidelity setup instructions and feature details.
- Refactored core network and runtime layers to support structured clipboard payloads.
…s, trailing whitespace

- Accept clipboard handshake packets with zero magic (PowerToys MWB compat)
- Add desId param to exchangeClipboardHandshake; use kBroadcastMachineId fallback
- Force magic=0 on RequestRemoteClipboard secondary socket
- Add Heartbeat_v2 (type 80) to PackageType and PackageTypeName
- Rename clipboard socket labels: "text"→"TXT", "image"→"IMG"
- Add debug logging throughout handshake flow
- Strip trailing whitespace (CI static check)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Corrected PackageType values for clipboard (9->69, etc) to match MWB protocol.
- Implemented trailing null-byte trimming for received image payloads.
- Increased inline and socket clipboard max sizes to 16MB.
- Use zero magic for clipboard socket handshake per observed PowerToys behavior.
- Switched wl-clipboard-klipper to wl-paste --watch for reliable detection.
…ectation

Clipboard socket incoming handler uses magic=0 (PowerToys compat). Test was
still using crypto.Get24BitHash() for the response packet, causing
receivePacketOnSocket to reject it and crash the test with an unhandled
std::runtime_error.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@daredoole daredoole merged commit c4d61d2 into main Apr 28, 2026
4 checks passed
@daredoole daredoole deleted the feature/rich-ui-clipboard branch April 28, 2026 16:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant