Git Product home page Git Product logo

Comments (9)

wtanksleyjr avatar wtanksleyjr commented on August 12, 2024

Hm, I just discovered that changing the "program-created files" folder is just a bad idea (it pretty much just nukes all of the settings). So maybe my last paragraph isn't really relevant.

from libation.

rmcrackan avatar rmcrackan commented on August 12, 2024

The solution here is to massively rework the wording around setup and config -- beginning with the fact the term "advanced options" is misleading here. The functionality is perfect but it's intent is clear as mud. The behind the scenes stuff going on here is complex for good reasons and I like the way it works. However I've tried and failed to make it easy for the user to configure. You're right: this needs attention.

from libation.

rmcrackan avatar rmcrackan commented on August 12, 2024

I want to keep the following structure. As you point out however, I need to drastically simplify/clarify user options.

Important folders:

  1. the directory containing Libation.exe. I don't have a name for this. For now, let's call it "Home". "Home" should be able to be anywhere. Maybe you want it in Program Files, or on a thumb drive, or whatever. Also, you should be able to delete, or replace this folder (esp as an upgrade) without losing your settings or your decrypted books.

  2. "Libation Files" holds your settings files, logs, config, database, search engine files, log in tokens, cached cover art. It's all the stuff that makes it your program. You should be able to put this wherever you want also. Windows usually opaquely puts things like this in 'Users' but I don't like that (although I guess that would be a reasonable default). "Libation Files" holds all settings except 1 -- Libation needs to know where to find "Libation Files" itself. This is my so-called 'advanced setting'.

  3. "Books location" is [A] where books are downloaded into and [B] where Libation looks in order to determine if a book was liberated. (This last part will eventually go away.) This is expected to get huge and not necessarily reside in the same location as program files ("Home") or personal config ("Libation Files").

"No questions setup" : fresh install. Start with a blank database. Accept all defaults for basic and advanced settings. Lacking information, all folders are just somewhere inside "Home". Setup complete.

"Advanced setup" means either:

  1. Libation HAS been set up before. By pointing to your previous valid "Libation Files", all other setup is complete and you're 100% back up and running again. Setup complete.
  2. Libation has NOT been set up. You want to choose the folder which will be used for "Libation Files". Then you choose basic settings.

"Basic setup": you accept the default for the advanced setting thus "Libation Files" will reside inside "Home". Choose basic settings.

Choosing basic settings: select your "Books location" folder. (Also some other default-ed settings which new users will rarely care about changing.) After this is saved, Libation will set up a new "Libation Files" folder per location in the 'advanced setting'. Setup complete.

from libation.

wtanksleyjr avatar wtanksleyjr commented on August 12, 2024

from libation.

rmcrackan avatar rmcrackan commented on August 12, 2024

What about this?

I think the 1st prelim is that the defaults need to be in \Users\{user}\Libation; not inside a nested directory.

The 2nd prelim is that there are currently 2 settings dialogs (basic and advanced) and a 3rd is also needed: 'omni display' which shows both basic and advanced. I'd previously avoided this because using this anywhere other than setup opens up a world of edge-case pain so it was less effort to create only displays which could be used both for setup and post-setup config

Workflow:

If config is properly initialized: start program

Else: start setup. In the background, init "Books location" = \Users\{user}\Libation and "LibationFiles" = \Users\{user}\Libation\Settings

If settings are found in default location: "it looks like you have previously installed Libation. Use these settings?" Show paths for books and libation files [yes] [no]

if yes: accept defaults. start program

If settings not found in default location or if 'no' was clicked: show dialog with the following buttons (feels like a lot of choices, but new users will actually get to this step without seeing anything before now):

> [New user]
> > 'omni display' with defaults populated. [Begin]
> [Returning user] "I have previously installed Libation. This is an upgrade or re-install"
> > show the (previously named) advanced dialog to point to "LibationFiles"
> > > if contains valid settings: start program
> > > if invalid: show basic settings dialog

from libation.

wtanksleyjr avatar wtanksleyjr commented on August 12, 2024

from libation.

rmcrackan avatar rmcrackan commented on August 12, 2024

nothing should be in "Books" except books

Good call. I like your new defaults.

if the Settings folder is in the default location, you should be able to read from it where the Books folder is

Yup. That's accounted for in all workflows above. I just didn't call it out explicitly.

Moving the books folder after installation is easy. Just open basic settings and point to a new folder. I could also add a dialog reminding the user to move existing books themselves or include a button to move all files/folders recursively to the new location.

Moving the location of the settings folder is a tricky. This is the stuff that Libation is actively using so you can't just move it. You can copy it, change the pointer to LibationFiles and force a restart, but that leaves the old files in place which feels icky.

The real fix would be pretty complex for such a rarely needed feature:
user changes LibationFiles location
LibationFiles_old = LibationFiles
LibationFiles = new dir from user
force restart
new startup step:
if LibationFiles_old setting doesn't exists or is null => start program
if LibationFiles_old setting is not a valid dir
* restore setting LibationFiles = LibationFiles_old
* remove/nullify LibationFiles_old setting
* notify user
* start program
recursively copy all files/folders from LibationFiles_old => LibationFiles
* if success, delete old files/folder, including LibationFiles_old dir itself
* if errors
* * delete new files/folders
* * restore setting LibationFiles = LibationFiles_old
* * notify user
remove/nullify LibationFiles_old setting
start program

from libation.

wtanksleyjr avatar wtanksleyjr commented on August 12, 2024

from libation.

rmcrackan avatar rmcrackan commented on August 12, 2024

5.2.0 installation workflow now matches above

from libation.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.