Skip to content

v2.2.1

Choose a tag to compare

@github-actions github-actions released this 29 Mar 03:40
  • New onboarding screen shown on first launch for Windows users, guiding them through
    the hotkey, tray icon, and background operation.
  • Default hotkey changed from Ctrl+Alt+V to Ctrl+Shift+V to avoid conflicts with
    common system shortcuts on Windows.
  • Wakeup via named pipe: when a second instance is launched, the running instance
    is brought to the foreground instead of opening a duplicate window.
  • Version-aware onboarding: the screen is shown once per install and correctly
    suppressed on subsequent launches and after updates.
  • Improved Windows balloon notification copy.

  • Wayland is now officially unsupported (X11 only). When CopyPaste is launched on a
    Wayland session, a clear on-brand gate screen is shown explaining the limitation and
    linking to the GitHub repo. The app does not attempt to run.
  • Autostart blocked on Wayland: the .desktop autostart entry is never created (and
    any existing one is removed) when a Wayland session is detected.
  • Fixed: spurious OS notification ("CopyPaste esta preparado") appearing on the first
    hotkey press. Caused by a missing gdk_notify_startup_complete() call in the GTK
    application activate handler.
  • Fixed: Settings window not resizing correctly on Linux. Added GTK event-loop flush
    delays around setResizable and geometry constraint calls to prevent race conditions
    with the compositor.
  • Improved paste focus restoration: the _NET_ACTIVE_WINDOW message now uses source=2
    (pager) instead of source=1 (application), which bypasses focus-stealing prevention
    on KDE Plasma and some GNOME configurations. Added XRaiseWindow and a fallback
    XSetInputFocus with X11 error trapping.
  • X11 atom caching: _NET_ACTIVE_WINDOW and _NET_WM_PID atoms are now interned once per
    process instead of on every clipboard poll, reducing unnecessary round-trips to the
    X server.
  • XTest extension check: XTestQueryExtension() is called once at startup; if the
    extension is unavailable a warning is logged and paste simulation is disabled cleanly
    instead of crashing.
  • Fixed potential memory leak in activateAndPaste: the return value of g_timeout_add()
    is now checked; if registration fails the method call reference is released and paste
    falls through immediately.
  • Cleaner hotkey registration errors: failure paths in registerHotkey now emit g_warning
    messages (unsupported key, no modifiers, missing keycode, XGrabKey conflict), making
    debugging on unusual desktop environments significantly easier.
  • XSync before XGetWindowAttributes: flushes pending X requests before reading window
    attributes during hotkey registration, preventing stale-state reads.
  • Clipboard type constants: replaced magic numbers 0-6 throughout the Linux native code
    with named #define constants (CLIP_TYPE_TEXT, CLIP_TYPE_IMAGE, etc.), matching the
    Dart ClipboardDataType enum.
  • Removed all dead Wayland compatibility code (_waylandMode field, setWaylandMode()
    method, all related guards).

  • ClipboardService now handles unsupported or corrupt image formats gracefully instead
    of throwing an unhandled exception.
  • StorageConfig: improved directory resolution logic for cross-platform consistency.
  • CleanupService: orphan file detection is now more accurate — avoids incorrectly
    deleting files that are referenced but whose records are in a different state.
  • ImageProcessor: improved file-existence checks and error handling paths.
  • BackupService: minor directory management fixes to prevent failures on first run
    when the backup directory does not yet exist.

A large batch of new tests was added across the codebase:

  • TextClassifier edge cases: multiline input, all email/UUID/IP/color/JSON/phone
    patterns, boundary conditions.
  • ClipboardService reclassification: ensures legacy plain-text items are correctly
    re-typed as email, UUID, IP, color, JSON, phone, link on load.
  • Repository search integration: FTS5 full-text search and LIKE fallback paths,
    combined filters, empty queries, special characters.
  • BackupService integration: full backup/restore cycle, directory creation, file integrity.
  • ClipboardEvent platform parsing: all content types, malformed payloads, missing fields.
  • Linux: isWaylandSession() — idempotency, non-Linux platforms, GDK_BACKEND=x11
    override, headless/CI environment.
  • Linux: WaylandUnsupportedScreen — title, badge, body text, both buttons, callback,
    dark mode, Spanish locale.
  • Linux: StartupHelper Wayland skip — verifies no .desktop file is created on Wayland
    and that stale entries are removed.
  • Windows: WindowsOnboardingScreen — full widget coverage including locale, dark mode,
    button callbacks.
  • Windows: SingleInstance — wakeup file handling, named pipe signalling, debounce logic.

  • README updated with Linux beta notice, Wayland limitation explanation, and clearer
    getting-started instructions.
  • Fixed broken Table of Contents anchor link in README.
  • PRIVACY.md refreshed.

What's Changed

  • Fix: windows instances by @rgdevment in #35
  • feat: Update README and implement Wayland support checks in Linux cli… by @rgdevment in #36

Full Changelog: v2.2.0...v2.2.1