-
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
Merged
Merged
Changes from 53 commits
Commits
Show all changes
73 commits
Select commit
Hold shift + click to select a range
413f113
Add tvOS (Apple TV) support for NetBird VPN client
shuuri-labs 8ac8cee
Merge branch 'main' into feat/add-tvos-support-beta
shuuri-labs d4e573f
cleanup
shuuri-labs 2e01447
fixed slow startup + added images
shuuri-labs 7af9d71
fixed active networks not refreshing
shuuri-labs 2b056c3
fix occasional failure of first connection
shuuri-labs 4c79a6c
hostname properly set + removed debug logging
shuuri-labs a75a39d
- Fix "invalid Prefix" display on Networks tab by showing route name
shuuri-labs 7f45512
Fixed focus escape bug on 'change server' dialog
shuuri-labs f3dbbd4
fixed switching of management servers
shuuri-labs 1d7c0d2
fixes for change server settings menu
shuuri-labs 6579821
- Extract TVColors and TVLayout to shared TVColors.swift
shuuri-labs 72acdc1
apply recommended xcode settings
shuuri-labs 2bc4cc3
display correct app name in tvOS UI
shuuri-labs 5592944
added tv-specific assets, updated readme
shuuri-labs 6c1a9d0
updated readme
shuuri-labs 79afaae
- Add checkLoginError IPC to detect extension login failures
shuuri-labs 9466287
integrated changes from main
shuuri-labs a8fa156
Fix CodeRabbit review issues: bundle IDs, force-unwraps, and error ha…
shuuri-labs 3dbe268
- Delete unused updateManagementURL() and setSetupKey() functions
shuuri-labs 71f06dd
Fix tvOS build issues from CodeRabbit review
shuuri-labs a05ded3
merge changes from main
shuuri-labs 0a65a14
added empty box asset to tvOS app
shuuri-labs 0e19334
- Preferences.swift: Use #if os(iOS) / #else for platform-specific
shuuri-labs 77ef043
Add ConfigurationProvider protocol to abstract platform config storage
shuuri-labs c37ee47
implemented rosenpass toggle
shuuri-labs 2462905
implemented preshared key setting
shuuri-labs 418af69
Update GitHub Actions to use macOS 15 with Xcode 16
shuuri-labs def906a
Add tvOS app icons, Top Shelf images, and fix archive validation errors
shuuri-labs b57ba4d
Fix tvOS SDK path and add config update logging
shuuri-labs cbd956b
re-added test targets to project.pbxproj (lost in merge)
shuuri-labs 63d1989
Replace regex-based JSON manipulation with JSONSerialization for
shuuri-labs f7277f2
Address PR review feedback for tvOS support
shuuri-labs df5831c
Removed dead variables from TVPeersListContent, Updated tvOS config J…
shuuri-labs 8f48b17
update build platform (iphone 16 -> iphone 15) in an attempt to resol…
shuuri-labs 1c23cc7
update build platform in an attempt to resolve github actions error
shuuri-labs 7742d0b
update xcode build runner an attempt to resolve github actions error
shuuri-labs b8560be
update build.yml to specify downloading of ios 18.2 image to fix buil…
shuuri-labs 557178d
update build.yml to remove specifying of ios 18.2 image download
shuuri-labs db108fd
downgrade macos build image to 14 to resolve ios build error on github
shuuri-labs 4afd3ba
downgrade macos build image to 14 to resolve ios build error on github
shuuri-labs 6e79396
upgrade build runner xcode version to 26.2 to resolve ios build error…
shuuri-labs 42eb539
upgrade build runner xcode version to 26.2 to resolve ios build error…
shuuri-labs 38f107a
upgrade build runner xcode version to 26.2 to resolve ios build error…
shuuri-labs 1f366eb
upgrade build runner xcode version to 26.1.1 to resolve ios build err…
shuuri-labs 0522317
upgrade build script sdk output path to resolve ios build error on gi…
shuuri-labs 11e3786
added create dummy GoogleService-Info.plist build step to github work…
shuuri-labs 6079677
Fix TVAuthView error UI not displaying by setting errorMessage state
shuuri-labs e59ca96
- replace pipe-delimited string parsing with typed LoginDiagnostics
shuuri-labs 53be8b9
more pipe -> struct refactoring
shuuri-labs 6f3b9bf
update readme and buildscript to use gomobile-netbird for building sd…
shuuri-labs 359fb90
fix initial connection bug that required user to press 'connect' agai…
shuuri-labs 897638f
improve app loading speed + add splash screen logo
shuuri-labs 49b3a07
Fix race condition in tvOS VPN connection and revert Firebase to main…
shuuri-labs 85f8e26
fix test github workflow
shuuri-labs 207da2d
fix TVColors.swift UUID in project.pbxproj
shuuri-labs 2d037e6
fix gomobile-netbird run in github workflow by adding 'gomobile-netbi…
shuuri-labs 1fef7d5
Add gomobile-netbird init step to GitHub Actions workflow with proper…
shuuri-labs ba6e8fd
revert build script changes
shuuri-labs 495fdf7
bump network extension ver to 7 - apple states this should match the …
shuuri-labs c0db032
remove unused wireguardkitgo paths
shuuri-labs 21abfd6
Fix version mismatch between iOS app and network extension
shuuri-labs cbb0892
Add diagnostic logging to test workflow to capture crash details
shuuri-labs 50617bb
use gomobile-netbird in build script, workflows
shuuri-labs a3d9075
update build workflow to use gomobile-netbird
shuuri-labs 2ed8c02
force pulling of latest gomobile-netbird
shuuri-labs 804f82e
install gobind manually rather than relying on gomobile init
shuuri-labs e4587a6
add gomobile-tvos-for support download module step to workflows
shuuri-labs 8e42421
checkout gomobile-tv-fork module instead of go mod, which doesn't pla…
shuuri-labs 09650af
Add gomobile-tvos-fork to netbird's go.mod so gobind can find bind pa…
shuuri-labs 42e844d
revert debugging for test workflow
shuuri-labs 556eb92
fix rosenpass toggle bug for ios - view does not read value from save…
shuuri-labs a7662cc
temporarily disable test workflow
shuuri-labs File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
11 changes: 11 additions & 0 deletions
11
NetBird TV/Assets.xcassets/AccentColor.colorset/Contents.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,11 @@ | ||
| { | ||
| "colors" : [ | ||
| { | ||
| "idiom" : "universal" | ||
| } | ||
| ], | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
12 changes: 12 additions & 0 deletions
12
...ssets/App Icon - App Store.imagestack/Back.imagestacklayer/Content.imageset/Contents.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 | ||
| } | ||
| } |
Binary file added
BIN
+5.81 KB
...- App Store.imagestack/Back.imagestacklayer/Content.imageset/app-store-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions
6
...helf Image.brandassets/App Icon - App Store.imagestack/Back.imagestacklayer/Contents.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| { | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
14 changes: 14 additions & 0 deletions
14
...sets/App Icon & Top Shelf Image.brandassets/App Icon - App Store.imagestack/Contents.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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" | ||
| } | ||
| ] | ||
| } |
12 changes: 12 additions & 0 deletions
12
...ets/App Icon - App Store.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 | ||
| } | ||
| } |
Binary file added
BIN
+58 KB
...App Store.imagestack/Middle.imagestacklayer/Content.imageset/app-store-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions
6
...lf Image.brandassets/App Icon - App Store.imagestack/Middle.imagestacklayer/Contents.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| { | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
18 changes: 18 additions & 0 deletions
18
...Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Content.imageset/Contents.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 | ||
| } | ||
| } |
Binary file added
BIN
+2.07 KB
...App Icon.imagestack/Back.imagestacklayer/Content.imageset/netbird-tvos-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+3.43 KB
... Icon.imagestack/Back.imagestacklayer/Content.imageset/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions
6
...Icon & Top Shelf Image.brandassets/App Icon.imagestack/Back.imagestacklayer/Contents.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| { | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
17 changes: 17 additions & 0 deletions
17
.../Assets.xcassets/App Icon & Top Shelf Image.brandassets/App Icon.imagestack/Contents.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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" | ||
| } | ||
| ] | ||
| } |
18 changes: 18 additions & 0 deletions
18
...mage.brandassets/App Icon.imagestack/Front.imagestacklayer/Content.imageset/Contents.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 | ||
| } | ||
| } |
Binary file added
BIN
+16.5 KB
...pp Icon.imagestack/Front.imagestacklayer/Content.imageset/netbird-tvos-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+22.9 KB
...Icon.imagestack/Front.imagestacklayer/Content.imageset/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions
6
...con & Top Shelf Image.brandassets/App Icon.imagestack/Front.imagestacklayer/Contents.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| { | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
18 changes: 18 additions & 0 deletions
18
...age.brandassets/App Icon.imagestack/Middle.imagestacklayer/Content.imageset/Contents.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 | ||
| } | ||
| } |
Binary file added
BIN
+2.07 KB
...p Icon.imagestack/Middle.imagestacklayer/Content.imageset/netbird-tvos-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+3.43 KB
...con.imagestack/Middle.imagestacklayer/Content.imageset/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
6 changes: 6 additions & 0 deletions
6
...on & Top Shelf Image.brandassets/App Icon.imagestack/Middle.imagestacklayer/Contents.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| { | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
32 changes: 32 additions & 0 deletions
32
NetBird TV/Assets.xcassets/App Icon & Top Shelf Image.brandassets/Contents.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 | ||
| } | ||
| } |
18 changes: 18 additions & 0 deletions
18
...assets/App Icon & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/Contents.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 | ||
| } | ||
| } |
Binary file added
BIN
+84.8 KB
... & Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/top-shelf-wide.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+246 KB
...Top Shelf Image.brandassets/Top Shelf Image Wide.imageset/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
18 changes: 18 additions & 0 deletions
18
...ts.xcassets/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/Contents.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 | ||
| } | ||
| } |
Binary file added
BIN
+76.2 KB
...s/App Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/top-shelf.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added
BIN
+224 KB
...pp Icon & Top Shelf Image.brandassets/Top Shelf Image.imageset/[email protected]
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,6 @@ | ||
| { | ||
| "info" : { | ||
| "author" : "xcode", | ||
| "version" : 1 | ||
| } | ||
| } |
17 changes: 17 additions & 0 deletions
17
NetBird TV/Assets.xcassets/icon-empty-box.imageset/Contents.json
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| 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 | ||
| } | ||
| } |
Binary file added
BIN
+3.08 KB
NetBird TV/Assets.xcassets/icon-empty-box.imageset/icon-empty-box.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.