-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Modernize update alert #2737
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: 2.x
Are you sure you want to change the base?
Modernize update alert #2737
Conversation
I like this update in many ways, probably because I share @zorgiepoo 's desire to minimize wide expanses of blank space, and because the updated design looks "fresh" but also "familiar." One key change I'd recommend is to limit the content from the release notes to the "safe area" (to borrow a term from Apple) of the window. I like the edge-to-edge layout of the release notes area but I think a borderless web view that imposes a margin against the window would look nicer and be more scannable: ![]() There were some questions in the conversation on #2731 about how closely this design matches the Tahoe alert style, and whether it will appear "native" or not. As I said there, to my eye this already looks pretty native to me, but I also haven't seen too many examples of panels with comparable complexity that have been updated by Apple for Tahoe. The Print panel leaps to mind as something to possibly take inspiration from, though its UI is unhelpfully more akin to Settings with its vertically scrollable options. Another loosely comparable UI is that of the "Connect to Server" panel in the Finder: ![]() If anybody discovers macOS Tahoe based panels with some interactive complexity, it would be interesting to make more comparisons. As to the question of preserving backward compatibility, I wonder if it might be both preferable from a UX point of view, and easier technically, to split the panel UI into two discretely loadable choices, and only load the "modern" UI either by request from the developer, or by default based on the OS and/or AppKit link version. Adopting the AppKit link version approach would mirror the way that Apple's own UI defaults only apply to apps that have been built against the macOS 26 SDK, on the assumption that developers would have had the opportunity to update the rest of their app's UI to match. |
We can play around with adding margins. I think we'll need some sort of box or custom view, but we need to move away from the legacy box view style Sparkle uses today and be more aesthetically pleasing. Currently the PR is using custom 1-point divider views on top/bottom. Do you know if we can get a box view like in noah's mockups? (May have time to look later today / tomorrow, not experimenting at the moment). I'd prefer not having an option to go to an old mode because I don't want to maintain it and there's little point if it's mostly inferior. Currently there are no new APIs being used but I still need to check the UI on a more older OS. Many/some of these changes could have been done back in 10.10 or 11.0 days. We can see how this plays out. |
That makes sense about keeping it simple and avoiding an "old mode". I'll probably not find the proposed design too jarring once I see it in context on an older OS. I'm not sure I understand why we would need a box or custom view, unless you want to add a border to the release notes? I was thinking just to have the content indented, which could be achieved with a simple custom view or else a custom box if there is something about boxes we desire, more than the functionality of a border. |
I really like the updated design, Zorg! Would like to second Daniel's suggestion, those same margin insets occurred to me as well. |
I had a go at adjusting the margins. I think following the system's metrics looks nice: ![]() ReferenceLooking at system alerts and windows, it seems that:
|
I like your work on the margins @Cykelero! I implemented the pure-code drop-in replacement for SUUpdateAlert.xib which I talked about: It's not very polished yet, but it should be functional. It has a I haven't tweaked the margins and all that to look good. If this is of any interest, I can clean it up, write documentation, and adjust things to you liking, so everything is easy-to-maintain. This should already be useful for playing around with the different layouts. |
I agree the top margin being 15px looks strange, after all. (on the other hand, I think the 15px margin above the release notes is important; these are different sections of the window, after all. and on that note, I'd even advocate for removing the “Release Notes:” header, as the content feels self-explanatory) About the vertical layout: maybe it only really works for narrower windows. Have you tried making the window less wide, matching the previous width, to assess the vertical layout?
Oh, awesome! I'll mistakenly thought this API was iOS-only. |
I came across an interesting thing: Here's Xcode: System Settings: I'm not sure what the pattern is for when these are used. But I thought it was an interesting datapoint, since I think before, we assumed that square corners = outdated. By the way, I also really liked the update to the little progress bar window that sometimes shows up. I haven't studied it in in detail, but I remember it felt very modern and sleek to me. Great work! I like where this is going. |
To me that's still a good assumption; those UIs you found in Xcode and Settings might simply not have been updated yet. Apple's much better than some other companies at updating all of their software, when releasing a big redesign, but they're not perfect, either! |
Fair take! I have one more input: I interpreted window margins on NSAlert to be 20 px, with the large rounded buttons being inset 5 px closer to the window edge. The pattern doesn't seem 100% consistent, so maybe I'm interpreting it wrong, but here are some screenshots that more or less follow this pattern: My original mockups also follow that pattern, and default window margin in Interface Builder is also 20 px IIRC – not sure how relevant that is.I think it looks quite good to have the rounded buttons "spill" into the corners a bit like that. But the current mockups also look very good. It's a very small thing. |
Increase hugging priority of automatic installs checkbox to prevent growing/shrinkage.
Current PR keeps titlebar transparent. Hiding title and removing the release notes label is something I'm going back and forth about so I do like you brought that up. More margin below the title section may be good for localization too when lines wrap I suspect..
NSAlerts have a vertical preferred layout since Big Surr (Tahoe notably changes the leading aligned app icon). The alert design is intended for narrow window with small amount of information. Alerts try to make the button choices vertically laid out too depending on how much text content there is; the style is dynamic depending on the content presented. Dialogs with more information need to use regular/larger windows as fitted here (paraphrased from Big Surr release notes). Horizontally laid out app icon & text is common elsewhere including system software update UI and notifications. But I would say Sparkle's current UI is uncommon (app icon horizontally laid out with large column). NSAlerts are somewhat special. With boxes I think rounded corners are all well. Margins are kind of arbitrary to me on the exact px to use. Currently using some of the standard spacing, extra spacing to group some of the elements together. Not sure if it should be 15. Not totally convinced margins should be copied from NSAlerts. |
App icons always have additional padding I believe. Assuming the additional padding is 5 (not sure it is), the margin is still 20. |
Fair points!
Oops, you're very right. I got it wrong when measuring myself. That's probably the metrics we should be shooting for, then. |
I just removed the window title and release notes label, made the button sizes regular < Tahoe. The custom vertical spacing between "groups" is 12 currently (maybe will bump to 15?). Horizontal is standard (likely 20). It seems like at this point this will be very close to what it'll be. |
This attempts to modernize/refine the update alert which shows release notes and provides options to install an update. Currently this does not make any major change in functionality / behavior.
On Tahoe (beta 2), screenshots of old and new are as follows on my Intel Mac:
This also attempts to update the Sparkle Test App icon (originally by @1024jp) to be more squircle fitting and use Icon Composer. I also updated the old Sketch file. The icon was under MIT license, I may have to still update that somewhere. The icon on the website will eventually need to be updated as well. (Note the icon is no longer used in Sparkle.framework and I'm not a great icon designer).
I also made minor changes to the check for updates alert. The update alert now uses a NSStackView so it should be easier to customize. I also updated the release notes in the Sparkle Test App to use more interesting release notes text rather than the "Lorem ..." template text which did not give me a feel of how the alert will function in practice.
Fixes #2731 and more discussion of mockups is there.
If you want to suggest changes, feel free to make a branch off this one, make changes, and/or post screenshots.
A hard requirement is still using Obj-C/AppKit and maintaining compatibility back to 10.13/10.14 (but I don't mind having specific changes for newer OS's).
Changes in localized text would require discussion to ensure it's really worth the cost of changing.
So far, these changes are not really Tahoe or liquid glass specific. I'm not sure if liquid glass related changes need/can be made here.
Misc Checklist
Testing
I tested and verified my change by using one or multiple of these methods:
Tested updating app.
macOS version tested:
26.0 Beta (25A5295e)
macOS 15.5
[ ] Should test my 10.14 VM