Öne Çıkanlar
  • Floating Paste Düğmesi Düzeltmeleri: Floating paste düğmesi ve panelindeki etkileşim sorunları giderildi. Wayland'da clipboard verileri artık KWin'in yalnızca CrossPaste odaktayken yansıttığı XWayland selection yerine doğrudan Wayland clipboard'a yazılıyor. Böylece arka planda gerçekleştirilen paste işlemleri native Wayland uygulamalarına da ulaşıyor.
  • MSIX Paketlerinde Firewall Kuralları: Domain ve private ağlarda bin\CrossPaste.exe için gelen TCP/UDP bağlantı kuralları artık doğrudan MSIX paketinde tanımlanıyor. Böylece Windows, sürümle birlikte değişen path nedeniyle her güncellemeden sonra yeniden izin istemiyor ve kullanılmayan eski firewall kuralları birikmiyor. CLI execution alias'ları da Microsoft Store'un gizli ikinci Application'ı headless olarak değerlendirmesi nedeniyle ana Application'a taşındı.
  • Search Penceresinde Çift Tıklamayla Paste ve Klavye Kontrollü Üst Çubuk: Çift tıklamayla paste işlemi artık sistemin double-click aralığına uyuyor ve Shift durumunu doğrudan tıklama işleminden algılıyor. Search penceresindeki tüm kısayollar, odaktaki bölgeye göre çalışan tek bir resolver üzerinden yönetiliyor. Type filter, tag'ler ve settings arasında klavyeyle gezinme desteği eklendi.
    Hata Düzeltmeleri
  • Wayland clipboard artık native olarak yazılıyor; böylece arka plandaki clipboard yazma işlemleri Wayland uygulamalarına ulaşıyor.
  • MSIX CLI alias'ları ana Application'a taşınarak paketin Microsoft Store tarafından kabul edilmesi sağlandı.
  • MSIX paketlerine firewall kuralları eklenerek Store güncellemelerinden sonra Windows'un tekrar tekrar izin istemesi önlendi.
  • Paste panelinde tıklanan satırın vurgulanması sağlandı.
  • macOS'ta paste panelinin ekranda kalması ve odaktaki uygulamaya paste işlemi yapması sağlandı.
  • Search penceresindeki listede Shift tuşunun durumu doğrudan tıklama işleminden okunuyor.
  • Search penceresindeki çift tıklama işlemleri artık sistemin double-click zaman aralığına uyuyor.
  • development.properties ve istenmeyen .claude klasörlerinin release JAR dosyalarına dâhil edilmesi engellendi.
    Yeni Özellikler
  • Search penceresinin üst çubuğunda klavyeyle gezinme desteği eklendi.
  • Tag chip'leri artık kendi renkleriyle gösteriliyor ve vurgulanan chip'ler daha belirgin bir kenarlığa sahip.

