Repository navigation
Releases
Releases · JochenYang/iScrcpy
1.3.0
Changed
- Upgraded bundled scrcpy from 4.1 to 5.0.1 (FFmpeg 9.0.2, SDL 3.4.18, adb 37.0.1); FFmpeg DLL names changed (avcodec-63, avformat-63, avutil-61, swresample-7)
- Removed stale compiled copies
electron/main.cjs/electron/preload.cjs(unused duplicates of the TypeScript sources)
Fixed
- Forward tunnel now passes
--force-adb-forward; the previous--tunnel-forwardis not a scrcpy option and made every forward-tunnel launch fail
Added
- Hardware decoding toggle in Encoding settings (scrcpy 5.0+
--hwdec, enabled by default, can be disabled to force software decoding)
1.2.9
Fixed
- Removed obsolete
--record-audioflag (invalid on scrcpy 4.x; caused launch failures when record audio was enabled) - Added required
--video-source=camerafor all camera-intent mirror paths - Fixed device list refresh that could mark all known devices offline after a successful ADB poll
- Session recording no longer mutates the global auto-record display setting
- Session record/audio/camera overrides now survive intentional scrcpy restarts (merge before kill; preserve on exit)
- Quick-action process stop/kill routed through shared cross-platform terminate helpers
- Camera button active state synced via store and
camera-exitevents - Encoding bitrate mode (VBR/CBR) UI marked unsupported (no scrcpy 4.x CLI mapping); localized strings for all languages
Added
- Shared pure
buildScrcpyArgsmodule with unit tests (npm run test:args) - Per-device session override helpers (
sessionOverrides) with restart-order tests - Project
AGENTS.md(contributor rules for scrcpy args, settings vs session, process lifecycle)
1.2.8
Changed
- Upgraded scrcpy from 4.0 to 4.1 (FFmpeg 8.1.2, SDL 3.4.12, libusb 1.0.30)
Added
- Added
--ignore-video-encoder-constraintstoggle in encoding settings (scrcpy v4.1) - Added VP8 and VP9 video codec support in encoding settings
1.2.7
Changed
- Upgraded scrcpy from 3.3.4 to 4.0 (SDL3, FFmpeg 8.1.1, ADB 37.0.0)
- Enabled
--record-audiosupport for recording with audio
Added
- Added audio recording support (
--record-audio)
1.2.6
Fixed
- Fixed macOS/Linux process termination not working properly - now uses process.kill() instead of ineffective pkill command
- Fixed isProcessRunning always returning true on non-Windows platforms - now properly checks process existence using kill -0
- Fixed tray translation language path incorrectly pointing to resourcesPath - now correctly uses app.getPath("userData")
- Fixed device connection state update missing error handling - now properly catches and logs async errors
- Removed dead code calling non-existent IPC handler in preload.ts
Changed
- Updated .gitignore to exclude session and workspace-specific files
- Fixed .vscode typo in .gitignore
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)