JohnCoates / Aerial

Apple TV Aerial Screensaver for Mac
MIT License
20.78k stars 1.05k forks source link

Road to 2.0 with Cache limit/management and macOS Big Sur 11 #1006

Closed glouel closed 4 years ago

glouel commented 4 years ago

Hey all, I'll use this to track and discuss the work in progress on (finally) adding a cache size limit to Aerial, and better cache management/playlist management tools. There will be some core changes to Aerial's UI including the videos tab, so that it displays more clearly what videos are available/cached/etc and handle some new issues created by the management.

For now, here's a very early screenshot of what I'm looking at right now in terms of Cache options :

Capture d’écran 2020-06-03 à 17 49 12

So the very first pref will be the limit, I plan to default this to 5 GB for new users (what to do about current users is still in the air).

The second pref is all about how to manage the cache:

Capture d’écran 2020-06-03 à 17 49 24

In a perfect world, rotation would probably be the ideal setting here for new users (and stop downloading for current users, I'd say).

But whatever I do, I'll get support tickets :

So 🤷

Last setting is the periodicity (which probably default to monthly to alleviate issues above).

About how all this will work :

Now what I ended up deciding is NOT stream videos to replace cache. Streaming is awfully unreliable and I really don't want to do it. While I'll probably keep a checkbox for those who really really want to stream, it will not be part of the cache rotation because that's too much of a mess.

So that's about it for right now, I'm still working on implementation and I'll update this post when I have a build to share and more details about the other changes (especially the redesigned videos tab to more clearly explain what videos are cached/etc).

prathmeshranaut commented 4 years ago

Great work on explaining this so clearly! I think this is the best possible way to love forward and IK people would complain about the size but 🤷🏻‍♂️. They always have the option to change it.

I love the decision to not stream, it would be a mess in the code to handle that. But how do you imagine new users who don’t have any video downloaded, start using this? If you have a daily reset of cache option, would that mean I’d have to wait for a video to download first and then I’d be able to see the screensaver? My question is what happens on the first load.

glouel commented 4 years ago

Great work on explaining this so clearly! I think this is the best possible way to love forward and IK people would complain about the size but 🤷🏻‍♂️. They always have the option to change it.

People will always complain yep... So it's about making a compromise to get the less complaint I guess :)

Something I've been thinking about is, on first start for new user, have some window pop when they launch the options so that they can set the cache. I'm going back and forth with the idea, it's very old fashioned in a way, and you can install Aerial and run it without ever going into the Pref Panel, so in that case it's slightly a moot point. There's really no perfect solution I guess, and the setup, while feeling very Windows 95-y, will probably barely improve as people tend to click next without reading anyway.

I love the decision to not stream, it would be a mess in the code to handle that. But how do you imagine new users who don’t have any video downloaded, start using this?

So my plan right now is, if you are a new user and you launch the screensaver with nothing cached, stream the first one (exactly like right now) while in the background grabbing a second one. And maybe more if you are done before the end of the first video, I'm not 100% sure how many I should pull in advance by background downloading. I do plan to have an (optional) download indicator just like the "A new version of Aerial is available" info to indicate a download is going on.

If you have a daily reset of cache option, would that mean I’d have to wait for a video to download first and then I’d be able to see the screensaver? My question is what happens on the first load.

Right now, only monthly and weekly, daily is way too much, I know it's available on Apple TV, but I really don't want to have Aerial hit Apple's CDN too much. Last thing I'd want would be for them to complain about the load and end up doing something about it. Least I can do is try and be a good 'citizen' about their bandwidth ;)

But regarding first launch, as I said above. Stream first if nothing is cached (really no other choice) and background download the rest.

