Willy-JL / F95Checker

GNU General Public License v3.0
101 stars 16 forks source link

Update marker when not installed #50

Closed FaceCrap closed 1 year ago

FaceCrap commented 1 year ago

Ok, I know we had this discussion in the past, and I was reluctant to bring it back up, but I feel this may be the one situation where it may (stress "may") be desirable to allow for a small change in your logic. It certainly would help with my sense of logic, as I am much like Spock here.

I know from looking at the DB that the "Installed" field is a text field that gets the current version of a game once the "Installed" checkbox is fully ticked. Which in turn triggers the checker's logic to display the "Installed" checkbox in a semi-checked state and places that black-star-on-yellow-circle icon before the game name when an update is found during a check. And as long as a user does not put a full tick in the "Installed" checkbox after it becomes semi-checked, that value will not change whenever a new update is detected.

Now, as said, I am much like Spock here in that when I add a new game to F95Checker, my sense of "logic" gets a bit bent out of shape if I have to "fake" that the game is installed by ticking the "Installed" checkbox. The more so if I don't intend to ever download that game for the time being, e.g. because I only added it to start keeping track of its update cycle. (And as side note, also labeled it as "Maybe" for the Kanban column view)

The average user will likely not know how this mechanism works, so will probably also not put a tick in that box for a new game for whatever reason, or simply forgetting to.

I propose to make everyone happy by having the checker test if the "Installed" field is empty when it starts checking if that game is updated, and if it is, put the current version in that field so that when and if an update IS detected, the state of the game in the UI actually displays it as such.

This has three benefits. A) It satisfies my sense of logic (less important) B) feels more natural for games that only get added to keep track of their update cycle C) it makes sure that an update actually shows as an update in situations where a user, who actually knows how this mechanic works, simply has forgotten to tick the "Installed" box. (ehm, like me 🙄)

Alternatively, that field could also be seeded when the game gets added, even though that feels somewhat illogical because you see this field as "reflecting if the latest update is or is not installed" and not if an update actually has been installed before. Actually, that is exactly what the semi-checked state does, it reflects your logic that the latest update is not installed, but it only shows like this when telling the checker there was a previous update installed even if it wasn't.

In other words, it prevents a PEBCAK or PICNIC situation.

Willy-JL commented 1 year ago

I propose to make everyone happy by having the checker test if the "Installed" field is empty when it starts checking if that game is updated, and if it is, put the current version in that field so that when and if an update IS detected, the state of the game in the UI actually displays it as such.

No. Assuming stuff is not something I'm willing to do, it would make the situation worse in my opinion.

I personally find the update popup to be sufficient in covering the issue you're describing for how I use the tool, but I do see what you are getting at.

I counter propose 2 options, which I feel like are both reasonable:

I feel like the latter option is the most appropriate solution, while the first is more of a workaround, but they don't exclude each other, they could be used for different purposes so I'm willing to implement both

FaceCrap commented 1 year ago

First let me wish you all the best for 2023.

It wouldn't be assuming? since the version it has when it is added would still be added to the "installed" field if that checkbox is manually ticked? The "installed" by default would do exactly the same as what I suggested, not? Only difference is it would be controlled by a setting. Because when you add a new game, you always need to do a Full Recheck to get it to display the actual name, so after that the version number will be known, right?

But whichever option you think is best to cause the marker to show I'm good with. Because "it not showing" on games I don't download and forgot to mark as if it was actually installed, was the only reason what made me suggest this. So don't overcomplicate things if you think that might cause issues down the road.

EDIT: I got prompt F95Checker was updated to 10.0, I see in the Actions that release 10.0 should be build 967 and the last beta 968. However if I download the 10.0 from Releases I also get 968. Don't know if that was intentional, but on the other hand, since 10.0 in Actions is marked as a release, it doesn't have the download links at the bottom, so effectively it can't be downloaded.

Willy-JL commented 1 year ago

First let me wish you all the best for 2023.

And to you <3

EDIT: I got prompt F95Checker was updated to 10.0, I see in the Actions that release 10.0 should be build 967 and the last beta 968. However if I download the 10.0 from Releases I also get 968. Don't know if that was intentional, but on the other hand, since 10.0 in Actions is marked as a release, it doesn't have the download links at the bottom, so effectively it can't be downloaded.

Answered this on the f95 thread but since you understand better how the builds work I can explain a bit better. The Python version I’m using doesn’t yet have a stable release of cx_Freeze, which is what turns code into a standalone executable. I was using the latest betas of cx_Freeze on windows to make it work, but those were compiled by someone else and used in some other piece of software, and it looks like that raised some antivirus eyes, and antivirus are very stupid and only look at common patterns, since cx_Freeze is used as a base to run Python code, even though the meat of the program is completely different, the base used is the same so the patterns flagged the 10.0 release as well. To fix this I changed to compiling cx_Freeze during the build process, so that only F95Checker would have these patterns and base, but I did this via a commit build not a release build trigger, so the executable was marked as a beta. It was 5 am when I did that and it slipped my mind, so when I saw that from the 6/50 false positives it went down to 0/50 as it had always been, I replaced the binary on the release without thinking that it was marked as a beta. I now deleted the release and triggered it again, so it will build again with the proper compilation.

It wouldn't be assuming? since the version it has when it is added would still be added to the "installed" field if that checkbox is manually ticked? The "installed" by default would do exactly the same as what I suggested, not? Only difference is it would be controlled by a setting. Because when you add a new game, you always need to do a Full Recheck to get it to display the actual name, so after that the version number will be known, right?

It would be assuming. The “Installed” checkbox has a very simple purpose: to remember whether you have the game downloaded and installed on your system, ready to play. So changing the default behavior would change the purpose of this checkbox, or at the very least make it very counterintuitive. Now, having it as an option I am fine with, because then it is you who decides it should act that way, it is not changing the default behavior for everyone. But as I mentioned, this is a bit of a workaround to begin with, so I feel like the second option is the proper solution, but still I believe in user choice so I’ll still add the first option in case someone wants to use it (goes hand in hand with the setting to “ask executable path on game add”)

FaceCrap commented 1 year ago

It was 5 am when I did that and it slipped my mind

Being someone whose rhythm is probably even more out of whack than yours, but that's no time to be playing around with code 🤣

Willy-JL commented 1 year ago

@FaceCrap image Will push and build in a sec. You know the rest ;)

Willy-JL commented 1 year ago

Released in version 10.1.1