2.0.0.2192
Release Notes - v2.0.0
π§© Note on the Chrome Extension
The Chrome extension is now live on the Chrome Web Store: https://chromewebstore.google.com/detail/crosspaste/aajpcfbdbnaidaaljamjpmmjcfebhmlh
A few things to keep in mind about scope:
- The extension is a lightweight companion, not a replacement for the native desktop app. It is not feature-complete and is not intended to cover every workflow the desktop client supports.
- Supported: using the extension as a lightweight in-browser clipboard manager, and pairing it with the native desktop app to sync clipboard content across devices.
- Not supported: extension-to-extension cross-device pairing. Two browsers running only the extension cannot sync directly with each other β at least one peer in the mesh must be a native CrossPaste desktop (or mobile) instance.
If you need the full cross-device experience, install the native desktop app on at least one of your devices and pair the extension to it.
Highlights π
-
π§© Chrome Extension β A Brand New Platform
CrossPaste now runs as a first-class Chrome Extension, bringing clipboard sync directly to the browser. Includes WebSocket-based file pulling, Native Messaging to pause the extension when the desktop app is running, and full SyncState parity with desktop (#4152 #4157 #4158 #4164 #4168 #4176). -
π SAS-Based v2 Pairing Protocol
Pairing now uses a Short Authentication String (SAS) to prevent MITM attacks, with ashowPairingCodeendpoint and a remote access toggle for safer device onboarding (#4088 #4096 #4098). -
π WebSocket Sync Protocol
A new bidirectional, real-time WebSocket sync channel replaces polling for many flows, enabling instant cross-device updates, batch pulls, and live liveness probes (#4112 #4120 #4223). -
π₯οΈ Redesigned Devices Screen
The devices screen has been rebuilt with offline grouping, a current-device dialog, and a refined add-device flow β a cleaner, faster way to manage your mesh (#4207). -
π·οΈ Namespaced App Source Icons
App source icons are now namespaced byappInstanceId, eliminating cross-device collisions and enabling correct icon rendering across heterogeneous meshes (#4191 #4193 #4197).
Bug Fixes π
- Fix notification close button intercepted by native title bar buttons on Windows (#4039)
- Fix image side preview crop fill and blurry decode size (#4041)
- Fix color hex format in MarketingPasteData from ARGB to RGBA (#4043)
- Fix missing
libtesseract.soin Linux builds since 1.2.6 (#4049) - Fix ToStartView showing on open and not appearing when scrolled (#4052)
- Fix HTML/RTF search content returning raw markup (#4062)
- Fix Sparkle crash on macOS by disabling redundant scheduled check (#4086)
- Fix
SegmentedControlSettingsRowlayout in twoLine mode (#4136) - Deprioritize virtual network interfaces in auto-selection (#4138)
- Fix incorrect MCP SSE endpoint URL in configuration command (#4146)
- Skip sync for remote clipboard data to prevent duplication (#4148)
- Fix
ConnectCodeUtilsto use KMP-compatibleconcatToString(#4154) - Restore ESC key binding for
hide_windowand display it in shortcuts UI (#4183) - Fail fast when
crosspaste-version.propertiesis missing the version key (#4277)
New Features β¨
- β¨ Add loading indicator for pasteboard lazy loading and fix throttle stall (#4054)
- β¨ Add Portuguese (pt) language support (#4076)
- β¨ Add mobile app promotion guide in desktop devices view (#4083)
- β¨ Add user-configurable JVM system-property override file (#4267)
UI Improvements π
- π Replace custom
CountBadgeAutowith Material 3 Badge and add image count badge (#4143) - π Simplify
DesktopPromoteGuideto single download button (#4156) - π¨ Align add-device button style with current-device button (#4273)
Multiplatform Β· Refactor Β· Code Style π¨
- π¨ Extract core module and deduplicate shared/app code (#4060)
- π¨ Add Compose stability configuration for core module types (#4064)
- π¨ Remove
getSearchContent/getSummaryfromPasteItem, introducePasteItemReaderandPasteDataHelper(#4067) - β Remove unused
material-kolordependency (#4081) - π¨ Convert
withTimeout/withTimeoutOrNullLong overloads to Duration (#4094) - π¨ Abstract
TrustDeviceViewinDeviceScopefor platform-specific pairing (#4098) - β Remove duplicate exception classes from app module (#4100)
- π¨ Refactor
SyncResolverto unified single-pass connection flow (#4104) - π¨ Refactor
searchPasteDatapasteTypetopasteTypeListfor multi-type filtering (#4122) - π¨ Refactor
getCrossPasteWebUrlto use remote locale config frommeta.json(#4124) - π¨ Reduce default shortcut key bindings to
show_mainandshow_searchonly (#4127) - π¨ Migrate
promote.jsonto web API and update data model (#4150) - π¨ Refactor
addSyncTaskto accepttargetAppInstanceIdsasSet<String>(#4181) - π¨ Add identity parameter to
loadRepresentationfor mobile platform support (#4185) - π¨ Refactor
targetAppInstanceIdsto nullableSet<String>?for explicit no-sync semantics (#4188) - π¨ Unify coroutine scopes via
namedScopehelper (#4216)
Performance β‘
- β‘ Improve device reconnection with fast-then-slow telnet probe strategy (#4108)
- β‘ Skip icon pull when local icon file already exists (#4195)
Dependencies β¬οΈ
- β¬οΈ Kotlin 2.3.10 β 2.3.20 (#4069)
- β¬οΈ Compose Multiplatform 1.10.1 β 1.10.3 (#4055 #4068)
- β¬οΈ Compose Hot-Reload 1.1.0-alpha05 β 1.1.0-rc01 (#4208)
- β¬οΈ Ktor 3.4.0 β 3.4.2 (#4073 #4128)
- β¬οΈ Koin 4.1.1 β 4.2.1 (#4115 #4159)
- β¬οΈ SQLDelight 2.2.1 β 2.3.2 (#4114)
- β¬οΈ Cryptography 0.5.0 β 0.6.0 (#4132)
- β¬οΈ MCP Kotlin SDK Server 0.8.4 β 0.11.0 (#4024 #4113 #4162)
- β¬οΈ Jewel 0.33.0 β 0.34.0 (#4056 #4129)
- β¬οΈ Lifecycle 2.9.6 β 2.10.0 (#4070)
- β¬οΈ Conveyor 1.13 β 2.0 (#4071)
- β¬οΈ Ktlint 14.0.1 β 14.2.0 (#4072)
- β¬οΈ Okio 3.16.4 β 3.17.0 (#4133)
- β¬οΈ Logback Classic 1.5.31 β 1.5.32 (#4134)
- β¬οΈ Kotlin Logging 7.0.14 β 8.0.01 (#4160)
- β¬οΈ ComposeNativeTray 1.1.0 β 1.3.0 (#4209)
- β¬οΈ Coil 3.3.0 β 3.4.0 (#4210)
Build & Tooling π·
- π· Split CI into app-build and web-build with path filters (#4239)
- π Bump version to 2.0.0 (#4243)
- π· Tighten CI path filters and unify Node version in build-release (#4279)
Contributors β¨
- @Fldicoahkiin use imageFlavor instead of javaFileListFlavor for single-image clipboard writes (#4302)
Full Changelog: 1.2.9.2059...2.0.0.2192