Öne Çıkanlar 🌟​


  • 🧩 Paste context menu’de local process plugin desteği: Bir plugin, manifest.json ile bir script veya program içeren folder’dan oluşuyor. CrossPaste, paste içeriğini stdin üzerinden plugin’e gönderiyor ve stdout output’unu clipboard, history, notification veya browser’a uyguluyor. Plugin’ler varsayılan olarak devre dışı geliyor ve Extensions → Plugins üzerinden yönetiliyor. Bundled Translate plugin ayrıca target language seçimi için bir submenu sunuyor.
  • 🔄 Peer yeniden bağlandığında kaçırılan paste’lerin alınması: Desktop, trusted peer yeniden bağlandığında incremental cursor üzerinden peer’in paste’lerini çekerek offline olduğu sırada kaçırılan içerikleri tamamlıyor. Geçersiz content içeren remote paste’ler clipboard’a yazılmak yerine discard ediliyor.
  • ⌨️ Windows installation’larında CLI artık crosspaste: Installer ve Microsoft Store package’ları hem crosspaste hem de crosspaste-cli CLI alias’larını kaydediyor. Store package artık CLI’ı da içeriyor. Control socket, MSIX tarafından virtualize edilen temp directory dışına taşındığından CLI command’ları artık uygulamanın çalışmadığını yanlış şekilde bildirmiyor.
  • 🐧 Linux’ta link/file açma, RPM package’ları ve dnf repository: Link, HTML, RTF ve file’lar xdg-open üzerinden açılıyor. Show in file manager işlemi FileManager1 üzerinden ilgili file’ı seçiyor. x86_64 ve aarch64 için EL9 RPM package’ları deb package’ın yanında yayınlanıyor ve RPM installation’ları signed dnf repository’ye bağlanıyor.
  • 📋 Paste injection artık target app’i bekliyor: macOS ve Windows’ta paste keystroke yalnızca önceki app yeniden foreground’a geldikten sonra inject ediliyor; aksi durumda kullanıcıdan manuel olarak paste yapması isteniyor. Shortcut ile tetiklenen paste’ler shortcut key’lerin bırakılmasını, X11 ise target window’un aktif olmasını bekliyor. Windows’ta keystroke tek bir SendInput call ile, macOS’ta ise flagged event’ler olarak gönderiliyor.
  • 🪟 Windows MSIX installation yeniden çalışıyor: 2.2.0 ve 2.2.1 installer package’ları, tek bir Application altında iki appExecutionAlias extension tanımlandığı için güncel Windows build’lerinde 0x80080204 error’ıyla başarısız oluyordu. Manifest artık CLI alias’ını kendi Application’ı içerisinde tanımlıyor; böylece package sorunsuz şekilde kurulup güncellenebiliyor.

Hata Düzeltmeleri 🐛​


  • Search window control’larının keyboard focus alması engellenerek tıklama sonrasında Enter’ın paste işlemini gerçekleştirmeye devam etmesi sağlandı.
  • Tüm CrossPaste window’larının Windows previous-app record’dan hariç tutulması sağlandı.
  • Main window gizlendiğinde macOS activation policy değiştirilerek search window’un ilk açılışta hemen kapanması engellendi.
  • macOS paste shortcut’ın ayrı modifier key event’leri olmadan flagged key event’ler olarak gönderilmesi sağlandı.
  • Windows paste keystroke’un reverse release order, scan code ve extended-key flag’lerle tek bir SendInput call içerisinde gönderilmesi sağlandı.
  • macOS ve Windows’ta paste injection’ın yalnızca önceki app yeniden foreground’a geldikten sonra yapılması sağlandı.
  • X11 paste keystroke inject edilmeden önce target window’un aktif olması bekleniyor.
  • Shortcut-triggered paste inject edilmeden önce shortcut key’lerin bırakılması bekleniyor.
  • macOS search focus recheck işlemlerinin AppKit üzerinde EDT’yi engellemesi düzeltildi.
  • Search window’da drag-and-drop başlamadan önce minimum drag threshold uygulanması sağlandı.
  • List’in başına eklenen en yeni paste’in tamamen görünür kalması sağlandı.
  • Geçersiz content içeren remote paste’lerin clipboard’a yazılması yerine discard edilmesi sağlandı.
  • macOS search window dismissal ve tray toggle race condition’ları düzeltildi.
  • Windows’ta plugin script failure’larının tek satır olarak raporlanması sağlandı.
  • Launcher resources directory tüm platformlarda normalize edildi ve skiko fallback kaldırıldı.
  • Windows search window activation ve dismissal davranışı daha kararlı hâle getirildi.
  • Görünür pairing card olmadığında token popup’ın unmount edilmesi sağlandı.
  • Clipboard preview’larında web URL olmayan URL’lerin atlanması sağlandı.
  • Startup grace period sırasında focus kaybedildiğinde search window’un kapatılması sağlandı.
  • Linux’ta tray icon üzerinden search window’un açılıp kapatılması sağlandı.
  • Kullanıcı pairing işlemini reddettiğinde pairing-code card’ın gizlenmesi sağlandı.
  • Plasma fractional scaling desteği düzeltildi ve Enter ile pairing confirmation desteği eklendi.
  • XWayland üzerinde Super key event’leri normalize edildi.
  • MSIX CLI execution alias’ın kendi Application’ı içerisinde tanımlanması sağlandı.
  • Windows’ta CLI socket’in user data directory’den başlatılması sağlandı.
  • Linux’ta file’ların file manager içerisinde gösterilmesi düzeltildi.
  • Linux’ta browser link’leri, HTML, RTF ve file’ların xdg-open ile açılması sağlandı.

