github rgdevment/CopyPaste v2.5.0

13 days ago

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

Don't miss a new CopyPaste release

NewReleases is sending notifications on new releases.