├── .github ├── dependabot.yml └── workflows │ ├── auto-approve.yml │ ├── auto-merge.yml │ ├── main.yml │ └── pull-request.yml ├── .gitignore ├── .gitmodules ├── .gitpod.yml ├── .pre-commit-config.yaml ├── Cartfile ├── Cartfile.resolved ├── Gemfile ├── Gemfile.lock ├── LICENSE ├── Makefile ├── README.md ├── fastlane ├── Appfile ├── Fastfile ├── README.md └── iTunesConnectDevices └── src ├── Gitpod.xcodeproj ├── project.pbxproj └── project.xcworkspace │ ├── contents.xcworkspacedata │ └── xcshareddata │ └── IDEWorkspaceChecks.plist ├── Shared (App) ├── Assets.xcassets │ ├── AccentColor.colorset │ │ └── Contents.json │ ├── AppIcon.appiconset │ │ └── Contents.json │ ├── Contents.json │ └── LargeIcon.imageset │ │ └── Contents.json ├── Base.lproj │ └── Main.html ├── Resources │ ├── Icon.png │ ├── Script.js │ └── Style.css └── ViewController.swift ├── Shared (Extension) ├── Resources │ ├── _locales │ │ └── en │ │ │ └── messages.json │ ├── bundles │ ├── images │ │ ├── icon-128.png │ │ ├── icon-256.png │ │ ├── icon-48.png │ │ ├── icon-512.png │ │ ├── icon-64.png │ │ ├── icon-96.png │ │ ├── toolbar-icon-16.png │ │ ├── toolbar-icon-19.png │ │ ├── toolbar-icon-32.png │ │ └── toolbar-icon-38.png │ ├── manifest.json │ ├── options.css │ └── options.html └── SafariWebExtensionHandler.swift ├── iOS (App) ├── AppDelegate.swift ├── Base.lproj │ ├── LaunchScreen.storyboard │ └── Main.storyboard ├── Info.plist └── SceneDelegate.swift ├── iOS (Extension) └── Info.plist ├── macOS (App) ├── AppDelegate.swift ├── Base.lproj │ └── Main.storyboard └── Gitpod.entitlements └── macOS (Extension) ├── Gitpod.entitlements └── Info.plist /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | 4 | - package-ecosystem: github-actions 5 | directory: "/" 6 | schedule: 7 | interval: daily 8 | time: '00:00' 9 | timezone: UTC 10 | open-pull-requests-limit: 10 11 | commit-message: 12 | prefix: "chore" 13 | include: "scope" 14 | - package-ecosystem: gitsubmodule 15 | directory: "/" 16 | schedule: 17 | interval: daily 18 | time: '00:00' 19 | timezone: UTC 20 | open-pull-requests-limit: 10 21 | commit-message: 22 | prefix: "chore" 23 | include: "scope" 24 | -------------------------------------------------------------------------------- /.github/workflows/auto-approve.yml: -------------------------------------------------------------------------------- 1 | name: Automatic Approve 2 | 3 | on: 4 | pull_request_target 5 | 6 | jobs: 7 | auto-approve: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: hmarr/auto-approve-action@v2.1.0 11 | if: github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]' 12 | with: 13 | github-token: "${{ secrets.GITHUB_TOKEN }}" 14 | -------------------------------------------------------------------------------- /.github/workflows/auto-merge.yml: -------------------------------------------------------------------------------- 1 | name: Automatic Merge 2 | on: 3 | pull_request: 4 | types: 5 | - labeled 6 | - unlabeled 7 | - synchronize 8 | - opened 9 | - edited 10 | - ready_for_review 11 | - reopened 12 | - unlocked 13 | pull_request_review: 14 | types: 15 | - submitted 16 | check_suite: 17 | types: 18 | - completed 19 | status: {} 20 | jobs: 21 | automerge: 22 | runs-on: ubuntu-latest 23 | steps: 24 | - name: automerge 25 | uses: "pascalgn/automerge-action@v0.14.3" 26 | env: 27 | GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}" 28 | MERGE_LABELS: "!work in progress" 29 | MERGE_REMOVE_LABELS: "automerge" 30 | MERGE_METHOD: "squash" 31 | MERGE_COMMIT_MESSAGE: "pull-request-title-and-description" 32 | MERGE_FORKS: "false" 33 | MERGE_RETRIES: "6" 34 | MERGE_RETRY_SLEEP: "10000" 35 | MERGE_DELETE_BRANCH: true 36 | UPDATE_LABELS: "" 37 | UPDATE_METHOD: "rebase" 38 | 39 | 40 | -------------------------------------------------------------------------------- /.github/workflows/main.yml: -------------------------------------------------------------------------------- 1 | name: Main 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | env: 9 | LANG: en_US.UTF-8 10 | 11 | # Fastlane 12 | FASTLANE_TEAM_ID: ${{ secrets.FASTLANE_TEAM_ID }} 13 | FASTLANE_TEAM_NAME: ${{ secrets.FASTLANE_TEAM_NAME }} 14 | 15 | ## Certificate Management 16 | MATCH_READONLY: true 17 | MATCH_TYPE: 'development' 18 | MATCH_GIT_URL: ${{ secrets.MATCH_GIT_URL }} 19 | MATCH_GIT_BRANCH: ${{ secrets.MATCH_GIT_BRANCH }} 20 | MATCH_GIT_FULL_NAME: ${{ secrets.MATCH_GIT_FULL_NAME }} 21 | MATCH_GIT_USER_EMAIL: ${{ secrets.MATCH_GIT_USER_EMAIL }} 22 | MATCH_APP_IDENTIFIER: ${{ secrets.MATCH_APP_IDENTIFIER }} 23 | MATCH_USERNAME: ${{ secrets.MATCH_USERNAME }} 24 | 25 | # Notifications 26 | SLACK_URL: ${{ secrets.SLACK_URL }} 27 | SLACK_CHANNEL: '#mobile' 28 | 29 | jobs: 30 | build: 31 | runs-on: macos 32 | timeout-minutes: 45 33 | steps: 34 | - name: Checkout 35 | uses: actions/checkout@v3 36 | - name: Bootstrap developer environment 37 | run: echo make bootstrap # Disabled until GitHub Actions Runner released for M1 38 | - name: Lint the repository 39 | run: make lint 40 | -------------------------------------------------------------------------------- /.github/workflows/pull-request.yml: -------------------------------------------------------------------------------- 1 | name: Pull Request 2 | 3 | on: 4 | pull_request: 5 | push: 6 | branches: 7 | - '*' 8 | - '!main' 9 | 10 | env: 11 | LANG: en_US.UTF-8 12 | 13 | # iOS Release 14 | APPLE_KEY_PASSWORD: ${{ secrets.APPLE_KEY_PASSWORD }} # Password to private key file 15 | APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID}} # The organization's team id in the Apple Developer portal 16 | 17 | # Notifications 18 | SLACK_URL: ${{ secrets.SLACK_URL }} 19 | SLACK_CHANNEL: '#mobile' 20 | 21 | jobs: 22 | build: 23 | runs-on: macos 24 | timeout-minutes: 45 25 | steps: 26 | - name: Checkout 27 | uses: actions/checkout@v3 28 | - name: Bootstrap developer environment 29 | run: echo make bootstrap # Disabled until GitHub Actions Runner released for M1 30 | - name: Lint the repository 31 | run: make lint 32 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Xcode 2 | # 3 | # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore 4 | 5 | ## User settings 6 | xcuserdata/ 7 | 8 | ## compatibility with Xcode 8 and earlier (ignoring not required starting Xcode 9) 9 | *.xcscmblueprint 10 | *.xccheckout 11 | 12 | ## compatibility with Xcode 3 and earlier (ignoring not required starting Xcode 4) 13 | build/ 14 | DerivedData/ 15 | *.moved-aside 16 | *.pbxuser 17 | !default.pbxuser 18 | *.mode1v3 19 | !default.mode1v3 20 | *.mode2v3 21 | !default.mode2v3 22 | *.perspectivev3 23 | !default.perspectivev3 24 | 25 | ## Obj-C/Swift specific 26 | *.hmap 27 | 28 | ## App packaging 29 | *.ipa 30 | *.dSYM.zip 31 | *.dSYM 32 | 33 | ## Playgrounds 34 | timeline.xctimeline 35 | playground.xcworkspace 36 | 37 | # Swift Package Manager 38 | # 39 | # Add this line if you want to avoid checking in source code from Swift Package Manager dependencies. 40 | # Packages/ 41 | # Package.pins 42 | # Package.resolved 43 | # *.xcodeproj 44 | # 45 | # Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata 46 | # hence it is not needed unless you have added a package configuration file to your project 47 | # .swiftpm 48 | 49 | .build/ 50 | 51 | # CocoaPods 52 | # 53 | # We recommend against adding the Pods directory to your .gitignore. However 54 | # you should judge for yourself, the pros and cons are mentioned at: 55 | # https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control 56 | # 57 | # Pods/ 58 | # 59 | # Add this line if you want to avoid checking in source code from the Xcode workspace 60 | # *.xcworkspace 61 | 62 | # Carthage 63 | # 64 | # Add this line if you want to avoid checking in source code from Carthage dependencies. 65 | # Carthage/Checkouts 66 | 67 | Carthage/Build/ 68 | 69 | # Accio dependency management 70 | Dependencies/ 71 | .accio/ 72 | 73 | # fastlane 74 | # 75 | # It is recommended to not store the screenshots in the git repo. 76 | # Instead, use fastlane to re-generate the screenshots whenever they are needed. 77 | # For more information about the recommended setup visit: 78 | # https://docs.fastlane.tools/best-practices/source-control/#source-control 79 | 80 | fastlane/report.xml 81 | fastlane/Preview.html 82 | fastlane/screenshots/**/*.png 83 | fastlane/test_output 84 | 85 | # Code Injection 86 | # 87 | # After new code Injection tools there's a generated folder /iOSInjectionProject 88 | # https://github.com/johnno1962/injectionforxcode 89 | 90 | iOSInjectionProject/ 91 | -------------------------------------------------------------------------------- /.gitmodules: -------------------------------------------------------------------------------- 1 | [submodule "browser-extension"] 2 | path = browser-extension 3 | url = git@github.com:gitpod-io/browser-extension.git 4 | -------------------------------------------------------------------------------- /.gitpod.yml: -------------------------------------------------------------------------------- 1 | github: 2 | prebuilds: 3 | master: true 4 | branches: true 5 | pullRequests: true 6 | pullRequestsFromForks: true 7 | addCheck: true 8 | addBadge: true 9 | addLabel: true 10 | 11 | vscode: 12 | extensions: 13 | - EditorConfig.EditorConfig 14 | - Equinusocio.vsc-material-theme 15 | - PKief.material-icon-theme 16 | - redhat.vscode-yaml 17 | - streetsidesoftware.code-spell-checker 18 | - timonwong.shellcheck 19 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- 1 | --- 2 | # See https://pre-commit.com for more information 3 | # See https://pre-commit.com/hooks.html for more hooks 4 | repos: 5 | - repo: https://github.com/pre-commit/pre-commit-hooks 6 | rev: v4.0.1 7 | hooks: 8 | # - id: check-added-large-files 9 | - id: check-executables-have-shebangs 10 | - id: check-json 11 | - id: check-merge-conflict 12 | - id: check-shebang-scripts-are-executable 13 | - id: check-symlinks 14 | - id: check-toml 15 | - id: check-xml 16 | - id: check-yaml 17 | - id: end-of-file-fixer 18 | - id: forbid-new-submodules 19 | - id: mixed-line-ending 20 | # - id: pretty-format-json 21 | - id: trailing-whitespace 22 | - repo: https://github.com/nicklockwood/SwiftFormat 23 | rev: 0.48.18 24 | hooks: 25 | - id: swiftformat 26 | name: SwiftFormat 27 | description: Check swift files for formating issues with SwiftFormat 28 | entry: swiftformat 29 | language: swift 30 | types: [swift] 31 | # - repo: https://github.com/noahsark769/xcodeproj-sort-pre-commit-hook 32 | # rev: v1.1.0 33 | # hooks: 34 | # - id: xcodeproj-sort 35 | # args: [--groups-position=above] 36 | - repo: https://github.com/jumanjihouse/pre-commit-hook-yamlfmt 37 | rev: 0.1.0 # or specific tag 38 | hooks: 39 | - id: yamlfmt 40 | -------------------------------------------------------------------------------- /Cartfile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpod-io/gitpod-mobile-ios/f37e9e1452efaf08035105671234d1151106bef0/Cartfile -------------------------------------------------------------------------------- /Cartfile.resolved: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpod-io/gitpod-mobile-ios/f37e9e1452efaf08035105671234d1151106bef0/Cartfile.resolved -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | gem "fastlane" 4 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | CFPropertyList (3.0.4) 5 | rexml 6 | addressable (2.8.0) 7 | public_suffix (>= 2.0.2, < 5.0) 8 | artifactory (3.0.15) 9 | atomos (0.1.3) 10 | aws-eventstream (1.2.0) 11 | aws-partitions (1.521.0) 12 | aws-sdk-core (3.121.5) 13 | aws-eventstream (~> 1, >= 1.0.2) 14 | aws-partitions (~> 1, >= 1.520.1) 15 | aws-sigv4 (~> 1.1) 16 | jmespath (~> 1.0) 17 | aws-sdk-kms (1.50.0) 18 | aws-sdk-core (~> 3, >= 3.121.2) 19 | aws-sigv4 (~> 1.1) 20 | aws-sdk-s3 (1.104.0) 21 | aws-sdk-core (~> 3, >= 3.121.2) 22 | aws-sdk-kms (~> 1) 23 | aws-sigv4 (~> 1.4) 24 | aws-sigv4 (1.4.0) 25 | aws-eventstream (~> 1, >= 1.0.2) 26 | babosa (1.0.4) 27 | claide (1.0.3) 28 | colored (1.2) 29 | colored2 (3.1.2) 30 | commander (4.6.0) 31 | highline (~> 2.0.0) 32 | declarative (0.0.20) 33 | digest-crc (0.6.4) 34 | rake (>= 12.0.0, < 14.0.0) 35 | domain_name (0.5.20190701) 36 | unf (>= 0.0.5, < 1.0.0) 37 | dotenv (2.7.6) 38 | emoji_regex (3.2.3) 39 | excon (0.88.0) 40 | faraday (1.8.0) 41 | faraday-em_http (~> 1.0) 42 | faraday-em_synchrony (~> 1.0) 43 | faraday-excon (~> 1.1) 44 | faraday-httpclient (~> 1.0.1) 45 | faraday-net_http (~> 1.0) 46 | faraday-net_http_persistent (~> 1.1) 47 | faraday-patron (~> 1.0) 48 | faraday-rack (~> 1.0) 49 | multipart-post (>= 1.2, < 3) 50 | ruby2_keywords (>= 0.0.4) 51 | faraday-cookie_jar (0.0.7) 52 | faraday (>= 0.8.0) 53 | http-cookie (~> 1.0.0) 54 | faraday-em_http (1.0.0) 55 | faraday-em_synchrony (1.0.0) 56 | faraday-excon (1.1.0) 57 | faraday-httpclient (1.0.1) 58 | faraday-net_http (1.0.1) 59 | faraday-net_http_persistent (1.2.0) 60 | faraday-patron (1.0.0) 61 | faraday-rack (1.0.0) 62 | faraday_middleware (1.2.0) 63 | faraday (~> 1.0) 64 | fastimage (2.2.5) 65 | fastlane (2.197.0) 66 | CFPropertyList (>= 2.3, < 4.0.0) 67 | addressable (>= 2.8, < 3.0.0) 68 | artifactory (~> 3.0) 69 | aws-sdk-s3 (~> 1.0) 70 | babosa (>= 1.0.3, < 2.0.0) 71 | bundler (>= 1.12.0, < 3.0.0) 72 | colored 73 | commander (~> 4.6) 74 | dotenv (>= 2.1.1, < 3.0.0) 75 | emoji_regex (>= 0.1, < 4.0) 76 | excon (>= 0.71.0, < 1.0.0) 77 | faraday (~> 1.0) 78 | faraday-cookie_jar (~> 0.0.6) 79 | faraday_middleware (~> 1.0) 80 | fastimage (>= 2.1.0, < 3.0.0) 81 | gh_inspector (>= 1.1.2, < 2.0.0) 82 | google-apis-androidpublisher_v3 (~> 0.3) 83 | google-apis-playcustomapp_v1 (~> 0.1) 84 | google-cloud-storage (~> 1.31) 85 | highline (~> 2.0) 86 | json (< 3.0.0) 87 | jwt (>= 2.1.0, < 3) 88 | mini_magick (>= 4.9.4, < 5.0.0) 89 | multipart-post (~> 2.0.0) 90 | naturally (~> 2.2) 91 | optparse (~> 0.1.1) 92 | plist (>= 3.1.0, < 4.0.0) 93 | rubyzip (>= 2.0.0, < 3.0.0) 94 | security (= 0.1.3) 95 | simctl (~> 1.6.3) 96 | terminal-notifier (>= 2.0.0, < 3.0.0) 97 | terminal-table (>= 1.4.5, < 2.0.0) 98 | tty-screen (>= 0.6.3, < 1.0.0) 99 | tty-spinner (>= 0.8.0, < 1.0.0) 100 | word_wrap (~> 1.0.0) 101 | xcodeproj (>= 1.13.0, < 2.0.0) 102 | xcpretty (~> 0.3.0) 103 | xcpretty-travis-formatter (>= 0.0.3) 104 | gh_inspector (1.1.3) 105 | google-apis-androidpublisher_v3 (0.13.0) 106 | google-apis-core (>= 0.4, < 2.a) 107 | google-apis-core (0.4.1) 108 | addressable (~> 2.5, >= 2.5.1) 109 | googleauth (>= 0.16.2, < 2.a) 110 | httpclient (>= 2.8.1, < 3.a) 111 | mini_mime (~> 1.0) 112 | representable (~> 3.0) 113 | retriable (>= 2.0, < 4.a) 114 | rexml 115 | webrick 116 | google-apis-iamcredentials_v1 (0.8.0) 117 | google-apis-core (>= 0.4, < 2.a) 118 | google-apis-playcustomapp_v1 (0.6.0) 119 | google-apis-core (>= 0.4, < 2.a) 120 | google-apis-storage_v1 (0.9.0) 121 | google-apis-core (>= 0.4, < 2.a) 122 | google-cloud-core (1.6.0) 123 | google-cloud-env (~> 1.0) 124 | google-cloud-errors (~> 1.0) 125 | google-cloud-env (1.5.0) 126 | faraday (>= 0.17.3, < 2.0) 127 | google-cloud-errors (1.2.0) 128 | google-cloud-storage (1.34.1) 129 | addressable (~> 2.5) 130 | digest-crc (~> 0.4) 131 | google-apis-iamcredentials_v1 (~> 0.1) 132 | google-apis-storage_v1 (~> 0.1) 133 | google-cloud-core (~> 1.6) 134 | googleauth (>= 0.16.2, < 2.a) 135 | mini_mime (~> 1.0) 136 | googleauth (1.1.0) 137 | faraday (>= 0.17.3, < 2.0) 138 | jwt (>= 1.4, < 3.0) 139 | memoist (~> 0.16) 140 | multi_json (~> 1.11) 141 | os (>= 0.9, < 2.0) 142 | signet (>= 0.16, < 2.a) 143 | highline (2.0.3) 144 | http-cookie (1.0.4) 145 | domain_name (~> 0.5) 146 | httpclient (2.8.3) 147 | jmespath (1.4.0) 148 | json (2.6.1) 149 | jwt (2.3.0) 150 | memoist (0.16.2) 151 | mini_magick (4.11.0) 152 | mini_mime (1.1.2) 153 | multi_json (1.15.0) 154 | multipart-post (2.0.0) 155 | nanaimo (0.3.0) 156 | naturally (2.2.1) 157 | optparse (0.1.1) 158 | os (1.1.1) 159 | plist (3.6.0) 160 | public_suffix (4.0.6) 161 | rake (13.0.6) 162 | representable (3.1.1) 163 | declarative (< 0.1.0) 164 | trailblazer-option (>= 0.1.1, < 0.2.0) 165 | uber (< 0.2.0) 166 | retriable (3.1.2) 167 | rexml (3.2.5) 168 | rouge (2.0.7) 169 | ruby2_keywords (0.0.5) 170 | rubyzip (2.3.2) 171 | security (0.1.3) 172 | signet (0.16.0) 173 | addressable (~> 2.8) 174 | faraday (>= 0.17.3, < 2.0) 175 | jwt (>= 1.5, < 3.0) 176 | multi_json (~> 1.10) 177 | simctl (1.6.8) 178 | CFPropertyList 179 | naturally 180 | terminal-notifier (2.0.0) 181 | terminal-table (1.8.0) 182 | unicode-display_width (~> 1.1, >= 1.1.1) 183 | trailblazer-option (0.1.1) 184 | tty-cursor (0.7.1) 185 | tty-screen (0.8.1) 186 | tty-spinner (0.9.3) 187 | tty-cursor (~> 0.7) 188 | uber (0.1.0) 189 | unf (0.1.4) 190 | unf_ext 191 | unf_ext (0.0.8) 192 | unicode-display_width (1.8.0) 193 | webrick (1.7.0) 194 | word_wrap (1.0.0) 195 | xcodeproj (1.21.0) 196 | CFPropertyList (>= 2.3.3, < 4.0) 197 | atomos (~> 0.1.3) 198 | claide (>= 1.0.2, < 2.0) 199 | colored2 (~> 3.1) 200 | nanaimo (~> 0.3.0) 201 | rexml (~> 3.2.4) 202 | xcpretty (0.3.0) 203 | rouge (~> 2.0.7) 204 | xcpretty-travis-formatter (1.0.1) 205 | xcpretty (~> 0.2, >= 0.0.7) 206 | 207 | PLATFORMS 208 | arm64-darwin-21 209 | 210 | DEPENDENCIES 211 | fastlane 212 | 213 | BUNDLED WITH 214 | 2.2.22 215 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Gitpod 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | default: all 2 | 3 | # Help message 4 | help: 5 | @echo 6 | @echo "Target rules:" 7 | @echo " all - Restores, lints, compiles and generates the application" 8 | @echo " bootstrap - Bootstraps developer environment" 9 | @echo " restore - Restores dependencies" 10 | @echo " build - Compiles the application" 11 | @echo " lints - Lints the repository" 12 | @echo " clean - Clean the project" 13 | @echo " help - Prints a help message with target rules" 14 | 15 | all: restore lint build 16 | 17 | bootstrap: 18 | git submodule sync --recursive && git submodule update --init --recursive 19 | arch -arm64 brew install pre-commit && arch -arm64 brew upgrade pre-commit 20 | arch -arm64 brew install npm && arch -arm64 brew upgrade npm 21 | arch -arm64 brew install yarn && arch -arm64 brew upgrade yarn 22 | arch -arm64 brew install typescript && arch -arm64 brew upgrade typescript 23 | arch -arm64 brew install swiftformat && arch -arm64 brew upgrade swiftformat 24 | arch -arm64 brew install carthage && arch -arm64 brew upgrade carthage 25 | arch -arm64 brew install fastlane && arch -arm64 brew upgrade fastlane 26 | arch -arm64 sudo gem install bundler 27 | arch -arm64 pre-commit install 28 | arch -arm64 pre-commit autoupdate 29 | arch -arm64 pre-commit run 30 | 31 | restore: 32 | arch -arm64 carthage bootstrap 33 | cd browser-extension && yarn install && cd .. 34 | 35 | build: 36 | arch -arm64 carthage build 37 | cd browser-extension && npm run build && cd .. 38 | 39 | release: 40 | arch -arm64 bundle exec fastlane 41 | 42 | lint: 43 | arch -arm64 pre-commit run 44 | 45 | 46 | # Rule for cleaning the project 47 | clean: 48 | @rm -rvf helloworld *.o 49 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # unofficial-gitpod-mobile-ios-prototype 2 | Something unofficial @ghuntley is hacking on out of hours and on weekends from time to time. Wanna help out? 3 | 4 | ## Build Status 5 | 6 | [![Main](https://github.com/gitpod-io/unofficial-gitpod-mobile-ios-prototype/actions/workflows/main.yml/badge.svg?branch=main)](https://github.com/gitpod-io/unofficial-gitpod-mobile-ios-prototype/actions/workflows/main.yml) 7 | 8 | ## Roadmap 9 | 10 | https://github.com/orgs/gitpod-io/projects/18/ 11 | 12 | ## Contributing 13 | 14 | https://www.gitpod.io/chat - #mobiles-and-tablets room 15 | -------------------------------------------------------------------------------- /fastlane/Appfile: -------------------------------------------------------------------------------- 1 | # app_identifier("[[APP_IDENTIFIER]]") # The bundle identifier of your app 2 | # apple_id("[[APPLE_ID]]") # Your Apple email address 3 | 4 | 5 | # For more information about the Appfile, see: 6 | # https://docs.fastlane.tools/advanced/#appfile 7 | -------------------------------------------------------------------------------- /fastlane/Fastfile: -------------------------------------------------------------------------------- 1 | require 'time' 2 | require 'commander' 3 | require 'pathname' 4 | 5 | update_fastlane 6 | 7 | desc 'Displays the commits between working tree and the last beta/release tag' 8 | lane :changelog do |options| 9 | tag = options[:tag] 10 | 11 | puts_changelog(tag: last_release) 12 | puts_changelog(tag: last_beta) 13 | 14 | end 15 | 16 | desc 'Fetches the distribution certificates and provisioning profiles to compile the app for development, adhoc & distribution' 17 | lane :certificates do 18 | 19 | match(type: 'development', readonly: true) 20 | match(type: 'adhoc', readonly: true) 21 | match(type: 'appstore', readonly: true) 22 | 23 | end 24 | 25 | desc 'Build production and debug build' 26 | lane :build do 27 | 28 | changelog 29 | certificates 30 | 31 | sh('echo building...') 32 | end 33 | 34 | 35 | desc 'Submit a new version to iTunes Connect' 36 | desc '' 37 | desc 'If on main; it will do the following: ' 38 | desc '- Displays the commits between working tree and the last beta/release tag' 39 | desc '- Fetches distribution certificates and provisioning profiles' 40 | desc '- Upload screenshots + app metadata' 41 | desc '- Build, sign and upload the app release' 42 | desc '- Do a build version bump and push it' 43 | desc 'The application will *not* be submitted for review or automatically released' 44 | desc '' 45 | desc 'If on develop; it will do the following: ' 46 | desc '- Displays the commits between working tree and the last beta/release tag' 47 | desc '- Make sure the profiles are up to date and download the latest one' 48 | desc '- Do a build version bump and push it' 49 | desc '- Build, sign and upload the app for testing' 50 | desc 'The application will *not* be submitted for review or automatically released to external testers' 51 | desc '' 52 | lane :deploy do 53 | 54 | puts case git_branch 55 | when 'main', 'release' 56 | 57 | # slack( 58 | # message: 'App Store build incoming', 59 | # channel: '#mobile', 60 | # default_payloads: [:git_author] 61 | # ) 62 | 63 | build 64 | 65 | tag_release 66 | 67 | deploy_itunesconnect 68 | 69 | metadata 70 | screenshots 71 | 72 | when 'develop', 'beta' 73 | 74 | build 75 | 76 | tag_beta 77 | 78 | devices 79 | 80 | deploy_itunesconnect 81 | 82 | else 83 | # failure 84 | end 85 | 86 | end 87 | 88 | private_lane :deploy_itunesconnect do 89 | 90 | sigh( 91 | adhoc: true, # Setting this flag will generate AdHoc profiles instead of App Store Profiles 92 | force: true, # Renew provisioning profiles regardless of its state - to automatically add all devices for ad hoc profiles 93 | ) 94 | 95 | resign( 96 | ) 97 | 98 | puts case git_branch 99 | when 'main', 'release' 100 | 101 | deliver( 102 | metadata_path: './metadata', # Path to the folder containing the metadata files 103 | skip_screenshots: true, # Don't upload the screenshots 104 | skip_metadata : true, # Don't upload the metadata (e.g. title, description). This will still upload screenshots 105 | automatic_release: true, # Should the app be automatically released once it's approved? (Can not be used together with auto_release_date) 106 | submit_for_review: false, # Submit the new version for Review after uploading everything 107 | reject_if_possible: true, # Rejects the previously submitted build if it's in a state where it's possible 108 | ) 109 | 110 | when 'develop', 'beta' 111 | 112 | pilot( 113 | testers_file_path: './Fastlane/testers.csv' # Path to a CSV file of testers 114 | reject_build_waiting_for_review: true, # Expire previous if it's 'waiting for review' 115 | distribute_external: true, # Should the build be distributed to external testers? If set to true, use of groups option is required 116 | ) 117 | 118 | else 119 | # failure 120 | end 121 | 122 | # slack_message(message: 'New version of the app successfully deployed to iTunes Connect! :tada: :tada:', success: true, payload: {}) 123 | 124 | end 125 | 126 | desc 'Registers developer devices with iTunes Connect' 127 | lane :devices do 128 | 129 | register_devices( 130 | devices_file: './Fastlane/iTunesConnectDevices' # Provide a path to a file with the devices to register. For the format of the file see the examples 131 | ) 132 | 133 | end 134 | 135 | desc 'Upload application metadata to iTunes Connect' 136 | lane :metadata do 137 | 138 | metadata_itunesconnect 139 | 140 | end 141 | 142 | private_lane :metadata_itunesconnect do 143 | 144 | deliver( 145 | metadata_path: './metadata', 146 | force: false, # Skip verification of HTML preview file 147 | skip_binary_upload: true, # Skip uploading an ipa or pkg to App Store Connect 148 | skip_screenshots: true, # Don't upload the screenshots 149 | skip_metadata: false, # Upload the metadata (e.g. title, description). 150 | automatic_release: false, # Should the app be automatically released once it's approved? (Can not be used together with auto_release_date) 151 | submit_for_review: false # Submit the new version for Review after uploading everything 152 | ) 153 | 154 | end 155 | 156 | desc 'Upload application screenshots to iTunes Connect' 157 | lane :screenshots do 158 | 159 | screenshots_itunesconnect 160 | 161 | end 162 | 163 | private_lane :screenshots_itunesconnect do 164 | 165 | deliver( 166 | metadata_path: './metadata', # Path to the folder containing the metadata files 167 | screenshots_path: './metadata/screenshots', # Path to the folder containing the screenshots 168 | force: true, # Skip verification of HTML preview file 169 | skip_binary_upload: true, # Skip uploading an ipa or pkg to App Store Connect 170 | skip_screenshots: false, # Upload the screenshots 171 | skip_metadata: true, # Don't upload the metadata (e.g. title, description). 172 | automatic_release: false, # Should the app be automatically released once it's approved? (Can not be used together with auto_release_date) 173 | submit_for_review: false # Submit the new version for Review after uploading everything 174 | ) 175 | 176 | end 177 | 178 | 179 | private_lane :puts_changelog do |options| 180 | tag = options[:tag] 181 | 182 | puts compare_url(tag: tag) 183 | 184 | puts changelog_from_git_commits( 185 | between: [tag, 'HEAD'], 186 | pretty: '- (%ae) %s', 187 | match_lightweight_tag: false, 188 | include_merges: false 189 | ) 190 | 191 | end 192 | 193 | desc 'Push the build to the beta branch and tag the build' 194 | private_lane :tag_beta do |options| 195 | 196 | tag_name = 'betas/#{build_version}' 197 | 198 | sh('git fetch') 199 | sh('git stash') 200 | sh('git checkout') 201 | sh('git pull origin develop') 202 | sh('git checkout beta') 203 | sh('git merge develop') 204 | sh('git stash apply') 205 | 206 | push_to_git_remote( 207 | local_branch: 'beta', 208 | remote_branch: 'beta' 209 | ) 210 | 211 | add_git_tag(tag: tag_name) 212 | sh('git push origin --tags') 213 | 214 | end 215 | 216 | desc 'Push the build to the release branch and tag the build' 217 | private_lane :tag_release do |options| 218 | tag_name = 'releases/#{build_version}' 219 | 220 | sh('git fetch') 221 | sh('git stash') 222 | sh('git checkout') 223 | sh('git pull origin release') 224 | sh('git checkout main') 225 | sh('git merge release') 226 | sh('git stash apply') 227 | 228 | push_to_git_remote( 229 | local_branch: 'release', 230 | remote_branch: 'release' 231 | ) 232 | 233 | add_git_tag(tag: tag_name) 234 | sh('git push origin --tags') 235 | 236 | end 237 | 238 | private_lane :slack_message do |options| 239 | message = options[:message] 240 | success = options[:success] 241 | payload = options[:payload] 242 | 243 | slack( 244 | message: message, 245 | channel: '#mobile', 246 | success: success, 247 | payload: payload) 248 | end 249 | 250 | after_all do |lane| 251 | ship_it 252 | notify('Lane #{lane} completed successfully!') 253 | end 254 | 255 | error do |lane, exception| 256 | puts '\n(╯°□°)╯︵ ┻━┻\n'.red 257 | notify('Lane #{lane} failed to complete') 258 | end 259 | 260 | # Helper functions 261 | def build_version 262 | return sh('date '+%s'').strip 263 | end 264 | 265 | def last_beta 266 | return sh('git describe origin/develop --match=\'beta*\' --tags --abbrev=0').strip 267 | end 268 | 269 | def last_release 270 | return sh('git describe origin/main --match=\'release*\' --tags --abbrev=0').strip 271 | end 272 | 273 | def compare_url(options={}) 274 | tag = options[:tag] 275 | head = last_git_commit[:abbreviated_commit_hash] 276 | 277 | return 'https://github.com/gitpod-io/unofficial-gitpod-mobile-ios-prototype/compare/#{tag}...#{head}' 278 | end 279 | 280 | def ship_it 281 | rand = Random.rand(0..1) 282 | if rand == 0 283 | squirrel 284 | elsif rand == 1 285 | boat 286 | end 287 | end 288 | 289 | def squirrel 290 | puts ' 291 | !!!! 292 | !!!!!!!! 293 | !!!!!!!!!!! O_O 294 | !!! !!!!!!! /@ @\\ 295 | !!!!!! \\ x / 296 | !!!!!!/ m !m 297 | !!!!/ __ | 298 | !!!!|/ \\__ 299 | !!!\\______\\ 300 | ' 301 | end 302 | 303 | def boat 304 | puts ' 305 | . o .. 306 | o . o o.o 307 | ...oo 308 | __[]__ 309 | __|_o_o_o\__ 310 | \\\'\'\'\'\'\'\'\'\'\'/ 311 | \\. .. . / 312 | ^^^^^^^^^^^^^^^^^^^^ 313 | ' 314 | end 315 | -------------------------------------------------------------------------------- /fastlane/README.md: -------------------------------------------------------------------------------- 1 | fastlane documentation 2 | ================ 3 | # Installation 4 | 5 | Make sure you have the latest version of the Xcode command line tools installed: 6 | 7 | ``` 8 | xcode-select --install 9 | ``` 10 | 11 | Install _fastlane_ using 12 | ``` 13 | [sudo] gem install fastlane -NV 14 | ``` 15 | or alternatively using `brew install fastlane` 16 | 17 | # Available Actions 18 | ## iOS 19 | ### ios custom_lane 20 | ``` 21 | fastlane ios custom_lane 22 | ``` 23 | Description of what the lane does 24 | 25 | ---- 26 | 27 | This README.md is auto-generated and will be re-generated every time [_fastlane_](https://fastlane.tools) is run. 28 | More information about fastlane can be found on [fastlane.tools](https://fastlane.tools). 29 | The documentation of fastlane can be found on [docs.fastlane.tools](https://docs.fastlane.tools). 30 | -------------------------------------------------------------------------------- /fastlane/iTunesConnectDevices: -------------------------------------------------------------------------------- 1 | Device ID Device Name 2 | -------------------------------------------------------------------------------- /src/Gitpod.xcodeproj/project.pbxproj: -------------------------------------------------------------------------------- 1 | // !$*UTF8*$! 2 | { 3 | archiveVersion = 1; 4 | classes = { 5 | }; 6 | objectVersion = 55; 7 | objects = { 8 | 9 | /* Begin PBXBuildFile section */ 10 | D6C1315E2737C51300F28121 /* options.css in Resources */ = {isa = PBXBuildFile; fileRef = D6C1315B2737C51300F28121 /* options.css */; }; 11 | D6C1315F2737C51300F28121 /* options.css in Resources */ = {isa = PBXBuildFile; fileRef = D6C1315B2737C51300F28121 /* options.css */; }; 12 | D6C131602737C51300F28121 /* bundles in Resources */ = {isa = PBXBuildFile; fileRef = D6C1315C2737C51300F28121 /* bundles */; }; 13 | D6C131612737C51300F28121 /* bundles in Resources */ = {isa = PBXBuildFile; fileRef = D6C1315C2737C51300F28121 /* bundles */; }; 14 | D6C131622737C51300F28121 /* options.html in Resources */ = {isa = PBXBuildFile; fileRef = D6C1315D2737C51300F28121 /* options.html */; }; 15 | D6C131632737C51300F28121 /* options.html in Resources */ = {isa = PBXBuildFile; fileRef = D6C1315D2737C51300F28121 /* options.html */; }; 16 | D6EF48422737B52B00CEDCA9 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6EF48412737B52B00CEDCA9 /* AppDelegate.swift */; }; 17 | D6EF48442737B52B00CEDCA9 /* SceneDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6EF48432737B52B00CEDCA9 /* SceneDelegate.swift */; }; 18 | D6EF48472737B52B00CEDCA9 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D6EF48452737B52B00CEDCA9 /* LaunchScreen.storyboard */; }; 19 | D6EF484A2737B52B00CEDCA9 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D6EF48482737B52B00CEDCA9 /* Main.storyboard */; }; 20 | D6EF48532737B52B00CEDCA9 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6EF48522737B52B00CEDCA9 /* AppDelegate.swift */; }; 21 | D6EF48562737B52B00CEDCA9 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = D6EF48542737B52B00CEDCA9 /* Main.storyboard */; }; 22 | D6EF485D2737B52B00CEDCA9 /* Gitpod Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = D6EF485C2737B52B00CEDCA9 /* Gitpod Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 23 | D6EF48672737B52B00CEDCA9 /* Gitpod Extension.appex in Embed App Extensions */ = {isa = PBXBuildFile; fileRef = D6EF48662737B52B00CEDCA9 /* Gitpod Extension.appex */; settings = {ATTRIBUTES = (RemoveHeadersOnCopy, ); }; }; 24 | D6EF486D2737B52B00CEDCA9 /* Main.html in Resources */ = {isa = PBXBuildFile; fileRef = D6EF48282737B52A00CEDCA9 /* Main.html */; }; 25 | D6EF486E2737B52B00CEDCA9 /* Main.html in Resources */ = {isa = PBXBuildFile; fileRef = D6EF48282737B52A00CEDCA9 /* Main.html */; }; 26 | D6EF486F2737B52B00CEDCA9 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = D6EF482A2737B52A00CEDCA9 /* Icon.png */; }; 27 | D6EF48702737B52B00CEDCA9 /* Icon.png in Resources */ = {isa = PBXBuildFile; fileRef = D6EF482A2737B52A00CEDCA9 /* Icon.png */; }; 28 | D6EF48712737B52B00CEDCA9 /* Style.css in Resources */ = {isa = PBXBuildFile; fileRef = D6EF482B2737B52A00CEDCA9 /* Style.css */; }; 29 | D6EF48722737B52B00CEDCA9 /* Style.css in Resources */ = {isa = PBXBuildFile; fileRef = D6EF482B2737B52A00CEDCA9 /* Style.css */; }; 30 | D6EF48732737B52B00CEDCA9 /* Script.js in Resources */ = {isa = PBXBuildFile; fileRef = D6EF482C2737B52A00CEDCA9 /* Script.js */; }; 31 | D6EF48742737B52B00CEDCA9 /* Script.js in Resources */ = {isa = PBXBuildFile; fileRef = D6EF482C2737B52A00CEDCA9 /* Script.js */; }; 32 | D6EF48752737B52B00CEDCA9 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6EF482D2737B52A00CEDCA9 /* ViewController.swift */; }; 33 | D6EF48762737B52B00CEDCA9 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6EF482D2737B52A00CEDCA9 /* ViewController.swift */; }; 34 | D6EF48772737B52B00CEDCA9 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D6EF482E2737B52B00CEDCA9 /* Assets.xcassets */; }; 35 | D6EF48782737B52B00CEDCA9 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = D6EF482E2737B52B00CEDCA9 /* Assets.xcassets */; }; 36 | D6EF48792737B52B00CEDCA9 /* SafariWebExtensionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6EF48302737B52B00CEDCA9 /* SafariWebExtensionHandler.swift */; }; 37 | D6EF487A2737B52B00CEDCA9 /* SafariWebExtensionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = D6EF48302737B52B00CEDCA9 /* SafariWebExtensionHandler.swift */; }; 38 | D6EF487B2737B52B00CEDCA9 /* _locales in Resources */ = {isa = PBXBuildFile; fileRef = D6EF48322737B52B00CEDCA9 /* _locales */; }; 39 | D6EF487C2737B52B00CEDCA9 /* _locales in Resources */ = {isa = PBXBuildFile; fileRef = D6EF48322737B52B00CEDCA9 /* _locales */; }; 40 | D6EF487D2737B52B00CEDCA9 /* images in Resources */ = {isa = PBXBuildFile; fileRef = D6EF48332737B52B00CEDCA9 /* images */; }; 41 | D6EF487E2737B52B00CEDCA9 /* images in Resources */ = {isa = PBXBuildFile; fileRef = D6EF48332737B52B00CEDCA9 /* images */; }; 42 | D6EF487F2737B52B00CEDCA9 /* manifest.json in Resources */ = {isa = PBXBuildFile; fileRef = D6EF48342737B52B00CEDCA9 /* manifest.json */; }; 43 | D6EF48802737B52B00CEDCA9 /* manifest.json in Resources */ = {isa = PBXBuildFile; fileRef = D6EF48342737B52B00CEDCA9 /* manifest.json */; }; 44 | /* End PBXBuildFile section */ 45 | 46 | /* Begin PBXContainerItemProxy section */ 47 | D6EF485E2737B52B00CEDCA9 /* PBXContainerItemProxy */ = { 48 | isa = PBXContainerItemProxy; 49 | containerPortal = D6EF48222737B52A00CEDCA9 /* Project object */; 50 | proxyType = 1; 51 | remoteGlobalIDString = D6EF485B2737B52B00CEDCA9; 52 | remoteInfo = "Gitpod Extension (iOS)"; 53 | }; 54 | D6EF48682737B52B00CEDCA9 /* PBXContainerItemProxy */ = { 55 | isa = PBXContainerItemProxy; 56 | containerPortal = D6EF48222737B52A00CEDCA9 /* Project object */; 57 | proxyType = 1; 58 | remoteGlobalIDString = D6EF48652737B52B00CEDCA9; 59 | remoteInfo = "Gitpod Extension (macOS)"; 60 | }; 61 | /* End PBXContainerItemProxy section */ 62 | 63 | /* Begin PBXCopyFilesBuildPhase section */ 64 | D6EF48902737B52B00CEDCA9 /* Embed App Extensions */ = { 65 | isa = PBXCopyFilesBuildPhase; 66 | buildActionMask = 2147483647; 67 | dstPath = ""; 68 | dstSubfolderSpec = 13; 69 | files = ( 70 | D6EF485D2737B52B00CEDCA9 /* Gitpod Extension.appex in Embed App Extensions */, 71 | ); 72 | name = "Embed App Extensions"; 73 | runOnlyForDeploymentPostprocessing = 0; 74 | }; 75 | D6EF48972737B52B00CEDCA9 /* Embed App Extensions */ = { 76 | isa = PBXCopyFilesBuildPhase; 77 | buildActionMask = 2147483647; 78 | dstPath = ""; 79 | dstSubfolderSpec = 13; 80 | files = ( 81 | D6EF48672737B52B00CEDCA9 /* Gitpod Extension.appex in Embed App Extensions */, 82 | ); 83 | name = "Embed App Extensions"; 84 | runOnlyForDeploymentPostprocessing = 0; 85 | }; 86 | /* End PBXCopyFilesBuildPhase section */ 87 | 88 | /* Begin PBXFileReference section */ 89 | D6C1315B2737C51300F28121 /* options.css */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.css; name = options.css; path = "../../../browser-extension/src/options/options.css"; sourceTree = ""; }; 90 | D6C1315C2737C51300F28121 /* bundles */ = {isa = PBXFileReference; lastKnownFileType = folder; name = bundles; path = "../../../browser-extension/dist/bundles"; sourceTree = ""; }; 91 | D6C1315D2737C51300F28121 /* options.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = options.html; sourceTree = ""; }; 92 | D6EF48292737B52A00CEDCA9 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.html; name = Base; path = ../Base.lproj/Main.html; sourceTree = ""; }; 93 | D6EF482A2737B52A00CEDCA9 /* Icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = Icon.png; sourceTree = ""; }; 94 | D6EF482B2737B52A00CEDCA9 /* Style.css */ = {isa = PBXFileReference; lastKnownFileType = text.css; path = Style.css; sourceTree = ""; }; 95 | D6EF482C2737B52A00CEDCA9 /* Script.js */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.javascript; path = Script.js; sourceTree = ""; }; 96 | D6EF482D2737B52A00CEDCA9 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; }; 97 | D6EF482E2737B52B00CEDCA9 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; }; 98 | D6EF48302737B52B00CEDCA9 /* SafariWebExtensionHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SafariWebExtensionHandler.swift; sourceTree = ""; }; 99 | D6EF48322737B52B00CEDCA9 /* _locales */ = {isa = PBXFileReference; lastKnownFileType = folder; path = _locales; sourceTree = ""; }; 100 | D6EF48332737B52B00CEDCA9 /* images */ = {isa = PBXFileReference; lastKnownFileType = folder; path = images; sourceTree = ""; }; 101 | D6EF48342737B52B00CEDCA9 /* manifest.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = manifest.json; sourceTree = ""; }; 102 | D6EF483E2737B52B00CEDCA9 /* Gitpod.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Gitpod.app; sourceTree = BUILT_PRODUCTS_DIR; }; 103 | D6EF48412737B52B00CEDCA9 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 104 | D6EF48432737B52B00CEDCA9 /* SceneDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SceneDelegate.swift; sourceTree = ""; }; 105 | D6EF48462737B52B00CEDCA9 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = ""; }; 106 | D6EF48492737B52B00CEDCA9 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 107 | D6EF484B2737B52B00CEDCA9 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 108 | D6EF48502737B52B00CEDCA9 /* Gitpod.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Gitpod.app; sourceTree = BUILT_PRODUCTS_DIR; }; 109 | D6EF48522737B52B00CEDCA9 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; }; 110 | D6EF48552737B52B00CEDCA9 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; }; 111 | D6EF48572737B52B00CEDCA9 /* Gitpod.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Gitpod.entitlements; sourceTree = ""; }; 112 | D6EF485C2737B52B00CEDCA9 /* Gitpod Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Gitpod Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; 113 | D6EF48612737B52B00CEDCA9 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 114 | D6EF48662737B52B00CEDCA9 /* Gitpod Extension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = "Gitpod Extension.appex"; sourceTree = BUILT_PRODUCTS_DIR; }; 115 | D6EF486B2737B52B00CEDCA9 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 116 | D6EF486C2737B52B00CEDCA9 /* Gitpod.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Gitpod.entitlements; sourceTree = ""; }; 117 | /* End PBXFileReference section */ 118 | 119 | /* Begin PBXFrameworksBuildPhase section */ 120 | D6EF483B2737B52B00CEDCA9 /* Frameworks */ = { 121 | isa = PBXFrameworksBuildPhase; 122 | buildActionMask = 2147483647; 123 | files = ( 124 | ); 125 | runOnlyForDeploymentPostprocessing = 0; 126 | }; 127 | D6EF484D2737B52B00CEDCA9 /* Frameworks */ = { 128 | isa = PBXFrameworksBuildPhase; 129 | buildActionMask = 2147483647; 130 | files = ( 131 | ); 132 | runOnlyForDeploymentPostprocessing = 0; 133 | }; 134 | D6EF48592737B52B00CEDCA9 /* Frameworks */ = { 135 | isa = PBXFrameworksBuildPhase; 136 | buildActionMask = 2147483647; 137 | files = ( 138 | ); 139 | runOnlyForDeploymentPostprocessing = 0; 140 | }; 141 | D6EF48632737B52B00CEDCA9 /* Frameworks */ = { 142 | isa = PBXFrameworksBuildPhase; 143 | buildActionMask = 2147483647; 144 | files = ( 145 | ); 146 | runOnlyForDeploymentPostprocessing = 0; 147 | }; 148 | /* End PBXFrameworksBuildPhase section */ 149 | 150 | /* Begin PBXGroup section */ 151 | D6EF48212737B52A00CEDCA9 = { 152 | isa = PBXGroup; 153 | children = ( 154 | D6EF48262737B52A00CEDCA9 /* Shared (App) */, 155 | D6EF482F2737B52B00CEDCA9 /* Shared (Extension) */, 156 | D6EF48402737B52B00CEDCA9 /* iOS (App) */, 157 | D6EF48512737B52B00CEDCA9 /* macOS (App) */, 158 | D6EF48602737B52B00CEDCA9 /* iOS (Extension) */, 159 | D6EF486A2737B52B00CEDCA9 /* macOS (Extension) */, 160 | D6EF483F2737B52B00CEDCA9 /* Products */, 161 | ); 162 | sourceTree = ""; 163 | }; 164 | D6EF48262737B52A00CEDCA9 /* Shared (App) */ = { 165 | isa = PBXGroup; 166 | children = ( 167 | D6EF482D2737B52A00CEDCA9 /* ViewController.swift */, 168 | D6EF482E2737B52B00CEDCA9 /* Assets.xcassets */, 169 | D6EF48272737B52A00CEDCA9 /* Resources */, 170 | ); 171 | path = "Shared (App)"; 172 | sourceTree = ""; 173 | }; 174 | D6EF48272737B52A00CEDCA9 /* Resources */ = { 175 | isa = PBXGroup; 176 | children = ( 177 | D6EF48282737B52A00CEDCA9 /* Main.html */, 178 | D6EF482A2737B52A00CEDCA9 /* Icon.png */, 179 | D6EF482B2737B52A00CEDCA9 /* Style.css */, 180 | D6EF482C2737B52A00CEDCA9 /* Script.js */, 181 | ); 182 | path = Resources; 183 | sourceTree = ""; 184 | }; 185 | D6EF482F2737B52B00CEDCA9 /* Shared (Extension) */ = { 186 | isa = PBXGroup; 187 | children = ( 188 | D6EF48302737B52B00CEDCA9 /* SafariWebExtensionHandler.swift */, 189 | D6EF48312737B52B00CEDCA9 /* Resources */, 190 | ); 191 | path = "Shared (Extension)"; 192 | sourceTree = ""; 193 | }; 194 | D6EF48312737B52B00CEDCA9 /* Resources */ = { 195 | isa = PBXGroup; 196 | children = ( 197 | D6C1315C2737C51300F28121 /* bundles */, 198 | D6C1315B2737C51300F28121 /* options.css */, 199 | D6C1315D2737C51300F28121 /* options.html */, 200 | D6EF48322737B52B00CEDCA9 /* _locales */, 201 | D6EF48332737B52B00CEDCA9 /* images */, 202 | D6EF48342737B52B00CEDCA9 /* manifest.json */, 203 | ); 204 | path = Resources; 205 | sourceTree = ""; 206 | }; 207 | D6EF483F2737B52B00CEDCA9 /* Products */ = { 208 | isa = PBXGroup; 209 | children = ( 210 | D6EF483E2737B52B00CEDCA9 /* Gitpod.app */, 211 | D6EF48502737B52B00CEDCA9 /* Gitpod.app */, 212 | D6EF485C2737B52B00CEDCA9 /* Gitpod Extension.appex */, 213 | D6EF48662737B52B00CEDCA9 /* Gitpod Extension.appex */, 214 | ); 215 | name = Products; 216 | sourceTree = ""; 217 | }; 218 | D6EF48402737B52B00CEDCA9 /* iOS (App) */ = { 219 | isa = PBXGroup; 220 | children = ( 221 | D6EF48412737B52B00CEDCA9 /* AppDelegate.swift */, 222 | D6EF48432737B52B00CEDCA9 /* SceneDelegate.swift */, 223 | D6EF48452737B52B00CEDCA9 /* LaunchScreen.storyboard */, 224 | D6EF48482737B52B00CEDCA9 /* Main.storyboard */, 225 | D6EF484B2737B52B00CEDCA9 /* Info.plist */, 226 | ); 227 | path = "iOS (App)"; 228 | sourceTree = ""; 229 | }; 230 | D6EF48512737B52B00CEDCA9 /* macOS (App) */ = { 231 | isa = PBXGroup; 232 | children = ( 233 | D6EF48522737B52B00CEDCA9 /* AppDelegate.swift */, 234 | D6EF48542737B52B00CEDCA9 /* Main.storyboard */, 235 | D6EF48572737B52B00CEDCA9 /* Gitpod.entitlements */, 236 | ); 237 | path = "macOS (App)"; 238 | sourceTree = ""; 239 | }; 240 | D6EF48602737B52B00CEDCA9 /* iOS (Extension) */ = { 241 | isa = PBXGroup; 242 | children = ( 243 | D6EF48612737B52B00CEDCA9 /* Info.plist */, 244 | ); 245 | path = "iOS (Extension)"; 246 | sourceTree = ""; 247 | }; 248 | D6EF486A2737B52B00CEDCA9 /* macOS (Extension) */ = { 249 | isa = PBXGroup; 250 | children = ( 251 | D6EF486B2737B52B00CEDCA9 /* Info.plist */, 252 | D6EF486C2737B52B00CEDCA9 /* Gitpod.entitlements */, 253 | ); 254 | path = "macOS (Extension)"; 255 | sourceTree = ""; 256 | }; 257 | /* End PBXGroup section */ 258 | 259 | /* Begin PBXNativeTarget section */ 260 | D6EF483D2737B52B00CEDCA9 /* Gitpod (iOS) */ = { 261 | isa = PBXNativeTarget; 262 | buildConfigurationList = D6EF48912737B52B00CEDCA9 /* Build configuration list for PBXNativeTarget "Gitpod (iOS)" */; 263 | buildPhases = ( 264 | D6EF483A2737B52B00CEDCA9 /* Sources */, 265 | D6EF483B2737B52B00CEDCA9 /* Frameworks */, 266 | D6EF483C2737B52B00CEDCA9 /* Resources */, 267 | D6EF48902737B52B00CEDCA9 /* Embed App Extensions */, 268 | ); 269 | buildRules = ( 270 | ); 271 | dependencies = ( 272 | D6EF485F2737B52B00CEDCA9 /* PBXTargetDependency */, 273 | ); 274 | name = "Gitpod (iOS)"; 275 | productName = "Gitpod (iOS)"; 276 | productReference = D6EF483E2737B52B00CEDCA9 /* Gitpod.app */; 277 | productType = "com.apple.product-type.application"; 278 | }; 279 | D6EF484F2737B52B00CEDCA9 /* Gitpod (macOS) */ = { 280 | isa = PBXNativeTarget; 281 | buildConfigurationList = D6EF48982737B52B00CEDCA9 /* Build configuration list for PBXNativeTarget "Gitpod (macOS)" */; 282 | buildPhases = ( 283 | D6EF484C2737B52B00CEDCA9 /* Sources */, 284 | D6EF484D2737B52B00CEDCA9 /* Frameworks */, 285 | D6EF484E2737B52B00CEDCA9 /* Resources */, 286 | D6EF48972737B52B00CEDCA9 /* Embed App Extensions */, 287 | ); 288 | buildRules = ( 289 | ); 290 | dependencies = ( 291 | D6EF48692737B52B00CEDCA9 /* PBXTargetDependency */, 292 | ); 293 | name = "Gitpod (macOS)"; 294 | productName = "Gitpod (macOS)"; 295 | productReference = D6EF48502737B52B00CEDCA9 /* Gitpod.app */; 296 | productType = "com.apple.product-type.application"; 297 | }; 298 | D6EF485B2737B52B00CEDCA9 /* Gitpod Extension (iOS) */ = { 299 | isa = PBXNativeTarget; 300 | buildConfigurationList = D6EF488D2737B52B00CEDCA9 /* Build configuration list for PBXNativeTarget "Gitpod Extension (iOS)" */; 301 | buildPhases = ( 302 | D6EF48582737B52B00CEDCA9 /* Sources */, 303 | D6EF48592737B52B00CEDCA9 /* Frameworks */, 304 | D6EF485A2737B52B00CEDCA9 /* Resources */, 305 | ); 306 | buildRules = ( 307 | ); 308 | dependencies = ( 309 | ); 310 | name = "Gitpod Extension (iOS)"; 311 | productName = "Gitpod Extension (iOS)"; 312 | productReference = D6EF485C2737B52B00CEDCA9 /* Gitpod Extension.appex */; 313 | productType = "com.apple.product-type.app-extension"; 314 | }; 315 | D6EF48652737B52B00CEDCA9 /* Gitpod Extension (macOS) */ = { 316 | isa = PBXNativeTarget; 317 | buildConfigurationList = D6EF48942737B52B00CEDCA9 /* Build configuration list for PBXNativeTarget "Gitpod Extension (macOS)" */; 318 | buildPhases = ( 319 | D6EF48622737B52B00CEDCA9 /* Sources */, 320 | D6EF48632737B52B00CEDCA9 /* Frameworks */, 321 | D6EF48642737B52B00CEDCA9 /* Resources */, 322 | ); 323 | buildRules = ( 324 | ); 325 | dependencies = ( 326 | ); 327 | name = "Gitpod Extension (macOS)"; 328 | productName = "Gitpod Extension (macOS)"; 329 | productReference = D6EF48662737B52B00CEDCA9 /* Gitpod Extension.appex */; 330 | productType = "com.apple.product-type.app-extension"; 331 | }; 332 | /* End PBXNativeTarget section */ 333 | 334 | /* Begin PBXProject section */ 335 | D6EF48222737B52A00CEDCA9 /* Project object */ = { 336 | isa = PBXProject; 337 | attributes = { 338 | BuildIndependentTargetsInParallel = 1; 339 | LastSwiftUpdateCheck = 1310; 340 | LastUpgradeCheck = 1310; 341 | TargetAttributes = { 342 | D6EF483D2737B52B00CEDCA9 = { 343 | CreatedOnToolsVersion = 13.1; 344 | }; 345 | D6EF484F2737B52B00CEDCA9 = { 346 | CreatedOnToolsVersion = 13.1; 347 | }; 348 | D6EF485B2737B52B00CEDCA9 = { 349 | CreatedOnToolsVersion = 13.1; 350 | }; 351 | D6EF48652737B52B00CEDCA9 = { 352 | CreatedOnToolsVersion = 13.1; 353 | }; 354 | }; 355 | }; 356 | buildConfigurationList = D6EF48252737B52A00CEDCA9 /* Build configuration list for PBXProject "Gitpod" */; 357 | compatibilityVersion = "Xcode 13.0"; 358 | developmentRegion = en; 359 | hasScannedForEncodings = 0; 360 | knownRegions = ( 361 | en, 362 | Base, 363 | ); 364 | mainGroup = D6EF48212737B52A00CEDCA9; 365 | productRefGroup = D6EF483F2737B52B00CEDCA9 /* Products */; 366 | projectDirPath = ""; 367 | projectRoot = ""; 368 | targets = ( 369 | D6EF483D2737B52B00CEDCA9 /* Gitpod (iOS) */, 370 | D6EF484F2737B52B00CEDCA9 /* Gitpod (macOS) */, 371 | D6EF485B2737B52B00CEDCA9 /* Gitpod Extension (iOS) */, 372 | D6EF48652737B52B00CEDCA9 /* Gitpod Extension (macOS) */, 373 | ); 374 | }; 375 | /* End PBXProject section */ 376 | 377 | /* Begin PBXResourcesBuildPhase section */ 378 | D6EF483C2737B52B00CEDCA9 /* Resources */ = { 379 | isa = PBXResourcesBuildPhase; 380 | buildActionMask = 2147483647; 381 | files = ( 382 | D6EF486F2737B52B00CEDCA9 /* Icon.png in Resources */, 383 | D6EF48472737B52B00CEDCA9 /* LaunchScreen.storyboard in Resources */, 384 | D6EF486D2737B52B00CEDCA9 /* Main.html in Resources */, 385 | D6EF48732737B52B00CEDCA9 /* Script.js in Resources */, 386 | D6EF48772737B52B00CEDCA9 /* Assets.xcassets in Resources */, 387 | D6EF484A2737B52B00CEDCA9 /* Main.storyboard in Resources */, 388 | D6EF48712737B52B00CEDCA9 /* Style.css in Resources */, 389 | ); 390 | runOnlyForDeploymentPostprocessing = 0; 391 | }; 392 | D6EF484E2737B52B00CEDCA9 /* Resources */ = { 393 | isa = PBXResourcesBuildPhase; 394 | buildActionMask = 2147483647; 395 | files = ( 396 | D6EF48702737B52B00CEDCA9 /* Icon.png in Resources */, 397 | D6EF48722737B52B00CEDCA9 /* Style.css in Resources */, 398 | D6EF48562737B52B00CEDCA9 /* Main.storyboard in Resources */, 399 | D6EF48742737B52B00CEDCA9 /* Script.js in Resources */, 400 | D6EF48782737B52B00CEDCA9 /* Assets.xcassets in Resources */, 401 | D6EF486E2737B52B00CEDCA9 /* Main.html in Resources */, 402 | ); 403 | runOnlyForDeploymentPostprocessing = 0; 404 | }; 405 | D6EF485A2737B52B00CEDCA9 /* Resources */ = { 406 | isa = PBXResourcesBuildPhase; 407 | buildActionMask = 2147483647; 408 | files = ( 409 | D6EF487D2737B52B00CEDCA9 /* images in Resources */, 410 | D6EF487F2737B52B00CEDCA9 /* manifest.json in Resources */, 411 | D6EF487B2737B52B00CEDCA9 /* _locales in Resources */, 412 | D6C131602737C51300F28121 /* bundles in Resources */, 413 | D6C131622737C51300F28121 /* options.html in Resources */, 414 | D6C1315E2737C51300F28121 /* options.css in Resources */, 415 | ); 416 | runOnlyForDeploymentPostprocessing = 0; 417 | }; 418 | D6EF48642737B52B00CEDCA9 /* Resources */ = { 419 | isa = PBXResourcesBuildPhase; 420 | buildActionMask = 2147483647; 421 | files = ( 422 | D6EF487E2737B52B00CEDCA9 /* images in Resources */, 423 | D6EF48802737B52B00CEDCA9 /* manifest.json in Resources */, 424 | D6EF487C2737B52B00CEDCA9 /* _locales in Resources */, 425 | D6C131612737C51300F28121 /* bundles in Resources */, 426 | D6C131632737C51300F28121 /* options.html in Resources */, 427 | D6C1315F2737C51300F28121 /* options.css in Resources */, 428 | ); 429 | runOnlyForDeploymentPostprocessing = 0; 430 | }; 431 | /* End PBXResourcesBuildPhase section */ 432 | 433 | /* Begin PBXSourcesBuildPhase section */ 434 | D6EF483A2737B52B00CEDCA9 /* Sources */ = { 435 | isa = PBXSourcesBuildPhase; 436 | buildActionMask = 2147483647; 437 | files = ( 438 | D6EF48752737B52B00CEDCA9 /* ViewController.swift in Sources */, 439 | D6EF48422737B52B00CEDCA9 /* AppDelegate.swift in Sources */, 440 | D6EF48442737B52B00CEDCA9 /* SceneDelegate.swift in Sources */, 441 | ); 442 | runOnlyForDeploymentPostprocessing = 0; 443 | }; 444 | D6EF484C2737B52B00CEDCA9 /* Sources */ = { 445 | isa = PBXSourcesBuildPhase; 446 | buildActionMask = 2147483647; 447 | files = ( 448 | D6EF48762737B52B00CEDCA9 /* ViewController.swift in Sources */, 449 | D6EF48532737B52B00CEDCA9 /* AppDelegate.swift in Sources */, 450 | ); 451 | runOnlyForDeploymentPostprocessing = 0; 452 | }; 453 | D6EF48582737B52B00CEDCA9 /* Sources */ = { 454 | isa = PBXSourcesBuildPhase; 455 | buildActionMask = 2147483647; 456 | files = ( 457 | D6EF48792737B52B00CEDCA9 /* SafariWebExtensionHandler.swift in Sources */, 458 | ); 459 | runOnlyForDeploymentPostprocessing = 0; 460 | }; 461 | D6EF48622737B52B00CEDCA9 /* Sources */ = { 462 | isa = PBXSourcesBuildPhase; 463 | buildActionMask = 2147483647; 464 | files = ( 465 | D6EF487A2737B52B00CEDCA9 /* SafariWebExtensionHandler.swift in Sources */, 466 | ); 467 | runOnlyForDeploymentPostprocessing = 0; 468 | }; 469 | /* End PBXSourcesBuildPhase section */ 470 | 471 | /* Begin PBXTargetDependency section */ 472 | D6EF485F2737B52B00CEDCA9 /* PBXTargetDependency */ = { 473 | isa = PBXTargetDependency; 474 | target = D6EF485B2737B52B00CEDCA9 /* Gitpod Extension (iOS) */; 475 | targetProxy = D6EF485E2737B52B00CEDCA9 /* PBXContainerItemProxy */; 476 | }; 477 | D6EF48692737B52B00CEDCA9 /* PBXTargetDependency */ = { 478 | isa = PBXTargetDependency; 479 | target = D6EF48652737B52B00CEDCA9 /* Gitpod Extension (macOS) */; 480 | targetProxy = D6EF48682737B52B00CEDCA9 /* PBXContainerItemProxy */; 481 | }; 482 | /* End PBXTargetDependency section */ 483 | 484 | /* Begin PBXVariantGroup section */ 485 | D6EF48282737B52A00CEDCA9 /* Main.html */ = { 486 | isa = PBXVariantGroup; 487 | children = ( 488 | D6EF48292737B52A00CEDCA9 /* Base */, 489 | ); 490 | name = Main.html; 491 | sourceTree = ""; 492 | }; 493 | D6EF48452737B52B00CEDCA9 /* LaunchScreen.storyboard */ = { 494 | isa = PBXVariantGroup; 495 | children = ( 496 | D6EF48462737B52B00CEDCA9 /* Base */, 497 | ); 498 | name = LaunchScreen.storyboard; 499 | sourceTree = ""; 500 | }; 501 | D6EF48482737B52B00CEDCA9 /* Main.storyboard */ = { 502 | isa = PBXVariantGroup; 503 | children = ( 504 | D6EF48492737B52B00CEDCA9 /* Base */, 505 | ); 506 | name = Main.storyboard; 507 | sourceTree = ""; 508 | }; 509 | D6EF48542737B52B00CEDCA9 /* Main.storyboard */ = { 510 | isa = PBXVariantGroup; 511 | children = ( 512 | D6EF48552737B52B00CEDCA9 /* Base */, 513 | ); 514 | name = Main.storyboard; 515 | sourceTree = ""; 516 | }; 517 | /* End PBXVariantGroup section */ 518 | 519 | /* Begin XCBuildConfiguration section */ 520 | D6EF488B2737B52B00CEDCA9 /* Debug */ = { 521 | isa = XCBuildConfiguration; 522 | buildSettings = { 523 | ALWAYS_SEARCH_USER_PATHS = NO; 524 | CLANG_ANALYZER_NONNULL = YES; 525 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 526 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; 527 | CLANG_CXX_LIBRARY = "libc++"; 528 | CLANG_ENABLE_MODULES = YES; 529 | CLANG_ENABLE_OBJC_ARC = YES; 530 | CLANG_ENABLE_OBJC_WEAK = YES; 531 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 532 | CLANG_WARN_BOOL_CONVERSION = YES; 533 | CLANG_WARN_COMMA = YES; 534 | CLANG_WARN_CONSTANT_CONVERSION = YES; 535 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 536 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 537 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 538 | CLANG_WARN_EMPTY_BODY = YES; 539 | CLANG_WARN_ENUM_CONVERSION = YES; 540 | CLANG_WARN_INFINITE_RECURSION = YES; 541 | CLANG_WARN_INT_CONVERSION = YES; 542 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 543 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 544 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 545 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 546 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 547 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 548 | CLANG_WARN_STRICT_PROTOTYPES = YES; 549 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 550 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 551 | CLANG_WARN_UNREACHABLE_CODE = YES; 552 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 553 | COPY_PHASE_STRIP = NO; 554 | DEBUG_INFORMATION_FORMAT = dwarf; 555 | ENABLE_STRICT_OBJC_MSGSEND = YES; 556 | ENABLE_TESTABILITY = YES; 557 | GCC_C_LANGUAGE_STANDARD = gnu11; 558 | GCC_DYNAMIC_NO_PIC = NO; 559 | GCC_NO_COMMON_BLOCKS = YES; 560 | GCC_OPTIMIZATION_LEVEL = 0; 561 | GCC_PREPROCESSOR_DEFINITIONS = ( 562 | "DEBUG=1", 563 | "$(inherited)", 564 | ); 565 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 566 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 567 | GCC_WARN_UNDECLARED_SELECTOR = YES; 568 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 569 | GCC_WARN_UNUSED_FUNCTION = YES; 570 | GCC_WARN_UNUSED_VARIABLE = YES; 571 | MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; 572 | MTL_FAST_MATH = YES; 573 | ONLY_ACTIVE_ARCH = YES; 574 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; 575 | SWIFT_OPTIMIZATION_LEVEL = "-Onone"; 576 | }; 577 | name = Debug; 578 | }; 579 | D6EF488C2737B52B00CEDCA9 /* Release */ = { 580 | isa = XCBuildConfiguration; 581 | buildSettings = { 582 | ALWAYS_SEARCH_USER_PATHS = NO; 583 | CLANG_ANALYZER_NONNULL = YES; 584 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; 585 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++17"; 586 | CLANG_CXX_LIBRARY = "libc++"; 587 | CLANG_ENABLE_MODULES = YES; 588 | CLANG_ENABLE_OBJC_ARC = YES; 589 | CLANG_ENABLE_OBJC_WEAK = YES; 590 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; 591 | CLANG_WARN_BOOL_CONVERSION = YES; 592 | CLANG_WARN_COMMA = YES; 593 | CLANG_WARN_CONSTANT_CONVERSION = YES; 594 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; 595 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; 596 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES; 597 | CLANG_WARN_EMPTY_BODY = YES; 598 | CLANG_WARN_ENUM_CONVERSION = YES; 599 | CLANG_WARN_INFINITE_RECURSION = YES; 600 | CLANG_WARN_INT_CONVERSION = YES; 601 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; 602 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; 603 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; 604 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; 605 | CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; 606 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; 607 | CLANG_WARN_STRICT_PROTOTYPES = YES; 608 | CLANG_WARN_SUSPICIOUS_MOVE = YES; 609 | CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; 610 | CLANG_WARN_UNREACHABLE_CODE = YES; 611 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; 612 | COPY_PHASE_STRIP = NO; 613 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; 614 | ENABLE_NS_ASSERTIONS = NO; 615 | ENABLE_STRICT_OBJC_MSGSEND = YES; 616 | GCC_C_LANGUAGE_STANDARD = gnu11; 617 | GCC_NO_COMMON_BLOCKS = YES; 618 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES; 619 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; 620 | GCC_WARN_UNDECLARED_SELECTOR = YES; 621 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; 622 | GCC_WARN_UNUSED_FUNCTION = YES; 623 | GCC_WARN_UNUSED_VARIABLE = YES; 624 | MTL_ENABLE_DEBUG_INFO = NO; 625 | MTL_FAST_MATH = YES; 626 | SWIFT_COMPILATION_MODE = wholemodule; 627 | SWIFT_OPTIMIZATION_LEVEL = "-O"; 628 | }; 629 | name = Release; 630 | }; 631 | D6EF488E2737B52B00CEDCA9 /* Debug */ = { 632 | isa = XCBuildConfiguration; 633 | buildSettings = { 634 | CODE_SIGN_STYLE = Automatic; 635 | CURRENT_PROJECT_VERSION = 1; 636 | GENERATE_INFOPLIST_FILE = YES; 637 | INFOPLIST_FILE = "iOS (Extension)/Info.plist"; 638 | INFOPLIST_KEY_CFBundleDisplayName = "Gitpod Extension"; 639 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 640 | IPHONEOS_DEPLOYMENT_TARGET = 15.0; 641 | LD_RUNPATH_SEARCH_PATHS = ( 642 | "$(inherited)", 643 | "@executable_path/Frameworks", 644 | "@executable_path/../../Frameworks", 645 | ); 646 | MARKETING_VERSION = 1.0; 647 | OTHER_LDFLAGS = ( 648 | "-framework", 649 | SafariServices, 650 | ); 651 | PRODUCT_BUNDLE_IDENTIFIER = io.gitpod.Gitpod.Extension; 652 | PRODUCT_NAME = "Gitpod Extension"; 653 | SDKROOT = iphoneos; 654 | SKIP_INSTALL = YES; 655 | SWIFT_EMIT_LOC_STRINGS = YES; 656 | SWIFT_VERSION = 5.0; 657 | TARGETED_DEVICE_FAMILY = "1,2"; 658 | }; 659 | name = Debug; 660 | }; 661 | D6EF488F2737B52B00CEDCA9 /* Release */ = { 662 | isa = XCBuildConfiguration; 663 | buildSettings = { 664 | CODE_SIGN_STYLE = Automatic; 665 | CURRENT_PROJECT_VERSION = 1; 666 | GENERATE_INFOPLIST_FILE = YES; 667 | INFOPLIST_FILE = "iOS (Extension)/Info.plist"; 668 | INFOPLIST_KEY_CFBundleDisplayName = "Gitpod Extension"; 669 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 670 | IPHONEOS_DEPLOYMENT_TARGET = 15.0; 671 | LD_RUNPATH_SEARCH_PATHS = ( 672 | "$(inherited)", 673 | "@executable_path/Frameworks", 674 | "@executable_path/../../Frameworks", 675 | ); 676 | MARKETING_VERSION = 1.0; 677 | OTHER_LDFLAGS = ( 678 | "-framework", 679 | SafariServices, 680 | ); 681 | PRODUCT_BUNDLE_IDENTIFIER = io.gitpod.Gitpod.Extension; 682 | PRODUCT_NAME = "Gitpod Extension"; 683 | SDKROOT = iphoneos; 684 | SKIP_INSTALL = YES; 685 | SWIFT_EMIT_LOC_STRINGS = YES; 686 | SWIFT_VERSION = 5.0; 687 | TARGETED_DEVICE_FAMILY = "1,2"; 688 | VALIDATE_PRODUCT = YES; 689 | }; 690 | name = Release; 691 | }; 692 | D6EF48922737B52B00CEDCA9 /* Debug */ = { 693 | isa = XCBuildConfiguration; 694 | buildSettings = { 695 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 696 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 697 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 698 | CODE_SIGN_STYLE = Automatic; 699 | CURRENT_PROJECT_VERSION = 1; 700 | GENERATE_INFOPLIST_FILE = YES; 701 | INFOPLIST_FILE = "iOS (App)/Info.plist"; 702 | INFOPLIST_KEY_CFBundleDisplayName = Gitpod; 703 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 704 | INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; 705 | INFOPLIST_KEY_UIMainStoryboardFile = Main; 706 | INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 707 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 708 | IPHONEOS_DEPLOYMENT_TARGET = 15.0; 709 | LD_RUNPATH_SEARCH_PATHS = ( 710 | "$(inherited)", 711 | "@executable_path/Frameworks", 712 | ); 713 | MARKETING_VERSION = 1.0; 714 | OTHER_LDFLAGS = ( 715 | "-framework", 716 | SafariServices, 717 | "-framework", 718 | WebKit, 719 | ); 720 | PRODUCT_BUNDLE_IDENTIFIER = io.gitpod.Gitpod; 721 | PRODUCT_NAME = Gitpod; 722 | SDKROOT = iphoneos; 723 | SWIFT_EMIT_LOC_STRINGS = YES; 724 | SWIFT_VERSION = 5.0; 725 | TARGETED_DEVICE_FAMILY = "1,2"; 726 | }; 727 | name = Debug; 728 | }; 729 | D6EF48932737B52B00CEDCA9 /* Release */ = { 730 | isa = XCBuildConfiguration; 731 | buildSettings = { 732 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 733 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 734 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 735 | CODE_SIGN_STYLE = Automatic; 736 | CURRENT_PROJECT_VERSION = 1; 737 | GENERATE_INFOPLIST_FILE = YES; 738 | INFOPLIST_FILE = "iOS (App)/Info.plist"; 739 | INFOPLIST_KEY_CFBundleDisplayName = Gitpod; 740 | INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; 741 | INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; 742 | INFOPLIST_KEY_UIMainStoryboardFile = Main; 743 | INFOPLIST_KEY_UISupportedInterfaceOrientations = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 744 | INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; 745 | IPHONEOS_DEPLOYMENT_TARGET = 15.0; 746 | LD_RUNPATH_SEARCH_PATHS = ( 747 | "$(inherited)", 748 | "@executable_path/Frameworks", 749 | ); 750 | MARKETING_VERSION = 1.0; 751 | OTHER_LDFLAGS = ( 752 | "-framework", 753 | SafariServices, 754 | "-framework", 755 | WebKit, 756 | ); 757 | PRODUCT_BUNDLE_IDENTIFIER = io.gitpod.Gitpod; 758 | PRODUCT_NAME = Gitpod; 759 | SDKROOT = iphoneos; 760 | SWIFT_EMIT_LOC_STRINGS = YES; 761 | SWIFT_VERSION = 5.0; 762 | TARGETED_DEVICE_FAMILY = "1,2"; 763 | VALIDATE_PRODUCT = YES; 764 | }; 765 | name = Release; 766 | }; 767 | D6EF48952737B52B00CEDCA9 /* Debug */ = { 768 | isa = XCBuildConfiguration; 769 | buildSettings = { 770 | CODE_SIGN_ENTITLEMENTS = "macOS (Extension)/Gitpod.entitlements"; 771 | CODE_SIGN_STYLE = Automatic; 772 | CURRENT_PROJECT_VERSION = 1; 773 | ENABLE_HARDENED_RUNTIME = YES; 774 | GENERATE_INFOPLIST_FILE = YES; 775 | INFOPLIST_FILE = "macOS (Extension)/Info.plist"; 776 | INFOPLIST_KEY_CFBundleDisplayName = "Gitpod Extension"; 777 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 778 | LD_RUNPATH_SEARCH_PATHS = ( 779 | "$(inherited)", 780 | "@executable_path/../Frameworks", 781 | "@executable_path/../../../../Frameworks", 782 | ); 783 | MACOSX_DEPLOYMENT_TARGET = 10.14; 784 | MARKETING_VERSION = 1.0; 785 | OTHER_LDFLAGS = ( 786 | "-framework", 787 | SafariServices, 788 | ); 789 | PRODUCT_BUNDLE_IDENTIFIER = io.gitpod.Gitpod.Extension; 790 | PRODUCT_NAME = "Gitpod Extension"; 791 | SDKROOT = macosx; 792 | SKIP_INSTALL = YES; 793 | SWIFT_EMIT_LOC_STRINGS = YES; 794 | SWIFT_VERSION = 5.0; 795 | }; 796 | name = Debug; 797 | }; 798 | D6EF48962737B52B00CEDCA9 /* Release */ = { 799 | isa = XCBuildConfiguration; 800 | buildSettings = { 801 | CODE_SIGN_ENTITLEMENTS = "macOS (Extension)/Gitpod.entitlements"; 802 | CODE_SIGN_STYLE = Automatic; 803 | CURRENT_PROJECT_VERSION = 1; 804 | ENABLE_HARDENED_RUNTIME = YES; 805 | GENERATE_INFOPLIST_FILE = YES; 806 | INFOPLIST_FILE = "macOS (Extension)/Info.plist"; 807 | INFOPLIST_KEY_CFBundleDisplayName = "Gitpod Extension"; 808 | INFOPLIST_KEY_NSHumanReadableCopyright = ""; 809 | LD_RUNPATH_SEARCH_PATHS = ( 810 | "$(inherited)", 811 | "@executable_path/../Frameworks", 812 | "@executable_path/../../../../Frameworks", 813 | ); 814 | MACOSX_DEPLOYMENT_TARGET = 10.14; 815 | MARKETING_VERSION = 1.0; 816 | OTHER_LDFLAGS = ( 817 | "-framework", 818 | SafariServices, 819 | ); 820 | PRODUCT_BUNDLE_IDENTIFIER = io.gitpod.Gitpod.Extension; 821 | PRODUCT_NAME = "Gitpod Extension"; 822 | SDKROOT = macosx; 823 | SKIP_INSTALL = YES; 824 | SWIFT_EMIT_LOC_STRINGS = YES; 825 | SWIFT_VERSION = 5.0; 826 | }; 827 | name = Release; 828 | }; 829 | D6EF48992737B52B00CEDCA9 /* Debug */ = { 830 | isa = XCBuildConfiguration; 831 | buildSettings = { 832 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 833 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 834 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 835 | CODE_SIGN_ENTITLEMENTS = "macOS (App)/Gitpod.entitlements"; 836 | CODE_SIGN_STYLE = Automatic; 837 | CURRENT_PROJECT_VERSION = 1; 838 | ENABLE_HARDENED_RUNTIME = YES; 839 | GENERATE_INFOPLIST_FILE = YES; 840 | INFOPLIST_KEY_CFBundleDisplayName = Gitpod; 841 | INFOPLIST_KEY_NSMainStoryboardFile = Main; 842 | INFOPLIST_KEY_NSPrincipalClass = NSApplication; 843 | LD_RUNPATH_SEARCH_PATHS = ( 844 | "$(inherited)", 845 | "@executable_path/../Frameworks", 846 | ); 847 | MACOSX_DEPLOYMENT_TARGET = 10.14; 848 | MARKETING_VERSION = 1.0; 849 | OTHER_LDFLAGS = ( 850 | "-framework", 851 | SafariServices, 852 | "-framework", 853 | WebKit, 854 | ); 855 | PRODUCT_BUNDLE_IDENTIFIER = io.gitpod.Gitpod; 856 | PRODUCT_NAME = Gitpod; 857 | SDKROOT = macosx; 858 | SWIFT_EMIT_LOC_STRINGS = YES; 859 | SWIFT_VERSION = 5.0; 860 | }; 861 | name = Debug; 862 | }; 863 | D6EF489A2737B52B00CEDCA9 /* Release */ = { 864 | isa = XCBuildConfiguration; 865 | buildSettings = { 866 | ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; 867 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 868 | ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; 869 | CODE_SIGN_ENTITLEMENTS = "macOS (App)/Gitpod.entitlements"; 870 | CODE_SIGN_STYLE = Automatic; 871 | CURRENT_PROJECT_VERSION = 1; 872 | ENABLE_HARDENED_RUNTIME = YES; 873 | GENERATE_INFOPLIST_FILE = YES; 874 | INFOPLIST_KEY_CFBundleDisplayName = Gitpod; 875 | INFOPLIST_KEY_NSMainStoryboardFile = Main; 876 | INFOPLIST_KEY_NSPrincipalClass = NSApplication; 877 | LD_RUNPATH_SEARCH_PATHS = ( 878 | "$(inherited)", 879 | "@executable_path/../Frameworks", 880 | ); 881 | MACOSX_DEPLOYMENT_TARGET = 10.14; 882 | MARKETING_VERSION = 1.0; 883 | OTHER_LDFLAGS = ( 884 | "-framework", 885 | SafariServices, 886 | "-framework", 887 | WebKit, 888 | ); 889 | PRODUCT_BUNDLE_IDENTIFIER = io.gitpod.Gitpod; 890 | PRODUCT_NAME = Gitpod; 891 | SDKROOT = macosx; 892 | SWIFT_EMIT_LOC_STRINGS = YES; 893 | SWIFT_VERSION = 5.0; 894 | }; 895 | name = Release; 896 | }; 897 | /* End XCBuildConfiguration section */ 898 | 899 | /* Begin XCConfigurationList section */ 900 | D6EF48252737B52A00CEDCA9 /* Build configuration list for PBXProject "Gitpod" */ = { 901 | isa = XCConfigurationList; 902 | buildConfigurations = ( 903 | D6EF488B2737B52B00CEDCA9 /* Debug */, 904 | D6EF488C2737B52B00CEDCA9 /* Release */, 905 | ); 906 | defaultConfigurationIsVisible = 0; 907 | defaultConfigurationName = Release; 908 | }; 909 | D6EF488D2737B52B00CEDCA9 /* Build configuration list for PBXNativeTarget "Gitpod Extension (iOS)" */ = { 910 | isa = XCConfigurationList; 911 | buildConfigurations = ( 912 | D6EF488E2737B52B00CEDCA9 /* Debug */, 913 | D6EF488F2737B52B00CEDCA9 /* Release */, 914 | ); 915 | defaultConfigurationIsVisible = 0; 916 | defaultConfigurationName = Release; 917 | }; 918 | D6EF48912737B52B00CEDCA9 /* Build configuration list for PBXNativeTarget "Gitpod (iOS)" */ = { 919 | isa = XCConfigurationList; 920 | buildConfigurations = ( 921 | D6EF48922737B52B00CEDCA9 /* Debug */, 922 | D6EF48932737B52B00CEDCA9 /* Release */, 923 | ); 924 | defaultConfigurationIsVisible = 0; 925 | defaultConfigurationName = Release; 926 | }; 927 | D6EF48942737B52B00CEDCA9 /* Build configuration list for PBXNativeTarget "Gitpod Extension (macOS)" */ = { 928 | isa = XCConfigurationList; 929 | buildConfigurations = ( 930 | D6EF48952737B52B00CEDCA9 /* Debug */, 931 | D6EF48962737B52B00CEDCA9 /* Release */, 932 | ); 933 | defaultConfigurationIsVisible = 0; 934 | defaultConfigurationName = Release; 935 | }; 936 | D6EF48982737B52B00CEDCA9 /* Build configuration list for PBXNativeTarget "Gitpod (macOS)" */ = { 937 | isa = XCConfigurationList; 938 | buildConfigurations = ( 939 | D6EF48992737B52B00CEDCA9 /* Debug */, 940 | D6EF489A2737B52B00CEDCA9 /* Release */, 941 | ); 942 | defaultConfigurationIsVisible = 0; 943 | defaultConfigurationName = Release; 944 | }; 945 | /* End XCConfigurationList section */ 946 | }; 947 | rootObject = D6EF48222737B52A00CEDCA9 /* Project object */; 948 | } 949 | -------------------------------------------------------------------------------- /src/Gitpod.xcodeproj/project.xcworkspace/contents.xcworkspacedata: -------------------------------------------------------------------------------- 1 | 2 | 4 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /src/Gitpod.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | IDEDidComputeMac32BitWarning 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /src/Shared (App)/Assets.xcassets/AccentColor.colorset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "colors" : [ 3 | { 4 | "idiom" : "universal" 5 | } 6 | ], 7 | "info" : { 8 | "author" : "xcode", 9 | "version" : 1 10 | } 11 | } 12 | -------------------------------------------------------------------------------- /src/Shared (App)/Assets.xcassets/AppIcon.appiconset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "iphone", 5 | "scale" : "2x", 6 | "size" : "20x20" 7 | }, 8 | { 9 | "idiom" : "iphone", 10 | "scale" : "3x", 11 | "size" : "20x20" 12 | }, 13 | { 14 | "idiom" : "iphone", 15 | "scale" : "2x", 16 | "size" : "29x29" 17 | }, 18 | { 19 | "idiom" : "iphone", 20 | "scale" : "3x", 21 | "size" : "29x29" 22 | }, 23 | { 24 | "idiom" : "iphone", 25 | "scale" : "2x", 26 | "size" : "40x40" 27 | }, 28 | { 29 | "idiom" : "iphone", 30 | "scale" : "3x", 31 | "size" : "40x40" 32 | }, 33 | { 34 | "idiom" : "iphone", 35 | "scale" : "2x", 36 | "size" : "60x60" 37 | }, 38 | { 39 | "idiom" : "iphone", 40 | "scale" : "3x", 41 | "size" : "60x60" 42 | }, 43 | { 44 | "idiom" : "ipad", 45 | "scale" : "1x", 46 | "size" : "20x20" 47 | }, 48 | { 49 | "idiom" : "ipad", 50 | "scale" : "2x", 51 | "size" : "20x20" 52 | }, 53 | { 54 | "idiom" : "ipad", 55 | "scale" : "1x", 56 | "size" : "29x29" 57 | }, 58 | { 59 | "idiom" : "ipad", 60 | "scale" : "2x", 61 | "size" : "29x29" 62 | }, 63 | { 64 | "idiom" : "ipad", 65 | "scale" : "1x", 66 | "size" : "40x40" 67 | }, 68 | { 69 | "idiom" : "ipad", 70 | "scale" : "2x", 71 | "size" : "40x40" 72 | }, 73 | { 74 | "idiom" : "ipad", 75 | "scale" : "1x", 76 | "size" : "76x76" 77 | }, 78 | { 79 | "idiom" : "ipad", 80 | "scale" : "2x", 81 | "size" : "76x76" 82 | }, 83 | { 84 | "idiom" : "ipad", 85 | "scale" : "2x", 86 | "size" : "83.5x83.5" 87 | }, 88 | { 89 | "idiom" : "ios-marketing", 90 | "scale" : "1x", 91 | "size" : "1024x1024" 92 | }, 93 | { 94 | "idiom" : "mac", 95 | "scale" : "1x", 96 | "size" : "16x16" 97 | }, 98 | { 99 | "idiom" : "mac", 100 | "scale" : "2x", 101 | "size" : "16x16" 102 | }, 103 | { 104 | "idiom" : "mac", 105 | "scale" : "1x", 106 | "size" : "32x32" 107 | }, 108 | { 109 | "idiom" : "mac", 110 | "scale" : "2x", 111 | "size" : "32x32" 112 | }, 113 | { 114 | "idiom" : "mac", 115 | "scale" : "1x", 116 | "size" : "128x128" 117 | }, 118 | { 119 | "idiom" : "mac", 120 | "scale" : "2x", 121 | "size" : "128x128" 122 | }, 123 | { 124 | "idiom" : "mac", 125 | "scale" : "1x", 126 | "size" : "256x256" 127 | }, 128 | { 129 | "idiom" : "mac", 130 | "scale" : "2x", 131 | "size" : "256x256" 132 | }, 133 | { 134 | "idiom" : "mac", 135 | "scale" : "1x", 136 | "size" : "512x512" 137 | }, 138 | { 139 | "idiom" : "mac", 140 | "scale" : "2x", 141 | "size" : "512x512" 142 | } 143 | ], 144 | "info" : { 145 | "author" : "xcode", 146 | "version" : 1 147 | } 148 | } 149 | -------------------------------------------------------------------------------- /src/Shared (App)/Assets.xcassets/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "info" : { 3 | "author" : "xcode", 4 | "version" : 1 5 | } 6 | } 7 | -------------------------------------------------------------------------------- /src/Shared (App)/Assets.xcassets/LargeIcon.imageset/Contents.json: -------------------------------------------------------------------------------- 1 | { 2 | "images" : [ 3 | { 4 | "idiom" : "universal", 5 | "scale" : "1x" 6 | }, 7 | { 8 | "idiom" : "universal", 9 | "scale" : "2x" 10 | }, 11 | { 12 | "idiom" : "universal", 13 | "scale" : "3x" 14 | } 15 | ], 16 | "info" : { 17 | "author" : "xcode", 18 | "version" : 1 19 | } 20 | } 21 | -------------------------------------------------------------------------------- /src/Shared (App)/Base.lproj/Main.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | Gitpod Icon 14 |

