Skip to content

Releases: rgdevment/CopyPaste

v2.6.3

10 Jun 03:17
v2.6.3
55dac09

Choose a tag to compare

Problem (unresolved across 4 releases):
When copying an image and pasting it into a web app that treats the paste
as a file (Gemini, ChatGPT, uploaders), Chromium always assigned the same
fixed name 'imagen.png'. A second distinct image collided and the site
rejected it with 'la imagen imagen.png ya existe'. The name was invented by
Chromium, not the app, which is why adding/removing CF_HDROP changed nothing.

Fix:
SetImageToClipboard now also offers the image as a named virtual file with a
unique .png name (CFSTR_FILEDESCRIPTORW + CFSTR_FILECONTENTS) alongside
CF_DIBV5, via the plain SetClipboardData flow (no OLE). Chromium hands that
unique name to the uploader and the collision is gone. Inline paste (image
editors, rich-text) keeps taking the bitmap.

Validated in Gemini: two distinct images upload without error; inline OK.

Also includes:

  • Copy icon in card hover actions (same action as the context menu).
  • Self-write guard via GetClipboardOwner() (no longer drops external copies).
  • processFiles ignores paths inside the internal images store.

Full Changelog: v2.6.2...v2.6.3

v2.6.2

09 Jun 20:37
v2.6.2
c687dd6

Choose a tag to compare

  • Remove unconditional CF_HDROP from SetImageToClipboard: browsers/chats
    were pasting the file with the shell's generic 'imagen' name, colliding
    on the second image. Restores inline-bitmap paste and fixes the
    read-path hash/dedup inconsistency on self-writes.
  • Self-write guard now also checks GetClipboardOwner() so an external copy
    made right after our own write is no longer lost.
  • processFiles ignores HDROP paths inside the app's own images store.
  • Add copy icon to clipboard card hover actions.

Full Changelog: v2.6.1...v2.6.2

v2.6.1

08 Jun 22:55
v2.6.1
3fbea33

Choose a tag to compare

Fixes the UI freeze when searching large lists: card text layout bounded to
a preview, metadata/ext parsing memoized, and source-file existence checks
moved off build(). The database already runs off the UI thread.

Severity: patch
Min-Supported: 2.3.0

Full Changelog: v2.6.0...v2.6.1

v2.6.0

08 Jun 14:10
v2.6.0
32907fb

Choose a tag to compare

