Releases: CrossPaste/crosspaste-desktop
1.2.9.2059
Release Notes - v1.2.9
Highlights 🌟
-
🏷️ Tag-Based Organization System
Replaced the simple favorite boolean with a flexible tag-based system, enabling users to organize and filter clipboard items with custom tags. Includes AppControl hooks for tag creation and pinning (#3989 #3991). -
🔄 Right-Click "Sync To" for Targeted Device Syncing
A new right-click context menu lets you sync any clipboard item directly to a specific device, giving you fine-grained control over what gets shared and where (#4019 #4020). -
🚫 Source Exclusion — Filter Clipboard by Application
You can now exclude specific applications from clipboard monitoring, preventing unwanted content from being captured. Useful for password managers, banking apps, and other sensitive tools (#3920 #3921). -
🖥️ Desktop UI Polish & Platform Refinements
Rounded window corners on Windows and Linux, adaptive QR code sizing for multi-device pairing, a redesigned About page matching the mobile layout, and async font loading to eliminate UI stutter (#4006 #4011 #3996 #4004).
Bug Fixes 🐛
- Fix
SQLITE_BUSYerrors by serializingSyncRuntimeInfoDaowrites (#3994) - Fix
IllegalStateExceptionincompressExportFiledue to flush on closed stream (#3976) - Fix SearchWindow position flash on macOS after long background (#3984 #3985)
- Fix devices list overlapping FAB and transparent sticky headers (#3983)
- Fix theme flash from light to dark on startup (#3960)
- Fix flaky
testThreeDeviceMeshby adding stabilization delay (#3978) - Fix flaky tampered ciphertext test in
EncryptUtilsTest(#3947) - Fix duplicate JAR version conflicts in MSIX packages (#4026 #4027)
- Recreate
LazyListStateon window open to reliably reset scroll position (#3962) - Refresh storage statistics immediately after cleanup and show progress dialog (#3980)
New Features ✨
- ✨ Add source exclusion service to filter clipboard by application (#3920 #3921)
- ✨ Add
GET /pull/pasteendpoint for iOS pull (#3922) - ✨ Add right-click "Sync To" context menu for syncing paste to specific device (#4019 #4020)
- ✨ Add adaptive QR code sizing for multi-device compatibility (#4010 #4011)
- ✨ Add rounded corners for main window on Windows and Linux (#4006)
- ✨ Add Windows native lazy file clipboard write via JNA delayed rendering (#3931)
- ✨ Add macOS native lazy file pasteboard write via
NSPasteboardItemDataProvider(#3930) - ✨ Auto-close token view when all pending verifiers complete verification (#3972)
UI Improvements 💄
- 💄 Redesign desktop About page to match mobile layout (#3996)
- 💄 Redesign Counter component to match prototype stepper design (#3998)
- 💄 Redesign FilledDropdown component to match prototype design (#4000)
- 💄 Extract
ScreenLayoutintoScreenProviderinterface with configurable padding (#3967) - 💄 Improve QR code layout for narrow screens (#4012 #4013)
Multiplatform · Refactor · Code Style 🔨
- 🔨 Move SQLDelight to shared module, extract DAO interfaces (#3950)
- 🔨 Extract
FilePullServicefromPullFileTaskExecutor(#3933) - 🔨 Refactor
PasteDao: extractPasteReleaseServiceandPasteTagDao(#3926) - 🔨 Extract
SyncResolverApiinterface andSyncDeviceManagerclass (#3943) - 🔨 Split
ColorUtilsintoColorParser,ColorConversion, andColorAccessibility(#3941) - 🔨 Refactor
User32.kt: extract utility functions into focused utility objects (#3935) - 🔨 Refactor
DesktopModule.kt: extract DI sub-modules into separate files (#3937) - 🔨 Extract
ImageLoadersinto individual DI-registeredImageLoaderinstances (#3958) - 🔨 Extract
SearchPasteDataandQueryPasteTaginterfaces from DAO layer (#3956) - 🔨 Extract platform-specific number keyboard options for iOS compatibility (#4002)
- 🔨 Extract
PlatformTokenTextFieldexpect/actual for iOS backspace compatibility (#4018) - 🔨 Merge
addSyncTaskandaddTargetedSyncTaskinto single method (#4021 #4022) - 🔨 Initialize shared-ui and web Gradle modules (#3954)
- 🎨 Add missing
@Volatileexplicit imports (#3918)
Performance ⚡
- ⚡ Truncate HTML DOM for side preview rendering to prevent UI lag (#3939)
- ⚡ Use content hash as
LaunchedEffectkey to avoid equals on large HTML strings (#3948) - ⚡ Async font loading and virtualized font dropdown to eliminate UI stutter (#4004)
Dependencies ⬆️
- ⬆️ Gradle Wrapper 9.3.1 → 9.4.0 (#4023)
- ⬆️ ComposNativeTray 1.0.4 → 1.1.0 (#3924)
- ⬆️ MCP Kotlin SDK Server 0.8.3 → 0.8.4 (#3969)
- ⬆️ ImageIO 3.13.0 → 3.13.1 (#3968)
- ⬆️ SnakeYAML 2.5 → 2.6 (#4008)
- ⬆️ FileKit Dialogs 0.12.0 → 0.13.0 (#4009)
Build & Tooling 👷
- 👷 Add JVM lazy clipboard verification tests (#3928)
- 👷 Fix Kotlin Default Hierarchy Template warnings for web module (#3987)
- ✅ Convert favorite boolean to tag-based system (#3989)
Full Changelog: 1.2.8.1999...1.2.9.2059
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