Skip to content

Releases: CrossPaste/crosspaste-desktop

1.2.9.2059

11 Mar 12:20
6cb7e4e

Choose a tag to compare

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_BUSY errors by serializing SyncRuntimeInfoDao writes (#3994)
  • Fix IllegalStateException in compressExportFile due 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 testThreeDeviceMesh by adding stabilization delay (#3978)
  • Fix flaky tampered ciphertext test in EncryptUtilsTest (#3947)
  • Fix duplicate JAR version conflicts in MSIX packages (#4026 #4027)
  • Recreate LazyListState on 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/paste endpoint 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 ScreenLayout into ScreenProvider interface 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 FilePullService from PullFileTaskExecutor (#3933)
  • 🔨 Refactor PasteDao: extract PasteReleaseService and PasteTagDao (#3926)
  • 🔨 Extract SyncResolverApi interface and SyncDeviceManager class (#3943)
  • 🔨 Split ColorUtils into ColorParser, ColorConversion, and ColorAccessibility (#3941)
  • 🔨 Refactor User32.kt: extract utility functions into focused utility objects (#3935)
  • 🔨 Refactor DesktopModule.kt: extract DI sub-modules into separate files (#3937)
  • 🔨 Extract ImageLoaders into individual DI-registered ImageLoader instances (#3958)
  • 🔨 Extract SearchPasteData and QueryPasteTag interfaces from DAO layer (#3956)
  • 🔨 Extract platform-specific number keyboard options for iOS compatibility (#4002)
  • 🔨 Extract PlatformTokenTextField expect/actual for iOS backspace compatibility (#4018)
  • 🔨 Merge addSyncTask and addTargetedSyncTask into single method (#4021 #4022)
  • 🔨 Initialize shared-ui and web Gradle modules (#3954)
  • 🎨 Add missing @Volatile explicit imports (#3918)

Performance ⚡

  • ⚡ Truncate HTML DOM for side preview rendering to prevent UI lag (#3939)
  • ⚡ Use content hash as LaunchedEffect key 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

17 Feb 07:01
c1c2dce

Choose a tag to compare

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 runBlocking UI 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 rawCode mapping 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 isLoading state 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 IconData and Material Symbols (#3740)
  • 🔨 Update CLAUDE.md with 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.sleep with runTest to resolve flaky test results (#3858)

Full Changelog: 1.2.7.1883...1.2.8.1999

1.2.7.1883

25 Jan 11:13
9a86a46

Choose a tag to compare

🚀 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 Host reserved header which caused communication timeouts in certain network environments. (#3691)

📝 Other Improvements

  • Compatibility: Fixed cursorColor method for better Android compatibility. (#3681)
  • UI: Fixed FileBottomSolid size calculation logic. (#3686)
  • Internal: New getNoDeletePasteDataFlow for better multiplatform data handling. (#3688)

Full Changelog: 1.2.6.1876...1.2.7.1883

1.2.6.1876

21 Jan 13:40
63a33aa

Choose a tag to compare

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 the SidePasteTitleView, 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 testDecryptionWithWrongKeyPair unit test (#3568)
  • Resolve configuration cache issues for copyDevProperties task (#3577)
  • Fix AlwaysOnTop button theme color and size inconsistencies (#3606)
  • Avoid special fonts in DeviceDisplayName to 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 TrustByToken and 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 AnimatedSegmentedControl component (#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 IncompatibleSection to 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 DesktopMenuBar component (#3636)
  • 🔨 Remove deprecated color contrast support from theme system (#3625 #3632)
  • 🔨 Clean up unused code and i18n entries after refactoring (#3575 #3596)

Performance ⚡

  • ⚡ Optimize DesktopPasteBonjourService discovery and throttling logic (#3521)
  • ⚡ Track connected host addresses and refactor PasteClient headers (#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-26 in build-release workflow (#3670)
  • 👷 Sync JBR version in conveyor.conf with 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

19 Dec 02:06
c8fa7ad

Choose a tag to compare

🚀 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

Full Changelog: 1.2.4.1778...1.2.5.1787

1.2.4.1778

16 Dec 13:21
9cc7a65

Choose a tag to compare

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 FileBottomSolid to display file info in preview (#3436)
  • 💄 Refactored UrlBottomSolid for 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 AppSizeValue architecture (#3410)
  • 🔨 Refactor UI context management and optimize window state access (#3419)
  • 🔨 Refactor bottom solid components to support multiplatform usage (#3440)
  • 🔨 Replace jSystemThemeDetector with native Compose API (#3446)
  • 🔨 Refactor NavigationEvent from sealed class to interface pattern (#3454)

Performance ⚡

  • ⚡ Optimize UI performance by eliminating unnecessary state (#3399)
  • ⚡ Add @Stable annotation to PasteDetailInfoItem (#3406)
  • ⚡ Optimize image loading and UI performance across multiple components (#3408)
  • ⚡ Optimize AppSourceIcon layout 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

25 Nov 01:42
c834946

Choose a tag to compare

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.properties not being updated in i18n batch script (#3245)
  • Correct middle ellipsis logic for URL text display (#3249)
  • Fix NPE in writePasteboard when 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/html and application/xml only (#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 💄

  • 💄 Add extension management UI (#3291)
  • 💄 Add guidance for first-time OCR usage (#3321)

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 UrlBottomSolid implementation for multi-platform reuse (#3251)
  • 🔨 Rename native target to nativeApp to avoid template conflicts (#3264)
  • 🔨 Extract SidePasteTitleView to separate file (#3281)
  • 🔨 Modify sync address update strategy to use merge instead of overwrite (#3322)
  • 🔨 Remove JvmStatic annotation from commonMain (#3352)
  • 🔨 Abstract ResourcesClient implementation 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

11 Sep 02:38
2713d7e

Choose a tag to compare

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 AsyncImagePainter state 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 hslToColor in getAdaptiveColor (#3207)
  • Improve error handling in paste data deserialization (#3213)
  • Ensure PasteItem.fromJson catches 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 toRGBString compatible with iOS (#3069)
  • 🔨 Move JsonUtils to commonMain for cross-platform reuse (#3085)
  • 🔨 Refactor build.gradle.kts and reorder dependencies (#3087)
  • 🔨 Migrate shared code to shared module in preparation for CLI module creation (#3089)
  • 🔨 Rewrite all toByteArray calls to encodeToByteArray (#3112)
  • 🔨 Remove PasteboardViewProvider interface to simplify implementation (#3124)
  • 🔨 Add PasteDataScope and refactor preview views structure (#3130)
  • 🔨 Refactor pasteboard-related UI using PasteDataScope to avoid repeatedly passing PasteData between UI functions (#3136)
  • 🔨 Optimize PasteDataScope related code (#3138)
  • 🔨 Abstract ResourcesClient to support multi-platform resource reading (#3150)
  • 🔨 Rename ImageWriter to imageHandler and 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 SyncPollingManager to use atomic instead of @Volatile for multiplatform support (#3179)
  • 🔨 Implement screen navigation and switching in base class for multi-platform reuse (#3185)
  • 🔨 Rewrite ColorUtils based on ph-css source code (#3191)
  • 🔨 Make border parameter optional in HighlightedCard component (#3187)
  • 🔨 Update theme definitions to use non-deprecated JewelTheme API (#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 alt text 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 SecureMessageProcessor unit tests (#3106)
  • ✅ Add comprehensive unit tests for DefaultPasteSync ProcessManager and PasteSingleProcessImpl (#3108)
  • ✅ Enhance GeneralSyncManager unit tests with scope updates (#3110)

Full Changelog: 1.2.1.1551...1.2.2.1640

1.2.1.1551

26 Jul 02:53
79d3617

Choose a tag to compare

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, revamped AppConfig, RenderingService, and general code structure (#2890 #2866 #2894 #2892)

Performance ⚡

  • ⚡ Faster page‑title / image extraction and smoother decoration‑bar drag (#2958 #3009)

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 📝

  • 📝 Added CLAUDE.md and refreshed README (#2908 #2854)

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 ✨

  • @amir1376 implemented the new font‑settings feature (#2961) — welcome aboard!

Full Changelog: 1.2.0.1444...1.2.1.1551

1.2.0.1444

10 Jun 13:48
e3a7275

Choose a tag to compare

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
    Introduced ensureHtmlCharsetUtf8 to 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 reactive SyncRuntimeInfoDao flows.

  • 🐧 Ubuntu .deb Package Support
    Official .deb installation 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 AbstractMethodError in ExpandView (#2727)
  • 🐛 Correct background and icon color contrast (#2742)
  • 🐛 Fix ExpandView compilation issue on Android Compose (#2738)
  • 🐛 Revert TextOverflow to Ellipsis from Clip for better layout (#2812)
  • 🐛 Fix UI regression issues after refactor (#2824)
  • 🐛 Fix rememberCoroutineScope exits due to partial UI switching (#2839)
  • 🐛 Fix device sync control settings being unintentionally overridden (#2835)
  • 🐛 Fix SQLITE_BUSY caused by bulk deletion (#2840)
  • 🐛 Fix incorrect icon color in search window (#2793)

New Features ✨

  • ✨ Add auto-scroll support in ExpandView component (#2795)
  • ✨ Automatically update guide when switching languages (#2760)
  • ✨ Add recommendation sharing feature (#2770)
  • ✨ Auto-generate missing text from HTML/RTF clipboard (#2828)
  • ✨ Add ensureHtmlCharsetUtf8 method (#2831)

UI Improvements 💄

  • 💄 Create HighlightedCard display effect (#2703)
  • 💄 Add vertical alignment to DialogButtonsView button 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 DialogButtonsView spacing (#2801)
  • 💄 Implement spacing and sizing system (#2803)
  • 💄 Remove CursorWait usage for better UX (#2842)
  • 💄 Improve ToastView message 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 DesktopAppSize through DI framework (#2756)
  • 🔨 Rename GlobalCopywriter with platform prefix (#2762)
  • 🔨 Remove MobileExpandView since desktop is fully handled (#2797)
  • 🔨 Limit windowDecorationHeight to desktop (#2799)
  • 🔨 Extract all textStyles to AppUIFont (#2805)
  • 🔨 Replace toByteArray with encodeToByteArray for UTF-8 (#2808)
  • 🔨 Remove redundant encodeToString import (#2810)
  • 🔨 Extract UI constants to AppUISize, AppUIFont, AppUIColors (#2822)

Dependencies ⬆️

  • ⬆️ Bump org.jsoup:jsoup from 1.19.1 → 1.20.1 (#2709)
  • ⬆️ Bump io.mockk:mockk from 1.14.0 → 1.14.2 (#2708)
  • ⬆️ Bump ktor from 3.1.2 → 3.1.3 (#2716)
  • ⬆️ Bump compose from 1.8.0 → 1.8.1 → 1.8.2 (#2718, #2772)
  • ⬆️ Bump compose-plugin from 1.7.3 → 1.8.0 → 1.8.1 (#2719, #2771)
  • ⬆️ Bump lifecycle from 2.8.4 → 2.9.0-beta01 → 2.9.0 (#2717, #2721)
  • ⬆️ Bump coil from 3.1.0 → 3.2.0 (#2732)
  • ⬆️ Bump kotlin from 2.1.20 → 2.1.21 (#2733)
  • ⬆️ Bump sqldelight from 2.0.2 → 2.1.0, then reverted (#2750, #2764)
  • ⬆️ Bump org.jlleitschuh.gradle.ktlint from 12.2.0 → 12.3.0 (#2773)
  • ⬆️ Bump com.valentinilk.shimmer:compose-shimmer from 1.3.2 → 1.3.3 (#2781)
  • ⬆️ Bump okio from 3.11.0 → 3.12.0 (#2817)
  • ⬆️ Bump webp-imageio from 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 👷

  • 👷 Upgrade JBR to 21.0.7b968.13 (#2745)
  • 👷 Upgrade Conveyor to 18.1 and JDK to 21 (#2816)

New Contributors ✨

Full Changelog: 1.1.2.1375...1.2.0.1444