Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
e996cb1
refactor: Utilize new scrcpy -x for resizable mirroring
sameerasw May 13, 2026
39ee54f
refactor: update help documentation URL and simplify web view transpa…
sameerasw May 13, 2026
e7b8802
feat: include playback metadata and duration details in NowPlayingInf…
sameerasw May 13, 2026
b68edcb
feat: implement BLE communication bridge.
sameerasw May 15, 2026
54845bb
ui: update BLE status icon and simplify connection information text
sameerasw May 15, 2026
0080b04
refactor: update BLE sync UI labels and streamline connection status …
sameerasw May 15, 2026
2a0c506
feat: implement BLE connection watchdog timer and defer device naming…
sameerasw May 16, 2026
310eb84
refactor: use BLEConstants delimiter for payload construction and rem…
sameerasw May 16, 2026
be32e63
feat: add app name support to notification handling in BLETransportBr…
sameerasw May 16, 2026
946f657
feat: include compressed album art in BLE media state payload for rem…
sameerasw May 16, 2026
301bcbe
refactor: remove redundant and unused legacy app icon assets
sameerasw May 18, 2026
afe1b47
Merge pull request #231 from sameerasw/develop
sameerasw May 18, 2026
01e6db1
feat: add Bluetooth symbol asset and updated the scanner view
sameerasw May 19, 2026
67a5a8f
refactor: replace BLE system symbol
sameerasw May 19, 2026
dfa73d8
Merge pull request #233 from sameerasw/ble
sameerasw May 19, 2026
9a4543f
feat: touchID for QR
sameerasw May 19, 2026
dc95658
refactor: New scanner view
sameerasw May 19, 2026
3b8f498
feat: integrate manual BLE device discovery
sameerasw May 19, 2026
f58deb1
feat: Merge BLE and regular nearby device results
sameerasw May 19, 2026
98134ae
ui: update tab icon and refine layout spacing in scanner and home scr…
sameerasw May 19, 2026
d14c729
feat: implement manual disconnect state to prevent unintended BLE aut…
sameerasw May 19, 2026
a3068b1
feat: integrate BLE device discovery and connection support into the …
sameerasw May 19, 2026
d9cf85c
refactor: relocate BLE settings from ScannerView to a new popover acc…
sameerasw May 19, 2026
e8ecaf5
feat: redesign ScannerView to display device grid layout with entry a…
sameerasw May 19, 2026
7916530
feat: implement BLE auth token validation
sameerasw May 19, 2026
4a7e71c
feat: Redesigned segmented settings
sameerasw May 20, 2026
6bbdbc3
refactor: update MirroringSettingsView accent color usage and reforma…
sameerasw May 20, 2026
aa842a8
feat: upgrade scrcpy-server to v4.0 and update stream parsing logic f…
sameerasw May 20, 2026
e52717b
feat: Disable BLE while regular conneciton active
sameerasw May 20, 2026
ddcd813
[SQUASH] feat: Implement Seekbar sync for now playing [1/2]
Mudit200408 Mar 31, 2026
72f47af
feat: WebDAV for remote file browsing
sameerasw May 21, 2026
6540fd8
refactor: remove automatic Finder window opening after WebDAV volume …
sameerasw May 21, 2026
99191ca
feat: WebDAV toggle and plus license handling
sameerasw May 21, 2026
03436be
Merge pull request #239 from sameerasw/webDAV
sameerasw May 21, 2026
c060735
fixup: Add Switch for Seekbar sync
Mudit200408 May 21, 2026
6c9d04c
feat: default mirroring mode picker
sameerasw May 21, 2026
7d0300f
Merge branch 'develop' into develop
sameerasw May 21, 2026
f62fc10
Merge pull request #237 from Mudit200408/develop
sameerasw May 21, 2026
55f9aed
ui: more glass contriners
sameerasw May 21, 2026
5e2662f
feat: show in control center separated option
sameerasw May 21, 2026
ed4c848
refactor: move fallback to mdns services toggle from SettingsView to …
sameerasw May 21, 2026
3a498d0
feat: shared image pop ups
sameerasw May 21, 2026
707eda7
refactor: pop up for any file type
sameerasw May 21, 2026
32acda1
refactor: add support for non-image file types, drag-and-drop thumbna…
sameerasw May 21, 2026
eb998fe
feat: add configurable limit for shared image pop-ups
sameerasw May 21, 2026
efbe7f3
feat: add copy-to-clipboard functionality to Quick Share image popup …
sameerasw May 22, 2026
c968e6d
style: update media player transition
sameerasw May 22, 2026
e3b81cb
feat: Updated feature buttons in sidebar
sameerasw May 22, 2026
e54d022
feat: More menubar customizations
sameerasw May 22, 2026
1c8e2ab
feat: add menubar pill border option, recent notification icons, and …
sameerasw May 22, 2026
ed3ba8c
feat: Menubar battery icon customizations
sameerasw May 22, 2026
4fe3837
feat: Menubar notification settings
sameerasw May 22, 2026
b6eb468
refactor: replace device name with media playback info in menubar
sameerasw May 22, 2026
18815b3
feat: Album art in menubar
sameerasw May 22, 2026
883e849
feat: add menu bar font size customization
sameerasw May 22, 2026
6350247
feat: Settings file refactor
sameerasw May 22, 2026
34befcc
feat: implement websocket-based call control
sameerasw May 22, 2026
f68539e
refactor: remove ADB keyevent logic from WebSocket server
sameerasw May 22, 2026
33bc3ae
refactor: minor screen view button update without labels
sameerasw May 22, 2026
59f687b
feat: persist plus status in AppState and add manual license validity…
sameerasw May 22, 2026
5727ec2
feat: menubar album art and notification settings are AirSync+ features
sameerasw May 22, 2026
50d5257
feat: implement in-menubar call control
sameerasw May 22, 2026
8ec3277
feat: call status in menubar
sameerasw May 22, 2026
d4d5615
feat: add auto-start at login functionality #232
sameerasw May 26, 2026
2992721
refactor: remove redundant connection prompt from sidebar view
sameerasw May 26, 2026
0d74183
refactor: limit device discovery logs to only report new peripherals …
sameerasw May 26, 2026
39ff713
feat: add BLE volume control support and disable file transfer UI/act…
sameerasw May 26, 2026
1b48711
feat: add toggleAppNotif case to handle notification state updates vi…
sameerasw May 26, 2026
1405417
feat: update file browser description and add menu bar customizations…
sameerasw May 26, 2026
0ccb821
feat: bump version to 4.0.0 and add fixed icon sizing to home screen …
sameerasw May 26, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 13 additions & 10 deletions AirSync.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,18 @@
B99B04C62F641E1400FF3E2D /* AppIcon.icon in Resources */ = {isa = PBXBuildFile; fileRef = B99B04C52F641E1400FF3E2D /* AppIcon.icon */; };
B9AEBC0A2E6235D3006BA027 /* Sparkle in Frameworks */ = {isa = PBXBuildFile; productRef = B9AEBC092E6235D3006BA027 /* Sparkle */; };
B9B1C00D2E94E15D0005F6CB /* LottieUI in Frameworks */ = {isa = PBXBuildFile; productRef = B9B1C00C2E94E15D0005F6CB /* LottieUI */; };
B9C0AA122F7D2B4F00BA0961 /* scrcpy-server-v3.3.4 in Resources */ = {isa = PBXBuildFile; fileRef = B9C0AA112F7D2B4F00BA0961 /* scrcpy-server-v3.3.4 */; };
B9C3181E2E37AA1D00367F16 /* QRCode in Frameworks */ = {isa = PBXBuildFile; productRef = B9C3181D2E37AA1D00367F16 /* QRCode */; };
B9D2631B2F60D97900628704 /* Sentry in Frameworks */ = {isa = PBXBuildFile; productRef = B9D2631A2F60D97900628704 /* Sentry */; };
B9D263292F60D9CF00628704 /* SentrySwiftUI in Frameworks */ = {isa = PBXBuildFile; productRef = B9D263282F60D9CF00628704 /* SentrySwiftUI */; };
B9D742FC2E39CF850053128A /* Swifter in Frameworks */ = {isa = PBXBuildFile; productRef = B9D742FB2E39CF850053128A /* Swifter */; };
B9E423832FBD914900526D40 /* scrcpy-server in Resources */ = {isa = PBXBuildFile; fileRef = B9E423822FBD914900526D40 /* scrcpy-server */; };
/* End PBXBuildFile section */