Yeni Özellikler ✨​


  • Bubble editor, search window üzerinde modal hâle getirildi ve her zaman üstte kalması sağlandı.
  • OCR ve plugin paste’lerinin source’u CrossPaste olarak gösteriliyor ve source icon olarak CrossPaste logo’su kullanılıyor.
  • Peer yeniden bağlandığında kaçırılan paste’lerin alınması desteği eklendi.
  • Plugin submenu action’ları ve Translate için target-language picker eklendi.
  • Paste context menu üzerinden local process plugin çalıştırma desteği eklendi.
  • Local plugin’lerin taranması ve compatibility’lerinin kontrol edilmesi sağlandı.
  • Brand gradient üzerinde logo için tek stroke’lu trace animation eklendi.
  • Windows MSIX package’larında crosspaste command’ının CLI’ı başlatması sağlandı.
  • Linux’ta main window’un diğer window’lardan daha kolay ayırt edilebilmesi için outline eklendi.
  • Search window’daki sort toggle kaldırıldı.

Multiplatform · Refactor · Code Style 🔨​


  • PasteAutoPullService, PastePullTrigger olarak yeniden adlandırıldı.
  • Pairing v3 dialog state, StateFlow olarak expose edildi.
  • Paste context menu’nün PasteMenuContributor üzerinden oluşturulması sağlandı.
  • Static ve animated CrossPasteLogo composable’ları eklendi.
  • AbstractGlobalCopywriter Compose’dan bağımsız hâle getirildi ve language bilgisi StateFlow olarak yayınlanıyor.
  • MessageType içerisindeki Compose color ve icon helper’ları ui.base içerisine taşındı.

Build & CI 👷​


  • External contributor’ın PR’ı merge edildiğinde README contributor listesinin yenilenmesi sağlandı.
  • RPM channel için signed dnf repository yayınlanması sağlandı.
  • Microsoft Store MSIX’in release CI içerisinde build edilmesi ve buradan yayınlanması sağlandı.
  • Linux x86_64 ve aarch64 için EL9 RPM package’ları build edilmeye başlandı.

Dependency Güncellemeleri ⬆️​


  • Compose Multiplatform 1.12.2 ve Navigation 2.10.0-rc01 sürümlerine güncellendi.
  • Kotlin 2.4.21 sürümüne güncellendi.
  • Gradle wrapper 9.8.1 sürümüne güncellendi.
  • SQLDelight 2.4.1 sürümüne güncellendi.
  • Web lockfile içerisindeki source-map-js 1.2.2 sürümüne güncellendi.
  • imageio 3.15.2 sürümünden 3.15.3 sürümüne güncellendi.
  • com.github.ben-manes.caffeine dependency’si güncellendi. [*][ICODE]ph-css, built-in inline style parser ile değiştirildi.