Adds a Copy action (puts an item on the clipboard and moves it to the top
without pasting). Fixes the UI freeze when searching large lists (database
moved off the UI thread) and the Windows image-paste name collision in
Explorer/Desktop (now offers CF_HDROP with the file's unique name).
Hardening: error handling, stale temp-file cleanup, XDG autostart, MSIX
reveal, and native thumbnail-provider dedup.

Severity: recommended
Min-Supported: 2.3.0

Full Changelog: v2.5.0...v2.6.0

v2.5.0

02 May 02:37
v2.5.0
ecd4d56

Choose a tag to compare

Multi-monitor positioning, window position persistence, and clipboard
robustness improvements.

  • Windows: fix multi-monitor positioning. The window now opens on the
    monitor where the cursor lives, regardless of per-monitor DPI mix
    (e.g. 4K@150% + 1080p@100%). Two underlying issues are addressed:
    (a) bypass window_manager plugin's double-DPR scaling in setPosition
    via direct Win32 SetWindowPos/FindWindowW/GetWindowRect,
    (b) fix latent FFI typedef bug for MonitorFromPoint whose POINT
    argument was being passed as two Int32s, breaking the x64 ABI and
    silently making cursor monitor detection always fall back to the
    primary work area.
  • Window position persistence: new "Remember window position" toggle in
    Settings → Behavior (default OFF). When enabled, the window reopens at
    the last position used, including across hide/show, settings entry/exit,
    and gate mode. Saved coordinates are validated against current visible
    monitors before restoration; out-of-range or off-screen values fall back
    to cursor positioning. macOS/Linux include a 50ms post-set verification
    with auto-recovery.
  • Clipboard image handling: BITMAPV5 support added so wider/taller images
    copied from modern apps are no longer dropped or corrupted (#43).
  • Concurrency: config writes are now serialized through a single chained
    future, eliminating last-writer-wins races between window-position
    persistence and other settings (e.g. onboarding flags, accessibility).
  • Robustness: race fix in hide() (visibility flag flipped before async
    position read), FindWindowW scoped to the Flutter window class to
    avoid matching foreign processes named "CopyPaste", sane-range guard
    on saved coordinates rejects NaN, infinities and Windows minimized
    sentinels (-32000), and "Reset to Defaults" now clears the persisted
    coordinates.
  • Build: drop sqlite3 and sqlite3_flutter_libs (#45) and prune them
    from iOS Podfile.lock; lower image build footprint and dependency
    surface on macOS/iOS.
  • Tests: 16 new cases covering the three new AppConfig fields
    (defaults, JSON round-trip, copyWith sentinel for nullable, save/load),
    plus 12 new cases for cross-platform sane-range validation.

Severity: recommended
Min-Supported: 2.3.0

What's Changed

  • fix: enhance image processing for clipboard handling with BITMAPV5 su… by @rgdevment in #43
  • chore: update dependencies and remove sqlite3_flutter_libs plugin by @rgdevment in #45
  • feat: add window position persistence feature with settings toggle by @rgdevment in #46

Full Changelog: v2.4.1...v2.5.0

v2.4.1

27 Apr 15:46
v2.4.1
e8c20a1

Choose a tag to compare

What's Changed

  • chore: add msix_config for startup_task and improve error logging in … by @rgdevment in #42

Full Changelog: v2.4.0...v2.4.1

v2.4.0

25 Apr 05:04
d197ca6

Choose a tag to compare

Primary focus of this release is Linux: new native distribution channels,
deeper platform integration, and onboarding parity with Windows/macOS.
Windows and macOS are unchanged at runtime.

Linux distribution

  • Native apt/dnf/zypper repositories via the openSUSE Build Service
    (Debian 12/13, Ubuntu 22.04/24.04, Fedora 40/41, openSUSE Tumbleweed).
  • Self-updating AppImage via AppImageUpdate: each release now embeds a
    .zsync URL and ships the companion .zsync file.
  • New portable tarball artifact (CopyPaste--linux-x64.tar.gz)
    used by OBS and available for manual installs.

Linux platform integration

  • Native thumbnail provider and desktop notifier.
  • Refactored X11 clipboard activation and pasting.
  • Linux cursor monitoring and input focus retrieval.
  • Enhanced tray functionality with capability warnings.
  • Detailed error handling on global hotkey registration.
  • Clipboard change handling simplified (debounce removed on Linux).
  • Refactored Linux session detection with broader test coverage.

Linux onboarding & UX

  • Dedicated desktop onboarding screen.
  • Updated hotkey label handling.
  • Default shortcut fix for Linux/X11.

Release pipeline

  • Release manifest is now driven by the tag message (Severity,
    Min-Supported, Blocked trailers). See RELEASING.md for the full flow.
  • GitHub Release now publishes AppImage+zsync, .deb, .rpm, portable
    tarball and SHA256SUMS in one shot.
  • OBS publish job wired into the pipeline (tag-driven rebuild).

Documentation

  • README: reorganized Linux install section (OBS → Homebrew →
    self-updating AppImage → manual) with no hype icons, plus updated
    download table and platform matrix.
  • SECURITY.md: documents the OBS-signed repositories and the AppImage
    delta-update trust chain.
  • New RELEASING.md: single source of truth for how releases are cut.

Severity: recommended
Min-Supported: 2.3.0

What's Changed

Full Changelog: v2.3.0...v2.4.0

v2.3.0

24 Apr 13:22

Choose a tag to compare

  • Native thumbnail provider for macOS and Windows (WIC-based on Windows,
    NSImage-based on macOS) integrated into ClipboardService

  • Asynchronous image processing queue (ImageProcessingQueue) with async
    disposal and retry logic for clipboard capture

  • ThumbnailQueue: stale-item handling, logging, and new isIdle property
    for accurate queue-state inspection

  • New DB fields: thumbPath and sourceModifiedAt on ClipboardItem with
    automatic schema migration

  • WebP encoding support added and then removed in favour of native
    platform codecs; BMP retained as universal fallback for unsupported formats

  • Improved orphan-image cleanup and safety checks for file deletion in
    ClipboardService

  • CleanupService: image quota enforcement (imagesQuotaMB) to cap disk
    usage by stored images

  • CleanupService: tracking of broken external references across service
    restarts; thumbnails are preserved during cleanup passes

  • Paste-preset options and reset-filters-on-show toggle in Settings

  • Multimedia and cleanup settings exposed in onboarding and Settings screens

  • Simplified onboarding: removed personalisation step to reduce friction

  • AppConfig extended with keepBrokenItemsDays, resetFiltersOnShow and
    imagesQuotaMB fields

  • Release manifest service with Ed25519 signature verification

  • Blocked-version detection with InstallChannelDetector and UrlHelper
    platform overrides; blocked-version screen with per-channel upgrade URLs

  • Update-available store messages clarified in English and Spanish

  • release-manifest.json: latest=2.3.0, minimumSupported=2.3.0,
    blockedVersions=["2.2.6"], severity=critical

  • Fix async disposal order in service teardown to avoid race conditions

  • Fix safety checks preventing accidental deletion of unrelated files

  • Fix BMP fallback path when clipboard image format is unsupported

  • Codecov: PR comments enabled with diff-per-file and per-flag breakdown;
    require_changes=true to avoid noise on doc-only PRs

  • GitHub Actions: pull-requests: write permission added for bot comments

  • Removed auto_updater_macos / Sparkle dependency from Podfile.lock

  • New/extended tests: ImageProcessingQueue, ThumbnailQueue, MacOS/Windows
    native thumbnail providers, SQLite migration, thumb path retrieval,
    ClipboardService reclassification, SettingsScreen smoke tests,
    AppConfig (keepBrokenItemsDays, resetFiltersOnShow, imagesQuotaMB),
    BlockedVersionScreen with channel URL resolution

What's Changed

  • fix: retain BMP fallback for unsupported image formats in clipboard p… by @rgdevment in #40

Full Changelog: v2.2.6...v2.3.0

v2.3.0-beta.1

24 Apr 12:04
acfd484

Choose a tag to compare

v2.3.0-beta.1 Pre-release
Pre-release
  • Native thumbnail provider for macOS and Windows

  • Background thumbnail queue with stale-detection and manual refresh

  • Tracks thumbPath and sourceModifiedAt on clipboard items

  • Async image processing queue with configurable max-bytes gate

  • Retain BMP fallback for unsupported formats (SVG, PDF, etc.)

  • Enhanced safety checks for file deletion (out-of-scope path guard)

  • Image quota enforcement: purge oldest images when storage exceeds limit

  • Track broken external references (brokenSince) and auto-purge after configurable days

  • New updateKeepBrokenCallback and updateImagesQuotaCallback hooks

  • Release manifest service with signature verification

  • InstallChannelDetector and UrlHelper with platform overrides

  • Blocked-version screen improvements

  • Paste preset options and reset-filters-on-show setting

  • Multimedia and cleanup settings in onboarding

  • isIdle property on ThumbnailQueue for UI state

  • Remove onboarding personalization options

  • Remove WebP encoding (reverted)

  • Improved code formatting and readability across services

Full Changelog: v2.2.6...v2.3.0-beta.1

v2.2.6

23 Apr 19:47
c380163

Choose a tag to compare

Standalone:

  • Skip registry write if exe does not exist on disk
  • Skip registry write when running from a Flutter build folder (\build\windows)
  • Auto-remove stale HKCU...\Run entry in both cases

MSIX:

  • Remove any leftover HKCU...\Run entry from previous standalone installs on launch
  • Replace openWindowsStartupSettings workaround with real WinRT StartupTask API
  • Add C++ MethodChannel (copypaste/startup_task) via cppwinrt for getState / enable / disable
  • Handle DisabledByUser state by surfacing ms-settings:startupapps as fallback

Tests:

  • MsixStartupTask: state parsing, method dispatch, taskId forwarding, PlatformException handling
  • StartupHelper: isDevBuildPath edge cases, MSIX channel interaction

Full Changelog: v2.2.5...v2.2.6