-
Notifications
You must be signed in to change notification settings - Fork 17
Add tvOS (Apple TV) support for NetBird VPN client #36
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
413f113
8ac8cee
d4e573f
2e01447
7af9d71
2b056c3
4c79a6c
a75a39d
7f45512
f3dbbd4
1d7c0d2
6579821
72acdc1
2bc4cc3
5592944
6c1a9d0
79afaae
9466287
a8fa156
3dbe268
71f06dd
a05ded3
0a65a14
0e19334
77ef043
c37ee47
2462905
418af69
def906a
b57ba4d
cbd956b
63d1989
f7277f2
df5831c
8f48b17
1c23cc7
7742d0b
b8560be
557178d
db108fd
4afd3ba
6e79396
42eb539
38f107a
1f366eb
0522317
11e3786
6079677
e59ca96
53be8b9
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -13,9 +13,12 @@ permissions: | |
| jobs: | ||
| build: | ||
| name: Build iOS App | ||
| runs-on: macos-14 | ||
| runs-on: macos-15 | ||
|
|
||
| steps: | ||
| - name: Select Xcode 26.1.1 | ||
| run: sudo xcode-select -s /Applications/Xcode_26.1.1.app/Contents/Developer | ||
|
Comment on lines
+19
to
+20
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🧩 Analysis chain🌐 Web query:
💡 Result: Short answer — what’s available and where to check (Jan 13, 2026):
If you want the precise Xcode version list for a specific runner image (e.g., macos-15 or macos-14) right now, tell me which image and I’ll fetch the exact installed Xcode builds from the image README/release page. Sources: GitHub Actions runner-images releases and changelog. [1] GitHub runner-images releases (macOS image notes). [2] Recent macOS image release entries (macos-14 / macos-15). [3] GitHub Changelog announcement about Xcode 16.2 / Xcode support policy. 🌐 Web query:
💡 Result: On the macos-15 GitHub Actions images (2026), available Xcode toolsets have been updated; notable items:
If you want the exact Xcode versions and SDKs on a specific macos-15 image version (for example image_version 20260105.0094.1), tell me which image tag/date and I’ll pull the precise Xcode table for that release. Sources: [1] [actions/runner-images macos-15 20250616 release], [2] [actions/runner-images macos-15 20250331 release], [3] [issue: Xcode 15.4 removal]. 🌐 Web query:
💡 Result: Xcode 26.1 (build 17B55) was released November 3, 2025. It requires macOS Sequoia 15.6 or later to install/run. [1][2] Sources:
🌐 Web query:
💡 Result: Xcode 26.1.1 (build 17B100) was released November 11, 2025. It’s a patch update that includes coding‑intelligence/AI tooling fixes, Swift 6.2.1 compatibility, and multiple bug fixes across indexing, Instruments, Interface Builder, Swift packages, Xcode Cloud, and more. Download and full release notes are available from Apple’s developer pages. [1][2][3] Sources:
Would you like the direct download/release‑notes link? 🌐 Web query:
💡 Result: Short answer: No — the macos-15 GitHub Actions runner in January 2026 has Xcode 26.2 installed (not Xcode 26.1.1). See the macos-15 image release notes showing Xcode 26.2 on the image (Image Version 20260112). [1] An issue requesting Xcode 26.1.1 was filed but not reflected in the January 2026 macOS images. [2] Sources:
Update Xcode version to 26.2 — version 26.1.1 is not available on the macos-15 runner. The macos-15 GitHub Actions runner (as of January 2026) includes Xcode 26.2, not 26.1.1. The xcode-select step will fail because 🤖 Prompt for AI Agents |
||
|
|
||
| - name: Checkout ios-client | ||
| uses: actions/checkout@v4 | ||
| with: | ||
|
|
@@ -66,6 +69,46 @@ jobs: | |
| ls -la NetBird/Source/App/Views/Components/ || echo "Components dir not found" | ||
| ls -la NetBird/Source/App/ViewModels/ || echo "ViewModels dir not found" | ||
|
|
||
| - name: Create dummy GoogleService-Info.plist | ||
| working-directory: ios-client | ||
| run: | | ||
| cat > GoogleService-Info.plist << 'EOF' | ||
| <?xml version="1.0" encoding="UTF-8"?> | ||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
| <plist version="1.0"> | ||
| <dict> | ||
| <key>CLIENT_ID</key> | ||
| <string>dummy</string> | ||
| <key>REVERSED_CLIENT_ID</key> | ||
| <string>dummy</string> | ||
| <key>API_KEY</key> | ||
| <string>dummy</string> | ||
| <key>GCM_SENDER_ID</key> | ||
| <string>dummy</string> | ||
| <key>PLIST_VERSION</key> | ||
| <string>1</string> | ||
| <key>BUNDLE_ID</key> | ||
| <string>io.netbird.app</string> | ||
| <key>PROJECT_ID</key> | ||
| <string>dummy</string> | ||
| <key>STORAGE_BUCKET</key> | ||
| <string>dummy</string> | ||
| <key>IS_ADS_ENABLED</key> | ||
| <false/> | ||
| <key>IS_ANALYTICS_ENABLED</key> | ||
| <false/> | ||
| <key>IS_APPINVITE_ENABLED</key> | ||
| <false/> | ||
| <key>IS_GCM_ENABLED</key> | ||
| <false/> | ||
| <key>IS_SIGNIN_ENABLED</key> | ||
| <false/> | ||
| <key>GOOGLE_APP_ID</key> | ||
| <string>dummy</string> | ||
| </dict> | ||
| </plist> | ||
| EOF | ||
|
|
||
| - name: Resolve Swift packages | ||
| working-directory: ios-client | ||
| run: | | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -13,9 +13,12 @@ permissions: | |
| jobs: | ||
| test: | ||
| name: Build and Test | ||
| runs-on: macos-14 | ||
| runs-on: macos-15 | ||
|
|
||
| steps: | ||
| - name: Select Xcode 26.1.1 | ||
| run: sudo xcode-select -s /Applications/Xcode_26.1.1.app/Contents/Developer | ||
|
Comment on lines
+19
to
+20
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Same Xcode version issue as build.yml. The Xcode version 26.1.1 does not exist. This needs to be corrected to a valid version (likely 16.x). 🤖 Prompt for AI Agents |
||
|
|
||
| - name: Checkout ios-client | ||
| uses: actions/checkout@v4 | ||
| with: | ||
|
|
@@ -44,6 +47,46 @@ jobs: | |
| working-directory: ios-client | ||
| run: gem install xcpretty | ||
|
|
||
| - name: Create dummy GoogleService-Info.plist | ||
| working-directory: ios-client | ||
| run: | | ||
| cat > GoogleService-Info.plist << 'EOF' | ||
| <?xml version="1.0" encoding="UTF-8"?> | ||
| <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> | ||
| <plist version="1.0"> | ||
| <dict> | ||
| <key>CLIENT_ID</key> | ||
| <string>dummy</string> | ||
| <key>REVERSED_CLIENT_ID</key> | ||
| <string>dummy</string> | ||
| <key>API_KEY</key> | ||
| <string>dummy</string> | ||
| <key>GCM_SENDER_ID</key> | ||
| <string>dummy</string> | ||
| <key>PLIST_VERSION</key> | ||
| <string>1</string> | ||
| <key>BUNDLE_ID</key> | ||
| <string>io.netbird.app</string> | ||
| <key>PROJECT_ID</key> | ||
| <string>dummy</string> | ||
| <key>STORAGE_BUCKET</key> | ||
| <string>dummy</string> | ||
| <key>IS_ADS_ENABLED</key> | ||
| <false/> | ||
| <key>IS_ANALYTICS_ENABLED</key> | ||
| <false/> | ||
| <key>IS_APPINVITE_ENABLED</key> | ||
| <false/> | ||
| <key>IS_GCM_ENABLED</key> | ||
| <false/> | ||
| <key>IS_SIGNIN_ENABLED</key> | ||
| <false/> | ||
| <key>GOOGLE_APP_ID</key> | ||
| <string>dummy</string> | ||
| </dict> | ||
| </plist> | ||
| EOF | ||
|
|
||
| - name: Resolve Swift packages | ||
| working-directory: ios-client | ||
| run: | | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| { | ||
| "colors" : [ | ||
| { | ||
| "idiom" : "universal" | ||
| } | ||
| ], | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| { | ||
| "images" : [ | ||
| { | ||
| "filename" : "app-store-icon.png", | ||
| "idiom" : "tv" | ||
| } | ||
| ], | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| { | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,14 @@ | ||
| { | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| }, | ||
| "layers" : [ | ||
| { | ||
| "filename" : "Middle.imagestacklayer" | ||
| }, | ||
| { | ||
| "filename" : "Back.imagestacklayer" | ||
| } | ||
| ] | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,12 @@ | ||
| { | ||
| "images" : [ | ||
| { | ||
| "filename" : "app-store-icon.png", | ||
| "idiom" : "tv" | ||
| } | ||
| ], | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| { | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| { | ||
| "images" : [ | ||
| { | ||
| "filename" : "netbird-tvos-icon.png", | ||
| "idiom" : "tv", | ||
| "scale" : "1x" | ||
| }, | ||
| { | ||
| "filename" : "[email protected]", | ||
| "idiom" : "tv", | ||
| "scale" : "2x" | ||
| } | ||
| ], | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| { | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| { | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| }, | ||
| "layers" : [ | ||
| { | ||
| "filename" : "Front.imagestacklayer" | ||
| }, | ||
| { | ||
| "filename" : "Middle.imagestacklayer" | ||
| }, | ||
| { | ||
| "filename" : "Back.imagestacklayer" | ||
| } | ||
| ] | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| { | ||
| "images" : [ | ||
| { | ||
| "filename" : "netbird-tvos-icon.png", | ||
| "idiom" : "tv", | ||
| "scale" : "1x" | ||
| }, | ||
| { | ||
| "filename" : "[email protected]", | ||
| "idiom" : "tv", | ||
| "scale" : "2x" | ||
| } | ||
| ], | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| { | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| { | ||
| "images" : [ | ||
| { | ||
| "filename" : "netbird-tvos-icon.png", | ||
| "idiom" : "tv", | ||
| "scale" : "1x" | ||
| }, | ||
| { | ||
| "filename" : "[email protected]", | ||
| "idiom" : "tv", | ||
| "scale" : "2x" | ||
| } | ||
| ], | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| { | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,32 @@ | ||
| { | ||
| "assets" : [ | ||
| { | ||
| "filename" : "App Icon - App Store.imagestack", | ||
| "idiom" : "tv", | ||
| "role" : "primary-app-icon", | ||
| "size" : "1280x768" | ||
| }, | ||
| { | ||
| "filename" : "App Icon.imagestack", | ||
| "idiom" : "tv", | ||
| "role" : "primary-app-icon", | ||
| "size" : "400x240" | ||
| }, | ||
| { | ||
| "filename" : "Top Shelf Image Wide.imageset", | ||
| "idiom" : "tv", | ||
| "role" : "top-shelf-image-wide", | ||
| "size" : "2320x720" | ||
| }, | ||
| { | ||
| "filename" : "Top Shelf Image.imageset", | ||
| "idiom" : "tv", | ||
| "role" : "top-shelf-image", | ||
| "size" : "1920x720" | ||
| } | ||
| ], | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| { | ||
| "images" : [ | ||
| { | ||
| "filename" : "top-shelf-wide.png", | ||
| "idiom" : "tv", | ||
| "scale" : "1x" | ||
| }, | ||
| { | ||
| "filename" : "[email protected]", | ||
| "idiom" : "tv", | ||
| "scale" : "2x" | ||
| } | ||
| ], | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,18 @@ | ||
| { | ||
| "images" : [ | ||
| { | ||
| "filename" : "top-shelf.png", | ||
| "idiom" : "tv", | ||
| "scale" : "1x" | ||
| }, | ||
| { | ||
| "filename" : "[email protected]", | ||
| "idiom" : "tv", | ||
| "scale" : "2x" | ||
| } | ||
| ], | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| { | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| { | ||
| "images" : [ | ||
| { | ||
| "filename" : "icon-empty-box.png", | ||
| "idiom" : "tv", | ||
| "scale" : "1x" | ||
| }, | ||
| { | ||
| "idiom" : "tv", | ||
| "scale" : "2x" | ||
| } | ||
| ], | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
Uh oh!
There was an error while loading. Please reload this page.