You can turn on Gitpod’s Safari extension in Settings.

15 |

You can turn on Gitpod’s extension in Safari Extensions preferences.

16 |

Gitpod’s extension is currently on. You can turn it off in Safari Extensions preferences.

17 |

Gitpod’s extension is currently off. You can turn it on in Safari Extensions preferences.

18 | 19 | 20 | 21 | -------------------------------------------------------------------------------- /src/Shared (App)/Resources/Icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpod-io/gitpod-mobile-ios/f37e9e1452efaf08035105671234d1151106bef0/src/Shared (App)/Resources/Icon.png -------------------------------------------------------------------------------- /src/Shared (App)/Resources/Script.js: -------------------------------------------------------------------------------- 1 | function show(platform, enabled) { 2 | document.body.classList.add(`platform-${platform}`); 3 | 4 | if (typeof enabled === "boolean") { 5 | document.body.classList.toggle(`state-on`, enabled); 6 | document.body.classList.toggle(`state-off`, !enabled); 7 | } else { 8 | document.body.classList.remove(`state-on`); 9 | document.body.classList.remove(`state-off`); 10 | } 11 | } 12 | 13 | function openPreferences() { 14 | webkit.messageHandlers.controller.postMessage("open-preferences"); 15 | } 16 | 17 | document.querySelector("button.open-preferences").addEventListener("click", openPreferences); 18 | -------------------------------------------------------------------------------- /src/Shared (App)/Resources/Style.css: -------------------------------------------------------------------------------- 1 | * { 2 | -webkit-user-select: none; 3 | -webkit-user-drag: none; 4 | cursor: default; 5 | } 6 | 7 | :root { 8 | color-scheme: light dark; 9 | 10 | --spacing: 20px; 11 | } 12 | 13 | html { 14 | height: 100%; 15 | } 16 | 17 | body { 18 | display: flex; 19 | align-items: center; 20 | justify-content: center; 21 | flex-direction: column; 22 | 23 | gap: var(--spacing); 24 | margin: 0 calc(var(--spacing) * 2); 25 | height: 100%; 26 | 27 | font: -apple-system-short-body; 28 | text-align: center; 29 | } 30 | 31 | body:not(.platform-mac, .platform-ios) :is(.platform-mac, .platform-ios) { 32 | display: none; 33 | } 34 | 35 | body.platform-ios .platform-mac { 36 | display: none; 37 | } 38 | 39 | body.platform-mac .platform-ios { 40 | display: none; 41 | } 42 | 43 | body.platform-ios .platform-mac { 44 | display: none; 45 | } 46 | 47 | body:not(.state-on, .state-off) :is(.state-on, .state-off) { 48 | display: none; 49 | } 50 | 51 | body.state-on :is(.state-off, .state-unknown) { 52 | display: none; 53 | } 54 | 55 | body.state-off :is(.state-on, .state-unknown) { 56 | display: none; 57 | } 58 | 59 | button { 60 | font-size: 1em; 61 | } 62 | -------------------------------------------------------------------------------- /src/Shared (App)/ViewController.swift: -------------------------------------------------------------------------------- 1 | // 2 | // ViewController.swift 3 | // Shared (App) 4 | // 5 | // Created by ghuntley on 7/11/21. 6 | // 7 | 8 | import WebKit 9 | 10 | #if os(iOS) 11 | import UIKit 12 | typealias PlatformViewController = UIViewController 13 | #elseif os(macOS) 14 | import Cocoa 15 | import SafariServices 16 | typealias PlatformViewController = NSViewController 17 | #endif 18 | 19 | let extensionBundleIdentifier = "io.gitpod.Gitpod.Extension" 20 | 21 | class ViewController: PlatformViewController, WKNavigationDelegate, WKScriptMessageHandler { 22 | 23 | @IBOutlet var webView: WKWebView! 24 | 25 | override func viewDidLoad() { 26 | super.viewDidLoad() 27 | 28 | self.webView.navigationDelegate = self 29 | 30 | #if os(iOS) 31 | self.webView.scrollView.isScrollEnabled = false 32 | #endif 33 | 34 | self.webView.configuration.userContentController.add(self, name: "controller") 35 | 36 | self.webView.loadFileURL(Bundle.main.url(forResource: "Main", withExtension: "html")!, allowingReadAccessTo: Bundle.main.resourceURL!) 37 | } 38 | 39 | func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { 40 | #if os(iOS) 41 | webView.evaluateJavaScript("show('ios')") 42 | #elseif os(macOS) 43 | webView.evaluateJavaScript("show('mac')") 44 | 45 | SFSafariExtensionManager.getStateOfSafariExtension(withIdentifier: extensionBundleIdentifier) { (state, error) in 46 | guard let state = state, error == nil else { 47 | // Insert code to inform the user that something went wrong. 48 | return 49 | } 50 | 51 | DispatchQueue.main.async { 52 | webView.evaluateJavaScript("show('mac', \(state.isEnabled)") 53 | } 54 | } 55 | #endif 56 | } 57 | 58 | func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { 59 | #if os(macOS) 60 | if (message.body as! String != "open-preferences") { 61 | return; 62 | } 63 | 64 | SFSafariApplication.showPreferencesForExtension(withIdentifier: extensionBundleIdentifier) { error in 65 | guard error == nil else { 66 | // Insert code to inform the user that something went wrong. 67 | return 68 | } 69 | 70 | DispatchQueue.main.async { 71 | NSApplication.shared.terminate(nil) 72 | } 73 | } 74 | #endif 75 | } 76 | 77 | } 78 | -------------------------------------------------------------------------------- /src/Shared (Extension)/Resources/_locales/en/messages.json: -------------------------------------------------------------------------------- 1 | { 2 | "extension_name": { 3 | "message": "Gitpod", 4 | "description": "The display name for the extension." 5 | }, 6 | "extension_description": { 7 | "message": "This is Gitpod. You should tell us what your extension does here.", 8 | "description": "Description of what the extension does." 9 | } 10 | } 11 | -------------------------------------------------------------------------------- /src/Shared (Extension)/Resources/bundles: -------------------------------------------------------------------------------- 1 | ../../../browser-extension/dist/bundles -------------------------------------------------------------------------------- /src/Shared (Extension)/Resources/images/icon-128.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpod-io/gitpod-mobile-ios/f37e9e1452efaf08035105671234d1151106bef0/src/Shared (Extension)/Resources/images/icon-128.png -------------------------------------------------------------------------------- /src/Shared (Extension)/Resources/images/icon-256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpod-io/gitpod-mobile-ios/f37e9e1452efaf08035105671234d1151106bef0/src/Shared (Extension)/Resources/images/icon-256.png -------------------------------------------------------------------------------- /src/Shared (Extension)/Resources/images/icon-48.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpod-io/gitpod-mobile-ios/f37e9e1452efaf08035105671234d1151106bef0/src/Shared (Extension)/Resources/images/icon-48.png -------------------------------------------------------------------------------- /src/Shared (Extension)/Resources/images/icon-512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpod-io/gitpod-mobile-ios/f37e9e1452efaf08035105671234d1151106bef0/src/Shared (Extension)/Resources/images/icon-512.png -------------------------------------------------------------------------------- /src/Shared (Extension)/Resources/images/icon-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpod-io/gitpod-mobile-ios/f37e9e1452efaf08035105671234d1151106bef0/src/Shared (Extension)/Resources/images/icon-64.png -------------------------------------------------------------------------------- /src/Shared (Extension)/Resources/images/icon-96.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpod-io/gitpod-mobile-ios/f37e9e1452efaf08035105671234d1151106bef0/src/Shared (Extension)/Resources/images/icon-96.png -------------------------------------------------------------------------------- /src/Shared (Extension)/Resources/images/toolbar-icon-16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpod-io/gitpod-mobile-ios/f37e9e1452efaf08035105671234d1151106bef0/src/Shared (Extension)/Resources/images/toolbar-icon-16.png -------------------------------------------------------------------------------- /src/Shared (Extension)/Resources/images/toolbar-icon-19.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpod-io/gitpod-mobile-ios/f37e9e1452efaf08035105671234d1151106bef0/src/Shared (Extension)/Resources/images/toolbar-icon-19.png -------------------------------------------------------------------------------- /src/Shared (Extension)/Resources/images/toolbar-icon-32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpod-io/gitpod-mobile-ios/f37e9e1452efaf08035105671234d1151106bef0/src/Shared (Extension)/Resources/images/toolbar-icon-32.png -------------------------------------------------------------------------------- /src/Shared (Extension)/Resources/images/toolbar-icon-38.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/gitpod-io/gitpod-mobile-ios/f37e9e1452efaf08035105671234d1151106bef0/src/Shared (Extension)/Resources/images/toolbar-icon-38.png -------------------------------------------------------------------------------- /src/Shared (Extension)/Resources/manifest.json: -------------------------------------------------------------------------------- 1 | { 2 | "manifest_version": 2, 3 | "default_locale": "en", 4 | 5 | "name": "__MSG_extension_name__", 6 | "description": "__MSG_extension_description__", 7 | "version": "1.0", 8 | 9 | "icons": { 10 | "48": "images/icon-48.png", 11 | "96": "images/icon-96.png", 12 | "128": "images/icon-128.png", 13 | "256": "images/icon-256.png", 14 | "512": "images/icon-512.png" 15 | }, 16 | 17 | "background": { 18 | "scripts": [ "bundles/background.bundle.js" ], 19 | "persistent": false 20 | }, 21 | 22 | "content_scripts": [{ 23 | "js": [ 24 | "bundles/gitpodify.bundle.js" 25 | ], 26 | "matches": [ 27 | "*://*.github.com/*", 28 | "*://*.gitlab.com/*", 29 | "*://*.bitbucket.org/*", 30 | "*://*.gitlab.cn/*", 31 | "*://*.gitpod.io/*" 32 | ] 33 | }], 34 | 35 | "browser_action": { 36 | "default_popup": "options.html", 37 | "default_icon": { 38 | "16": "images/toolbar-icon-16.png", 39 | "19": "images/toolbar-icon-19.png", 40 | "32": "images/toolbar-icon-32.png", 41 | "38": "images/toolbar-icon-38.png" 42 | } 43 | }, 44 | 45 | "permissions": [ 46 | "activeTab", 47 | "storage" 48 | ] 49 | } 50 | -------------------------------------------------------------------------------- /src/Shared (Extension)/Resources/options.css: -------------------------------------------------------------------------------- 1 | ../../../browser-extension/src/options/options.css -------------------------------------------------------------------------------- /src/Shared (Extension)/Resources/options.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 |
10 | 11 | 12 |
13 |
14 | 15 | 16 |
17 | 22 |
23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /src/Shared (Extension)/SafariWebExtensionHandler.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SafariWebExtensionHandler.swift 3 | // Shared (Extension) 4 | // 5 | // Created by ghuntley on 7/11/21. 6 | // 7 | 8 | import SafariServices 9 | import os.log 10 | 11 | let SFExtensionMessageKey = "message" 12 | 13 | class SafariWebExtensionHandler: NSObject, NSExtensionRequestHandling { 14 | 15 | func beginRequest(with context: NSExtensionContext) { 16 | let item = context.inputItems[0] as! NSExtensionItem 17 | let message = item.userInfo?[SFExtensionMessageKey] 18 | os_log(.default, "Received message from browser.runtime.sendNativeMessage: %@", message as! CVarArg) 19 | 20 | let response = NSExtensionItem() 21 | response.userInfo = [ SFExtensionMessageKey: [ "Response to": message ] ] 22 | 23 | context.completeRequest(returningItems: [response], completionHandler: nil) 24 | } 25 | 26 | } 27 | -------------------------------------------------------------------------------- /src/iOS (App)/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // iOS (App) 4 | // 5 | // Created by ghuntley on 7/11/21. 6 | // 7 | 8 | import UIKit 9 | 10 | @main 11 | class AppDelegate: UIResponder, UIApplicationDelegate { 12 | 13 | var window: UIWindow? 14 | 15 | func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool { 16 | // Override point for customization after application launch. 17 | return true 18 | } 19 | 20 | func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration { 21 | return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role) 22 | } 23 | 24 | } 25 | -------------------------------------------------------------------------------- /src/iOS (App)/Base.lproj/LaunchScreen.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /src/iOS (App)/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /src/iOS (App)/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | UIApplicationSceneManifest 6 | 7 | UIApplicationSupportsMultipleScenes 8 | 9 | UISceneConfigurations 10 | 11 | UIWindowSceneSessionRoleApplication 12 | 13 | 14 | UISceneConfigurationName 15 | Default Configuration 16 | UISceneDelegateClassName 17 | $(PRODUCT_MODULE_NAME).SceneDelegate 18 | UISceneStoryboardFile 19 | Main 20 | 21 | 22 | 23 | 24 | 25 | 26 | -------------------------------------------------------------------------------- /src/iOS (App)/SceneDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // SceneDelegate.swift 3 | // iOS (App) 4 | // 5 | // Created by ghuntley on 7/11/21. 6 | // 7 | 8 | import UIKit 9 | 10 | class SceneDelegate: UIResponder, UIWindowSceneDelegate { 11 | 12 | var window: UIWindow? 13 | 14 | func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { 15 | guard let _ = (scene as? UIWindowScene) else { return } 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /src/iOS (Extension)/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSExtension 6 | 7 | NSExtensionPointIdentifier 8 | com.apple.Safari.web-extension 9 | NSExtensionPrincipalClass 10 | $(PRODUCT_MODULE_NAME).SafariWebExtensionHandler 11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/macOS (App)/AppDelegate.swift: -------------------------------------------------------------------------------- 1 | // 2 | // AppDelegate.swift 3 | // macOS (App) 4 | // 5 | // Created by ghuntley on 7/11/21. 6 | // 7 | 8 | import Cocoa 9 | 10 | @main 11 | class AppDelegate: NSObject, NSApplicationDelegate { 12 | 13 | func applicationDidFinishLaunching(_ notification: Notification) { 14 | // Override point for customization after application launch. 15 | } 16 | 17 | func applicationShouldTerminateAfterLastWindowClosed(_ sender: NSApplication) -> Bool { 18 | return true 19 | } 20 | 21 | } 22 | -------------------------------------------------------------------------------- /src/macOS (App)/Base.lproj/Main.storyboard: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 122 | 123 | 124 | 125 | -------------------------------------------------------------------------------- /src/macOS (App)/Gitpod.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.files.user-selected.read-only 8 | 9 | com.apple.security.network.client 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /src/macOS (Extension)/Gitpod.entitlements: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | com.apple.security.app-sandbox 6 | 7 | com.apple.security.files.user-selected.read-only 8 | 9 | 10 | 11 | -------------------------------------------------------------------------------- /src/macOS (Extension)/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | NSExtension 6 | 7 | NSExtensionPointIdentifier 8 | com.apple.Safari.web-extension 9 | NSExtensionPrincipalClass 10 | $(PRODUCT_MODULE_NAME).SafariWebExtensionHandler 11 | 12 | 13 | 14 | --------------------------------------------------------------------------------