An important point to note is that the very first launch of Aerial is (usually) the tiny preview, the first time you open System Preferences with Aerial selected (which happen after you double clicked to install). So at that point Aerial will need to stream something, since it happens before anything else (even before you get a chance to open Aerial's pref panel).

glouel commented 4 years ago

So a bit of an update, as I got some of it working now. So here's what's implemented :

Capture d’écran 2020-06-06 à 17 45 12 Probably some work to do on the wording, but that aside, anytime you try to download something, you'll get prompted. Accept and it goes through, deny and it's cancelled. Downloaded files go into Caches as mentioned above.

So right now, basically the "Stop downloading new videos" version of the new cache is done. If you pick the rotate option, you'll get the exact same thing as that's the part that's not implemented 😅

I'll be working next on the rotation thing but so far so good. The last step will be the videos UI as this will really need a cleanup with the rotate option.

If you want to try it, I put up an alpha here, be aware it's early though and may contain bugs : https://github.com/glouel/Aerial/releases/download/v1.9.5alpha1/Aerial.saver.zip

prathmeshranaut commented 4 years ago

Thanks a lot for putting effort into this!

ZV00 commented 4 years ago

So I downloaded the Alpha... A few thoughts some of which I am sure you're not worried about at this time but I'll mention anyways 🤣:

Something I've been thinking about is, on first start for new user, have some window pop when they launch the options so that they can set the cache. I'm going back and forth with the idea, it's very old fashioned in a way, and you can install Aerial and run it without ever going into the Pref Panel, so in that case it's slightly a moot point. There's really no perfect solution I guess, and the setup, while feeling very Windows 95-y, will probably barely improve as people tend to click next without reading anyway.

  1. Default Cache is set to 5GB, so... when I downloaded the Alpha it looked like this: Screen Shot 2020-06-06 at 10 27 07 PM

    What happens to the remaining 15GB of files if someone installs the Alpha (or future release) and doesn't change from the default cache size? Should the default cache size instead be set to say 1GB more than current cache instead?

  1. Minor wording tweaks: There shouldn't be a space between the end of a word and an exclamation mark or question mark, and the wording of "Periodically replace old videos by new ones" would sound cleaner as "Periodically cycle videos with new content" or something similar. Either way the word "by" should be "with".

  2. In 1.95alpha1 Advanced the Cache all videos setting with Download Now button ideally should be moved to the Cache section rather than the Advanced section. And if possible, it would be great for it to state the total size of the full download.

  3. In Advanced, I'd love a clarification of what "Video versions" means.

  4. In relation to:

    In a perfect world, rotation would probably be the ideal setting here for new users (and stop downloading for current users, I'd say).

I would like to argue here that the data cap limit is likely one that fewer users are going to complain about. If someone is willing to download hundreds of megabytes of video (at the bare minimum), they likely don't have a data cap...? Unless you've experienced otherwise so far?

Additionally I would add there is a third option to consider here: Essentially a Manual Override option. Remove the cache limit, and don't download videos automatically. Just full manual override. This could be helpful for those users who don't want to use the built in videos from AppleTV as well as those who want full control over what is downloaded and cached.

prathmeshranaut commented 4 years ago

Just a thought and it might be overkill but if download restrictions is such a concern, we could have something similar to what VPN apps have like a "Trusted Network". I wouldn't care what I download when I'm on my home Wi-Fi, but if I'm at a hotel and I'm paying for internet, I need that damage to be restricted.

This could be really helpful feature for business travelers. Now I feel that I need to be careful with this when I'm out.

Kikangh commented 4 years ago

That last remark hit a spot. I am in a situation where I’ll often connect to corporate network, client’s network or use my phone’s shared connection. The sandboxed context might not allow it, but it would definitely make sense for me to identify one or two "Trusted Networks".

Cordialement,

Gilles Hemard

Envoyé de mon iPhone

Le 7 juin 2020 à 05:16, Prathmesh Ranaut notifications@github.com a écrit :

 Just a thought and it might be overkill but if download restrictions is such a concern, we could have something similar to what VPN apps have like a "Trusted Network". I wouldn't care what I download when I'm on my home Wi-Fi, but if I'm at a hotel and I'm paying for internet, I need that damage to be restricted.

This could be really helpful feature for business travelers. Now I feel that I need to be careful with this when I'm out.

— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub, or unsubscribe.

glouel commented 4 years ago

First, thanks all for the feedback !

So I downloaded the Alpha... A few thoughts some of which I am sure you're not worried about at this time but I'll mention anyways 🤣:

It's always helpful for me to track things as I sometimes have blind spots when I'm implementing something 😅

  1. Default Cache is set to 5GB, so...

I was considering what to do about current users btw. Maybe set the limit slightly above their current size to make it better ?

What happens to the remaining 15GB of files if someone installs the Alpha (or future release) and doesn't change from the default cache size? Should the default cache size instead be set to say 1GB more than current cache instead?

Maybe I'll read ahead next time 🙈 So just to clarify what happens right now : nothing. You'll get denied if you try to download a new video (the screenshot I posted earlier with the Alert), and Aerial will not try to stream new files. So kinda (but not totally) how it works today (assuming you have your cache full of what you want already). Hypothetically, with the rolling cache, it will purge them slowly to get you below that limit.

Definitely a better sensible default for current users is what you said, slightly above, with the rolling cache off. New users, I'm still a bit torn, so I'm seriously thinking again of making a (very quick) setup screen with basically the two things that generates most of the recurring support issues:

I think that would make things super clear for everyone, as I don't think I can settle on a default that would satisfy everyone. And I've been thinking that even Apple does intro splashes for worse reasons, like on pages/numbers/keynote :

Capture d’écran 2020-06-07 à 12 55 48

So I'm strongly considering doing that again (just a first run setup, that you can bring back in advanced if you want, but would obviously only run once for new, and old users alike when 2.0 finale is out, maybe with a bit different wording for new users).

  1. Minor wording tweaks: There shouldn't be a space between the end of a word and an exclamation mark or question mark

That's the french in me for the punctuations, we do space before/after when a punctuation has two parts (so : ; ? and !). I always have to fight my instincts on this one !

, and the wording of "Periodically replace old videos by new ones" would sound cleaner as "Periodically cycle videos with new content" or something similar. Either way the word "by" should be "with".

Ok indeed with is better. I went with "Periodically cycle videos with new ones" for now, I'm a bit concerned that new content would imply it would only get "new" videos (like say the next Aerials are "mountains" or something, and the rolling cache grabs a sea video, I'm afraid people would not understand exactly what's going on). Maybe I'm worrying for nothing, the new videos tab UI should make it more clear what could/couldn't be downloaded so there's that.

  1. In 1.95alpha1 Advanced the Cache all videos setting with Download Now button ideally should be moved to the Cache section rather than the Advanced section. And if possible, it would be great for it to state the total size of the full download.

I just moved everything away for now where there was some room ;) some options may not survive the cache changes.

  1. In Advanced, I'd love a clarification of what "Video versions" means.

That's one of the most obscure thing and one of those that I may get rid of. So for a single video, sometimes Apple release new "cuts" with slightly tweaked colors. Aerial never deleted anything, so when that happened, you could have 4 different versions of the same Los Angeles night that were slightly shorter/longer, with tweaked colors, etc, in the same resolution. They used to do that A LOT last year (especially with the older content) but they basically stopped and I don't think I've seen one lately. Anyway, what that feature did was allow you to backup those old versions (because some people preferred them) or trash them (as they kept piling up fast). With the rolling cache it's a moot point I think and will probably go away

  1. In relation to:

In a perfect world, rotation would probably be the ideal setting here for new users (and stop downloading for current users, I'd say).

I would like to argue here that the data cap limit is likely one that fewer users are going to complain about. If someone is willing to download hundreds of megabytes of video (at the bare minimum), they likely don't have a data cap...? Unless you've experienced otherwise so far?

No, you're correct. The ratio of people complaining from disk space/network usage is probably 100 to 1. But then again, when done, Aerial won't continuously download new things which is what may cause issue. My thinking about current users staying on stop downloading was to not disrupt their current usage and surprise them, although if I go the first setup route, that's probably less of an issue.

Additionally I would add there is a third option to consider here: Essentially a Manual Override option. Remove the cache limit, and don't download videos automatically. Just full manual override. This could be helpful for those users who don't want to use the built in videos from AppleTV as well as those who want full control over what is downloaded and cached.

Yeah, I've been thinking about something like that with the video ui, right now I think very few people understand that a checked video in the Videos tab will get eventually streamed by Aerial, and an unchecked one won't (and everything is checked by default, which I plan to change to only tvOS13 videos next). I'm doing away with that list to replace it with a better UI that would more clearly show what's playing only (say with a rolling cache, with the ability to go grab one, and maybe say, never show me that one, etc). In that scenario a full manual mode probably make sense (my goal being to get rid of as much streaming as I can, it aligns perfectly ;)).

Just a thought and it might be overkill but if download restrictions is such a concern, we could have something similar to what VPN apps have like a "Trusted Network". I wouldn't care what I download when I'm on my home Wi-Fi, but if I'm at a hotel and I'm paying for internet, I need that damage to be restricted.

This could be really helpful feature for business travelers. Now I feel that I need to be careful with this when I'm out.

That last remark hit a spot. I am in a situation where I’ll often connect to corporate network, client’s network or use my phone’s shared connection. The sandboxed context might not allow it, but it would definitely make sense for me to identify one or two "Trusted Networks". Cordialement,

To both, I definitely agree with that one, although I don't know if sandboxing will be an issue. Let me get back to you on that one, if it's possible it would make me feel a bit better to have that feature in!

glouel commented 4 years ago

@Kikangh @prathmeshranaut

To my utter surprise, it works despite the sandboxing ! I can get the current SSID, so here's what I'm planning, an optional white list of SSID where Aerial would only download when one one of those. I think this would largely solve that issue for those moving around with their Macs.

ZV00 commented 4 years ago

Definitely a better sensible default for current users is what you said, slightly above, with the rolling cache off. New users, I'm still a bit torn, so I'm seriously thinking again of making a (very quick) setup screen with basically the two things that generates most of the recurring support issues:

I totally support a setup screen for first time users. I think that would be great! As for defaults, I would suggest that you target to users of a 2-year-old device at any given time. I.E. whatever will run well on a 2018 base line MacBook Pro is probably a good guess of what settings should be set to. This way it doesn't feel that the settings are too old to take advantage of newer features, but at the same time doesn't crash a machine on first run that's say... 4 years old. That said, a splash screen where a user could set this up would solve everything, I simply recommend that the "default" settings still be thought of in a similar way.

Maybe I'll read ahead next time 🙈 So just to clarify what happens right now : nothing. You'll get denied if you try to download a new video (the screenshot I posted earlier with the Alert), and Aerial will not try to stream new files. So kinda (but not totally) how it works today (assuming you have your cache full of what you want already). Hypothetically, with the rolling cache, it will purge them slowly to get you below that limit.

🤣 No worries haha! I would say that the rolling cache under these circumstances shouldn't purge under. So I think that a tweak that allows for it to be X + 500MB or 1GB is likely a better setup for existing users if possible.

I just moved everything away for now where there was some room ;) some options may not survive the cache changes.

