Repository navigation
Highlights 🌟
-
🧩 Local process plugins in the paste context menu
A plugin is a folder with amanifest.jsonand a script or program;
CrossPaste runs it with the paste on stdin and applies stdout to the
clipboard, history, a notification or the browser. Plugins start
disabled and are managed under Extensions → Plugins. A bundled
Translate plugin offers a target-language submenu (#5210 #5212 #5228). -
🔄 Catch up on missed pastes when a peer reconnects
Desktop pulls a trusted peer's pastes through an incremental cursor
whenever the peer becomes connected, filling in what was missed while
it was offline; remote pastes with invalid content are discarded
instead of being written to the clipboard (#4897). -
⌨️
crosspasteis the CLI on Windows installs
Installer and Microsoft Store packages register bothcrosspasteand
crosspaste-clias CLI aliases, the Store package ships the CLI, and
the control socket moved out of the MSIX-virtualized temp directory so
CLI commands no longer report the app as not running (#5190 #5191
#5192 #5193 #5195). -
🐧 Linux link/file opening, RPM packages and a dnf repository
Links, HTML, RTF and files open through xdg-open, "show in file
manager" selects the file via FileManager1, EL9 RPM packages for
x86_64 and aarch64 are published alongside the deb, and RPM installs
subscribe to a signed dnf repository (#5184 #5185 #5186 #5187). -
📋 Paste injection waits for the target app
On macOS and Windows the paste keystroke is injected only after the
previous app is back in the foreground (otherwise the user is asked to
paste manually), shortcut-triggered pastes wait for the shortcut keys to
be released, X11 waits for the target window, and the keystroke itself
is sent in one SendInput call on Windows and as flagged events on macOS
(#5247). -
🪟 Windows MSIX installs again
The 2.2.0 and 2.2.1 installer packages failed with 0x80080204 on
current Windows builds because two appExecutionAlias extensions were
declared under one Application. The manifest now declares the CLI
alias in its own Application, so the package installs and updates
cleanly (#5188 #5189).
Bug Fixes 🐛
- 🐛 Keep keyboard focus off search window controls so Enter still pastes after a click (#5267)
- 🐛 Exclude all CrossPaste windows from the Windows previous-app record (#5264)
- 🐛 Switch the macOS activation policy when the main window hides so the first search window show is not dismissed (#5262)
- 🐛 Post the macOS paste shortcut as flagged key events without separate modifier key events (#5252)
- 🐛 Send the Windows paste keystroke in one SendInput call with reverse release order, scan codes and extended-key flags (#5250)
- 🐛 Inject the paste only after the previous app is back in the foreground on macOS and Windows (#5248)
- 🐛 Wait for the target window to become active before injecting the X11 paste keystroke (#5246)
- 🐛 Wait for the shortcut keys to be released before injecting a shortcut-triggered paste (#5244)
- 🐛 Stop macOS search focus rechecks from blocking the EDT on AppKit (#5242)
- 🐛 Require a drag threshold before starting drag-and-drop in the search window (#5239)
- 🐛 Keep the newest paste fully in view when prepended at the list start (#5237)
- 🐛 Discard remote pastes with invalid content instead of writing them to the clipboard (#5234)
- 🐛 Fix macOS search window dismissal and tray toggle races (#5215)
- 🐛 Report Windows plugin script failures as a single line (#5229)
- 🐛 Normalize launcher resources dir on all platforms and drop skiko fallback (#5226)
- 🐛 Stabilize Windows search window activation and dismissal (#5227)
- 🐛 Unmount the token popup when no pairing card is visible (#5223)
- 🐛 Skip non-web URLs in clipboard previews (#5224)
- 🐛 Close the search window when focus is lost during the startup grace period (#5200)
- 🐛 Toggle the search window from the tray icon on Linux (#5206)
- 🐛 Hide the pairing-code card after the user rejects it (#5202)
- 🐛 Respect Plasma fractional scaling and confirm pairing with Enter (#5201)
- 🐛 Normalize Super key events on XWayland (#5199)
- 🐛 Declare the MSIX CLI execution alias in its own Application (#5188)
- 🐛 Start the CLI socket from the user data directory on Windows (#5195)
- 🐛 Show files in the file manager on Linux (#5186)
- 🐛 Open browser links, HTML, RTF and files with xdg-open on Linux (#5184)
New Features ✨
- ✨ Make the bubble editor modal over the search window and keep it stacked on top (#5266)
- ✨ Attribute OCR and plugin pastes to CrossPaste and show its logo as their source icon (#5240)
- ✨ Catch up on missed pastes when a peer reconnects (#5233)
- ✨ Plugin submenu actions and a target-language picker for Translate (#5221)
- ✨ Run local process plugins from the paste context menu (#5214)
- ✨ Scan local plugins and check their compatibility (#5213)
- ✨ Draw the logo on the brand gradient with a one-stroke trace animation (#5207)
- ✨ Make
crosspastelaunch the CLI on Windows MSIX packages (#5192) - 💄 Outline the main window on Linux so it stands out from other windows (#5204)
- 🔥 Remove the sort toggle from the search window (#5235)
Multiplatform · Refactor · Code Style 🔨
- 🔨 Rename PasteAutoPullService to PastePullTrigger (#5263)
- 🔨 Expose the pairing v3 dialog state as a StateFlow (#5231)
- 🔨 Assemble the paste context menu through PasteMenuContributor (#5211)
- 🔨 Provide static and animated CrossPasteLogo composables (#5209)
- 🔨 Make AbstractGlobalCopywriter Compose-free and publish the language as a StateFlow (#5179)
- 🔨 Move MessageType's Compose colour and icon helpers into ui.base (#5180)
Build & CI 👷
- 👷 Refresh README contributors when an outside contributor's PR is merged (#5232)
- 👷 Publish a signed dnf repository for the RPM channel (#5198)
- 👷 Build the Microsoft Store MSIX in release CI and publish from it (#5194)
- 👷 Build EL9 RPM packages for Linux x86_64 and aarch64 (#5187)
Dependencies ⬆️
- ⬆️ Upgrade Compose Multiplatform to 1.12.2 and Navigation to 2.10.0-rc01 (#5218)
- ⬆️ Upgrade Kotlin to 2.4.21 (#5216)
- ⬆️ Upgrade the Gradle wrapper to 9.8.1 (#5217)
- ⬆️ Upgrade SQLDelight to 2.4.1 (#5220)
- ⬆️ Bump source-map-js to 1.2.2 in the web lockfile (#5197)
- ⬆️ Bump imageio from 3.15.2 to 3.15.3 (#5256)
- ⬆️ Bump com.github.ben-manes.caffeine:caffeine (#5258)
- ➖ Replace ph-css with a built-in inline style parser (#5259 #5261)
New Contributors 👋
- @BiFangKNT made their first contribution in #5184
Full Changelog: 2.2.1.2706...2.3.0.2767