Releases: JochenYang/iScrcpy
Releases · JochenYang/iScrcpy
1.2.5
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
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
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 postinstalltoelectron-vite build
1.2.2
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
Fixed
- Fixed scrcpy launch parameters missing
--video-encoderand--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
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
anytypes withunknownand 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
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
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
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
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