👍

To my utter surprise, it works despite the sandboxing ! I can get the current SSID, so here's what I'm planning, an optional white list of SSID where Aerial would only download when one one of those. I think this would largely solve that issue for those moving around with their Macs.

That's a great solution to all of this!

glouel commented 4 years ago

Definitely a better sensible default for current users is what you said, slightly above, with the rolling cache off. New users, I'm still a bit torn, so I'm seriously thinking again of making a (very quick) setup screen with basically the two things that generates most of the recurring support issues:

As for defaults, I would suggest that you target to users of a 2-year-old device at any given time.

When it comes to video format, I have 99% accurate detection of what's supported/not supported so that's good. There's a bit of a grey line though (my late 2015 iMac doesn't natively decode HEVC, but I still use 4K HDR with no issues here).

🤣 No worries haha! I would say that the rolling cache under these circumstances shouldn't purge under. So I think that a tweak that allows for it to be X + 500MB or 1GB is likely a better setup for existing users if possible.

Yep I'll see about adding that.

That's a great solution to all of this!

Yep so I got it working, I made a very simple UI for it, it can defintely be improved but I went the easy way to see if I could get it to work :

Capture d’écran 2020-06-07 à 16 57 27

So if you click the checkbox, the ui below appears. There's an indicator (red/green) telling you if network traffic is allowed or not. Below two buttons to add the current network to the allowed list and resetting the list. Below, a list of all network allowed. Here's how it look after allowing the current network :

Capture d’écran 2020-06-07 à 16 57 30

If you have a red bubble, here's what you get when trying to download a file manually for example : Capture d’écran 2020-06-07 à 17 34 52

Also, just like if the cache is full, Aerial won't stream and limit itself to your local cache.

I'm very open to improving the text of the U, I went with selected/allowed, not sure what to use. Alpha 2 here if you want to test :

https://github.com/glouel/Aerial/releases/download/v1.9.5alpha2/Aerial.saver.zip

ZV00 commented 4 years ago

Seems like a great fix to me!

Slight wording tweak suggestions:

image

Consider switching this to:

You are on a restricted WiFi network Your current settings restrict downloads when not connected to a trusted network. Do you wish to proceed? Reminder: You can change this setting in the Cache tab.

-- Additionally under the Cache tab:

Screen Shot 2020-06-07 at 12 43 37 PM

Consider switching to:

Restrict downloads to trusted WiFi networks

And consider adding an info circle with:

Select this option if you wish to only cycle or download videos manually. This can be helpful for users with data limits. To add a network to the trusted list, connect to that network and click "Add current network". To purge the network list, click "Reset list"

--

Also in keeping with my suggestion #981, could we add a simple mouse over accessibility support that when it is green, mouse over reads as something like "Connected to a trusted network" and when it is red it reads something like "Not connected to a trusted network. Downloads will not occur"

glouel commented 4 years ago

You are on a restricted WiFi network Your current settings restrict downloads when not connected to a trusted network. Do you wish to proceed? Reminder: You can change this setting in the Cache tab.

Restrict downloads to trusted WiFi networks

Done for next build thanks !

And consider adding an info circle with:

Select this option if you wish to only cycle or download videos manually. This can be helpful for users with data limits. To add a network to the trusted list, connect to that network and click "Add current network". To purge the network list, click "Reset list"

Indeed good idea I'll see about adding that bubble.

Also in keeping with my suggestion #981, could we add a simple mouse over accessibility support that when it is green, mouse over reads as something like "Connected to a trusted network" and when it is red it reads something like "Not connected to a trusted network. Downloads will not occur"

Yep for the mouse over. But what about making it explicit like :

There's room so I can spell it out a bit better.

Thanks for the suggestions it's helpful.

ZV00 commented 4 years ago

Yep for the mouse over. But what about making it explicit like :Connected to trusted network : >123 / Connected to restricted network : 123 Connected to : 123 (trusted/restricted) There's room so I can spell it out a bit better.

I totally support that!

glouel commented 4 years ago

Bit of an update, so after much thought, I've added a master switch on top of the cache tab, to enable/disable cache management. The idea is, if you want to do it yourself, you can disable everything (from limits to network), and Aerial will never do anything on its own (stream, download, delete, etc) :

