The easiest way to install and switch between multiple versions of Xcode - with a mouse click.

Overview

Xcodes.app

The easiest way to install and switch between multiple versions of Xcode.

If you're looking for a command-line version of Xcodes.app, try xcodes.

CI

Features

  • List all available Xcode versions from Xcode Releases' data or the Apple Developer website.
  • Install any Xcode version, fully automated from start to finish. Xcodes uses aria2, which uses up to 16 connections to download 3-5x faster than URLSession.
  • Just click a button to make a version active with xcode-select.
  • View release notes, OS compatibility, included SDKs and compilers from Xcode Releases.

Installation

Xcodes.app runs on macOS Big Sur 11.0 or later.

Homebrew Cask

brew install --cask xcodes

# These are Developer ID-signed and notarized release builds and don't require Xcode to already be installed in order to use.

Download a release

  1. Download the latest version here using the Xcodes.zip asset. These are Developer ID-signed and notarized release builds and don't require Xcode to already be installed in order to use.
  2. Move the unzipped Xcodes.app to your /Applications directory

Development

You'll need macOS 11 Big Sur and Xcode 12 in order to build and run Xcodes.app.

If you aren't a Robots and Pencils employee you'll need to change the CODE_SIGNING_SUBJECT_ORGANIZATIONAL_UNIT build setting to your Apple Developer team ID in order for code signing validation to succeed between the main app and the privileged helper.

Notable design decisions are recorded in DECISIONS.md. The Apple authentication flow is described in Apple.paw, which will allow you to play with the API endpoints that are involved using the Paw app.

xcode-install and fastlane/spaceship both deserve credit for figuring out the hard parts of what makes this possible.

Releasing a new version

Follow the steps below to build and release a new version of Xcodes.app. For any of the git steps, you can use your preferred tool, but please sign the tag.

# Update the version number in Xcode and commit the change, if necessary

# Question: Did anything in XPCHelper change? 
# - com.robotsandpencils.XcodesApp.Helper folder and HelperXPCShared
# - if so, bump the version number in com.robotsandpencils.XcodesApp.Helper target. 
# Note: you do not have to bump the version number if nothing has changed.
# Note2: If you do bump the version, the end user, must re-install the XPCHelper and give permission again.

# Increment the build number
scripts/increment_build_number.sh

# Commit the change
git add Xcodes/Resources/Info.plist
git commit -asm "Increment build number"

# Tag the latest commit
# Replace $VERSION and $BUILD below with the latest real values
git tag -asm "v$VERSIONb$BUILD" "v$VERSIONb$BUILD"

# Push to origin
git push --follow-tags

# Build the app
# Make sure you have the Xcode Selected you want to build with
scripts/package_release.sh

# Notarize the app
# Do this from the Product directory so the app is zipped without being nested inside Product
# Create a app specific password on appleid.apple.com if you haven't already
# % xcrun altool --store-password-in-keychain-item "AC_PASSWORD" -u "<appleiduseremail>" -p <app_specific_secret>

pushd Product
../scripts/notarize.sh "[email protected]" "@keychain:AC_PASSWORD" <MyOrg> Xcodes.zip

# Sign the .zip for Sparkle, note the signature in the output for later
# If you're warned about the signing key not being found, see the Xcodes 1Password vault for the key and installation instructions.
../scripts/sign_update Xcodes.zip
popd

# Go to https://github.com/RobotsAndPencils/XcodesApp/releases
# If there are uncategorized PRs, add the appropriate label and run the Release Drafter action manually
# Edit the latest draft release
# Set its tag to the tag you just pushed
# Set its title to a string with the format "$VERSION ($BUILD)"
# Polish the draft release notes, if necessary
# Add the signature to the bottom of the release notes in a comment, like:
<!-- sparkle:edSignature=$SIGNATURE -->
# Attach the zip that was created in the Product directory to the release
# Publish the release

