Releases: enegalan/MacPhoneMirror
Releases · enegalan/MacPhoneMirror
Release list
MacPhoneMirror 1.5
Added
- AirPlay audio playback: AES-CBC (FairPlay key/IV) + AAC-ELD / AAC-LC / ALAC decode (
ct=8/4/2) - Settings toggle for audio playback
- Regression tests for HID gesture cancellation, negative HTTP
Content-Length, and hvcCnumArraysoffset - Blue Titanium, Pacific Blue, Alpine Green, Product Red, Pink, and Ultramarine chassis finishes
Fixed
- BLE HID: unsubscribe from one characteristic no longer drops notifies for other active subscriptions
- HID gestures release mouse/keyboard/consumer reports when the task is cancelled mid-sleep
- Audio engine respects
enableAudioPlayback(no build when off; tear down when toggled off) - Audio RTP: require crypto material, authenticate before advancing sequence, accept only the RTSP peer
pair-verifykeeps the pair-setup Ed25519 key and returns 403 on bad signature/crypto (FairPlay/fp-setupstill allowed without verify on the same TCP socket)- Bound plist
timingPort/ unknown streamtypebefore narrowing; reject negative HTTP body lengths - Mirror stream: idle timeout after data received; handshake/plist size caps; synchronized
shouldStop - USB auto-connect stops with the AirPlay service; serialized connected-device id updates
- HEVC
parseHVCCreadsnumOfArraysat hvcC offset 22
Changed
- Chassis finishes use distinct palettes (Black Titanium, Midnight, and Space Gray no longer share a color; same for White/Silver/Starlight and Desert/Gold)
- README / FEASIBILITY / SECURITY: pointer taps/drags only; no keyboard shortcuts
- FEASIBILITY / SECURITY: AirPlay FairPlay called out as repository-local UxPlay-derived (not public API)
- Pairing guide tab renamed to "Pointer Control"
- Removed non-functional Camera Control hardware button
- Stable AirPlay session id; USB unplug tears down mirror session
- AirPlay session teardown ignores auxiliary sockets; audio configure/stop serialized
- Bluetooth permission copy describes pointer/mouse control only
Removed
TestPatternReceiver(production unused; tests useStubScreenMirrorReceiver)- Diagnostics HUD (UI and preference)
- Mirror Snapshot (PNG) and Record (MOV) toolbar actions
- Quick Controls bar and preference
- Hardware buttons on phone frame (AssistiveTouch-dependent)
- Legacy AirPlay PIN SRP (
pair-setup-pin) / OpenSSL dependency - PerformanceMonitor / StreamStatistics (unused after Diagnostics HUD removal)
MacPhoneMirror 1.4
Added
- Launch at Login via
SMAppService - Hardware VideoToolbox and low-latency decode toggles wired to the video pipeline
- Shared persisted Appearance settings applied to live mirror windows
- Control preferences wired: mouse gate, touch ripples, sensitivity
- Unit tests for AppPreferences, Ultra vs High stream sizes, and pointer input gates
- How to Connect button on the Service page
Fixed
- Rapid AirPlay service toggle no longer races start/stop (stale starts cannot clear a newer listener or leave Bonjour half-registered)
- Mirror TCP accept socket shuts down with the AirPlay service so reconnects get a clean dataPort
- Failed VideoToolbox decodes no longer double-decrement the in-flight frame counter (low-latency drop accounting)
Changed
- Ultra stream quality advertises a larger point and pixel size than High
- STREAM negotiation XML includes pixel dimensions
- Stream resolution UI notes that changes apply on the next AirPlay connection
- Low-latency mode allows up to 5 in-flight decode frames before dropping (was 2)
- New Finder / Dock app icon (with background); menu bar keeps the transparent logo
- Connection and AssistiveTouch guides rewritten in plain language for end users
- SwiftLint is clean
Removed
- Keyboard shortcuts for AssistiveTouch actions (unreliable on macOS / HID)
- Invert Scroll option and wheel-scroll capture (scroll via click-drag only)
- Non-functional "Auto-start screen mirroring on connect" setting
MacPhoneMirror 1.3.5
Fixed
- AirPlay service toggle can re-enable advertising after disable (listening flag was never cleared)
- Stale AirPlay session keys / open connections no longer linger after disconnect or service stop
- Listener cancel no longer races with restart and marks a fresh listener as stopped
Removed
- Unused "Auto-connect to last known iPhone" setting
MacPhoneMirror 1.3
Added
- Bluetooth HID remote control: Mac advertises as a mouse/keyboard for iOS AssistiveTouch pairing
- Absolute pointer coordinates so taps land on the mirrored screen position
- Click-drag in the mirror viewport (pointer down/move/up) for scroll and swipe gestures
NSBluetoothAlwaysUsageDescriptionfor Bluetooth permission prompting- AirPlay audio stream handling so playing media on the iPhone no longer drops the mirror session
Changed
- Bluetooth HID advertising starts with the AirPlay service so AssistiveTouch can pair before mirroring
- Mirror window scales the phone frame to fit, including landscape in a portrait-shaped window
- Smaller minimum mirror window size
- Bluetooth HID reports are queued instead of dropped when the radio is busy
- Pointer gestures wait for in-flight HID reports so taps and drags complete reliably
Fixed
- Audio-only TEARDOWN no longer closes the video session
- Bluetooth HID advertising timeout no longer hangs pairing
- Phone frame no longer clips when the window is resized
Removed
- Test Pattern diagnostic from the menu bar and app UI (dev-only; not needed by end users)
- Dynamic Island / Notch overlay from the phone frame and Appearance settings
- Quick Controls bar from the mirror window
MacPhoneMirror 1.2.5
Fixed
- Release builds no longer close the AirPlay mirror socket before video arrives
- Idle timeout now uses wall-clock time instead of a recv iteration count
- Restored session windows no longer stick on "Connecting…" with no live session
- Closing a session window no longer tears down AirPlay during SwiftUI reparent/layout (
onDisappear); teardown runs on real window close
Changed
- Mirror stream read loop runs on a dedicated queue so accept stays responsive
- Removed
SO_REUSEPORTfrom the mirror listener to avoid duplicate-bind / RST issues
MacPhoneMirror 1.2
MacPhoneMirror 1.1.5
MacPhoneMirror 1.1
MacPhoneMirror 1.0.0
Added
- AirPlay receiver that mirrors iPhone/iPad screen to Mac
- Bonjour service advertisement for device discovery
- Session management for AirPlay connections
- App icon and branding
- SwiftLint and SwiftFormat configuration
- CI pipeline with lint, format, build, and test jobs
- Architecture documentation (ARCHITECTURE.md)
- Security policy (SECURITY.md)
- Contributing guidelines (CONTRIBUTING.md)
- MIT License