Öne Çıkanlar 🌟​

  • 📋 Floating paste panel
    Clipboard history’yi listeleyen, focus’taki app’e seçilen satırı tek tıkla paste eden ve native right-click menu sunan, focus çalmayan floating button eklendi. macOS, Windows ve Linux’ta çalışıyor; Linux tarafında hem X11 hem de Wayland destekleniyor. Wayland desteği RemoteDesktop portal üzerinden sağlanıyor.
  • ⬇️ Background update download’ları (Windows portable zip)
    Periodic check yeni bir release bulduğunda update artık background’da otomatik olarak download ediliyor, verify ediliyor ve extract ediliyor. Download hızı 1 MB/s ile sınırlandırılıyor; restart ve dropped connection sonrasında HTTP range ile kaldığı yerden devam edebiliyor. Hazır olduğunda kullanıcıya tek tıkla restart seçeneği sunuluyor. General settings içine automatic download’ları kapatmak için bir switch eklendi.
  • 🔒 Password manager işaretleri ve source exclusion
    Bitwarden, 1Password, KeePassXC ve diğer password manager’ların “do not record” olarak işaretlediği copy işlemleri artık Windows, macOS ve Linux’ta dikkate alınıyor; bu içerikler ne kaydediliyor ne de sync ediliyor. Clipboard sources sayfası yeniden tasarlandı. Excluded app’ler çalışan app’ler arasından seçilebiliyor veya manuel olarak bulunabiliyor. Match rule’ları artık adı belirli bir text içeren tüm source’ları atlayabiliyor.
  • 📁 Large-file destination
    Large-file Downloads switch yerine artık destination path kullanılıyor. Backup size limit’in üzerindeki file’lar kullanıcının seçtiği folder’a, path boş bırakılırsa system Downloads folder’ına kaydediliyor. Receive tarafında aynı ada sahip file conflict’lerinde renamed record artık doğru şekilde kalıcı hâle getiriliyor ve retry mevcut bir file’ı truncate edemiyor.
  • ⚙️ Settings bilgi mimarisi
    Advanced grubu artık Clipboard adını taşıyor ve Recording, Sync ve Storage sayfalarına ayrıldı. Size limit’ler tek bir Storage section altında toplandı, Clipboard sources Recording bölümüne taşındı ve tüm row/page title’ları subtitle olmadan anlaşılacak şekilde yeniden yazıldı. Settings content area artık gri background üzerinde beyaz section card’ları kullanıyor. Theme switch ise mobildeki sun/auto/moon slider tasarımına geçti.
  • 🖥️ Devices sayfası ve multi-homed host’lar
    Devices sayfasındaki action’lar artık ekranda gösterilen durumla doğrudan uyumlu çalışıyor: local device listenin başında yer alıyor, refresh listeyi koruyor, removal confirmation istiyor ve nearby device’lar doğrudan block edilebiliyor. Peer’ler artık Windows ICS veya hotspot gibi multi-homed host’larda bağlandıkları address’i öğreniyor. Interface list network change’lerini takip ediyor ve usable address bulunmayan manual add işlemleri artık açık bir message ile başarısız oluyor.
  • 🔄 Sync reliability
    Received paste’ler yalnızca durable hâle geldikten sonra acknowledge ediliyor. Pairing initiator, v3 commit sırasında kendi address’ini publish ediyor; böylece tek yönlü mDNS network’lerinde pairing sonrasında iki yönlü sync sağlanabiliyor. Stale sync row’ların duplicate push oluşturması engellendi. WebSocket push’lar acknowledge edildiği için receiver failure artık task’i başarısız sayıyor. Push session finalize ve expiry işlemleri serialize edildi.
  • 🛡️ Data integrity ve storage reclaim
    Storage migration sırasında eski store silinmeden önce yeni path kaydediliyor. Okunamayan config artık default değerlerle overwrite edilmiyor. Silinen paste’lerin directory’leri de kaldırılıyor. Import/export işlemlerinin broken record bırakması engellendi ve managed storage dışına çıkan path’ler reddediliyor. Remote LOADING row’lar artık her zaman terminal state’e ulaşıyor. Aynı content’in concurrent release edilmesi sırasında birbirini silmesi engellendi. Logging başlamadan önce oluşan startup failure’lar artık log bırakıyor ve non-zero exit code ile kapanıyor.
  • 🔁 Relay ve sync sağlamlaştırmaları
    Clipboard relay artık non-file paste’leri de forward ediyor ve relay loop oluşmaması için seen set taşıyor. Kaldırılmış bir device’ın yarışan SyncInfo write ile tekrar eklenmesi engellendi. Failed poll işlemleri daha hızlı backoff uyguluyor. Discard edilen push’lar önceden allocate edilmiş large-file slot’larını serbest bırakıyor. Headless mode artık pairing token’ı loglamıyor.
  • 🔍 Search window
    FTS term’leri artık quote içine alındığı için punctuation search işlemini bozmuyor. Selection, query reset ve tag filter live data ile senkron kalıyor. Search window paste yapılmadan kapatılırsa focus önceki app’e geri dönüyor. Window, edit bubble ile birlikte kapanıyor ve bağlı olduğu display çıkarıldığında panel button kendini yeniden konumlandırabiliyor.
  • 🧠 Memory ve runtime
    Coil memory cache limiti artık 435 MiB’ye gereksiz şekilde şişirilmiyor. Desktop server engine Netty’den CIO’ya taşındı. Skiko’nun periodic System.gc() çağrısı concurrent cycle olarak çalışıyor. Bundled runtime artık JBR 25.
  • 🌐 UI metin revizyonu
    App genelindeki English ve Chinese metinler yeniden düzenlendi. Diğer sekiz dil de yeni source’a göre güncellendi. Ayrıca i18n consistency check’leri ve bir style guide eklendi.

