Releases: CrossPaste/crosspaste-desktop
1.2.8.1999
Highlights π
-
π¨ Material 3 & Tailwind UI Evolution
A comprehensive visual overhaul migrating the application to the CrossPasteColor M3 theme and a Tailwind CSS-inspired color palette. The entire icon system has been refactored using Material Symbols, providing a unified and modern aesthetic (#3718 #3734 #3740). -
π€ MCP Server for AI Integration
Introduced support for the Model Context Protocol (MCP), allowing AI agents to securely access your clipboard data. This update includes a dedicated settings interface for managing agent permissions and connectivity (#3839 #3841). -
π«§ BubbleWindow & Advanced Inline Editing
Launched the BubbleWindow, enabling seamless inline text and HTML editing directly from the Search window. The new editor includes a floating toolbar with undo/redo support and optimized layouts for rapid content adjustments (#3837 #3860 #3862 #3867). -
π Advanced File Management & Sync Control
Significant upgrades to the sync engine, including the ability to sync large files directly to system download directories and granular controls for specific content types. A new "Cut" operation with full undo support has also been added for file and image items (#3737 #3833 #3843 #3871). -
π‘οΈ Architecture Hardening & Massive Test Suite
Major stability improvements addressing native resource leaks on Windows (COM/DC), macOS, and Linux. To ensure long-term reliability, we've added over 750 new unit and integration tests covering the core data, sync, and UI layers (#3742 #3780 #3782 #3816 #3820-3827).
Bug Fixes π
- Fix native resource leaks: Windows (DC, COM, HICON), macOS (Keychain), and Linux (Pointer bugs) (#3770 #3780 #3782 #3786)
- Resolve synchronization race conditions, silent error swallowing, and redundant retry loops (#3762 #3766 #3875 #3889)
- Patch Zip Slip vulnerability and security risks in the encryption layer (#3810 #3768)
- Fix
runBlockingUI freezes and thread-safety issues in RTF and UI infrastructure (#3804 #3808 #3794) - Fix Bonjour service race condition causing registration with port 0 (#3772)
- Resolve stream leaks during import/export and orphaned database entries (#3752 #3900 #3908)
- Correct macOS shortcut
rawCodemapping and fragile reflection logic (#3784) - Fix cleanup logic where expiration was guarded by the wrong configuration flag (#3896)
- Fix "launch_at_startup" switch being bound to the incorrect config field (#3722)
New Features β¨
- β¨ Add "In Downloads" indicator for synced files and hide missing local items (#3852)
- β¨ Support drag-and-drop overlay UI for remote file synchronization (#3846)
- β¨ Add mutedText color to the theme system for better typography (#3728)
- β¨ Implement PasteTypeExt constants and composable helpers for better type handling (#3724 #3726)
UI Improvements π
- π Redesign menu items for improved visual clarity (#3720)
- π Enhanced image info components with adaptive layouts and decimal byte formatting (#3697 #3699 #3700)
- π Fix BubbleWindow visual glitches (white corners/tails) on Linux platform (#3910)
- π Add
isLoadingstate support for Dialog action buttons (#3835) - π Fix InfoItem value text alignment issues during text wrapping (#3831)
Multiplatform Β· Refactor Β· Code Style π¨
- π¨ Clean up core data models and unify error handling logic (#3744)
- π¨ Refactor icon system with unified
IconDataand Material Symbols (#3740) - π¨ Update
CLAUDE.mdwith strict commit message conventions and code formatting rules (#3707 #3732) - π¨ Refactor SemanticColorGroup to utilize Tailwind CSS color palette (#3734)
Performance β‘
- β‘ Enable per-device concurrent sync event processing to reduce latency (#3881)
- β‘ Replace binary search with cumulative size scan for faster threshold cleanup (#3898)
- β‘ Resolve task executor semaphore starvation and queue backpressure (#3894)
- β‘ Optimize image processing by removing redundant hash computations and bitmap copies (#3748 #3774)
Dependencies β¬οΈ
- β¬οΈ Kotlin 2.3.0 β 2.3.10 (#3801)
- β¬οΈ Compose Plugin 1.10.0 β 1.10.1 (#3856)
- β¬οΈ Ktor 3.3.3 β 3.4.0 (#3701)
- β¬οΈ Gradle Wrapper 8.14 β 9.3.1 (#3710)
- β¬οΈ Logback Classic 1.5.25 β 1.5.31 (#3708 #3892)
- β¬οΈ Atomicfu 0.29.0 β 0.31.0 (#3702)
- β¬οΈ Kotlinx Serialization 1.9.0 β 1.10.0 (#3703)
Build & Tooling π·
- π· Replace
Thread.sleepwithrunTestto resolve flaky test results (#3858)
Full Changelog: 1.2.7.1883...1.2.8.1999
1.2.7.1883
π v1.2.7 - Emergency Hotfix
This release addresses a critical issue where devices were unable to connect or sync due to an incorrectly configured HTTP header.
β οΈ Critical Fixes
- Connection Failure: Removed manually set
Hostreserved header which caused communication timeouts in certain network environments. (#3691)
π Other Improvements
- Compatibility: Fixed
cursorColormethod for better Android compatibility. (#3681) - UI: Fixed
FileBottomSolidsize calculation logic. (#3686) - Internal: New
getNoDeletePasteDataFlowfor better multiplatform data handling. (#3688)
Full Changelog: 1.2.6.1876...1.2.7.1883
1.2.6.1876
Highlights π
-
π¨ Material 3 Design Overhaul
A massive visual upgrade transitioning the entire application to Material 3 principles. This includes a complete refactor of Settings, Device Management, Dialogs, OCR, and Import/Export interfaces for a modern, unified experience (#3516 #3529 #3546 #3560). -
βοΈ Editable Paste Titles
You can now customize and edit the titles of items in your clipboard history directly via theSidePasteTitleView, allowing for better organization and quicker identification of important snippets (#3664). -
πͺ Enhanced Desktop Aesthetics
Significant improvements to platform-specific visuals, including a new frosted glass (translucent) background for the search window on Windows. For macOS, we've introduced support for the "Liquid Glass" effect and ensured full compatibility with macOS 26+ (#3628 #3630 #3643). -
π Clipboard Relay & Sync
Introduced a new Clipboard Relay system and refactored the task submission architecture. Improved device discovery reliability with network interface fallbacks and enhanced sync status UI (#3662 #3679 #3651). -
π οΈ Infrastructure & Performance
Upgraded to Kotlin 2.3.0 and Compose 1.10.0. Optimized Bonjour service discovery and resolved critical stability issues, including a SIGSEGV crash in XToolkit for Linux users (#3510 #3637 #3521 #3645).
Bug Fixes π
- Fix SIGSEGV in XToolkit by deferring JNativeHook initialization (#3645)
- Resolve search window position flickering when opened (#3507)
- Fix layout of platform text in
DeviceRowContent(#3552) - Fix flaky
testDecryptionWithWrongKeyPairunit test (#3568) - Resolve configuration cache issues for
copyDevPropertiestask (#3577) - Fix AlwaysOnTop button theme color and size inconsistencies (#3606)
- Avoid special fonts in
DeviceDisplayNameto ensure cross-platform compatibility (#3608) - Resolve x86 compilation error by restricting Liquid Glass to ARM64 (#3643)
- Fix nested padding issues by introducing
InnerScaffold(#3525) - Add network interface fallback to ensure service discovery starts reliably (#3679)
New Features β¨
- β¨ Support adding tags to clipboard items (#3389)
- β¨ Support keyboard shortcuts for top 9 clipboard items (#3385)
- β¨ Add support for F13-F20 function keys (#3515)
- β¨ Support toggling search window via global shortcut (#3570)
- β¨ Implement Clipboard Relay system for advanced syncing (#3662)
- β¨ Enhance i18n tool with unused key detection and auto-cleanup (#3556)
- β¨ Implement dynamic debug mode and move About view to desktop source set (#3649)
- β¨ Add callback for
TrustByTokenand loading states in device dialogs (#3668)
UI Improvements π
- π Refactor major UI components (Settings, Devices, Dialog, Token, Notification, OCR) to Material 3 (#3516 #3529 #3531 #3536 #3546 #3560)
- π Implement
AnimatedSegmentedControlcomponent (#3610) - π Add frosted glass background to search window on Windows (#3628)
- π Refactor macOS acrylic background for macOS 26+ support (#3630)
- π Implement dynamic semantic color support (#3604)
- π Support editing paste item titles in
SidePasteTitleView(#3664) - π Add
IncompatibleSectionto device detail view (#3519) - π Improve token input readability with adjusted line height (#3538)
- π Refine device row UI and state tag appearance (#3602)
Multiplatform Β· Refactor Β· Code Style π¨
- π¨ Refactor navigation to pass IDs instead of complex objects (#3579)
- π¨ Rename QR Code to "Pairing Code" across UI and i18n (#3598)
- π¨ Introduce multi-platform support for Export/Import Param Factories (#3585)
- π¨ Consolidate MainWindow menu bar into
DesktopMenuBarcomponent (#3636) - π¨ Remove deprecated color contrast support from theme system (#3625 #3632)
- π¨ Clean up unused code and i18n entries after refactoring (#3575 #3596)
Performance β‘
- β‘ Optimize
DesktopPasteBonjourServicediscovery and throttling logic (#3521) - β‘ Track connected host addresses and refactor
PasteClientheaders (#3676) - β‘ Improve device refresh UX and sync reliability UI (#3651)
Dependencies β¬οΈ
- β¬οΈ Kotlin 2.2.21 β 2.3.0 (#3510)
- β¬οΈ Compose Plugin 1.9.3 β 1.10.0 (#3637)
- β¬οΈ JBR (JetBrains Runtime) β 21.0.9b1163.94 (#3634)
- β¬οΈ Jewel 0.32.1 β 0.33.0 (#3528)
- β¬οΈ Logback 1.5.20 β 1.5.25 (#3509 #3655)
- β¬οΈ MaterialKolor 4.0.5 β 4.1.0 (#3639)
- β¬οΈ JmDNS 3.6.2 β 3.6.3 (#3620)
- β¬οΈ ICU4J 78.1 β 78.2 (#3656)
Build & Tooling π·
- π· Update macOS runner to
macos-26in build-release workflow (#3670) - π· Sync JBR version in
conveyor.confwith actual runtime version (#3672) - π Update version to 1.2.6 (#3641)
Full Changelog: 1.2.5.1787...1.2.6.1876
1.2.5.1787
π Highlights
This is an urgent release addressing critical performance issues and streamlining the UI.
-
β‘οΈ Performance & Stability Hotfix: Addressed UI freezing and lag. We migrated database operations to an async/await pattern with an IO dispatcher and introduced HikariCP to handle concurrency. Also fixed the freeze issue during token refreshes.
-
βοΈ UI Streamlining: Removed deprecated and redundant UI elements, including the Main Window clipboard display and the Central Search Window, to provide a cleaner and lighter user experience.
What's Changed
- β‘ Convert database operations to async/await pattern with IO dispatcher by @guiyanakuang in #3489
- π Fix database concurrency issues by introducing HikariCP by @guiyanakuang in #3491
- π Remove clipboard display from Main Window (keep in Sidebar only) by @guiyanakuang in #3492
- π Remove Central Search Window implementation by @guiyanakuang in #3493
- π¨ Merge i18n update and sort logic into single script by @guiyanakuang in #3495
- π Resolve token refresh freeze and progress bar issues by @guiyanakuang in #3497
- β¨ Make Server interface async and improve shutdown handling by @guiyanakuang in #3499
- π Update version to 1.2.5 by @guiyanakuang in #3502
Full Changelog: 1.2.4.1778...1.2.5.1787
1.2.4.1778
Highlights π
-
π·οΈ Clipboard Item Tagging
Organize your clipboard history more effectively with the new tagging system. You can now add custom tags to items, complete with a refined UI for easier management (#3389 #3392 #3415 #3442). -
π₯ Native System Tray
Improved desktop integration with native system tray support, now fully implemented for both Windows and Linux environments (#3413 #3471). -
π¨ Visual & UX Polish
Introduced macOS acrylic window background effects, overhauled file/folder icons, and added image resolution overlays. Navigation has been smoothed out with consistent back-button behavior (#3404 #3426 #3444 #3448). -
β¨οΈ Smart Shortcuts & Focus
Added support for keyboard shortcuts to quickly access the top 9 clipboard items. Window focus logic has been significantly improved for better stability and automatic monitoring (#3378 #3384 #3385). -
β‘ Performance & Stability
Significant under-the-hood optimizations to reduce application size and memory footprint, resulting in a snappier and more responsive experience (#3383 #3399 #3408). -
π§ Linux AppImage Support
Greatly enhanced Linux compatibility with official AppImage packaging support, simplifying installation across different distributions (#3456).
Bug Fixes π
- Resolve SIGSEGV crash due to unsafe window pointer usage (#3473)
- Fix crash caused by process-based hostname retrieval (#3393)
- Fix migration crash for
PasteTagEntity(#3392) - Ensure Settings window automatically appears on first launch (macOS) (#3395)
- Fix drag-and-drop performance issue in
SidePasteItemView(#3402) - Prevent tagged items from being removed during deduplication (#3415)
- Fix compilation errors in securedao (#3421)
- Resolve aliasing in side app source icons due to crop transformation (#3432)
- Fix sync control parameter inconsistency in device detail view (#3452)
- Fix incorrect directory size check allowing large folders to bypass limit (#3465)
- Patch incorrect icon paths in decorated window icon keys via reflection (#3469)
- Fix tray menu showing search window instead of main window (#3471)
- Improve main window focus behavior when already visible (#3477)
- Add cache invalidation for native window handles to prevent stale state (#3479)
- Reset active image memory reclamation logic (#3483)
New Features β¨
- β¨ Support adding tags to clipboard items (#3389)
- β¨ Support keyboard shortcuts for top 9 clipboard items (#3385)
- β¨ Add support for automatic window focus change monitoring (#3384)
- β¨ Implement native tray support for Windows and Linux (#3413)
- β¨ Add AppImage packaging support for Linux builds (#3456)
- β¨ improve window focus logic and display interface (#3378)
UI Improvements π
- π Implement acrylic window background (macOS) (#3404)
- π Overhaul file and folder icons with modern aesthetics (#3426)
- π Display image resolution overlay in side panel (#3444)
- π Refine tag chip styling and sizing consistency (#3442)
- π Improve text styling with consistent line height configuration (#3430)
- π Implemented
FileBottomSolidto display file info in preview (#3436) - π Refactored
UrlBottomSolidfor layout harmony and readability (#3434) - π Implement navigation improvements with graph routing (#3448)
- π Enhance UI consistency with unified background styling (#3450)
Multiplatform Β· Refactor Β· Code Style π¨
- π¨ Replace Guava with Caffeine to reduce dependency size (#3383)
- π¨ Consolidate theme logic into unified reactive
ThemeState(#3397) - π¨ Migrate to centralized reactive
AppSizeValuearchitecture (#3410) - π¨ Refactor UI context management and optimize window state access (#3419)
- π¨ Refactor bottom solid components to support multiplatform usage (#3440)
- π¨ Replace
jSystemThemeDetectorwith native Compose API (#3446) - π¨ Refactor
NavigationEventfrom sealed class to interface pattern (#3454)
Performance β‘
- β‘ Optimize UI performance by eliminating unnecessary state (#3399)
- β‘ Add
@Stableannotation toPasteDetailInfoItem(#3406) - β‘ Optimize image loading and UI performance across multiple components (#3408)
- β‘ Optimize
AppSourceIconlayout stability and scaling logic (#3417) - β‘ Optimize scroll performance in
SidePasteboardContentView(#3438)
Dependencies β¬οΈ
- β¬οΈ Jewel 0.31.0 β 0.32.1 (#3373 #3458)
- β¬οΈ Ktor 3.3.2 β 3.3.3 (#3386)
- β¬οΈ SQLDelight 2.0.2 β 2.2.1 (#3343 #3346)
- β¬οΈ Okio 3.16.2 β 3.16.4 (#3411)
- β¬οΈ Ktlint 13.1.0 β 14.0.1 (#3457)
- β¬οΈ Ph-css 8.0.1 β 8.1.1 (#3459)
- β¬οΈ ZXing Core 3.5.3 β 3.5.4 (#3463)
- β¬οΈ Mockk 1.14.6 β 1.14.7 (#3462)
Build & Tooling π·
- β¬οΈ Upgrade Gradle to 8.14 (#3428)
- β¬οΈ Update Conveyor build action to v21.0 (#3481)
- π· Cache Kotlin Native dependencies to speed up build (#3423)
- π¦ Set JNA library path for production builds (#3467)
- π Add AWT exception handler for better crash logging (#3475)
Full Changelog: 1.2.3.1718...1.2.4.1778
1.2.3.1718
Highlights π
-
πΌοΈ Optical Character Recognition (OCR)
Extract text directly from images in your clipboard. This new module supports asynchronous processing and includes guidance for first-time usage (#3302 #3306 #3321). -
π§© Extensions Framework
Added the foundation for the upcoming extension system, including a new management UI, download module, and configurable proxy support (#3291 #3295 #3296). -
π Enhanced Search Experience
You can now edit text content directly in the search window and use multi-select to paste multiple items in sequence based on your selection order (#3277 #3279). -
π File & Folder Visualization
The clipboard history now visually renders file and folder items, making it easier to distinguish and manage file-based content (#3262). -
π§Ή Smarter Memory Management
The app now proactively clears loaded image memory when the window is hidden, reducing the memory footprint during background operation (#3368).
Bug Fixes π
- Fix search window pasteboard type selection not resetting (#3226)
- Disable gzip encoding to restore expected decryption behavior (#3242)
- Resolve
zh_hant.propertiesnot being updated in i18n batch script (#3245) - Correct middle ellipsis logic for URL text display (#3249)
- Fix NPE in
writePasteboardwhen no PasteText item exists (#3256) - Fix client interface version recognition (#3283)
- Fix settings UI width and scrollbar position (#3293)
- Fix typo in Linux log path (
~/.local/share) (#3309) - Bring main window to front when displaying token (#3311)
- Establish bidirectional connection automatically when connecting devices (#3313)
- Resolve secret key loss or mismatch issues (#3316)
- Improve display text when network info is unavailable (#3315)
- Fix incorrect sha512 hash for JBR SDK (#3328)
- Fix macOS app signing, notarization, and runtime compatibility issues (#3332 #3338 #3342)
- Ensure search window displays on top (#3348)
- Restrict URL preview to
text/htmlandapplication/xmlonly (#3350) - Fix connection address overwrite after failed host connection attempt (#3354)
- Prevent duplicate cropping in
CropTransformation(#3364) - Prioritize longer key combinations to prevent prefix misfires (#3371)
New Features β¨
- β¨ Support editing text pasteboard in search window (#3277)
- β¨ Support multi-select paste based on selection order (#3279)
- β¨ Support rendering files and folders for file pasteboard (#3262)
- β¨ Add OCR Module for text extraction (#3302)
- β¨ Add extension UI and download module (#3291 #3296)
- β¨ Support configurable extension proxy (#3295)
- β¨ Support automatic redirect in HttpClient (#3360)
UI Improvements π
Multiplatform Β· Refactor Β· Code Style π¨
- π¨ Remove Debug UI, enable debugging via hot reload (#3228)
- π¨ Migrate navigation to event-driven architecture (#3230 #3238)
- π¨ Clean up
libs.versions.toml(#3234) - π¨ Update
UrlBottomSolidimplementation for multi-platform reuse (#3251) - π¨ Rename native target to
nativeAppto avoid template conflicts (#3264) - π¨ Extract
SidePasteTitleViewto separate file (#3281) - π¨ Modify sync address update strategy to use merge instead of overwrite (#3322)
- π¨ Remove
JvmStaticannotation fromcommonMain(#3352) - π¨ Abstract
ResourcesClientimplementation for multiplatform reuse (#3356 #3358) - π¨ Improve Coil3 fetch implementation (#3366)
Performance β‘
- β‘ Make text extraction and related operations asynchronous (#3306)
- β‘ Clear loaded image memory proactively when window is hidden (#3368)
- β‘ Improve image generation service with proper cancellation handling (#3247)
Dependencies β¬οΈ
- β¬οΈ Kotlin 2.2.10 β 2.2.21 (#3257 #3287)
- β¬οΈ Compose Plugin 1.9.0-rc01 β 1.9.3 (#3232 #3203 #3297)
- β¬οΈ Compose Hot Reload 1.0.0-beta06 β 1.0.0-rc02 (#3254 #3285)
- β¬οΈ Navigation Compose 2.9.0-rc02 β 2.9.1 (#3253 #3275)
- β¬οΈ Ktor 3.2.3 β 3.3.2 (#3236 #3268 #3303)
- β¬οΈ Jewel 0.30.0 β 0.31.0 (#3273 #3304)
- β¬οΈ Lifecycle 2.9.3 β 2.9.6 (#3265 #3284)
- β¬οΈ JNA 5.17.0 β 5.18.1 (#3259 #3267)
- β¬οΈ Logback 1.5.18 β 1.5.20 (#3266 #3274)
- β¬οΈ Guava 33.4.8-jre β 33.5.0-jre (#3269)
- β¬οΈ Okio 3.16.0 β 3.16.2 (#3286)
- β¬οΈ ICU4J 77.1 β 78.1 (#3299)
- β¬οΈ Ph-css 8.0.0 β 8.0.1 (#3298)
- β¬οΈ FileKit Dialogs 0.11.0 β 0.12.0 (#3369)
- β¬οΈ Mockk 1.14.5 β 1.14.6 (#3344)
Build & Tooling π·
- π§ Upgrade minimum macOS version to 14.0.0 (#3336)
- β¬οΈ Upgrade JBR version to 21.0.8b1163.69 (#3320 #3330)
- β¬οΈ Upgrade conveyor action version to 20.0 and compatibility level to 19 (#3334 #3340)
- π Fix sign native libraries in tesseract JAR for macOS x86_64 notarization (#3342)
Full Changelog: 1.2.2.1640...1.2.3.1718
1.2.2.1640
Highlights π
-
π Database Performance Boost
SQLite is now tuned for better concurrency and responsiveness, improving overall app performance (#3102). -
π Network Interface Selection
Choose which network interface CrossPaste uses for discovery and sync, giving you more control in multi-network environments (#3142). -
π± Smarter Device Management
Preview device details before adding, and enjoy a fully reactive sync service with dynamic polling intervals for faster, more reliable connections (#3148 #3166 #3171). -
π Rich Text Everywhere
HTML clipboard rendering now uses rich text (no Chrome dependency) and RTF is also rendered via RichText (#3193 #3198). -
π Native macOS Status Bar
CrossPaste now integrates with the macOS system status bar, offering a more seamless and intuitive interaction experience(#3222).
Bug Fixes π
- Handle invalid filename characters when syncing files from other systems to Windows (#3074)
- Fix FileNameNormalizer extension preservation and dot-only files (#3076)
- Fix PasteDataScopeImpl implementation (#3132)
- Fix PasteShimmer UI in side window (#3139)
- Fix UI recomposition for
AsyncImagePainterstate changes (#3189) - Fix infinite sync update loop by checking for actual changes (#3175)
- Integrate Swift dylib compilation with resources pipeline to work with atomicfu (#3181)
- Fix murmurhash3 compilation warnings (#3183)
- Fix issue where scrolling clipboard doesnβt load more items (#3200)
- Normalize HSL inputs for
hslToColoringetAdaptiveColor(#3207) - Improve error handling in paste data deserialization (#3213)
- Ensure
PasteItem.fromJsoncatches exceptions (#3217) - Remove locale-dependent format directives for cross-platform compatibility (#3221)
New Features β¨
- β¨ Native app menu support (#3053)
- β¨ Reintroduce βClear All Pasteβ button (#3114)
- β¨ Dynamic polling interval adjustment in sync manager (#3171)
- β¨ Use rich text rendering for HTML clipboard content (#3193)
- β¨ Use RichText to render RTF clipboard content (#3198)
- β¨ Smart contrast colour utility for colour palette (#3219)
- β¨ Network interface selection (#3142)
- β¨ View device details before adding nearby devices (#3148)
- β¨ Multi-language support for date/time formatting (#3096)
UI Improvements π
- π Newly added clipboard items are displayed at the top (#3073)
Multiplatform Β· Refactor Β· Code Style π¨
- π¨ Make
toRGBStringcompatible with iOS (#3069) - π¨ Move
JsonUtilstocommonMainfor cross-platform reuse (#3085) - π¨ Refactor
build.gradle.ktsand reorder dependencies (#3087) - π¨ Migrate shared code to
sharedmodule in preparation for CLI module creation (#3089) - π¨ Rewrite all
toByteArraycalls toencodeToByteArray(#3112) - π¨ Remove
PasteboardViewProviderinterface to simplify implementation (#3124) - π¨ Add
PasteDataScopeand refactor preview views structure (#3130) - π¨ Refactor pasteboard-related UI using
PasteDataScopeto avoid repeatedly passingPasteDatabetween UI functions (#3136) - π¨ Optimize
PasteDataScoperelated code (#3138) - π¨ Abstract
ResourcesClientto support multi-platform resource reading (#3150) - π¨ Rename
ImageWritertoimageHandlerand add read methods (#3152) - π¨ Standardize image resource file naming convention (#3154)
- π¨ Make the device sync service fully reactive (#3166)
- π¨ Extract independent connection maintenance logic for connected and pending devices (#3168)
- π¨ Resolve multiplatform support issues for network components (#3177)
- π¨ Rewrite
SyncPollingManagerto use atomic instead of@Volatilefor multiplatform support (#3179) - π¨ Implement screen navigation and switching in base class for multi-platform reuse (#3185)
- π¨ Rewrite
ColorUtilsbased on ph-css source code (#3191) - π¨ Make
borderparameter optional inHighlightedCardcomponent (#3187) - π¨ Update theme definitions to use non-deprecated
JewelThemeAPI (#3215)
Performance β‘
- β‘ Configure SQLite for better concurrency and performance (#3102)
- β‘ Optimize search state management and add throttling for pagination (#3211)
Dependencies β¬οΈ
- β¬οΈ Compose 1.8.3 β 1.9.0 (#3118)
- β¬οΈ Compose-plugin 1.8.2 β 1.9.0-rc01 (#3161)
- β¬οΈ Compose-hot-reload 1.0.0-beta04 β 1.0.0-beta06 (#3119 #3162)
- β¬οΈ Kotlin 2.2.0 β 2.2.10 (#3122)
- β¬οΈ Ktor 3.2.2 β 3.2.3 (#3079)
- β¬οΈ Okio 3.15.0 β 3.16.0 (#3083)
- β¬οΈ Ksoup 0.2.4 β 0.2.5 (#3077)
- β¬οΈ Coil 3.2.0 β 3.3.0 (#3057)
- β¬οΈ Jewel 0.28.0-252.15920 β 0.30.0-252.26252 (#3056 #3195)
- β¬οΈ Lifecycle 2.9.1 β 2.9.3 (#3121 #3159)
- β¬οΈ Koin 4.1.0 β 4.1.1 (#3194)
- β¬οΈ kotlin-logging 7.0.7 β 7.0.13 (#3080 #3099 #3145)
- β¬οΈ filekit-dialogs 0.10.0-beta04 β 0.11.0 (#3078 #3205)
- β¬οΈ ktlint-gradle 13.0.0 β 13.1.0 (#3144)
- β¬οΈ snakeyaml 2.4 β 2.5 (#3158)
- β¬οΈ jmdns 3.6.1 β 3.6.2 (#3160)
Documentation π
- π Update product images in README (#3055)
- π Update main image in README (#3065)
- π Add missing
alttext to Chinese ad images (#3060) - π Update project documentation (#3116)
Build & Tooling π·
- π· Switch Claude review to comment-triggered workflow (#3062)
- π· Reject dependencies with βdevβ versions in Gradle resolution strategy (#3202)
Tests β
- β
Enhance
SecureMessageProcessorunit tests (#3106) - β
Add comprehensive unit tests for
DefaultPasteSyncProcessManagerandPasteSingleProcessImpl(#3108) - β
Enhance
GeneralSyncManagerunit tests with scope updates (#3110)
Full Changelog: 1.2.1.1551...1.2.2.1640
1.2.1.1551
HighlightsΒ π
-
π New Language Support
Germanβ―(de), Frenchβ―(fr), Koreanβ―(ko), andβ―Traditionalβ―Chineseβ―(zhβHant) are now fully localised, with automatic English fallback for missing keys. -
π Sidebar Search Window 2.0
brandβnew edge window with its own search box, clipboard list, settings button, context menu, and favourite toggle for lightningβfast access. -
π OneβClick Online Upgrade
trigger the updater directly from the app UI to stay current without manual downloads. -
πΌοΈ Smarter Content Intelligence
OpenΒ Graph titleβ―/β―image extraction, renderedβimage backgroundβcolour analysis, and ANSI text fallback for legacy apps. -
β¨ Drag &Β Drop Everywhere
drag clips into/out of the main window, plus doubleβclickβtoβpaste in the side window. -
π Customise Your Workspace
choose a custom font, keep the main window always on top, pin windows, and enjoy refined icons & dialogs.
BugΒ FixesΒ π
- Fixed uncaught exceptions during update checksΒ (#2863)
- Prevented clipboardβrendering info from syncing across devicesΒ (#2896)
- Resolved Linux tray menu and mixedβwindow display issuesΒ (#2916Β #2920)
- Corrected search footer text contrast and hover statesΒ (#2922Β #3015)
- Fixed JSON serialisation, index mismatches, RTF icon assignment, and tutorialβbutton visibilityΒ (#2936Β #2973Β #2968Β #2984)
- Patched HTML backgroundβcolour extraction & alphaβloss bugs, plus added extra testsΒ (#2988Β #2990)
- Fixed window not showing after minimisation on some platformsΒ (#3008)
- Resolve mutex lock conflicts in concurrent operations (#3035)
NewΒ FeaturesΒ β¨
- β¨ Native system file dialogs for open/save operationsΒ (#2954)
- β¨ Rightβclick context menu, creationβtime stamp, character count, and hints for pasteboardsΒ (#2938Β #2946Β #2986Β #2960)
- β¨ Hotβreload support via composeβhotβreloadΒ (#2994)
- β¨ Checkβforβupdates menu item added to the main windowΒ (#3023)
- β¨ Support for dragging clipboard data across apps in side windowΒ (#2956)
- β¨ Add configurable paste behavior with primary/mixed type (#3047)
UIΒ ImprovementsΒ π
- π Movable decorative bar and improved notification/dialog layoutΒ (#2911Β #2942Β #2943)
- π Settings button in edge window and polished basicβtype iconsΒ (#2940Β #2944)
- π Added quit option, favourite star, pin button, and better default widthsΒ (#2951Β #2996Β #2998Β #3000)
- π Adjusted dialog width, fontβsettings icon, and checkβforβupdates visibilityΒ (#2943Β #2963Β #3023)
- π Enhance side panel UI with smart image display and improved sync handling (#3037)
- π Improve Windows icon extraction implementation (#3039)
MultiplatformΒ Β·Β RefactorΒ Β·Β CodeΒ StyleΒ π¨
- π¨ Replaced Jsoup βΒ Ksoup for full multiplatform parsingΒ (#2887)
- π¨ Unified search window instance & refactored windowβposition logicΒ (#2918Β #2929)
- π¨ Moved JVMβonly code and PNG analyser to
DesktopMain, removed unused SVGs and search methodsΒ (#2965Β #3021Β #2971Β #2910) - π¨ Created
DesktopClient, revampedAppConfig,RenderingService, and general code structureΒ (#2890Β #2866Β #2894Β #2892)
PerformanceΒ β‘
DependenciesΒ β¬οΈ
- β¬οΈ Composeβ―Β 1.8.2Β βΒ 1.8.3Β (#2876)
- β¬οΈ Composeβpluginβ―Β 1.8.1Β βΒ 1.8.2Β (#2933)
- β¬οΈ Kotlinβ―Β 2.1.21Β βΒ 2.2.0Β (#2899)
- β¬οΈ Ktorβ―Β 3.1.3Β βΒ 3.2.2Β (#2857Β #2932Β #3026)
- β¬οΈ Okioβ―Β 3.12.0Β βΒ 3.15.0Β (#2858Β #2897Β #2931)
- β¬οΈ Lifecycleβ―Β 2.9.0Β βΒ 2.9.1Β (#2878)
- β¬οΈ Koinβ―Β 4.0.4Β βΒ 4.1.0Β (#2852)
- β¬οΈ ktlintβgradleβ―Β 12.3.0Β βΒ 13.0.0Β (#2980)
- β¬οΈ mockkβ―Β 1.14.2Β βΒ 1.14.5Β (#2879Β #2982Β #3027)
- β¬οΈ webpβimageioβ―Β 0.10.0Β βΒ 0.10.2Β (#2901Β #2982)
- β¬οΈ kotlinxβserializationβjsonβ―Β 1.8.1Β βΒ 1.9.0Β (#2900)
- β¬οΈ kotlinxβdatetimeβ―Β 0.6.2Β βΒ 0.7.1β0.6.xβcompatΒ (#2979)
- β¬οΈ Plus routine bumps to cryptography, turbine, coroutinesβcore, jSystemThemeDetector, and composeβhotβreload (#2930Β #2855Β #2981Β #2934Β #3028).
DocumentationΒ π
BuildΒ &Β ToolingΒ π·
- π· Introduced ClaudeΒ Code Review workflow, approval bindings, and autoβclose logicΒ (#2909Β #2924Β #2927Β #2953)
- π· Split OSS upload steps to prevent CI timeβouts and updated OSS pluginΒ (#3031Β #3033)
- π· Added hotβreload build supportΒ (#2994)
ContributorsΒ β¨
FullΒ Changelog: 1.2.0.1444...1.2.1.1551
1.2.0.1444
Highlights π
-
π Persian Language Support Added
Weβve added support for Persian language (fa) to enhance international accessibility. -
π Enhanced Search Matching with ICU4J Tokenizer
Search experience has been significantly improved, especially for multi-language content and punctuation-based queries. -
π§ Auto-generate Text from HTML/RTF Clipboard
When copying rich content, plain text versions are now auto-generated to improve compatibility and fallback rendering. -
π HTML Charset Enforcement
IntroducedensureHtmlCharsetUtf8to fix issues with incorrect HTML encoding on some systems, ensuring consistent display. -
π‘ New Guide Auto Switch
The usage guide now updates automatically when switching languages. -
π€ Recommendation Sharing Feature
Easily share CrossPaste with your friends through a new built-in recommendation system β complete with preview and social support. -
π§ͺ New Unit Tests
Added tests to ensure correct behavior of reactiveSyncRuntimeInfoDaoflows. -
π§ Ubuntu
.debPackage Support
Official.debinstallation support for Ubuntu 22.04 LTS (Jammy) and later has been added.
Bug Fixes π
- π Prevent crash by specifying parentCoroutineContext during port conflict (#2711)
- π Fix IP address not syncing to other devices after DHCP reassignment (#2715)
- π Fix
AbstractMethodErrorin ExpandView (#2727) - π Correct background and icon color contrast (#2742)
- π Fix ExpandView compilation issue on Android Compose (#2738)
- π Revert
TextOverflowtoEllipsisfromClipfor better layout (#2812) - π Fix UI regression issues after refactor (#2824)
- π Fix
rememberCoroutineScopeexits due to partial UI switching (#2839) - π Fix device sync control settings being unintentionally overridden (#2835)
- π Fix
SQLITE_BUSYcaused by bulk deletion (#2840) - π Fix incorrect icon color in search window (#2793)
New Features β¨
- β¨ Add auto-scroll support in
ExpandViewcomponent (#2795) - β¨ Automatically update guide when switching languages (#2760)
- β¨ Add recommendation sharing feature (#2770)
- β¨ Auto-generate missing text from HTML/RTF clipboard (#2828)
- β¨ Add
ensureHtmlCharsetUtf8method (#2831)
UI Improvements π
- π Create HighlightedCard display effect (#2703)
- π Add vertical alignment to
DialogButtonsViewbutton row (#2713) - π Add leading/trailing icons to search input (#2723)
- π Change toast text alignment to
Justify(#2744) - π Use Divider (1.dp) in search window (#2777)
- π Switch default theme to blue Sea (#2779)
- π Enable scrolling for long text (#2791)
- π Improve
DialogButtonsViewspacing (#2801) - π Implement spacing and sizing system (#2803)
- π Remove
CursorWaitusage for better UX (#2842) - π Improve
ToastViewmessage readability (#2844) - π Polish UI visuals and enhance consistency (#2787)
Multiplatform & Refactor & Code Style π¨
- π¨ Improve ExpandView to support platform-specific rendering (#2725)
- π¨ Use DI to provide Platform instance for better testability (#2740)
- π¨ Migrate deprecated APIs for JDK 21 compatibility (#2752)
- π¨ Move core initialization to
InitPasteDataService(#2754) - π¨ Obtain
DesktopAppSizethrough DI framework (#2756) - π¨ Rename
GlobalCopywriterwith platform prefix (#2762) - π¨ Remove
MobileExpandViewsince desktop is fully handled (#2797) - π¨ Limit
windowDecorationHeightto desktop (#2799) - π¨ Extract all
textStylestoAppUIFont(#2805) - π¨ Replace
toByteArraywithencodeToByteArrayfor UTF-8 (#2808) - π¨ Remove redundant
encodeToStringimport (#2810) - π¨ Extract UI constants to
AppUISize,AppUIFont,AppUIColors(#2822)
Dependencies β¬οΈ
- β¬οΈ Bump
org.jsoup:jsoupfrom 1.19.1 β 1.20.1 (#2709) - β¬οΈ Bump
io.mockk:mockkfrom 1.14.0 β 1.14.2 (#2708) - β¬οΈ Bump
ktorfrom 3.1.2 β 3.1.3 (#2716) - β¬οΈ Bump
composefrom 1.8.0 β 1.8.1 β 1.8.2 (#2718, #2772) - β¬οΈ Bump
compose-pluginfrom 1.7.3 β 1.8.0 β 1.8.1 (#2719, #2771) - β¬οΈ Bump
lifecyclefrom 2.8.4 β 2.9.0-beta01 β 2.9.0 (#2717, #2721) - β¬οΈ Bump
coilfrom 3.1.0 β 3.2.0 (#2732) - β¬οΈ Bump
kotlinfrom 2.1.20 β 2.1.21 (#2733) - β¬οΈ Bump
sqldelightfrom 2.0.2 β 2.1.0, then reverted (#2750, #2764) - β¬οΈ Bump
org.jlleitschuh.gradle.ktlintfrom 12.2.0 β 12.3.0 (#2773) - β¬οΈ Bump
com.valentinilk.shimmer:compose-shimmerfrom 1.3.2 β 1.3.3 (#2781) - β¬οΈ Bump
okiofrom 3.11.0 β 3.12.0 (#2817) - β¬οΈ Bump
webp-imageiofrom 0.9.0 β 0.10.0 (#2819)
Documentation π
- π Update changelog (#2699)
- π Add DeepWiki official badge (#2785)
- π Add sponsors and GitHub star buttons to README (#2768)
Build & Tooling π·
New Contributors β¨
Full Changelog: 1.1.2.1375...1.2.0.1444
1.1.2.1375
Highlights π
-
π Migrated from Realm to SQLite (SQLDelight) β Breaking Change:
We've officially transitioned from Realm to SQLDelight for data persistence. Since Realm is no longer actively maintained, this change was essential for long-term project sustainability, better multiplatform support, and open tooling integration.
β οΈ Important: Due to differences in storage structure, this is a non-backward-compatible migration. Pasteboard data from previous versions will not be visible in the new version. However, your old data has not been deleted β it's still safely stored in the previous Realm database files. -
π± Android Version Under Review:
The Android version of CrossPaste is currently under review on Google Play. A corresponding changelog will be released when it's officially available. -
π€π₯ Import & Export Support for Pasteboard:
You can now import and export your pasteboard data, making backups, transfers, and marketing scenarios much more flexible and powerful. -
π Fully Shared
commonMainLogic with Mobile Platforms:
Core logic is now truly multiplatform. We've refactored platform-specific code to maximize reuse across desktop and mobile environments, simplifying future feature rollouts and bug fixes. -
π¨ Refreshed Logo and Branding:
The app now features a modernized logo and consistent branding across platforms, including SVG-based rendering to ensure crisp display at any resolution. -
π§© Multiple Fixes to Data Migration Logic:
We've resolved several issues related to migration paths, including path resolution, cleanup logic, and data consistency across updates.
Bug Fixes π
- π Fix iOS build failure due to missing encodeToString import (#2413)
- π Remove remaining realm information from the project (#2432)
- π Fix mobile build failure due to missing encodeToString import (#2439)
- π Fix the issue of failing to clean up pasteboard files (#2443)
- π Single device sync failure triggers unnecessary re-sync of all connected devices (#2448)
- π Fix ErrorCode code style warnings (#2450)
- π Fix missing verification code on first device connection (#2462)
- π Enhance pasteboard search functionality (#2464)
- π Fix internationalization text translation (#2466)
- π Fix toast animation issue on Android platform (#2497)
- π Fix the issue where the pasteboard favorites interface doesn't respond in a timely manner (#2483)
- π Storage settings interface cannot view saved pasteboard storage details (#2490)
- π Fix the issue where selecting paste type in the export interface doesn't respond (#2540)
- π Fix the bug caused by concurrent access to state variables (#2535)
- π Fix the issue of incorrect colors in multiple view contents (#2536)
- π Fix the issue where MutableMap doesn't support computeIfAbsent on iOS (#2538)
- π Fix X11 connection leaks (#2594)
- π Fix inconsistent icon sizes in ToastView (#2634)
- π Fix image file clipboard transfer to web applications (#2638)
- π Fix inconsistent font in color palette compared to other views (#2589)
- π Fix HTML and RTF pasteboard view rendering issues (#2592)
- π Fix all compilation warnings (#2658)
- π Fix missing dylib files in build output (#2679)
- π Fix incorrect dylib verification path (#2681)
- π Fix the storage path cannot be modified (#2682)
- π Fix Windows application restart service (#2683)
- π Fix logical errors in data migration checks (#2685)
- π Fix process termination waiting issue in Windows startup script (#2688)
- π Close database driver before data migration (#2690)
- π Fix the issue of incomplete Windows right-click menu display (#2691)
- π Fix file deletion issue in storage directory copying caused by identical hash values (#2693)
- π Fix the issue where the selected underline in TabsView does not match the text length (#2695)
- π Fix issue where Window right-click menu height doesn't account for padding (#2697)
New Features β¨
- β¨ Support pasteboard import and export (#2453)
- β¨ Add specific callbacks for key actions to support flow control (#2475)
- β¨ Notification bar supports displaying multiple messages (#2479)
- β¨ Toast view now supports displaying body content (#2491)
- β¨ Add method to PasteText for reading first 256 characters for preview (#2504)
- β¨ Support searching based on source and filename (#2527)
- β¨ Periodically clean up executed task information in the database (#2532)
- β¨ Automatically close token and hide interface after successful connection (#2631)
- β¨ First launch, automatically add tutorial pasteboard examples (#2641)
- β¨ Add marketing definition support to search interface (#2655)
- β¨ Create RatingPromptManager for callbacks on important operations (#2669)
- β¨ Add suspendRetry function for handling suspending retry operations (#2673)
UI Improvements π
- π Create DialogView and TokenView to make the overall interface composition clearer (#2481)
- π Optimized Dialog UI effects (#2555)
- π Improve font styles for empty screen prompts and paste type selection area (#2630)
- π Enhanced date picker UI (#2563)
- π Add text alignment and line height to ToastView title (#2602)
- π use new version of logo (#2608)
- π Remove icons, render all project logos using SVG (#2610)
- π Improve pasteboard display effects (#2587)
- π Center align button text in dialog buttons (#2649)
- π Text and icons in the device bar should adapt to background color changes (#2557)
Multiplatform & Refactor & Code Style π¨
- π¨ Change AppLockState to interface to allow extension by other platforms (#2411)
- π¨ Migrate from Realm to SQLDelight for data persistence (#2425)
- π¨ Move writeFile function to interface for multiplatform support (#2460)
- π¨ Support null duration in sendNotification API (#2469)
- π¨ Replace ScreenType enum with sealed interface pattern (#2499)
- π¨ Move DesktopToastManager implementation to commonMain (#2488)
- π¨ Refactor import/export implementation to facilitate mobile reuse (#2547)
- π¨ Refactor pasteboard type icons (#2552)
- π¨ Convert verbose if-else returns to expression form (#2668)
- π¨ Change SyncManager to explicit lifecycle control (#2660)
- π¨ Remove unused resource files (#2662)
- π¨ Move MainSettingsContentView to desktop implementation (#2622)
- π¨ Abstract PasteDialog to allow different implementations for desktop and mobile (#2566)
- π¨ Enhance device sync control with improved conditional checks (#2514)
- π¨ Extract nowInstant() method to improve testability (#2452)
- π¨ Replace try catch blocks with runCatching style (#2525)
- π¨ Enhance device detail page and tab styling (#2636)
- π¨ Align Koin and Koin-compose versions for consistent dependency management (#2582)
- π¨ Optimize Kotlin code using scope functions and null-safety operators (#2628)
- π¨ Add name property to ScreenType (#2559)
Dependencies β¬οΈ
- β¬οΈ Bump compose from 1.7.6 β 1.7.7 β 1.7.8 β 1.8.0
- β¬οΈ Bump com.valentinilk.shimmer:compose-shimmer from 1.3.1 to 1.3.2
- β¬οΈ Bump coil from 3.0.4 to 3.1.0
- β¬οΈ Bump io.github.oshai:kotlin-logging from 7.0.3 β 7.0.4 β 7.0.5 β 7.0.6 β 7.0.7
- β¬οΈ Bump ktor from 3.0.3 β 3.1.0 β 3.1.1 β 3.1.2
- β¬οΈ Bump org.yaml:snakeyaml from 2.3 to 2.4
- β¬οΈ Bump org.jetbrains.kotlinx:kotlinx-datetime from 0.6.1 to 0.6.2
- β¬οΈ Bump kotlin from 2.0.21 β 2.1.10 β 2.1.20
- β¬οΈ Bump org.jlleitschuh.gradle.ktlint from 12.1.2 to 12.2.0
- β¬οΈ Bump ch.qos.logback:logback-classic from 1.5.16 β 1.5.17 β 1.5.18
- β¬οΈ Bump io.mockk:mockk from 1.13.16 β 1.13.17 β 1.14.0
- β¬οΈ Bump org.jsoup:jsoup from 1.18.3 to 1.19.1
- β¬οΈ Bump jna from 5.16.0 to 5.17.0
- β¬οΈ Bump org.jmdns:jmdns from 3.6.0 to 3.6.1
- β¬οΈ Bump com.google.guava:guava from 33.4.0 β 33.4.5 β 33.4.6 β 33.4.7 β 33.4.8
- β¬οΈ Bump io.github.z4kn4fein:semver from 2.0.0 to 3.0.0
- β¬οΈ Bump androidx.compose.material3:material3 from 1.3.1 to 1.3.2
- β¬οΈ Bump com.squareup.okio:okio from 3.10.2 to 3.11.0
- β¬οΈ Bump org.jetbrains.kotlinx:kotlinx-serialization-json from 1.8.0 to 1.8.1
- β¬οΈ Bump kotlinx-coroutines from 1.10.1 to 1.10.2
- β¬οΈ Bump koin from 4.0.2 β 4.0.3 β 4.0.4
- β¬οΈ Bump io.insert-koin:koin-compose from 4.0.2 to 4.0.4