/* Begin PBXFileReference section */
B9673B572E35A2A1006D284A /* AirSync.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AirSync.app; sourceTree = BUILT_PRODUCTS_DIR; };
B995A3322E4D2B3F00FA7A41 /* AppIcon-uni.icon */ = {isa = PBXFileReference; lastKnownFileType = folder.iconcomposer.icon; path = "AppIcon-uni.icon"; sourceTree = "<group>"; };
B99B04C52F641E1400FF3E2D /* AppIcon.icon */ = {isa = PBXFileReference; lastKnownFileType = folder.iconcomposer.icon; path = AppIcon.icon; sourceTree = "<group>"; };
B9C0AA112F7D2B4F00BA0961 /* scrcpy-server-v3.3.4 */ = {isa = PBXFileReference; lastKnownFileType = file; path = "scrcpy-server-v3.3.4"; sourceTree = "<group>"; };
B9E423822FBD914900526D40 /* scrcpy-server */ = {isa = PBXFileReference; lastKnownFileType = file; path = "scrcpy-server"; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
Expand Down Expand Up @@ -80,12 +80,12 @@
B9673B4E2E35A2A1006D284A = {
isa = PBXGroup;
children = (
B9C0AA112F7D2B4F00BA0961 /* scrcpy-server-v3.3.4 */,
B995A3322E4D2B3F00FA7A41 /* AppIcon-uni.icon */,
B9673B592E35A2A1006D284A /* airsync-mac */,
B9D263192F60D97900628704 /* Frameworks */,
B9673B582E35A2A1006D284A /* Products */,
B99B04C52F641E1400FF3E2D /* AppIcon.icon */,
B9E423822FBD914900526D40 /* scrcpy-server */,
);
sourceTree = "<group>";
};
Expand Down Expand Up @@ -190,8 +190,8 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
B9E423832FBD914900526D40 /* scrcpy-server in Resources */,
B99B04C62F641E1400FF3E2D /* AppIcon.icon in Resources */,
B9C0AA122F7D2B4F00BA0961 /* scrcpy-server-v3.3.4 in Resources */,
B995A3332E4D2B3F00FA7A41 /* AppIcon-uni.icon in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand Down Expand Up @@ -283,7 +283,7 @@
CODE_SIGN_ENTITLEMENTS = "";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 28;
CURRENT_PROJECT_VERSION = 29;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = WCB4HTANA6;
ENABLE_APP_SANDBOX = NO;
Expand All @@ -295,13 +295,14 @@
INFOPLIST_KEY_CFBundleDisplayName = AirSync;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity";
INFOPLIST_KEY_LSUIElement = NO;
INFOPLIST_KEY_NSBluetoothAlwaysUsageDescription = "AirSync uses Bluetooth to sync notifications and media controls with your Android phone when Wi-Fi is unavailable.";
INFOPLIST_KEY_NSHumanReadableCopyright = "";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 14.5;
MARKETING_VERSION = 3.2.0;
MARKETING_VERSION = 4.0.0;
PRODUCT_BUNDLE_IDENTIFIER = "sameerasw.airsync-mac";
PRODUCT_NAME = "$(TARGET_NAME)";
REGISTER_APP_GROUPS = YES;
Expand Down Expand Up @@ -459,7 +460,7 @@
CODE_SIGN_ENTITLEMENTS = "";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 28;
CURRENT_PROJECT_VERSION = 29;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = WCB4HTANA6;
ENABLE_APP_SANDBOX = NO;
Expand All @@ -471,13 +472,14 @@
INFOPLIST_KEY_CFBundleDisplayName = AirSync;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity";
INFOPLIST_KEY_LSUIElement = NO;
INFOPLIST_KEY_NSBluetoothAlwaysUsageDescription = "AirSync uses Bluetooth to sync notifications and media controls with your Android phone when Wi-Fi is unavailable.";
INFOPLIST_KEY_NSHumanReadableCopyright = "";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 14.5;
MARKETING_VERSION = 3.2.0;
MARKETING_VERSION = 4.0.0;
PRODUCT_BUNDLE_IDENTIFIER = "sameerasw.airsync-mac";
PRODUCT_NAME = "$(TARGET_NAME)";
REGISTER_APP_GROUPS = YES;
Expand Down Expand Up @@ -507,7 +509,7 @@
CODE_SIGN_ENTITLEMENTS = "";
CODE_SIGN_STYLE = Automatic;
COMBINE_HIDPI_IMAGES = YES;
CURRENT_PROJECT_VERSION = 28;
CURRENT_PROJECT_VERSION = 29;
DEAD_CODE_STRIPPING = YES;
DEVELOPMENT_TEAM = WCB4HTANA6;
ENABLE_APP_SANDBOX = NO;
Expand All @@ -519,13 +521,14 @@
INFOPLIST_KEY_CFBundleDisplayName = AirSync;
INFOPLIST_KEY_LSApplicationCategoryType = "public.app-category.productivity";
INFOPLIST_KEY_LSUIElement = NO;
INFOPLIST_KEY_NSBluetoothAlwaysUsageDescription = "AirSync uses Bluetooth to sync notifications and media controls with your Android phone when Wi-Fi is unavailable.";
INFOPLIST_KEY_NSHumanReadableCopyright = "";
LD_RUNPATH_SEARCH_PATHS = (
"$(inherited)",
"@executable_path/../Frameworks",
);
MACOSX_DEPLOYMENT_TARGET = 14.5;
MARKETING_VERSION = 3.2.0;
MARKETING_VERSION = 4.0.0;
PRODUCT_BUNDLE_IDENTIFIER = "sameerasw.airsync-mac";
PRODUCT_NAME = "$(TARGET_NAME)";
REGISTER_APP_GROUPS = YES;
Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

This file was deleted.

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

This file was deleted.

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.

This file was deleted.

Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.

This file was deleted.

Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Diff not rendered.
Loading