Hata Düzeltmeleri 🐛​

  • 🐛 Native Wayland app’lerinden clipboard copy işlemleri artık data-control protocol üzerinden capture ediliyor.
  • 🐛 EXIF rotation uygulanmış image’ların side preview içindeki displayed size değeri artık doğru raporlanıyor.
  • 🐛 Kaldırılan device’ın yarışan SyncInfo write ile yeniden eklenmesi engellendi.
  • 🐛 Regular device poll başarısız olduğunda daha hızlı backoff uygulanıyor.
  • 🐛 Search window artık bubble ile birlikte kapanıyor ve panel button display kaybolduğunda yeniden konumlandırılıyor.
  • 🐛 Search window selection, query reset ve tag filter değerleri live data ile senkron tutuluyor.
  • 🐛 Aynı content’in concurrent release işlemlerinin birbirini silmesi engellendi.
  • 🐛 macOS pasteboard okunurken başka bir write gerçekleşirse mevcut snapshot discard ediliyor.
  • 🐛 Windows’ta CF_HTML offset’leri artık AWT’nin yazdığı byte’larla doğru eşleşiyor.
  • 🐛 Logging başlamadan önce startup başarısız olursa log oluşturuluyor ve app non-zero exit code ile kapanıyor.
  • 🐛 Storage migration sırasında eski store silinmeden önce yeni storage path kaydediliyor.
  • 🐛 Staging sırasında .exe kaybolmuş portable zip update’lerin uygulanması engellendi.
  • 🐛 Paste directory’leri düzgün reclaim ediliyor ve import/export işlemlerinin broken record bırakması engellendi.
  • 🐛 Remote LOADING row’lar terminal state’e ulaştırılıyor ve ilgili file’ların orphan kalması engelleniyor.
  • 🐛 Non-file paste’ler relay ediliyor ve clipboard relay loop oluşmayacak şekilde çalışıyor.
  • 🐛 Discard edilen push’ların önceden allocate edilmiş large-file slot’ları siliniyor.
  • 🐛 Search window paste yapılmadan kapatılırsa focus önceki app’e geri dönüyor.
  • 🐛 Headless mode’da pairing token’ın loglanması durduruldu.
  • 🐛 MCP üzerinden eklenen file’lar artık original path üzerinden referans ediliyor.
  • 🐛 UI üzerinden bir paste edit edildiğinde companion flavor’lar refresh ediliyor.
  • 🐛 Tag veya paste silindiğinde ilişkili tag link’leri de kaldırılıyor.
  • 🐛 Okunamayan app config hiçbir zaman default değerlerle overwrite edilmiyor.
  • 🐛 CrossPaste storage dışına copy edilen file’ın owning record’u artık korunuyor.
  • 🐛 Managed storage dışına çıkan path içeren import record’lar reddediliyor.
  • 🐛 FTS search term’leri quote içine alındığı için punctuation artık search’ü bozmuyor.
  • 🐛 Portable update için offline trigger, mirror affinity, cross-mirror resume ve rate limiter burst sorunları düzeltildi.
  • 🐛 Pairing v3 commit sırasında initiator kendi address’ini kaydediyor; böylece mDNS üzerinden onu hiç görmeyen acceptor yine de bağlantı kurabiliyor.
  • 🐛 Linux paste panel menu için multi-monitor placement, clipping ve focus handling düzeltildi.
  • 🐛 Linux’ta kullanıcı başka yere tıkladığında floating button menu artık kapanıyor.
  • 🐛 Pointer exit event gelmese bile Linux’taki floating button yeniden fade olabiliyor.
  • 🐛 URL paste item artık plain text olarak da sunuluyor; böylece non-Java app’ler de paste edebiliyor.
  • 🐛 GuidePasteDataService.initData artık host startup code’a exception fırlatmıyor.
  • 🐛 Target alınabilecek X11 window bulunamazsa kullanıcıya manuel paste yapması gerektiği bildiriliyor.
  • 🐛 Linux’taki paste panel window’ları artık override-redirect olarak oluşturuluyor; böylece tıklama target app’in focus’unu koruyor.
  • 🐛 Linux’ta paste panel button menu’süne opaque theme background eklendi.
  • 🐛 Windows’ta paste panel corner’ları ve button menu glyph’leri düzeltildi.
  • 🐛 CI flake’i gidermek için ws-session sync handler’ları test dispatcher üzerinde çalıştırılıyor.
  • 🐛 macOS application menu içindeki About item artık About sayfasını açıyor ve title localized ediliyor.
  • 🐛 About sayfası artık scroll edilebiliyor; app name ve version alanlarının sıkışması engellendi.
  • 🐛 Large-file destination picker yalnızca storage path manager bulunan platformlarda gösteriliyor.
  • 🐛 Packaged build’lerin JBR 25 ile başlayabilmesi için --add-opens tek token olarak geçiriliyor.
  • 🐛 macOS 26’da Desktop.browse deep link’i düşürdüğü için Accessibility privacy pane artık open(1) üzerinden açılıyor.
  • 🐛 Device name marker’a layout modifier ile limit uygulandı; böylece row intrinsic olarak measure edilebiliyor.
  • 🐛 Update site’taki sabit isimli file’ların 30 gün cache’lenmesi engellendi.
  • 🐛 Device name marker, title line’ın yarısıyla sınırlandı; böylece device name için ayrılan alanı tüketmesi engellendi.
  • 🐛 Side preview’daki remember block’lar artık gerçekten okudukları data’ya göre key ediliyor.
  • 🐛 HTML text yalnızca body içinden extract ediliyor, trim ediliyor ve entity’ler unescape ediliyor.
  • 🐛 Network setting interface list’i artık network change’lerinde refresh ediliyor.
  • 🐛 Peer usable address belirtmiyorsa manual add işlemi artık başarısız oluyor.
  • 🐛 /sync/syncInfo, peer’in bağlandığı address ile yanıt veriyor.
  • 🐛 Browser extension, yeniden adlandırılan i18n key’lerine geçirildi ve reference’ları kontrol edildi.
  • 🐛 Push session finalize ve expiry discard işlemleri tek terminal lock altında yürütülüyor.
  • 🐛 Received paste’ler yalnızca durable hâle geldikten sonra acknowledge ediliyor.
  • 🐛 MCP server lifecycle daha sağlam hâle getirildi ve start failure’lar settings içinde gösteriliyor.
  • 🐛 JmDNS lifecycle interface başına isolate edildi ve nearby presence discovery source’a bağlandı.
  • 🐛 Windows network warning dismissal artık restart sonrasında da korunuyor.
  • 🐛 Interface resolve edilirken discovery toggle artık dikkate alınıyor ve host’ların son octet’e göre yanlışlıkla drop edilmesi engellendi.