Capture d’écran 2020-06-08 à 17 37 03

In that case, I give you a button to explore your cache (I won't in the other mode, since you told Aerial to manage it, you're not messing with it :p) and how large your cache of video is.

This switch replaces 3 old settings :

In full manual mode, Aerial will never download or stream anything by itself, and in the managed mode, the goal is to stream once, and definitely cache the results, so I got rid of all of those. I think it's going to be much simpler to understand than those 3 checkboxes.

If you enable cache management (which will be the default), you'll get the screen you saw in previous betas :

Capture d’écran 2020-06-08 à 17 37 01

The last thing missing, UI wise, from the cache tab is the ability to change cache location (pre-Catalina) / add an extra read only cache location if you want to move files around.

Because at best you can only set a path in your primary disk in Catalina, the only real use case remaining for that feature is if you have multiple users on the computer and want them to share videos (which is a very valid use case !).

While this used to be easy before (set your cache to /Library/Caches/Aerial), Catalina made it impossible as we can only write in the container and read-only outside.

Still the whole thing is convoluted (you need to download, then move the videos from the container to a folder accessible by every account somewhere on your primary disk, which limits you pretty much to something in /Users/Shared), so I'll try to make it a bit clearer.

In a perfect world, there will be a new screensaver API at WWDC and I'll forever get rid of that read-only folder mess.

No build today as the changes are minimal.

ZV00 commented 4 years ago

Bit of an update, so after much thought, I've added a master switch on top of the cache tab, to enable/disable cache management. The idea is, if you want to do it yourself, you can disable everything (from limits to network), and Aerial will never do anything on its own (stream, download, delete, etc) :

Ahh this is great! I love the full manual override option! That's great!

May I recommend one other option... For the Cache Size Limit, can we add an additional check there? It seems that there's no way to override that specific setting? This way each area would be fully customizable (both WiFi, Cache, and then entirety)?

glouel commented 4 years ago

May I recommend one other option... For the Cache Size Limit, can we add an additional check there? It seems that there's no way to override that specific setting? This way each area would be fully customizable (both WiFi, Cache, and then entirety)?

The easy out is to let you set a very high size so the limit don't apply, it's not super nice. I'm considering putting a slider here that would let you pick the limit size, and the position at the right end would disable the limit (and maybe hide the stuff below).

ZV00 commented 4 years ago

and the position at the right end would disable the limit (and maybe hide the stuff below).

This would be perfect!

glouel commented 4 years ago

@ZV00

Capture d’écran 2020-06-08 à 19 11 46

ZV00 commented 4 years ago

@glouel Looks great!

glouel commented 4 years ago

Hey all

Sorry for the lack of updates the past couple of weeks, some unexpected things threw my schedule.

I had a very quick glance at Aerial on macOS Big Sur 11, and the first good news is... it seems to work ! I've noticed some glitching when exiting the screensaver, but that seems to be a Big Sur (urgh...) bug more than anything else. HDR playback somehow seems smoother on my old iMac.

In any case, it certainly... looks different :

Capture d’écran 2020-06-23 à 00 31 20

Interestingly, the NSAlert are also pretty different too : Capture d’écran 2020-06-23 à 00 35 13

I had a very quick glance at Xcode 12 and the bad news is, I don't think we're allowed to make app extensions. The screensaver template is still the old (objective-c !) one from the old days.

Apple's documentation (https://developer.apple.com/documentation/screensaver) mentions, somehow, Mac Catalyst 14.0+ (?!) as supported for screensavers, which I still haven't wrapped my head around.

There's also a new section at the bottom :

Binary Compatibility

Because screen savers are plug-ins for the screen saver engine, a screen saver can only be supported if its binary contains a slice for the architecture of the running engine. As with any application, the screen saver engine normally runs using the most recent architecture supported by a given computer (assuming that the engine has a slice for that architecture). For full compatibility, a screen saver must contain (at least) an i386 slice (compiled for the oldest OS version you wish to support) and an x86_64 slice (compiled for version 10.6 and later).

The word plugin strongly implies no appex, which may mean that we still live under the Catalina restrictions. I haven't looked at the permissions and stuff yet, I'll try to have a look tomorrow but at the very least, it "works" on the current beta !

ZV00 commented 4 years ago

I can confirm what @glouel said that Aerial seems to work on Big Sur (11.0). I will report that upon first launch I got the following error:

"10:48:01 PM : Location services may be disabled, Night Shift can't detect Sunrise and Sunset times without them"

glouel commented 4 years ago

I can confirm what @glouel said that Aerial seems to work on Big Sur (11.0). I will report that upon first launch I got the following error:

"10:48:01 PM : Location services may be disabled, Night Shift can't detect Sunrise and Sunset times without them"

Interesting, thanks for the info. What setting do you have in the Time panel btw ? They broke night shift detection last year, they might have done it again...

Edit : on the good news side, they unbroke internationalization, so at some point I'll be able to bring translated UIs.

Edit2 : Looks like they changed the whole night shift diagnostic tool output, it's getting shaky with random debug stuff in it. I'm not 100% sure if I should not rethink the options in the time tab, including this one. Short term I'd recommend picking the coordinates option if you want day/night video switching and I'll reassess in a beta or 2.

ZV00 commented 4 years ago

Interesting, thanks for the info. What setting do you have in the Time panel btw ? They broke night shift detection last year, they might have done it again...

Hey @glouel, so the error no longer shows on my second launch, without any changes to settings... But to make it fun for you, my time settings are set to "Do not adapt".

Also as I understand it, TvOS 14 also has some improvements to categorization of videos - Perhaps it's worth looking at that, and considering a similar categorization option here as well to 'match' to TvOS. That said, yours are BETTER than that, so I would not say it's worthwhile to revet to ONLY the TvOS format.

glouel commented 4 years ago

Interesting, thanks for the info. What setting do you have in the Time panel btw ? They broke night shift detection last year, they might have done it again...

Hey @glouel, so the error no longer shows on my second launch, without any changes to settings...

Classic !

But to make it fun for you, my time settings are set to "Do not adapt".

Ok, that one is... 🤔

I rebuild with Big Sur's SDK btw, you may want to try this build it may be better : https://github.com/glouel/Aerial/releases/download/v1.9.5alpha3/Aerial.saver.zip

