Skip to content

Releases: enegalan/MacPhoneMirror

MacPhoneMirror 1.5

Choose a tag to compare

@github-actions github-actions released this 06 Sep 20:29
9619856

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 hvcC numArrays offset
  • 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-verify keeps the pair-setup Ed25519 key and returns 403 on bad signature/crypto (FairPlay /fp-setup still allowed without verify on the same TCP socket)
  • Bound plist timingPort / unknown stream type before 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 parseHVCC reads numOfArrays at 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 use StubScreenMirrorReceiver)
  • 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

Choose a tag to compare

@github-actions github-actions released this 05 Sep 19:20

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

Choose a tag to compare

@github-actions github-actions released this 04 Sep 21:56
2378cba

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

Choose a tag to compare

@github-actions github-actions released this 04 Sep 21:53
b1a7b4c

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
  • NSBluetoothAlwaysUsageDescription for 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

Choose a tag to compare

@github-actions github-actions released this 04 Sep 15:11
337bc51

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_REUSEPORT from the mirror listener to avoid duplicate-bind / RST issues

MacPhoneMirror 1.2

Choose a tag to compare

@github-actions github-actions released this 04 Sep 07:02

Release 1.2

MacPhoneMirror 1.1.5

Choose a tag to compare

@github-actions github-actions released this 03 Sep 15:41

Release 1.1.5

MacPhoneMirror 1.1

Choose a tag to compare

@github-actions github-actions released this 03 Sep 15:24

Release 1.1

MacPhoneMirror 1.0.0

Choose a tag to compare

@github-actions github-actions released this 02 Sep 14:42
b41c269

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