Commit graph

562 commits

Author SHA1 Message Date
Matt Kiazyk
f636651ba4
Moves the .help for the ProgressIndicator so it refreshes with the fraction change 2021-02-07 14:33:48 -06:00
Brandon Evans
1dd6232891
Remove InfoPane from split view instead of hiding it
When it was hidden the split view would still allow you to resize the remaining split, which resulted in weird behaviour. Instead, just remove the info pane split and the split view doesn't let you resize. Had to move where this global alert lives as a result because it might have to be presented even if the info pane isn't visible.

I tried changing the alert so it wasn't on the main window, and was instead local to the buttons that triggered its presentation, and this worked for all but the case where the CancelInstallButton was used from the Xcode menu. So for now I left it close to where it already was.
2021-02-06 18:28:05 -07:00
Brandon Evans
3208a4d8d2
Put InfoPane content in ScrollView
This issue was revealed when I broke the identical builds functionality with the Apple data source. https://github.com/RobotsAndPencils/XcodesApp/pull/100#pullrequestreview-584917125
2021-02-06 15:29:33 -07:00
Brandon Evans
b8bae4f32c
Don't consider versions without build identifiers for identical builds 2021-02-06 14:56:28 -07:00
Brandon Evans
ef646b7b88
Add identical builds indicator to XcodeListViewRow 2021-02-06 14:43:35 -07:00
Brandon Evans
70872f441a
Make XcodeListViewRow.appState a normal property
It doesn't need to be a DynamicProperty because it only invokes its methods.
2021-02-06 14:43:35 -07:00
Brandon Evans
70ca8c37bf
Add identical builds to the info pane 2021-02-06 14:43:35 -07:00
Matt Kiazyk
1c6efbbbb1
default to aria2 2021-02-06 14:31:46 -06:00
Matt Kiazyk
c6e3382d94
When downloading, use the downloader from userdefaults 2021-02-05 08:32:23 -06:00
Brandon Evans
760c9f300e
Handle duplicate 3.2.3 release builds
:/
2021-02-04 21:25:01 -07:00
Brandon Evans
dcd4001548
Merge identical builds into the release version instead of filtering 2021-02-04 21:25:00 -07:00
Brandon Evans
bc45daeb74
Only adjust available versions for Apple data source 2021-02-04 21:25:00 -07:00
Brandon Evans
7ac4814420
Treat GM versions as release versions 2021-02-04 21:25:00 -07:00
Brandon Evans
57767f6920
Fix RC capitalization 2021-02-04 21:25:00 -07:00
Matt Kiazyk
75cbd9550b
Adjust ByteCountFormatter. PR Feedback 2021-02-03 21:55:47 -06:00
Matt Kiazyk
b53c480764
Adds a DownloadFileSize when using Apple Data Source 2021-02-01 21:18:49 -06:00
Matt Kiazyk
385f740c42
Reset spm cache to correctly create license file 2021-01-28 17:20:23 -07:00
Matt Kiazyk
e6ee43a169
Preferences UI adjustments 2021-01-28 17:20:22 -07:00
Matt Kiazyk
a740b3be08
Remove Preferences dependency. Adjust Settings UI with groups 2021-01-27 21:38:22 -06:00
Matt Kiazyk
202212f417
Updates PreferencesView To use built in Settings Scene 2021-01-26 22:45:43 -06:00
Brandon Evans
bb28386306
Increment build number 2021-01-26 08:54:44 -07:00
Brandon Evans
352816f64a
Merge pull request #87 from RobotsAndPencils/auth-pref-ui-change
Show stored username in General preference pane even when we don't have a valid session
2021-01-26 08:50:18 -07:00
Brandon Evans
75457dd9eb
Show stored username in General preference pane
This reverts the change from 90c067997b so that the username is shown in situations where we don't have a valid session but could almost certainly get one. Instead, to achieve what that commit was trying to do, we'll instead remove the username from UserDefaults if auth fails with an invalid username or password error. I think this will more closely match what users expect in this UI.