Also as I understand it, TvOS 14 also has some improvements to categorization of videos - Perhaps it's worth looking at that, and considering a similar categorization option here as well to 'match' to TvOS.

Wow, I actually checked and yep, they added an option to tvOS 14 ! That's crazy !

IMG_0203

That said, yours are BETTER than that, so I would not say it's worthwhile to revet to ONLY the TvOS format.

I kinda like their idea of separating city landscapes and nature landscapes though ! I may artistically steal that idea 🤣

ZV00 commented 4 years ago

First off... Can we just talk about how much nicer this is?

Screen Shot 2020-06-24 at 3 09 21 PM

swoon

Anyways... 🤣 No issues on launch, new UI looks good and works well!

Screen Shot 2020-06-24 at 3 11 27 PM

I kinda like their idea of separating city landscapes and nature landscapes though ! I may artistically steal that idea 🤣

Solid plan!

glouel commented 4 years ago

Hey sorry all for the delay, was fairly busy and then went into some major internal changes, but finally have a new build. Be aware, some things look broken and it's not been tested on anything but Big Sur ;)

There are some big internal changes into what used to be the various video manifests, and I now call sources. As I think I mentioned earlier, one thing I really wanted in 2.0 was to only enable by default the latest tvOS videos. So that's now what's happening, and there's a new button (very temporary placement) called sources that pops that window :

Capture d’écran 2020-07-10 à 17 20 37

UI is still a bit in flux, the various download buttons don't work, and the icons are only there on Big Sur right now, but you get the idea. You can enable/disable the various sources from here, internally one large change is that each source gets downloaded in it's own folder, so your files now look like this :

Capture d’écran 2020-07-10 à 17 30 04

There's no more of the weird renaming I used to do, you probably don't care about all the internals but it make things a lot easier for adding new sources in the future, so that's a big win ;)

Also notice a couple of things :

I also further cleaned up the Cache UI, simplifying it a lot more :

Capture d’écran 2020-07-10 à 17 20 43

There's basically the master switch to ask Aerial to download videos for you or not, and that's it. if you say so, you can set a limit (or not) and if you have a limit set you can pick how often videos are rotated. There's a new "Never" option that replaces the weird extra popup I had there, it's much more straightforward now. The rotation is still not in this build. I also removed a lot of options that no longer make sense (the old videos feature for one).

There's a lot of extra internal changes that will make sense in the next build, there might be one last alpha and I plan to have a beta out very soon (say end of next week).

Now, one last update, if you happen to have a DTK, you probably noticed that Aerial doesn't run there. It looks like Rosetta 2 ignores plug-ins (who doesn't !) so 3rd party screensavers like Aerial are one of those rare things that absolutely need to be recompiled for Apple Silicon.

Good news is, it's easy to make a universal build, bad news is, you can't notarize them yet so I can't distribute them. So if you have a DTK and really miss Aerial (as you should !) I've made it a bit easier to get it running.

This target is easier to build, it removes Sparkle as a dependency. It should be straightforward, if you hit an issue, just ask.

Edit : Please note that you can't run 3rd party screen savers in Big Sur Beta 3 for Apple Silicon, it will hopefully be fixed in next release.

ZV00 commented 4 years ago

Hey @glouel,

So I downgraded from Big Sur back to Catalina as I was having some issues, so my feedback comes from here for now. As you noted, the new icons don't appear, but it appears that neither do the "Last updated" dates:

Screen Shot 2020-07-10 at 12 10 31 PM

Side note, there's two spaces in the text between "can" and "also"

Screen Shot 2020-07-10 at 12 10 41 PM

I will also note that my Cache appears to have disappeared. I am not quite sure if this was something caused by the new install, or perhaps it occurred when I downgraded from Big Sur. If no one else reports it, then it's probably on my end.

Screen Shot 2020-07-10 at 12 14 04 PM

One other small UI Tweak: The Limit Cache Size should limit with a start size of 0GB rather than 1GB. Why? Because otherwise, the lines don't line up, so 15GB shows up as 14GB in the UI bar. 25GB will appear as 24GB and so on.

Screen Shot 2020-07-10 at 12 15 12 PM
glouel commented 4 years ago

Hey @glouel,

So I downgraded from Big Sur back to Catalina as I was having some issues, so my feedback comes from here for now.

Awesome !

As you noted, the new icons don't appear, but it appears that neither do the "Last updated" dates:

Screen Shot 2020-07-10 at 12 10 31 PM

Yep need to fix that. What it does is show when the file was last modified. For "modern" tvOS versions (12+), you have the exact date Apple last modified it here. But that only works when you have the manifests downloaded, so that's why it's empty. In that case I'll hide the field fully ;)

Side note, there's two spaces in the text between "can" and "also"

Screen Shot 2020-07-10 at 12 10 41 PM

Well spotted, thanks !

I will also note that my Cache appears to have disappeared. I am not quite sure if this was something caused by the new install, or perhaps it occurred when I downgraded from Big Sur. If no one else reports it, then it's probably on my end.

You mean that you no longer have files in /Users/glouel/Library/Containers/com.apple.ScreenSaver.Engine.legacyScreenSaver/Data/Library/Caches/Aerial ?

I haven't talked about it but (...) I'm moving files back to AppSupport in next build, going to caches was not the best idea. It's quite possible that macOS wiped your caches because it needed space during the install/rollback thing.

Screen Shot 2020-07-10 at 12 14 04 PM

One other small UI Tweak: The Limit Cache Size should limit with a start size of 0GB rather than 1GB. Why? Because otherwise, the lines don't line up, so 15GB shows up as 14GB in the UI bar. 25GB will appear as 24GB and so on.

Screen Shot 2020-07-10 at 12 15 12 PM