# Update the [Homebrew Cask](https://github.com/RobotsAndPencils/homebrew-cask/blob/master/Casks/xcodes.rb).

Contact

Made with ❤️ by Robots & Pencils

Twitter | GitHub

Issues
  • Implement install functionality

    Implement install functionality

    This adds install functionality to Xcodes. I took the XcodeInstaller code from xcodes and quickly ported it to Combine. The way that these publishers are used seems un-idiomatic, as the different installation steps are set in handleEvents operators, and the publishers all have a Void output type. It might be more appropriate to, for example, have the publishers send XcodeInstallState values instead, and I think we can revisit this after this is merged.

    Things that require sudo in xcodes use the helper, which is installed "on demand" from the user's perspective.

    I had to change how Process.run works because the combination of combineLatest(_:), subscribe(on:) and Deferred seemed to cause one of the security validation publishers to be subscribed to after the result value had already been sent.

    This doesn't include aria2 support, yet. I commented it out when I brought the xcodes code over, and plan on looping back to that soon.

    I added tests for the happy path to make sure that the XcodeInstallState is updated correctly. There are tests for both the Apple and Xcode Releases data sources, as the version information available in each is slightly different before the Xcode is actually installed, and so comparisons get tricky.

    Testing

    Find an Xcode you don't have and click Install. Wait ⌛ Make sure that the UI updates at the appropriate times (set breakpoints and/or watch Activity Monitor to get a sense of what's being done under the hood) Make sure that when it's done, the Make Active and Open buttons are shown and work.

    You should be able to do this without having installed the helper first (use ./Scripts/uninstall_privileged_helper.sh to remove it if you're not sure), or with it already installed.


    Relates to #4

    opened by interstateone 8
  • Software update mechanism

    Software update mechanism

    xcodes primarily uses homebrew for installation and updates, and while it might be possible to have a cask for Xcodes.app (I haven't looked into this) I think it'd be good to have something built in. We could probably have it check the GitHub repo's releases. I'm guessing someone has built something like this already, so check before we go down the path of rolling our own.

    Possible resources:

    enhancement 
    opened by interstateone 7
  • Auto download

    Auto download

    I really hate waiting for Xcode to download and expand. Would be super cool if this app could check for new versions of Xcode and get the process going in the background so I do r feel like I’m having to wait so long.

    enhancement 
    opened by jacobwhite 6
  • Add SettingsView, store credentials in Keychain, sign in if needed

    Add SettingsView, store credentials in Keychain, sign in if needed

    This adds a SettingsView that will be where signing in and out occurs:

    Screen Shot 2020-12-22 at 10 13 22 PM

    Credentials are now stored in the keychain, and the username is stored in UserDefaults so we know which account to look up. We probably only need one item, but this at least matches how xcodes does it.

    Some changes were made to the Xcode list update logic so that in addition to validating the session it'll sign in with saved credentials if necessary, or prompt the user to sign in, so that it can actually fetch the data. Previously this would fail silently. If it fails for some reason, it'll display the cached list.

    Resolves #1

    opened by interstateone 6
  • Fail to install Xcode

    Fail to install Xcode

    Describe the bug I can't install Xcode 12.5.
    The same goes for Xcode 12.2, 12.4, and others.

    An error occured
    
    The archive "Xcode-12.5.0+12E262.xip" is damaged and can't be expanded.
    

    To Reproduce Click the [INSTALL] button.

    Expected behavior Xcode will be installed.

    Screenshots スクリーンショット 2021-06-07 15 50 48

    Advanced
    スクリーンショット 2021-06-07 16 14 14

    Version

    • MacBook Air (M1, 2020)
    • OS: macOS Big Sur ~~11.2.3~~ 11.4
    • Xcodes: 1.0.5 (6)
    スクリーンショット_2021-06-07_15_55_20 スクリーンショット 2021-06-07 15 54 42 bug 
    opened by uhooi 5
  • Updates PreferencesView To use built in Settings Scene

    Updates PreferencesView To use built in Settings Scene

    Fixes #88

    Uses SwiftUI's Settings Scene - https://developer.apple.com/documentation/swiftui/settings Instead of PreferencesWindowController that comes with the Preferences add in.

    Preferences dependency has been removed. Converted the style with a PreferencesGroupBoxStyle, which turned out pretty well.

    Did a quick test for the options and things seems to work. Some awkwardness with InstallHelper as it closes the preferences window automatically, but it works.

    image

    The only annoyance that I couldn't figure out is the advanced view looks to have a different background color, compared to the other views, but I couldn't figure out why.

    enhancement 
    opened by MattKiazyk 4
  • Identical builds aren't represented clearly

    Identical builds aren't represented clearly

    Hi! I installed the app and ran it and noticed it was out of date as it didnt include 12.4 as my command line did Screen Shot 2021-01-28 at 8 46 56 AM Screen Shot 2021-01-28 at 8 48 56 AM I hit the refresh button and it did not show up. Then I went to preferences and signed in, hit refresh, still nothing. Not sure why its missing the 12.4 release (not the RC)

    bug 
    opened by paulthorsteinson 3
  • Auto download

    Auto download

    I hate waiting for Xcode to download, would be super cool if the latest beta could download and extract itself as soon as it’s available, so it’s there ready and waiting for me when I need it.

    enhancement 
    opened by jacobwhite 3
  • Improve how identical builds are represented in the UI

    Improve how identical builds are represented in the UI

    This change attempts to improve how different versions with the exact same build identifier are represented in the UI.

    Background: Sometimes the last prerelease version (for example 12.4 Release Candidate) and the release version (12.4) are the exact same and have the same build identifier as a result (12D4e in this case.) While we could just do the easy thing and have independent rows in the list for each version, this makes it difficult to determine which versions are installed. I also doubt that anyone would really want more than one version installed when they're the exact same build. If anything, most users would want to know when they're the exact same so that they can avoid installing another version.

    Through version 1.0.3 (4) I'd attempted to handle this by filtering out prerelease versions that had the same build identifier as a release version. For a couple reasons this ended up being confusing, and resulted in issue #90.

    The main change here is instead of filtering out versions, keep the release version and associate the other prerelease versions with identical build identifiers with it. These identical builds can then be represented in the list and info pane.

    One of the issues before was that there is some "adjusting" logic that tries to improve the data we have about available and installed Xcode versions. This was originally added because of shortcomings of scraping the Apple Developer site. I kept this code even after we added the Xcode Releases data source, and while it was mostly benign it made this identical build ambiguity worse. This PR changes this "adjusting" logic to only apply to the Apple data source instead. It also now treats what Xcode Release identifies as GM versions (which are final releases, as opposed to GM seeds) as release versions without any prerelease identifiers.

    The UI changes that I ended up with are an icon in the list row and a new section in the info pane. I had tested out an expanding row that revealed the identical build versions, which I think is valuable, but I'm finding too many issues with the macOS List implementation (performance and memory leaks) and I'm concerned about making the row views more complex. I'd like to revisit this design in the future, though. Instead a single icon is added with some help text. For both of the new views I made sure to use some accessibility modifiers so they both read reasonably well with VoiceOver when testing with the Accessibility Inspector. I didn't go any further than the new UI, but I think we should take a pass on the rest of the app soon.

    Screen Shot 2021-02-04 at 9 16 28 PM

    Example: note that I have 12.4 RC installed, and the row for the final release is appearing as installed with the correct path. The row has the identical builds indicator, and both versions are listed under the new heading in the info pane.


    Closes #90

    bugfix 
    opened by interstateone 3
  • Move Xcode selection state into window, improve performance

    Move Xcode selection state into window, improve performance

    At one point changing the selected row in the Xcode list became noticeably slow, especially if you held down an arrow key to try to do it quickly. Moving up and down the list for a few seconds, without even causing it to scroll, would also leak tens of megabytes over a few seconds (!!!) The allocations instrument wasn't too helpful, but the SwiftUI view properties one had AppState changes listed towards the top. One change that I'd made in order to support the Xcode menu's use of the focused values API was to move the selection state from the list view to AppState. This wasn't the ideal place for this because at the time only the list needed to care about it. Now there's the info pane and window which contains both, which is a better place for it. Putting it in AppState was also incorrect, because it's actually scene-specific state: each window needs to be able to make its own independent selection. And it seems to have caused really poor performance, with SwiftUI struggling to diff the whole app, and leaking a lot in the process.

    To test this, run the app on main and on this branch. Select the first Xcode and then move the selection up and down the list with the arrow keys for a few seconds. You should see a lot less memory usage on this branch in the Debug navigator, and the UI should be noticeably more responsive. It's still not great, but I think this at least undoes the earlier regression.

    opened by interstateone 2
  • Ability to launch currently-active Xcode via scripting

    Ability to launch currently-active Xcode via scripting

    Tell us how we can improve Xcodes

    Is your feature request related to a problem? Please describe.

    I love binding a key command to launch Xcode — it makes it super fast to get back into Xcode. (I use Many Tricks' Butler app)

    However, the key binding I use launches an app called "Xcode.app"… which would work normally, but since Xcodes installs and activates different versions of the app, my macro/key binding now needs to launch "Xcode-13.0.0-Beta.3.app" (and tomorrow, Beta.4).

    What would you like to see? How would you like it to work?

    Feature request:

    Create a way to launch/switch the currently-activiated Xcode via scripting in Xcodes. Perhaps via AppleScript? Or perhaps by creating an alias that I can open (that changes when different Xcode is activated).

    enhancement 
    opened by fancyham 0
  • Include command line app in app bundle

    Include command line app in app bundle

    For some workflows we need to change the version of Xcode to a specific release. It would be nice to have a unified approach that does not require sudo.

    enhancement 
    opened by hstriepe 0
  • Readme link to apple.paw is broken

    Readme link to apple.paw is broken

    Describe the bug In Readme file, link to apple.paw file is broken

    https://github.com/RobotsAndPencils/XcodesApp/blame/main/README.md#L41

    bug 
    opened by alirp88 0
  • Bump rexml from 3.2.4 to 3.2.5 in /AppCast

    Bump rexml from 3.2.4 to 3.2.5 in /AppCast

    Bumps rexml from 3.2.4 to 3.2.5.

    Changelog

    Sourced from rexml's changelog.

    3.2.5 - 2021-04-05 {#version-3-2-5}

    Improvements

    • Add more validations to XPath parser.

    • require "rexml/document" by default. [GitHub#36][Patch by Koichi ITO]

    • Don't add #dclone method to core classes globally. [GitHub#37][Patch by Akira Matsuda]

    • Add more documentations. [Patch by Burdette Lamar]

    • Added REXML::Elements#parent. [GitHub#52][Patch by Burdette Lamar]

    Fixes

    Thanks

    • Koichi ITO

    • Akira Matsuda

    • Burdette Lamar

    • Juho Nurminen

    Commits
    • a622645 Add 3.2.5 entry
    • 3c137eb Fix a parser bug that some data may be ignored before DOCTYPE
    • 9b311e5 Fix a bug that invalid document declaration may be accepted
    • f9d88e4 Fix a bug that invalid document declaration may be generated
    • f7bab89 Fix a bug that invalid element end may be accepted
    • 6a250d2 Fix a bug that invalid element start may be accepted
    • 2fe62e2 Fix a bug that invalid notation declaration may be accepted
    • a659c63 Fix a bug that invalid notation declaration may be generated
    • 790dd11 Use ruby/setup-ruby (#66)
    • eda1b20 Clean up and enhance high-level RDoc (#65)
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) You can disable automated security fix PRs for this repo from the Security Alerts page.
    dependencies ruby 
    opened by dependabot[bot] 0
  • Bump actions/cache from 2.1.5 to 2.1.6

    Bump actions/cache from 2.1.5 to 2.1.6

    Bumps actions/cache from 2.1.5 to 2.1.6.

    Release notes

    Sourced from actions/cache's releases.

    v2.1.6

    • Catch unhandled "bad file descriptor" errors that sometimes occurs when the cache server returns non-successful response (actions/cache#596)
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies github_actions 
    opened by dependabot[bot] 0
  • Actions that first require login should continue after a successful login

    Actions that first require login should continue after a successful login

    Describe the bug If a user is attempting to perform an action that requires a login session (refreshing list of available Xcodes, installing a new Xcode) they will be presented with a login sheet. After successfully logging in though the action that was previously being performed does not resume.

    To Reproduce

    • Start with a logged out session
    • Tap install on any Xcode that is not currently installed
    • You should be prompted to sign in
    • Provide valid sign in credentials

    Expected behavior The install process starts

    Actual behaviour The install process is cancelled/interrupted by the login flow

    Version

    • OS: 11.2.3
    • Xcodes: 1.0.5 (6)
    bug 
    opened by aerickson14 0
  • 'Make active' button has no effect

    'Make active' button has no effect

    Describe the bug With Xcode 12.4 as my current default, tapping 'make active' on 12.5 does nothing.

    To Reproduce set your default to 12.4 (or likely other) and then tap 'make active' on 12.5

    Expected behavior I expected it would make 12.5 the default

    Screenshots attached

    Version

    • OS: 11.2.3
    • Xcodes: 1.0.5 (6)
    Screen Shot 2021-04-27 at 11 34 03 AM bug 
    opened by paulthorsteinson 10
  • Update XcodesApp.swift

    Update XcodesApp.swift

    Create MenuBar item. Probably needs additional ui in settings to only show menu bar item, and hide the dock icon and all that. But this seems to work okay. Maybe needs better icon.

    opened by jacobwhite 7
  • Ask admin credentials if Xcode installation in /Applications is not allowed

    Ask admin credentials if Xcode installation in /Applications is not allowed

    As a developer, my Mac OS session runs with a "Standard" user. I have an "Admin" user, if some actions require admin privilege, like installing Xcode application in the /Applications folder.

    I tried to install Xcode 12.5 beta 2 with the application with aria2. The zip was in the Application Support folder, and Xcode was unzipped. But nothing happen to allow the installation in the /Applications.

    I've installed the "Privileged helper" but it didn't help.

    Some ideas:

    • Like Sparkle, when Xcodes application detects an update, the sdk downloads it. Then, it asks credential to install in /Applications.
    • I assume the "Privileged helper" needs "admin" authorisation to do the stuff. Ask credentials in the UI if needed.
    Xcodes app update with Sparkle SDK on a Standard user session enhancement 
    opened by pyby 0
  • Create alias for current active version at /Applications/Xcode.app

    Create alias for current active version at /Applications/Xcode.app

    I would love an option to always have the file in /Applications/Xcodes.app or the latest release version there and the latest beta in /Applications/Xcodes Beta.app or something similar. This would lead to the file not being removed from Dock.

    Of course both these would have to be checked for existence first.

    enhancement 
    opened by Kamik423 2
Releases(v1.1.0b7)
  • v1.1.0b7(Jun 7, 2021)

    Install Xcodes using one of the methods listed here. Update Xcodes by selecting Check for Updates... in the Xcodes menu in the menu bar.

    Changes

    • Handle required log in scenarios better instead of showing errors (#127) @aerickson14
    • Create universal aria2 binary (#123) @senmu

    🚀 Enhancements

    • Adds MacOS notifications (#126) @MattKiazyk Turn on via Settings!
    • Show sign in errors inline on sign in view (#129) @aerickson14

    🐛 Bug Fixes

    • only present a single alert at time (#131) @aerickson14

    🧰 Maintenance

    • Bump actions/checkout from 2 to 2.3.4 (#133) @dependabot
    • Bump actions/setup-ruby from 1 to 1.1.3 (#134) @dependabot
    • include updates to sparkle license (#130) @aerickson14
    • Bump actions/cache from v2.1.4 to v2.1.5 (#119) @dependabot
    • Bump kramdown from 2.3.0 to 2.3.1 in /AppCast (#118) @dependabot
    Source code(tar.gz)
    Source code(zip)
    Xcodes.zip(11.75 MB)
  • v1.0.5b6(Mar 10, 2021)

    Install Xcodes using one of the methods listed here. Update Xcodes by selecting Check for Updates... in the Xcodes menu in the menu bar.

    Changes

    🚀 Enhancements

    • Updates estimated time on info pane to 2 lines for better readability (#115) @MattKiazyk
    • Auto Install Xcode if wanted (#114) @MattKiazyk

    🧰 Maintenance

    • Add install and update instructions to release notes (#111) @interstateone
    Source code(tar.gz)
    Source code(zip)
    Xcodes.zip(9.94 MB)
  • v1.0.4b5(Feb 22, 2021)

    Install Xcodes using one of the methods listed here. Update Xcodes by selecting Check for Updates... in the Xcodes menu in the menu bar.

    Changes

    🚀 Enhancements

    • Display installation steps with download stats in info pane (#107) @MattKiazyk
    • Display the download file size when using Apple data source (#98) @MattKiazyk
    • Change PreferencesView to use SwiftUI's built-in Settings scene (#89) @MattKiazyk

    🐛 Bug Fixes

    • Improve how identical builds are represented in the UI (#100) @interstateone
    • When downloading, use the downloader specified in preferences (#102) @MattKiazyk
    • Remove info pane from split view instead of hiding it (#103) @interstateone
    • Move the .help for the ProgressIndicator so it refreshes with the fraction change (#104) @MattKiazyk

    🧰 Maintenance

    • Bump actions/cache from v2 to v2.1.4 (#105) @dependabot
    • Add Homebrew Cask install instructions (#95) @interstateone
    Source code(tar.gz)
    Source code(zip)
    Xcodes.zip(9.93 MB)
  • v1.0.3b4(Jan 26, 2021)

    Changes

    🚀 Enhancements

    • Add tooltip with percent complete to download progress indicator (#81) @MattKiazyk
    • Prepare user for helper installation before attempting to install (#84) @interstateone
    • Handle helper installation errors (#80) @interstateone
    • Catch and reword xip "not enough free space" error (#79) @interstateone
    • Show stored username in General preference pane even when we don't have a valid session (#87) @interstateone
    • Change the Updates preference pane copy to make it more clear its for app updates (#74) @MattKiazyk

    🐛 Bug Fixes

    • Improve authentication error messages that are shown to users (#86) @interstateone
    • Persist filter and info pane state across app launches (#78) @MattKiazyk
    • Don't show parentheses when buildMetadataIdentifiers is empty (#73) @MattKiazyk

    🧰 Maintenance

    • Add instructions to move app to /Applications to README (#82) @MattKiazyk
    • Add GitHub issue templates (#75) @MattKiazyk
    Source code(tar.gz)
    Source code(zip)
    Xcodes.zip(9.97 MB)
  • v1.0.2b3(Jan 20, 2021)

  • v1.0.1b2(Jan 20, 2021)

    Changes

    • Manually build and deploy the appcasts (#61) @interstateone
    • Fold HelperInstaller into HelperClient, improve error handling and logging (#59) @interstateone
    • Build and publish appcasts with GitHub Pages (#60) @interstateone
    Source code(tar.gz)
    Source code(zip)
    Xcodes.zip(7.97 MB)
  • v1.0.0b1(Jan 18, 2021)

Owner
Robots and Pencils
Robots and Pencils is a digital innovation firm companies engage to create what's next. We use mobile, web and frontier technologies to transform businesses.
Robots and Pencils
The easiest way to get started with PostgreSQL on the Mac

Postgres.app The easiest way to run PostgreSQL on your Mac Includes everything you need to get started with PostgreSQL Comes with a pretty GUI to star

Postgres.app 5.8k Aug 1, 2021
OS X and iOS application and framework to play with the Apple Push Notification service (APNs)

Pusher OS X and iOS application and framework to play with the Apple Push Notification service (APNs) Installation Install the Mac app using Homebrew

noodlewerk 6.1k Jul 29, 2021
A macOS app which helps you manage dependency releases in your Podfile.

Pods Updater Why this app? I believe it should be up to the developer to determine the exact versions of dependencies used in their projects. When add

Kizito Nwose 516 Jul 23, 2021
:closed_book: Swift Logging Utility for Xcode Google Docs

QorumLogs Swift Logging Utility in Xcode & Google Docs Log Levels class MyAwesomeViewController: UIViewController { override func viewDidLoad() {

Goktug Yilmaz 782 Jul 16, 2021
Use the Touch Bar on any Mac

Touch Bar Simulator Use the Touch Bar on any Mac Launch the Touch Bar simulator from anywhere without needing to have Xcode installed, whereas Apple r

Sindre Sorhus 1.5k Aug 4, 2021
The Git interface you've been missing all your life has finally arrived.

GitUp Work quickly, safely, and without headaches. The Git interface you've been missing all your life has finally arrived. Git recently celebrated it

GitUp 9.8k Jul 31, 2021
Hosts file manager for OS X

Gas Mask Gas Mask is simple hosts file manager for macOS. It allows editing of host files and switching between them. System requirements Runs on Lion

Siim Raud 3.3k Jul 28, 2021
A simple but highly customizable `UICollectionViewLayout` for `UICollectionView`.

CollectionViewPagingLayout Layout Designer SnapshotTransformView ScaleTransformView StackTransformView Custom implementations About This is a simple b

Amir Khorsandi 1.3k Aug 4, 2021
MySQL/MariaDB database management for macOS

Sequel Ace Sequel Ace is the "sequel" to longtime macOS tool Sequel Pro. Sequel Ace is a fast, easy-to-use Mac database management application for wor

Sequel-Ace 3.4k Aug 5, 2021
MySQL/MariaDB database management for macOS

Sequel Pro Sequel Pro is a fast, easy-to-use Mac database management application for working with MySQL & MariaDB databases. You can find more details

Sequel Pro 8.4k Aug 1, 2021
Fork of Pieter's nice git GUI for OS X. Includes branch/tag sidebar and various fixes. Current development focus is on removing legacy git command line usage in favour of libgit2 and objective-git.

What is GitX? GitX is a graphical client for the git version control system, written specifically for OS X Mavericks. This means that it has a native

Rowan James 2.1k Jul 31, 2021
MQTT X - Elegant Cross-platform MQTT 5.0 Desktop Client

MQTT X English | 简体中文 | 日本語 MQTT X is a cross-platform MQTT 5.0 client tool open sourced by EMQ, which can run on macOS, Linux and Windows, and suppor

Scalable Enterprise MQTT Broker 1.2k Aug 5, 2021
The unofficial WWDC app for macOS

The unofficial WWDC app for macOS Enjoy WWDC from the comfort of your Mac with the unofficial WWDC app for macOS. Whether you're (virtually) attending

Guilherme Rambo 8.1k Jul 31, 2021
A free, native Apple macOS app for testing HTTP/REST endpoints

About CocoaRestClient is a Mac OS X app for testing HTTP/Restful endpoints. I love curl, but sometimes I need my output XML or JSON pretty printed. I

Mike Mattozzi 2.2k Aug 2, 2021