I've added a comment in the UI explaining why it is the way it is. It might also be worth considering renaming AuthenticationState or its cases to better reflect that it's probably more about the (short-lived) session state than whether the user has signed in before and has stored their credentials.
2021-01-25 19:56:28 -07:00
Brandon Evans
58cddb88f6
Try to improve auth error messages 2021-01-25 19:36:49 -07:00
Brandon Evans
a04bfb39d0
Treat 400 from security code submission to be incorrect code 2021-01-25 19:23:51 -07:00
Brandon Evans
9508cda585
Remove invalid phone number index error
Not relevant for Xcodes.app.
2021-01-25 19:23:50 -07:00
Brandon Evans
6b5a64010e
Add bug report and feature request options to Help menu
This will support error messages that instruct the user to go to the Help menu for these things.
2021-01-25 19:23:50 -07:00
Brandon Evans
9a2057bcd5
Merge pull request #84 from RobotsAndPencils/prepare-user-for-helper-installation
Prepare user for helper installation before attempting to install
2021-01-25 18:33:48 -07:00
Brandon Evans
cb507c3d02
Prepare user for helper installation before post-install steps 2021-01-23 20:25:28 -07:00
Brandon Evans
044f066422
Extract HelperInstallState to new file 2021-01-23 19:38:11 -07:00
Brandon Evans
d84173e29c
Prepare user for helper installation
Doesn't yet handle the post-install steps that need the helper.
2021-01-23 19:38:11 -07:00
Matt Kiazyk
f970649bad
Merge pull request #81 from RobotsAndPencils/matt/progressToolTip
Show ToolTip on progress indicator
2021-01-23 17:29:27 -06:00
Matt Kiazyk
7fad56b3f7
Put tooltip on installationStepView 2021-01-23 17:13:07 -06:00
Brandon Evans
408d05a4a7
Merge pull request #80 from RobotsAndPencils/handle-helper-install-errors
Handle helper installation errors
2021-01-23 15:00:57 -07:00
Brandon Evans
6d2fce2078
Merge pull request #79 from RobotsAndPencils/not-enough-free-space-error
Catch and reword xip "not enough free space" error
2021-01-23 15:00:43 -07:00
Matt Kiazyk
102f3bbb58
Add comments about why we're using appStorage instead of sceneStorage
Co-authored-by: Brandon Evans <brandon.evans@robotsandpencils.com>
2021-01-23 15:45:52 -06:00
Matt Kiazyk
f9fe902007
Show ToolTip on progress indicator 2021-01-23 15:41:49 -06:00
Brandon Evans
91293557ec
Catch and reword xip "not enough free space" error 2021-01-23 13:28:43 -07:00
Matt Kiazyk
8334e38a0a
#71 Update Filter/Info to use AppStorage 2021-01-23 14:22:23 -06:00
Brandon Evans
6b5c288a40
Unwrap auth error messages to avoid "Optional(...)" 2021-01-22 22:19:31 -07:00
Brandon Evans
e21e4d9cdf
Handle helper installation errors 2021-01-22 22:18:59 -07:00
Brandon Evans
d834f3ed74
Merge pull request #73 from RobotsAndPencils/matt/fixbuildMetadataIdentifiers
Don't show brackets when buildMetadataIdentifiers is empty
2021-01-21 08:18:48 -07:00
Matt Kiazyk
7d57124a5f
Updates the App Update copy to be more relevant about app vs xcode 2021-01-20 21:19:44 -06:00
Matt Kiazyk
aa49f36b03
don't show brackets when buildMetadataIdentifiers is empty 2021-01-20 21:13:53 -06:00
Brandon Evans
1ba03fca7f
Increment build number
Signed-off-by: Brandon Evans <brandon@brandonevans.ca>
2021-01-20 08:50:55 -07:00
Brandon Evans
99b10e08aa
Merge pull request #62 from RobotsAndPencils/sparkle
Add Sparkle
2021-01-20 08:45:49 -07:00
Brandon Evans
b0f09ace04
Add trailing padding to preference panes 2021-01-20 08:45:18 -07:00
Brandon Evans
f1ecf1ad3d
Increment build number 2021-01-19 22:22:24 -07:00
Brandon Evans
a0c35ff945
Bump version to 1.0.1 2021-01-19 22:19:40 -07:00
Brandon Evans
29aa1e3b0e
Add Sparkle public key to Info.plist 2021-01-19 21:46:02 -07:00
Brandon Evans
b39d6d58da
Add Toggle for prerelease appcast 2021-01-19 21:46:02 -07:00
Brandon Evans
f3a3961e0e
Split up preferences, add Updates pane 2021-01-19 21:46:02 -07:00
Brandon Evans
b3dbb1af45
Initialize SUUpdater and add check for updates menu item 2021-01-19 21:46:02 -07:00
Brandon Evans
23df4a8c3a
Merge pull request #59 from RobotsAndPencils/xpc-connection-bug
Fold HelperInstaller into HelperClient, improve error handling and logging
2021-01-19 20:26:23 -07:00
Brandon Evans
8a0fa1da2e
Use git tags to track build numbers 2021-01-18 19:44:16 -07:00
Chad Sykes
cec8fd884a
Add a script to incrementing the project build number in a yyyymmddnnn format where the nnn is an auto incrementing number (i.e. 20210103001) 2021-01-18 18:52:02 -07:00
Brandon Evans
e467f26adc
Add more logging to HelperClient 2021-01-17 12:37:40 -07:00
Brandon Evans
3d5edb3968
Replace NSError() with specific error 2021-01-17 12:29:28 -07:00
Brandon Evans
55e0447e54
Invalidate XPC connection after installing 2021-01-17 11:57:45 -07:00
Brandon Evans
a504504825
Always show build identifiers in list and info pane 2021-01-16 13:30:52 -07:00
Brandon Evans
4301667000
Replace print/dump/NSLog with os.log Logger 2021-01-16 13:14:27 -07:00
Brandon Evans
cd2bde2272
Move Xcode path into XcodeInstallState.installed case 2021-01-16 13:09:48 -07:00
Brandon Evans
bc27f1785b
Filter out prerelease versions that have the same build identifier as a release build 2021-01-16 11:40:27 -07:00
Brandon Evans
62237bf4a8
Fix a bug when an installed version was appended
We were appending a version without appending a corresponding AvailableXcode, and these two arrays were being zipped later so they wouldn't line up. This change simplifies this method a bit by working on only a single array, and then also moves that appending to the end after the array of Xcodes is created.
2021-01-16 11:40:04 -07:00
Brandon Evans
26da7969a1
Make sure install updates happen on main queue 2021-01-16 10:15:39 -07:00
Brandon Evans
ed023218b8
Simplify Version comparison 2021-01-16 10:15:39 -07:00
Brandon Evans
faad4c2ab7
Fix bug where adjusted versions weren't used to look up AvailableXcodes 2021-01-16 10:15:39 -07:00
Brandon Evans
baa8491786
If build metadata identifiers match, treat it as a match regardless of other version components 2021-01-16 10:15:39 -07:00
Brandon Evans
ad02e89449
Add failing test to cover removing an uninstalled version, fix it
https://github.com/RobotsAndPencils/XcodesApp/pull/44#issuecomment-756783640
2021-01-16 10:15:32 -07:00
Brandon Evans
683b2e45fb
Merge pull request #52 from RobotsAndPencils/kill-aria-if-xcodes-quits
Stop aria2c if Xcodes stops
2021-01-16 10:12:58 -07:00
Sam Lu
47a6bf01be
Add app icon 2021-01-14 11:04:46 -07:00
Brandon Evans
0295bc8b1b
Stop aria2c if Xcodes stops
I removed this because I thought it wasn't necessary for some reason. We do send a SIGTERM if the user cancels the installation (via subscription cancellation), but if the whole app quits aria2c would keep running in the background.
2021-01-12 20:51:22 -07:00
Brandon Evans
93f819f2f3
Add downloaders to SettingsView 2021-01-08 17:22:38 -07:00
Brandon Evans
23cd43011b
Bundle aria2c 1.35.0 executable and source 2021-01-08 17:22:38 -07:00
Brandon Evans
fecb40893f
Don't replace existing install state when updating 2021-01-07 21:25:08 -07:00
Brandon Evans
4a33d010a8
Confirm before cancelling installation 2021-01-07 21:25:08 -07:00
Brandon Evans
1a830dc9dc
Add cancel install button to context menu and info pane 2021-01-07 21:25:08 -07:00
Brandon Evans
482b32e4e0
Add isTesting to make NSTestCase check more clear 2021-01-07 21:25:07 -07:00
Brandon Evans
89143b8751
Dispatch Process.run work manually instead of using subscribe(on:) and receive(on:)
The previous implementation was doing something weird when it was used during installation in:

verifySecurityAssessment(of: installedXcode)
    .combineLatest(self.verifySigningCertificate(of: installedXcode.path.url))

It looks like it would subscribe after the Process.run future had already sent a value, and so it would never finish. This seems weird, and I'm assuming that I'm misunderstanding something about this behaviour, but dispatching manually seems reasonable and works.
2021-01-07 21:25:07 -07:00
Brandon Evans
bfb3fd9ea5
Add install functionality
I'm omitting aria2 support for now.
2021-01-07 21:25:07 -07:00
Brandon Evans
90c067997b
Only show Sign Out button when actually authenticated 2021-01-07 21:13:29 -07:00
Brandon Evans
a0e258a937
Move credential auth error somewhere it won't disappear
When signing in, the Sign In button is not always in the view hierarchy, meaning error alerts weren't being shown until the next time the button appeared.
2021-01-07 20:47:31 -07:00
Brandon Evans
a3e9101397
Replace .alert with .emittingError 2021-01-04 16:23:35 -07:00
Brandon Evans
f1cdf65be7
Add ErrorHandling 2021-01-04 16:22:09 -07:00
Brandon Evans
813489b5fa
Add Environment+Mock 2021-01-03 10:18:48 -07:00
Brandon Evans
b1e6cffd09
Use helper from Current 2021-01-03 10:18:08 -07:00
Brandon Evans
f3680da2ae
Add InstallationStepView 2021-01-01 15:36:20 -07:00
Brandon Evans
ba1c4fec0f
Merge pull request #38 from RobotsAndPencils/remove-promisekit
Remove PromiseKit
2021-01-01 15:03:34 -07:00
Brandon Evans
245780023b
Convert Current.shell to Combine 2021-01-01 15:02:21 -07:00
Brandon Evans
f00ae396a6
Remove Current.shell sudo functionality
This'll be done in the helper
2021-01-01 15:02:20 -07:00
Brandon Evans
9971e0b45d
Remove Promise retry functions
We'll need to reimplement these later when implementing installation
2021-01-01 15:02:20 -07:00
Brandon Evans
fa277ccaae
Convert URLSession.downloadTask to Combine 2021-01-01 15:02:20 -07:00
Matt Kiazyk
7d1e22e668
Remove some unused code 2021-01-01 13:01:07 -06:00
Brandon Evans
95ca2bc1c3
Remove PromiseKit and PMKFoundation 2021-01-01 10:29:27 -07:00
Matt Kiazyk
72bdadb796
PR Cleanup 2020-12-31 16:06:03 -06:00
Matt Kiazyk
7bfb94d75a
Uninstall a xcode version 2020-12-31 12:36:31 -06:00
Brandon Evans
15132bdfaa
Psych, switch "default" to "active", add justification 2020-12-30 22:06:39 -07:00
Brandon Evans
7b4c4fc14c
Use term "info pane" consistently instead of "inspector pane" 2020-12-30 22:06:39 -07:00
Brandon Evans
f1bb76b029
Disable Select button in info pane but don't change title 2020-12-30 22:06:38 -07:00
Brandon Evans
69d85a9478
Extract XcodeListViewRow 2020-12-30 22:05:38 -07:00
Brandon Evans
69c083ca35
Update AppStoreButtonStyle with secondary state 2020-12-30 22:05:38 -07:00
Brandon Evans
d122014b74
Update install and select state representations in Xcode list 2020-12-30 22:05:38 -07:00
Brandon Evans
ee08684e01
Merge pull request #36 from RobotsAndPencils/bug/acknowledgementDark
Fixes acknowledgment screen in darkmode
2020-12-30 22:04:51 -07:00
Matt Kiazyk
8d1f2b512d
Fixes acknowledgment screen in darkmode 2020-12-30 15:43:33 -06:00
Matt Kiazyk
1cd96cc9fc
Merge branch 'main' into enhancement/31-helpModifier 2020-12-30 15:07:08 -06:00
Matt Kiazyk
8df4bb59e0
Update some text to better suit HIG
Co-authored-by: Brandon Evans <brandon.evans@robotsandpencils.com>
2020-12-30 15:00:18 -06:00
Chad Sykes
94ef499e9c Non-functional fix so it compiles locally 2020-12-29 14:52:34 -07:00
Brandon Evans
b32687484d
Move Xcode selection state into window 2020-12-29 13:48:17 -07:00
Brandon Evans
047288384d
Reflect currently-selected Xcode in list 2020-12-28 19:58:36 -07:00
Matt Kiazyk
fdb74ee8d9
Adds the .help modifier to a variety of buttons 2020-12-28 16:27:35 -06:00
Brandon Evans
8084f057fd
Create MainWindow to split up XcodeListView 2020-12-28 12:42:28 -07:00
Brandon Evans
9dc3d21f2e
Rename launch to open
This is the preferred verb when it's user-facing, according to Apple's style guide.
2020-12-28 12:42:28 -07:00
Brandon Evans
ba0c429766
Add trailing inspector pane 2020-12-28 12:42:28 -07:00
Brandon Evans
09653b7357
Use ProgressButton in MainToolbar
Made a small change to how ProgressButton is constructed to prevent its frame changing when isInProgress changes.
2020-12-28 11:57:45 -07:00
Brandon Evans
4cb60e2929
Extract MainToolbar 2020-12-28 10:41:11 -07:00
Brandon Evans
192a1c6371
Move all toolbar items to status position, use filter button instead of picker 2020-12-28 10:40:44 -07:00
Brandon Evans
44da1efca9
AcknowledgementsGenerator supports *.LICENSE files for code not from SPM 2020-12-28 10:38:59 -07:00
Brandon Evans
dbff012dc8
Use copyright value from Info.plist in about window 2020-12-28 10:38:29 -07:00
Brandon Evans
bc209f6112
Add privileged helper that runs xcode-select 2020-12-28 10:38:27 -07:00
Brandon Evans
1fef255c3d
Add app icon to installed rows 2020-12-28 07:55:12 -07:00
Brandon Evans
4d2600f821
Add Xcode command menu 2020-12-27 23:23:33 -07:00
Brandon Evans
912ac0a28e
Allow launching and copying the path of an installed Xcode 2020-12-27 23:22:57 -07:00
Brandon Evans
adad238b2a
Move uninstalled Xcode property into AppState 2020-12-27 23:22:57 -07:00
Brandon Evans
acd82fa07a
Extract AppState.XcodeVersion to Xcode 2020-12-27 23:22:57 -07:00
Brandon Evans
de54c3d784
Only sign in before refreshing when using Apple data source 2020-12-27 18:33:29 -07:00
Brandon Evans
8594996b87
Add feedback IDs in comments 2020-12-27 18:29:26 -07:00
Brandon Evans
115de2d3a2
Show last updated date in toolbar 2020-12-27 18:29:25 -07:00
Brandon Evans
33b5f96ed2
Merge XcodeList into AppState 2020-12-27 18:29:25 -07:00
Brandon Evans
f06d72f3eb
Split up Models.swift 2020-12-27 18:29:25 -07:00
Brandon Evans
293aef80e3
Add Xcode Releases data source 2020-12-27 18:29:25 -07:00
Brandon Evans
b342baff02
Update when the app launches or becomes active and it's been a day since last update 2020-12-27 18:29:25 -07:00
Brandon Evans
9b26688255
Add refresh menu item and progress view 2020-12-27 18:29:24 -07:00
Brandon Evans
4ef8428151
Convert XcodeList to Combine 2020-12-27 18:29:24 -07:00
Chad Sykes
ee10d2f92b Some variable renaming based on PR feedback 2020-12-27 16:14:10 -07:00
Chad Sykes
6cddffbef3 Convert the common code into a ProgressButton 2020-12-27 16:13:36 -07:00
Chad Sykes
74cb2198f5 Add missing error alerts to the SignIn views (this does not fix the error formatting from AppState for fear of merge issues) 2020-12-27 13:36:28 -07:00
Chad Sykes
c9c31ff6f5 Fix warning about executing updating the UI from outside the main thread 2020-12-27 13:21:07 -07:00
Chad Sykes
fb6dd8fac8 Fix some layout issues to improve readability 2020-12-27 13:10:36 -07:00
Chad Sykes
ff1d2546dc Switch out the action button with an activity spinner when processing a request 2020-12-27 13:10:12 -07:00
Chad Sykes
4e03c59d0a Disable the action button when the AppState isProcessingRequest 2020-12-27 12:22:57 -07:00
Matt Kiazyk
1d9db94efa
Merge pull request #16 from RobotsAndPencils/matt/listCategoryDefault
Saves the list category to userdefaults on top tab
2020-12-27 08:58:48 -06:00
Matt Kiazyk
583eb8b2b8
PR List tab Tweaks 2020-12-27 08:49:28 -06:00
Brandon Evans
047d69197e
Merge pull request #20 from RobotsAndPencils/bug-14/cutOffDigits
Bug #14 - Stop clipping the security code numbers input
2020-12-26 19:34:43 -07:00
Brandon Evans
cb42864d44
Add custom about window with dependency acknowledgments 2020-12-26 16:34:16 -07:00
Chad Sykes
cce80ae012 Simple fix to ensure all characters are shown without clipping... while I could try to figure a more robust solution but it feels like there are bigger fish to fry 2020-12-26 16:02:35 -07:00
Matt Kiazyk
46c5399b36
Saves the list category to userdefaults on top tab 2020-12-23 16:20:03 -06:00
Brandon Evans
bfb56660bf
Sign In instead of Login 2020-12-22 22:11:42 -07:00
Brandon Evans
5149e817da
Store credentials in the keychain
Like xcodes, storing the username in defaults so we know which item to look up in the keychain later. This also fixes the Xcode list update logic to not only validate the session but login with saved credentials if it fails.
2020-12-22 22:06:18 -07:00
Brandon Evans
867ad8ab4b
Add SettingsView 2020-12-22 21:26:25 -07:00
Brandon Evans
155c62de77
Fix bundle IDs 2020-12-22 21:26:05 -07:00
Brandon Evans
34adfb73a2
Reorganize files a bit 2020-12-22 21:01:33 -07:00
Brandon Evans
7e2b484b90
Tidy up AppState.update 2020-12-22 20:53:40 -07:00
Brandon Evans
18a7ea3af2
Move XcodesKit source into Xcodes.app 2020-12-22 20:41:36 -07:00
Brandon Evans
34d6f4feb4
Update code that validates security code response 2020-12-12 10:45:35 -07:00
Brandon Evans
74f68076e0
Add placeholder code that shows versions in UI after signing in 2020-12-12 10:37:08 -07:00
Brandon Evans
c5e0afc2bb
Support link attributes with AttributedText view 2020-12-05 11:03:16 -07:00
Brandon Evans
c3806e2eff
Allow selecting a phone number interactively 2020-12-05 10:21:53 -07:00
Brandon Evans
fb6ed58b3e
Add PinCodeTextField 2020-12-01 20:35:50 -07:00
Brandon Evans
ad267e2b56
2FA seems to work now 2020-11-28 13:02:17 -07:00
Brandon Evans
a081a1392e
Commit some more WIP UI work 2020-11-24 22:15:11 -07:00
Brandon Evans
0e2c69a7d8
Tweak code signing settings so tests can run in CI
I'm copying what was done in Secretive since it already figured this out and is a recent macOS app. https://github.com/maxgoedjen/secretive
2020-11-24 21:41:52 -07:00
Brandon Evans
ddcfb1c7f8
Rename the project and directories 2020-11-24 21:11:25 -07:00