Skip to content

2.1.6.2390

Choose a tag to compare

@guiyanakuang guiyanakuang released this 14 Jul 07:09
· 142 commits to main since this release

Highlights 🌟

  • πŸ” Fixed a clipboard loop between the Chrome extension and desktop
    Running the Chrome extension and the desktop app on the same machine
    could bounce the same clipboard entry back and forth endlessly,
    flooding the history with duplicates. Both sides now recognize
    content written by the other and no longer re-trigger each other
    (#4619 #4620).

  • πŸͺŸ Same-machine pause protection now actually works on Windows
    The native messaging bridge that lets the extension detect a running
    desktop app never launched on Windows: the host manifest pointed to
    the bridge script with a forward-slash path, which cmd.exe β€” used by
    Chromium to launch non-exe hosts β€” cannot execute. The manifest now
    keeps native backslashes, the bridge script resolves the pid file at
    run time (immune to code-page path garbling on non-ASCII user
    profiles), and stdin draining is Windows PowerShell 5.1-safe. While
    the desktop app is running, the extension on the same machine now
    pauses its clipboard capture as designed (#4633 #4634).

  • πŸͺŸ Upgraded clipboard monitoring on Windows
    Clipboard monitoring on Windows now uses the AddClipboardFormatListener
    event mechanism, so copied content is picked up faster and more
    reliably. The "copied from" app is now resolved via GetClipboardOwner
    β€” the program that actually wrote to the clipboard β€” instead of
    whichever window happened to be in the foreground (#4597 #4606).

  • πŸͺŸ Works on newer Windows builds without wmic
    Newer Windows 11 builds have removed the wmic tool, which prevented
    CrossPaste from generating a device identifier. It now reads the
    registry MachineGuid instead (#4580).

  • 🧩 Extension zip from GitHub Releases now connects to the desktop app
    Loading the Chrome extension zip via "Load unpacked" used to fail with
    "Access to the specified native messaging host is forbidden", because
    Chrome assigned it a different extension ID on every machine. The
    extension ID is now pinned to the Chrome Web Store ID, so unpacked
    installs connect to the desktop app just like the store version
    (#4631 #4632).

  • πŸ” Search window resets properly on reopen
    Reopening the search window or changing the query now scrolls the
    list back to the top and selects the newest entry, instead of keeping
    a stale position or selection (#4595 #4600).

  • πŸ“Ά Device discovery prefers your LAN
    When a computer has multiple network connections (such as a cellular
    modem or a phone hotspot), CrossPaste now ranks local network
    interfaces first when discovering nearby devices (#4568).

  • 🐧 New Linux ARM64 build
    CrossPaste now ships a Linux ARM64 (aarch64) package, so ARM-based
    Linux devices are supported too (#4581 #4582 #4626).

Bug Fixes πŸ›

  • πŸ› Keep native backslashes in the native messaging host path so cmd.exe can launch the bridge script, resolve the pid file via %~dp0, and make the stdin drain PowerShell 5.1-safe (#4634)
  • πŸ› Read lastError on native host disconnect to log the reason and silence unchecked-error noise (#4634)
  • πŸ› Pin Chrome extension ID via manifest key so unpacked installs can reach the native messaging host (#4632)
  • πŸ› Build Linux ARM64 in releases and survive the apt-repo site layout (#4626)
  • πŸ› Fix endless clipboard duplication loop between Chrome extension and desktop (#4620)
  • πŸ› Force PNG output for README avatars to keep circle-mask corners transparent (#4615)
  • πŸ› Migrate Windows clipboard monitoring to AddClipboardFormatListener (#4606)
  • πŸ› Reset side search selection and scroll to newest on reopen and query change (#4600)
  • πŸ› Resolve Windows clipboard source via GetClipboardOwner instead of foreground window (#4597)
  • πŸ› Pass signing_key to Conveyor in the Linux beta workflow (#4584)
  • πŸ› Replace deprecated wmic with registry MachineGuid for Windows device UUID (#4580)
  • πŸ› Lower WindowsProcessUtils version-resource log from error to debug (#4578)
  • πŸ› Capture network errors in ResourcesClient.request() instead of throwing (#4577)
  • πŸ› Rank LAN interfaces above cellular for device discovery (#4568)

New Features ✨

  • ✨ Add Linux aarch64 (ARM64) build target (#4582)
  • ✨ Add telnet scenario to e2e harness (#4562)

Performance ⚑

  • ⚑ Use plain remember for RichTextState in side preview views (#4618)

Multiplatform Β· Refactor Β· Code Style πŸ”¨

  • πŸ”¨ Remove runBlocking from DesktopAppLaunchState DI assembly (#4575)
  • πŸ”¨ Group Koin module declarations by sub-domain with regions (#4573)
  • πŸ”¨ Make ImageHandler and ImageWriter I/O methods suspend (#4570)

Build & CI πŸ‘·

  • πŸ‘· Decouple update-site publishing from release builds (#4630)
  • πŸ‘· Drop the nested apt repo from versioned release assets (#4627)
  • πŸ‘· Replace contrib.rocks with manually triggered contributors README workflow (#4613)
  • πŸ‘· Add manual Linux beta build workflow (#4583)
  • πŸ‘· Serve updates from the OSS-backed CDN site (#4560)
  • πŸ‘· Mirror the Conveyor update site to a stable OSS prefix (#4559)

Documentation πŸ“

  • πŸ“ Fix checkered flag emoji code in commit guide (#4598)

Dependencies ⬆️

  • ⬆️ Gradle Wrapper 9.5.1 β†’ 9.6.1 (#4589 #4608)
  • ⬆️ logback-classic 1.5.34 β†’ 1.5.37 (#4592 #4611)
  • ⬆️ MCP Kotlin SDK Server 0.13.0 β†’ 0.14.0 (#4628)
  • ⬆️ Ktor 3.5.0 β†’ 3.5.1 (#4607)
  • ⬆️ web build deps vite / @babel/core security bump (#4593)
  • ⬆️ composenativetray-jvm bump (#4591)
  • ⬆️ webp-imageio 0.10.2 β†’ 0.11.0 (#4588)
  • ⬆️ Koin 4.2.1 β†’ 4.2.2 (#4585)
  • ⬆️ Coil 3.4.0 β†’ 3.5.0 (#4566)
  • ⬆️ filekit-dialogs 0.14.1 β†’ 0.14.2 (#4565)
  • ⬆️ HikariCP 7.0.2 β†’ 7.1.0 (#4564)
  • ⬆️ JNA 5.19.0 β†’ 5.19.1 (#4563)

New Contributors πŸ‘‹

Full Changelog: 2.1.5.2343...2.1.6.2390