I've been struggling with that one, do I really want to allow a 0 GB cache ? What does that mean ? I went with unlimited on the right, that seemed mathematically logical UI wise. And if I put the min at 0.1 or something (my first instinct), it's just the same mess (that's why it goes from 1 to 61 right now which was my weird compromise).

Do we have an example of such a cache in macOS to get an idea of how it's solved usually ?

glouel commented 4 years ago

Closest thing I found was this, interestingly the scale is not linear, maybe that's the way to solve this I'll have a look :

Capture d’écran 2020-07-10 à 18 29 08
ZV00 commented 4 years ago

You mean that you no longer have files in /Users/glouel/Library/Containers/com.apple.ScreenSaver.Engine.legacyScreenSaver/Data/Library/Caches/Aerial ?

That's correct. It must have wiped at some point during the install.

I've been struggling with that one, do I really want to allow a 0 GB cache ? What does that mean ? I went with unlimited on the right, that seemed mathematically logical UI wise. And if I put the min at 0.1 or something (my first instinct), it's just the same mess (that's why it goes from 1 to 61 right now which was my weird compromise).

That's a fair question... I guess really a 0GB Cache is the same as saying "never cache"? So it could work?

Closest thing I found was this, interestingly the scale is not linear, maybe that's the way to solve this I'll have a look :

Another example is Energy Saver Prefs, same thing, not linear 1min shows as 0 on the line.

Screen Shot 2020-07-10 at 12 32 13 PM
glouel commented 4 years ago

Having both ends of the scale (0 and unlimited) doing the same thing is a bit inelegant, what's why I went with 1 (probably inspired by this exact slider if I recall correctly).

Apparently not super easy to go to a non linear scale with a slider, I'll have a look if it's doable without spending too much time (it's basically easy if you only allow it to set on the ticks).

ZV00 commented 4 years ago

No big deal if you can't, definitely not worth a lot of work for something that doesn't actually impact the end result.

glouel commented 4 years ago

It's been a while again !

I think I mentioned earlier that one of the last thing I wanted to improve for 2.0 was the video list. With 99 "official" Aerials today, it's become fairly unmanageable, with a lot of scrolling, on top of not being super intuitive to use (and a pain to maintain the code to make it look right on every macOS release). So my first idea was to take inspiration from the "Desktop" selection from System Preferences, and use a grid view instead:

Capture_d’écran_2020-07-14_à_22 47 25

While that was a bit better (thumbnails!), I wasn't super happy about it, it still induced a ton of scrolling and it was hard to find a good size compromise for the thumbnails (too little and you can't recognize them, too large and you're scrolling even more than before). So that was a dead end. Another thing is, while the UI was definitely a bit dated already, after running Big Sur here for a while, Aerial's UI looked massively out of place. So as usual with me and Aerial, one thing lead to another (and many others), and here we are today with a full UI rewrite :

Capture d’écran 2020-07-20 à 19 16 52

If you aren't running the Big Sur beta, it can certainly look a bit jarring. The idea behind the new UI is pretty simple, it's a 3 pane view for the video list, you can filter by various criteria on the left (location, time, scene, etc), then you get a list in the middle column and a full size preview on the right. If the video is cached, the video autoplays (I'll add an option to disable it, but it looks pretty nice).

There are three icons top left, that lets you switch from the video list, the settings and an about tab with links to the faq etc. Here are the settings :

Capture d’écran 2020-07-20 à 19 21 57

I used the new large controls in Big Sur to be ready for whenever touch Macs come around, I ended up moving a lot of things around, trying to simplify things a lot, and removed a lot of cruft that accumulated over the years. If you don't have Big Sur, it should still looks decent, with regular size controls (on Mojave here) :

Capture d’écran 2020-07-20 à 19 27 29

I'm releasing this one today as an alpha again, I'd love to hear about how it works on various macOS versions, if you see specific UI issues, etc, so please specify which macOS version you are running.

Some notes :

Capture d’écran 2020-07-20 à 19 49 42

So that's about it for this build, let me know if you hit unmentioned issues here !

And one last thing, if you still think that the UI is too small, well:

Capture d’écran 2020-07-20 à 20 00 08

just resize it 😱

Get it here : https://github.com/glouel/Aerial/releases/download/v2.0.0alpha1/Aerial.saver.zip

ZV00 commented 4 years ago

Some feedback on that latest update running on Catalina! 😊

First off, it looks great, even on Catalina! I am so glad to see this overhaul! Thank you for your hard work!!

Some thoughts:

I seem to be able to choose either option on this pane. I assume that's a glitch given the permissions warning?

Screen Shot 2020-07-20 at 9 57 39 PM

I'd like a little more info on this pane... Specifically, what the difference between checkmarking a video and downloading it is. I assume that checking will rotate it given the cache settings, but this should be made clear to users who aren't as regular users.

Screen Shot 2020-07-20 at 9 59 14 PM

It's very slow to start, is there any way you could make it pause and let it load when first caching those stills? That would be a better result if at all possible. Even just a popup on first launch that says "Stills are caching, please note that the app may be slow to respond for a few minutes"

On this page below, it should state "Starting with" not "Since with" and developed has just 1 "p"

Screen Shot 2020-07-20 at 10 02 29 PM
r8ders2k commented 4 years ago

WOW! Impressive, gotta love the new UI. I just chipped in to help the cause.

Screen Shot 2020-07-20 at 9 04 40 PM
glouel commented 4 years ago

First off, it looks great, even on Catalina! I am so glad to see this overhaul! Thank you for your hard work!!

Thanks !

I seem to be able to choose either option on this pane. I assume that's a glitch given the permissions warning?

Screen Shot 2020-07-20 at 9 57 39 PM

Indeed, fixed for next build. I still think I'm going to remove Sparkle from Aerial and put it in a separate app on the side, I'll keep the panel but with a link to install the daemon.

I'd like a little more info on this pane... Specifically, what the difference between checkmarking a video and downloading it is. I assume that checking will rotate it given the cache settings, but this should be made clear to users who aren't as regular users.

Screen Shot 2020-07-20 at 9 59 14 PM

Exactly. I don't know if the checkmark is the good metaphor for a video being on rotation, maybe there's something more obvious ? I'm open to ideas from SF Symbols here (those are the icons I'm using) : https://developer.apple.com/sf-symbols/

Couple of things I'm thinking of, first one is on the right large view, add something like "On rotation" with the same icon. Second one is, maybe instead of all videos being the first option on top, having instead a "On rotation" option, it's probably more intuitive that having the whole video list thrown at you. I'll move the All videos somewhere else.

I'm also open to tinting those icons. I think the white looks awesome on dark mode, but not that hot on light mode UI. I need to test default accent color (so blue) maybe for light mode only ? Green worked great on light/dark though...

It's very slow to start, is there any way you could make it pause and let it load when first caching those stills? That would be a better result if at all possible. Even just a popup on first launch that says "Stills are caching, please note that the app may be slow to respond for a few minutes"

Right now it does it on the fly as you scroll which is really bad, so waiting doesn't even help, but yes that's the plan, basically at first startup I'll gather everything during the onboarding screen (and if not done, use the download indicator at the bottom to show progress on this). Also the downloading is done on the main UI thread which is very bad 🙈

Regarding pure start time, things should improve a lot when I remove all the remaining stuff, basically all the old UI code/resources are still there, and removing Sparkle should make it faster too.

On this page below, it should state "Starting with" not "Since with" and developed has just 1 "p"

Screen Shot 2020-07-20 at 10 02 29 PM

Oops thanks!

glouel commented 4 years ago

WOW! Impressive, gotta love the new UI. I just chipped in to help the cause.

Many thanks too !

glouel commented 4 years ago

I'd like a little more info on this pane... Specifically, what the difference between checkmarking a video and downloading it is. I assume that checking will rotate it given the cache settings, but this should be made clear to users who aren't as regular users.

I keep thinking about that one, so here are my raw thoughts on this, basically with the new version there are two modes, managed cache, and manual everything:

On top of that, some idea that was on the back of my mind was the ability to favorite/block videos with the new cache rotation. The idea being, if you favorite a video, it will always stay in cache and not get rolled over by a new one. Blocking, will never get cached (and deleted from cache if there). I think you kinda still need to be able to individually download videos in that mode, so I'm gonna leave the download button only on the middle column if you are in managed cache mode. I think that will make a lot more sense, and the fav/block button (or lock/block ? Lock may be more expressive than fav, but people understand fav a lot more easily I think) will go in the rightmost pane.

Favorite/block doesn't make much sense if you cache everything, so, while I don't like having two different UI modes, I think I kinda need to ? I'll keep thinking about it, maybe this can be solved some other way with just sets (which could go in the left sidebar too, there's just the need for a separate ui then to make the sets...)

ZV00 commented 4 years ago

To me this starts to feel more confusing than perhaps it needs to be... Let's go back to the basics of what we want to do:

  1. Limit Cache Size
  2. Select only specific scenes or types of videos
  3. Select only specific videos

Those three areas seem to be the goals of what you have been working on. I agree that users may want to be more specific about what videos they select, but this isn't something I feel like you should be spending lots of time on as it will overwhelm most users.

So let me suggest the following:

  1. Allow each video to be turned on or off, in automatic mode this will select which items are rotated. Remove the manual download option on each video, and instead make it so that this all occurs in the background when a video is enabled.
  2. For manual users, allow them to manually download all checked videos. This would override any cache limits.
  3. For users that want to set only specific scenes or specific types of videos, allow a way to select collections, dark/light videos, etc. as a category as a whole. For example, allow a check mark next to each category here which would enable or disable all videos in the collection: Screen Shot 2020-07-21 at 10 30 31 AM

In terms of symbols... I wish that you could use the iCloud symbols... They actually make it work great, but I know that's not allowed. But perhaps using a collection of the same symbol would be better. For example, using square.and.arrow.down and square.and.arrow.down.fillto show download requests and downloaded... And then for selected videos perhaps the bookmark and bookmark.fillfor videos to save? Alternatively checkmark.seal and checkmark.seal.fill could also work

ZV00 commented 4 years ago

...oh also regarding touch screen Macs... I'll just leave this here for us Apple geeks. IMG_0513

glouel commented 4 years ago
  1. Allow each video to be turned on or off, in automatic mode this will select which items are rotated.

So that's about how it worked right now. When Aerial starts, everything is checked so everything is fair play for to be rotated in and out.

Remove the manual download option on each video, and instead make it so that this all occurs in the background when a video is enabled.

This is tricky, see below

  1. For manual users, allow them to manually download all checked videos. This would override any cache limits.

On that point definitely yes.

  1. For users that want to set only specific scenes or specific types of videos, allow a way to select collections, dark/light videos, etc. as a category as a whole. For example, allow a check mark next to each category here which would enable or disable all videos in the collection:

Yeah that's an option (probably more as a right click to put that category as what should be played). Video sets kinda worked like that, you could save/reload your enabled/disabled selection.

So here's where I am right now, basically I'm considering 3 states instead of on/off:

What I like about the concept of favorites is that I can use that for the sets too, I started making a ui like this :

Capture d’écran 2020-07-21 à 17 08 44

On rotation is the first one on the sidebar, and if selected you get this bar on top that lets you pick what Aerial should play, should it play from everything, or just your favorites. That list could get completed with the sets created by users, for easy switching (or collection from sidebar). If you pick everything, in rotation shows the currently cached videos. That lets you know what you can expect to see if you launch the screensaver, which is pretty different from what may be enabled.

I kinda liked the idea of getting rid of the checkbox but I may end up keeping it. What I liked about it was that it made things a lot simpler in a way, you really liked a video, you favorite it (and it will stay around so you don't lose it to a reroll), you don't, you block it (and never see it again), the rest, well, it gets managed automatically. With 99 videos right now and more to come, that's a lot of micromanaging to enable/disable everything.

So my thinking was, hide the checkbox from that list. If the video is not downloaded, instead of the checkbox have a button to block/unblock (so it won't get cached). And if it's downloaded, show in the box a button to favorite/unfavorite. But in that scenario I'd keep the download button, maybe not in the list, but in the right most pane so you can get it now if you want it now (which is something I think should be in Aerial even in auto mode).

Maybe all of this is too complex, I kinda think the fav/block is easier to understand if implemented this way, but I may be really off on that one !

In terms of symbols... I wish that you could use the iCloud symbols... They actually make it work great, but I know that's not allowed. But perhaps using a collection of the same symbol would be better. For example, using square.and.arrow.down and square.and.arrow.down.fillto show download requests and downloaded... And then for selected videos perhaps the bookmark and bookmark.fillfor videos to save? Alternatively checkmark.seal and checkmark.seal.fill could also work

I'll have a look thanks !

...oh also regarding touch screen Macs... I'll just leave this here for us Apple geeks.

Agreed, but I have a hard time thinking it won't happen though 😅

ZV00 commented 4 years ago
image

I love this idea!

I kinda liked the idea of getting rid of the checkbox but I may end up keeping it. What I liked about it was that it made things a lot simpler in a way, you really liked a video, you favorite it (and it will stay around so you don't lose it to a reroll), you don't, you block it (and never see it again), the rest, well, it gets managed automatically. With 99 videos right now and more to come, that's a lot of micromanaging to enable/disable everything.

This was exactly what I was thinking. I think that changing this to a favorites list does this great, and I totally support that.

So my thinking was, hide the checkbox from that list. If the video is not downloaded, instead of the checkbox have a button to block/unblock (so it won't get cached). And if it's downloaded, show in the box a button to favorite/unfavorite. But in that scenario I'd keep the download button, maybe not in the list, but in the right most pane so you can get it now if you want it now (which is something I think should be in Aerial even in auto mode).

Rather than this, just have it download automatically if not cached when something is favorited, and give the user the option to manually download all favorited videos from that pane. That way you can remove the download from each item. I can't see a scenario where someone would want to stream some videos and cache others? It seems more like a one or the other type of deal to me.

Agreed, but I have a hard time thinking it won't happen though 😅

Craig says they still aren't 😉 😂

glouel commented 4 years ago
image

I love this idea!

I thought more about it while grabbing some groceries, I'll add the collection option in here it should make a lot of sense. Same goes for sets later on.

I kinda liked the idea of getting rid of the checkbox but I may end up keeping it. What I liked about it was that it made things a lot simpler in a way, you really liked a video, you favorite it (and it will stay around so you don't lose it to a reroll), you don't, you block it (and never see it again), the rest, well, it gets managed automatically. With 99 videos right now and more to come, that's a lot of micromanaging to enable/disable everything.

This was exactly what I was thinking. I think that changing this to a favorites list does this great, and I totally support that.

Sounds good !

So my thinking was, hide the checkbox from that list. If the video is not downloaded, instead of the checkbox have a button to block/unblock (so it won't get cached). And if it's downloaded, show in the box a button to favorite/unfavorite. But in that scenario I'd keep the download button, maybe not in the list, but in the right most pane so you can get it now if you want it now (which is something I think should be in Aerial even in auto mode).

Rather than this, just have it download automatically if not cached when something is favorited, and give the user the option to manually download all favorited videos from that pane. That way you can remove the download from each item.It seems more like a one or the other type of deal to me.

Kinda is yeah, the only point of having a download button would be you want to download but not favorite, which makes little sense. Off it goes ;)

I can't see a scenario where someone would want to stream some videos and cache others?

Well streaming is definitely dead with 2.0 in any case. But not all of your videos may be cached managed. You can have custom videos alongside your cache, they aren't in the cache (and you should still be able to favorite them, or block them, which is why I'm sticking with the block button). There's this concept of local sources that I'll be introducing at a later point, it's kinda hinted at with the drag'n drop in sources (which does not work yet). I'll talk more about that one later.

Craig says they still aren't 😉 😂

Did he say that after wwdc ?

ZV00 commented 4 years ago

I thought more about it while grabbing some groceries, I'll add the collection option in here it should make a lot of sense. Same goes for sets later on.

Great!

Did he say that after wwdc ?

Yeah he did a podcast with someone (I'd have to go and dig it up if you're interested) and he emphasized that the Mac and iOS/iPadOS are independent devices... 🤷‍♂️

Also a couple of bugs I found...

  1. The question mark buttons in the pane don't work:

Screen-Recording-2020-07-21-at-3

  1. Opening up the preferences the first time, it sometimes doesn't look right on first load. Changing panes does fix the issue, but on the first load of the pane it looks like this:
Screen Shot 2020-07-21 at 3 17 44 PM
glouel commented 4 years ago

Great!

Still a WIP but finally got it to work correctly :

Capture d’écran 2020-07-22 à 16 46 11

Yeah he did a podcast with someone (I'd have to go and dig it up if you're interested) and he emphasized that the Mac and iOS/iPadOS are independent devices... 🤷‍♂️

I think I might have heard that on Gruber, now that you mention it.

Also a couple of bugs I found...

  1. The question mark buttons in the pane don't work:

Can confirm, need to fix that thanks

  1. Opening up the preferences the first time, it sometimes doesn't look right on first load. Changing panes does fix the issue, but on the first load of the pane it looks like this:

Now that you mention it, I saw it once in a vm but wasn't sure if it was just the vm being slow. Will have a look but I think it's the sidebar not reloading after the manifests get downloaded the first time, thanks !

I'm nearly there with the favorites by the way, and rethought one last time the block list. Here's my new "simpler" idea I'm considering, in the right panel, an option to "hide video" instead of "block video" . So not only will it never cache/play that video (aka block aka disable from playlist/future caching), but it will also get hidden from its respective categories.

And I'll add at the very bottom a Hidden section with all the hidden videos.

I kinda think that hide is dead simple to understand, although a block list is probably not that much more complex. I think hiding the videos from the main lists makes it a bit more manageable and gives you less scrolling overall, but quite frankly I think both options are fine...

I'm 75% on the hidden wagon right now, I'll go think about it over a walk but appreciate opinions ;)

ZV00 commented 4 years ago

I kinda think that hide is dead simple to understand, although a block list is probably not that much more complex. I think hiding the videos from the main lists makes it a bit more manageable and gives you less scrolling overall, but quite frankly I think both options are fine...

I think that would work great. It is also in keeping with the removal of terms like whitelist and blacklist that Apple has said they are phasing out - (granted so would block list, but... I agree hiding sounds better)

glouel commented 4 years ago

Here's a new build with a lot of the things we discussed so far and others:

Capture d’écran 2020-07-22 à 20 55 34

I haven't fixed the slowdown/startup/hidden bubbles yet but that's coming too.

https://github.com/glouel/Aerial/releases/download/v2.0.0alpha2/Aerial.saver.zip

ZV00 commented 4 years ago
Screen Shot 2020-07-22 at 3 06 55 PM
  1. This doesn't look right in the dropdown 😂

  2. Any chance that we could allow Command + A to select all videos in a category and then apply a Favorite or Unfavorite command to the multiple videos? (Or alternatively drag and drop to the favorites menu?)

  3. A small thing I noticed - the videos here should be listed in alphabetical order if possible... It's a tad weird with them all over the place and with "Australia" on the bottom and "Wulingyuan" on the top

    Screen Shot 2020-07-22 at 3 09 17 PM
  4. One other thought I just had, it would be cool if at the bottom of the collection they stated the total runtime of the collection. Not sure if that's possible, but I noticed you were displaying each video runtime so that could be a cool small enhancement.

r8ders2k commented 4 years ago

This is odd, it shows that the video, Golden Gate from SF, is cached, but the thumbnail is grey and the video has the cannot/do not play icon.

Screen Shot 2020-07-22 at 12 09 33 PM