Skip to content

Releases: JochenYang/iScrcpy

1.2.5

17 Feb 15:08

Choose a tag to compare

Fixed

  • Fixed device status flickering to offline during app startup - now only updates when state actually changes
  • Fixed device status not updating after auto-connect - now properly notifies frontend on successful connection
  • Fixed device status becoming offline on page refresh - frontend now preserves last known state
  • Fixed tracker add/remove events sending incomplete device data - now includes proper name, type, and status fields
  • Fixed auto-connect not working for previously connected devices - now connects devices with isConnected=true

Changed

  • Device state synchronization: only notifies frontend when there's an actual state change (no intermediate states)
  • Auto-connect now targets previously connected devices (isConnected=true) instead of just autoConnect=true
  • Improved startup sequence: ADB server starts first, then tracker initializes, then auto-connect runs
  • Added notifiedDevices set to prevent duplicate notifications to frontend

1.2.4

11 Feb 09:11

Choose a tag to compare

Fixed

  • Fixed race condition in device loading when rapidly refreshing device list
  • Added concurrency control to prevent state overwrite from simultaneous loadDevice calls
  • Fixed IPC listener cleanup using removeAllListeners which could accidentally remove other component listeners
  • Improved listener management with listenerMap for precise cleanup
  • Fixed WiFi device auto-reconnect timing issue - now waits 10 seconds after disconnect before attempting reconnect
  • Added 2-second delay before WiFi reconnect to prevent triggering during network instability
  • Fixed TypeScript type error in preload.ts listener callback type

Changed

  • Device auto-reconnect now only triggers on manual refresh, not immediately after disconnect
  • WiFi devices must be previously connected before attempting reconnect

1.2.3

22 Jan 16:10

Choose a tag to compare

Fixed

  • Fixed device connection status not updating when device disconnects (WiFi/USB)
  • Fixed stale "connected" status persisting after device disconnection
  • Device status now updates immediately when device tracker detects disconnect event
  • Fixed device status not updating on visibility change (tab switch)
  • Fixed ADB daemon failure not clearing connected devices state

Changed

  • Optimized startup: device status restored from history immediately, no initial ADB poll
  • Device connection state now determined by ADB only when status actually changes
  • WiFi devices now mark as offline after 5 seconds of disconnection timeout
  • Postinstall script changed from electron-vite postinstall to electron-vite build

1.2.2

15 Jan 15:48

Choose a tag to compare

Fixed

  • Fixed custom settings (FPS, Bitrate, Resolution) not synchronizing immediately when switching to "Custom" mode in Display settings
  • Improved "Custom" option visibility in dropdown menus by adding explicit labels
  • Completed "Custom" label translations across all supported languages (ES, FR, JA, KO, TR)

1.2.1

15 Jan 15:25

Choose a tag to compare

Fixed

  • Fixed scrcpy launch parameters missing --video-encoder and --audio-encoder, ensuring selected hardware encoders are actually used
  • Fixed video encoder list not showing in Encoding settings when no device is initially detected (added persistent dropdown with lazy loading)

1.2.0

14 Jan 16:51

Choose a tag to compare

Fixed

  • Fixed several empty catch blocks across Electron main process for better error traceability
  • Fixed Set serialization issues in device storage affecting state persistence
  • Fixed TypeError in DeviceCard/DevicePage by migrating from Set.has() to Array.includes()
  • Fixed GitHub Actions build failure on macOS by disabling mandatory code signing requirements
  • Improved error handling by replacing any types with unknown and adding proper type checks

Changed

  • Converted synchronous file writes to asynchronous debounced writes to prevent blocking the main process
  • Optimized device polling interval (increased from 5s to 10s) to reduce CPU and network usage
  • Extracted hardcoded configuration values (polling intervals, log retention) into maintainable constants

Performance

  • Optimized React rendering in DevicePage using useMemo for derived device lists
  • Wrapped event handlers in useCallback to prevent unnecessary child component re-renders
  • Cached scrcpy command preview calculation using useMemo

1.1.10

13 Jan 06:15

Choose a tag to compare

Fixed

  • Fixed toast notifications showing previous language after switching app language
  • Fixed ADB processes not being killed on app quit (cleanup was skipped due to race condition)
  • Removed redundant isCleaningUp flag setting in quit-app handler

1.1.9

11 Jan 05:43

Choose a tag to compare

Fixed

  • Fixed duplicate toast notifications when stopping mirroring (toast appeared twice in different languages)
  • Toast now properly prevents overlapping when triggered rapidly
  • Unified toast implementation across DevicePage and DeviceCard components

Added

  • Added shared toast utility with type support (success, error, warning, info)
  • Toast styles now support different visual types with proper theme colors

1.1.8

08 Jan 16:49

Choose a tag to compare

Added

  • Added hardware encoder selection support for improved WiFi streaming performance
  • Users can now select from available device encoders via dropdown menu
  • Recommended hardware encoders (c2.qti., OMX.qcom.) are marked with ★ indicator
  • Encoder info display shows current selected encoder name
  • Click-to-load approach (encoders load on dropdown click for better UX)
  • Added multi-language translations for encoder UI (7 languages)

Fixed

  • Fixed saved encoder value not displaying after page reload
  • Fixed encoder parsing issue when loading saved settings
  • Removed debug console.log statements from EncodingPage component

Changed

  • Updated videoEncoder description text to guide users to hardware encoder selection
  • Improved encoder loading UX with toast notification when encoders are loaded
  • Encoder selection now uses "codec & encoder" format internally for better compatibility

1.1.7

07 Jan 13:35

Choose a tag to compare

Fixed

  • Fixed custom resolution/frameRate/bitrate not persisting after restart (state management bug)
  • Fixed custom resolution label showing "Max Resolution" instead of "Custom Resolution"
  • Fixed installer file deletion failing on Windows due to file locking
  • Changed default video buffer to 0 (disabled for real-time mirroring)
  • Fixed resolution custom option not showing input box

Changed

  • Removed auto-generation of version.json during release workflow (manual update required)
  • Optimized event listener binding in DevicePage (bind once instead of re-binding on state changes)
  • Optimized startup process: parallel ADB start and device tracker initialization
  • Reduced auto-connect delay from 500ms to 300ms