Closed jeremymeyers closed 2 years ago
I think you have the settings page organized well.
My only suggestion here would be to rename some headings to make them more specific, and some of these might seem pedantic and subjective so I apologize in advance. For example,
Paths
to something more specific (and this applies to any heading that is not unique), such as:
Application Paths
for application system path locationsLibrary Paths
for library path locationsDisplay
section to Appearance
or Interface
. In my experience, "Display" often pertains to display monitor settings, and I've noticed apps use headings like "Appearance" or "Interface" to denote the GUI.Themes
back to Custom CSS
as it is now. Not everyone uses community made CSS that some people refer to as "themes"; for instance I only apply a handful of CSS tweaks to refine the stock UI myself.I think everything in the settings page should be filterable with a filter-on-search type mechanism that a lot of settings pages have (Chromium, Visual Studio Code, etc). And that's part of the reason why I suggested to make headings more specific.
I tend to favour a Material Design ui, like the new Microsoft Edge settings page (and to a lesser degree the Chromium or Chrome settings page)
Desktop layout
Mobile layout
@WithoutPants thoughts on this? I can give it a whirl if you like.
That looks fine. I don't think there's any support for theming beyond setting the custom css content.
I've done my best to organize the structure of the settings page. Please contribute any modifications or suggestions.
The settings tree will use the follow structure:
<form control item>
Use this layout as a visual guide to the structure where,
A work-in-progress
The settings tree is just a semantical reference of most of the settings to help us organize sections of the settings. If we're going to refactor the settings I strongly suspect we need a basic reference point for the different sections and their items.
A work-in-progress (sorted alphabetically by primary heading)
<check for new version button>
<toggle switch>
<drop down selection>
<toggle switch>
<drop down selection>
<toggle switch>
<toggle switch>
<toggle switch>
<toggle switch>
<toggle switch>
<toggle switch>
<drop down selection>
<toggle switch>
<toggle switch>
<toggle switch>
<toggle switch>
<text input form>
<text input form>
<toggle switch>
<toggle switch>
<toggle switch>
<toggle switch>
<external link icon button to open resizable window to edit css>
<input text form>
<input text form>
<text input form>
<text input form>
<text input form>
<text input form>
<text input form>
<toggle switch>
<toggle switch>
<toggle switch>
<toggle switch>
<text input form>
<text form>
<toggle switch>
<text input forms>
<button>
<chevron up/down button>
<chevron up/down button>
<text input form>
<text input form>
<text input form>
<text input form>
<text input form>
<text input form>
<text input form>
<text input form>
<text input form>
<toggle switch>
<drop down selection>
<drop down selection>
<drop down selection>
<text input form>
<drop down selection>
<toggls switch>
<text input form>
<text input form>
<text input form>
<text input form>
From Fonzie on Discord:
We don't need to split up Settings and Tasks, and we also don't need a 3-level deep Settings tree where you spit up the two desktop page-long Interface in 7 different sub-trees so that "Editing" with its current 6 lines ends up on its own single page. Using a sledgehammer to crack a nut won't make things better.
The sheer amount of information on these pages (with Configuration page maybe as the exception) isn't the problem or that the current 9 nav-items are too many. The two big problems are the spacing between the sections/form-groups within the pages so you don't really get a sense when one section ends and a new begins, and that everything is too vertical cause the design does a poor job of using the width of the page. (Plus #3: quite a few options are poorly explained.)
From an early survey result we know that a large majority mostly access Stash from Desktop and only 5% Mobile Only. So I can't figure out why seemingly most design ideas are mobile first desktop second, and/or try to copy a solution from & for browser settings rather than one from & for website settings.
we also don't need a 3-level deep Settings tree...
Is that referencing the settings tree in this thread because I don't understand how the criticism is applicable.
If so, I'm not sure the commenter understands the purpose of the settings tree is just a semantical representation of all the settings to help us organize them. I was going to write it in YAML but I thought it would be clearer for most people the other way. If we're going to refactor the settings, we need to compile a list of the main categories and most of the items, so we can decide if we won't to consolidate, split, purge, or shuffle sections, and at least the settings tree gives us some a basic reference point.
It's not a literal tree UI, and I guess I may not have been clear enough in the structure section where it defines primary headings are left column, sub-heading cards are right column, and the items are contained within the sub-heading cards. The images he references use the exact same "three level deep" structure I outlined:
<h1>Preferences</h1> <----------- Primary heading , displayed on the right, "level 1"
<h2>About Preferences<h2> <----------- Sub-headingc "level 2"
<p>Item 1</p> <----------- Item, displayed on the right, "level 3"
<p>Item 2..</p> <----------- Item, displayed on the right, "level 3"
<h2>People You Follow<h2> <----------- Sub-heading, displayed on the right, "level 2"
<p>Item 1</p> <----------- Item, displayed on the right, "level 3"
<p>Item 2..</p> <----------- Item, displayed on the right, "level 3"
Gonna be brutally honest. Those pics as a guideline are hideous. I don't know any modern app with simple and intuitive UI/UX that is using an archaic message board Web 1.0 layout as its inspiration. That is literally a step backwards, like 15 years in the past backwards. There is a reason iOS, Google's Material (Chromium, Android, etc), Windows 11 settings, some Linux DEs, are all using a "three level deep" card layout for settings.
The card layout solves the "two big problems" precisely -- since each sub-heading group lives on it's own island in a card. i don't think another visual layout exists that conveys to the user "this group of items here on this card are all categorically related to one another and separate from the other sections that live on the other cards", so I'm confused at the criticism or maybe just misunderstanding what it is directed at.
I'll see if I can build a wireframe later, and I'll edit my prior post to make it clear that the settings tree is just a semantical reference.
I think "System" is a better name for the "General" heading.
I would also move it down on the list. I don't think any of the settings in that section are modified that frequently, if at all. Library paths are most likely to change, but I think it's something that happens occasionally if at all. If someone setting up stash for the first time sets their paths in the wizard, then I can see them not ever needing to even go to the system section.
If we look at browser settings, they even hide the System section under a collapsible "Additional settings" header. I don't think we need to go that far, but I don't think our equivalent of system settings should be first on the menu. It's not even the default tab if you just go to http://localhost:9999/settings. The default is Tasks, so it would make more sense to put that at the top.
@7dJx1qP All good suggestions
Here's a wireframe of what I'm talking about. Ignore the lack of items or how they're categorized, I just threw in a few to portray the gist of the UI.
Image attached below or clickable in a different window here
I think General
is better renamed to Library
, and that the Application Paths
should be moved to a different panel (ie System). Application paths are not something that are likely to be touched very often, and mostly for exceptional circumstances. As mentioned above, I'd make Tasks
first, then Library
, then the rest with System
near the bottom.
I don't think stash-box integration belongs in Services. Services implies stuff provided by the stash server (ie DLNA). I would say it better belongs in Web Scraping, though that title probably needs generalising as a result.
I like the wireframe posted above. My only addition there is that it needs to be clear in the interface when there are unsaved changes to the configuration. A floating save button at a bear minimum along with a warning if navigating away with unsaved changes.
My only addition there is that it needs to be clear in the interface when there are unsaved changes to the configuration. A floating save button at a bear minimum along with a warning if navigating away with unsaved changes.
@WithoutPants Just curious, why can't user input to all the form items be automatically saved in the background [source]. This would nullify the purpose of a save button.
Some other thoughts.
Consider the following:
Scan
button. Since it will be adjacent to Selective Scan
I think we can should differentiate it and explain what it does. Calling it Full Scan
or Default Scan
(depending on what it's actual behavior is`) seems like a simple way to achieve thisJobs Queue
consists of tasks. Stash is already referencing them as tasks elsewhere. For consistency, rename the subheading to Tasks Queue
.Can we give classnames to primary headings, sub-headings, sub-heading titles, sub-heading descriptions, sub-heading items, sub-heading item descriptions, etc.
Just curious, why can't user input to all the form items be automatically saved in the background
Upon some thought, something like this would need to be disabled for the CSS section. The custom css should have its own save
button, regardless of how the rest of the settings are saved. Here is my concept of the Custom CSS
subsection layout.
To reduce clutter on the main settings page and to increase the usability of the Custom CSS input box, herein referred to as the CSS Editor
, add an external launch icon that opens a new browser window specifically for editing custom CSS.
Image: Custom CSS Subsection
Image: CSS Editor (standalone browser window)
I don't think stash-box integration belongs in Services. Services implies stuff provided by the stash server (ie DLNA). I would say it better belongs in Web Scraping, though that title probably needs generalising as a result.
@WithoutPants Agreed re: Stashbox and scrapers all categorized in the same top-level/primary section. The web scrapers and Stashbox both provide metadata to the users content. Therefore, how about we name the top-level section containing them Metadata providers
. Kodi calls their add-ons section of metadata scrapers Information providers
, but I'm partial to just Metadata providers
personally.
Edited the settings tree to reflect suggestions.
Library subsection concept image
A version where there are expand/collapse chevrons next to each library source. Each source would be collapsed by default. This could be useful for people who have a lot of sources.
ce
Jobs queue concepts (I renamed it to tasks queue for consistency since they're referred to as tasks and not jobs throughout the rest of Stash.
Image: Tasks queue is inactive
Image: Tasks queue active, scanning in process
Image: Tasks queue active, auto tagging in process
Here's a version of the tasks queue that I think incorporates the old layout with new layout
Scanning options
text, linking to detail about all the scanning options and what they do.Edit: Consolidated the help icons in the Scanning options
section to just one icon.
This last one is perfect. It's only missing 'Save as default' for the options, and it's done.
This last one is perfect. It's only missing 'Save as default' for the options, and it's done.
How's that?
We don't use switches anywhere else on Stash, but I don't think switching checkboxes to switches across our UI would be so bad. Bootstrap already has some.
I think this design is ideal, especially the collapsible options. We need to make a few more collapsible options across our settings to really simplify it.
The "Default scan options" button wording looks off to me. I think "Set as default", "Save as default", "Save as default scan options", or "Make default" makes it clearer. Looking at all the buttons in Chrome settings, they all start with a verb when they are buttons that do something.
The task buttons (scan, identify, auto tag) should also probably begin with "Start" as well. Personally, I'm used to the current labels, but I can see new users getting the same feeling about the wording as I did about "Default scan options". Eh, I think they're fine
I am not sure if using switches would be appropriate as a way to select items in grid view. For that section I'd leave checkboxes, and use the switches in the Settings pages, provided the Settings page instantaneously saves changes the user makes. I made the concepts in the assumption that changes would be auto saved, but should have clarified that.
Switches should never require users to press a button to apply the settings because a switch is a toggle button. When you require users to press a submit button, you confuse them because it’s not what they expect.
You should only use switches on settings that need to take effect instantaneously. If a setting requires a button press before it can take effect, you should use a checkbox instead.
A checkbox does not apply the settings at an instant like a switch. Instead, it’s has a submit button and takes effect after the user presses it. Requiring a button press allows users to review their settings before they commit. This requirement helps prevent accidental activation errors.
Source: https://uxmovement.com/buttons/when-to-use-a-switch-or-checkbox/
I agree that if we move to switches then we should auto-save for everything [edit: in settings specifically].
This last one is perfect. It's only missing 'Save as default' for the options, and it's done.
How's that?
love this and would just suggest that the task queue have both a noticable visual differentiation (as it is showing actions taking place rather than options being set) as well as a notice that the actions will continue even if you navigate to a different page.
Will the tasks queue still show the output of the current running task? I like seeing the task output for the currently running task, but it can be hard to cancel other tasks, because they're constantly getting shifted up and down by the current task output. I suggest making the output for the current task collapsible.
Loving this conversation ! Great concept !
I may have made a mistake with all the text input boxes. Because the aim is to have the settings page instantaneously save changes, I think text input boxes will require an Edit
/Change
/Add
type button that opens a small modal window. I noticed that's how the Chromium based browser do it.
Example:
Clicking apply in the modal window would then apply the change.
One alternative would be reset and confirm buttons on the text fields to reset/apply the field value. Also note that for some fields we'll need to group them into a dedicated dialog - for example, the authentication username/password setting should be atomic.
Will the tasks queue still show the output of the current running task? I like seeing the task output for the currently running task, but it can be hard to cancel other tasks, because they're constantly getting shifted up and down by the current task output. I suggest making the output for the current task collapsible.
@7dJx1qP Yeah, that's why in my concept wireframe the status of the current task, it's output/progress, and it's cancel button are all on the same line. However, that means the output will need to be truncated for long filepaths. But it's up to the devs if that's how they implement it.
love this and would just suggest that the task queue have both a noticable visual differentiation (as it is showing actions taking place rather than options being set) as well as a notice that the actions will continue even if you navigate to a different page.
@jeremymeyers Hmm, what would you suggest? Different card color maybe? A more visible icon indicator?
I took inspiration entirely from Chromium based browsers. Their Settings > About pages do not have any user options to change, but only show information. For example in the below image where it says the browser is up-to-date, when it is performing a task (downloading), the icon iirc turns into a download spinner, shows a percentage, and has a different status message. Almost par for what the tasks queue concept does.
Yeah, that's why in my concept wireframe the status of the current task, it's output/progress, and it's cancel button are all on the same line.
One line isn't enough for task output. This is what I see when I currently see when I run a scan:
The number of lines is constantly changing and I think it depends on the number of threads that are in use
Oh, I must have misunderstood then. My Stash scans only use one thread so I've never seen that before.
Yeah, that's why in my concept wireframe the status of the current task, it's output/progress, and it's cancel button are all on the same line.
One line isn't enough for task output. This is what I see when I currently see when I run a scan:
The number of lines is constantly changing and I think it depends on the number of threads that are in use
it could be one progress bar for current task completion progress and a second one on a new line for overall queue completion, though that introduces math and would maybe require some assessment of what is in the queue before starting...
Though also I kind of feel like a queue is maybe not the right framework? It is a list of active and pending actions, each of which can be launched individually. Am I wrong in saying a queue in this case would more often be a "stack a bunch of tasks and then hit a Start button and have them all go"
No, I think conceptually it is a queue. You can start a bunch of tasks and they are queued up with one running at a time.
The issue I'm pointing out is that if a task that's running has multiple threads, it will log the output of each thread right below the task, and the lines are constantly changing and shifting any other queued tasks below it up and down.
These three screenshots shows task output at different points in time of a scan task (with 7 parallel threads) with two other tasks queued. Sometimes there's no thread output if they aren't doing any work, and you can see the other queued tasks below. Other times the whole area will be filled with thread output because they're all doing some work and you won't see the other tasks unless you scroll down. The number of lines changes many times in fractions of a second.
I think there's a few ways this could be addressed: 1) Move the thread output to a separate section above or below the list of tasks 2) Make the thread output section collapsible 3) Make the thread output section a fixed height regardless of how many lines of thread output there are. This would stop the rest of the tasks in the list from constantly shifting up and down 4) Separate the current task + thread output from the rest of the queued tasks, so the current task thread output won't prevent you from seeing the rest of the queued tasks.
Will the tasks queue still show the output of the current running task? I like seeing the task output for the currently running task, but it can be hard to cancel other tasks, because they're constantly getting shifted up and down by the current task output. I suggest making the output for the current task collapsible.
@7dJx1qP Yeah, that's why in my concept wireframe the status of the current task, it's output/progress, and it's cancel button are all on the same line. However, that means the output will need to be truncated for long filepaths. But it's up to the devs if that's how they implement it.
love this and would just suggest that the task queue have both a noticable visual differentiation (as it is showing actions taking place rather than options being set) as well as a notice that the actions will continue even if you navigate to a different page.
@jeremymeyers Hmm, what would you suggest? Different card color maybe? A more visible icon indicator?
I took inspiration entirely from Chromium based browsers. Their Settings > About pages do not have any user options to change, but only show information. For example in the below image where it says the browser is up-to-date, when it is performing a task (downloading), the icon iirc turns into a download spinner, shows a percentage, and has a different status message. Almost par for what the tasks queue concept does.
not to muddy things up here. I get what you are saying about the Edge update section and would just suggest that that is fulfilling a different need (i.e. an update of the entire underlying platform one is using, which would require a restart and is kind of a binary process (either its done updating or its not and no more granular detail is provided) as contrasted by our use case which is "show the current status of tasks the user has selected as well as how much other stuff remains to be done"
Yeah i would put it in a different color or maybe even make it fixed position on top so that the scrolling starts right above "tasks queue" in your wireframe
I think nitty gritty details like this are gonna come down to user preference. 🤷
Yeah i would put it in a different color or maybe even make it fixed position on top so that the scrolling starts right above "tasks queue" in your wireframe
Fixing the position might work well on large viewports, but laptop screens and mobile viewports it might be a bad idea. Not sure.
Since the Tasks Queue is the top element in the column it would be pretty easy to use a pseudo-class (eg. :first-of-type
) in custom css to change the color of the card to whatever you think is appropriate.
I'm currently looking at my TrueNAS dashboard to see if there's anything similar. It does have a Task Manager of sorts (itemized tasks progress with pct% indicator), but it is utilized as toast content when you click the task icon in the nav bar. Fwiw I think something like that is being added to the nav bar, just not sure how interactive it is going to be.
Custom CSS subsection
To reduce clutter on the main settings page and to increase the usability of the Custom CSS input box, herein referred to as the
CSS Editor
, add an external launch icon that opens a new browser window specifically for editing custom CSS.[...]
IMO, I think it's fine to keep the textarea as-is until a long term solution for easily installing themes comes to fruition. Most people are going to edit CSS in an application of their choice anyways i.e. VS Code. Would just be unnecessary work, IMO.
Other than that, I think switches are the way to go. I think they'll look better/modernized than checkboxes on mobile too. I also really like the new layout echo6ix conceptualized. It's clean.
It's more about design consistency tbh. Text input forms, especially mutlivalue ones should get a modal window, otherwise i think we're gonna need a save
or apply
button after every text input item since the global save button is being deprecated. I mean, the CSS Editor would be just another window, it doesn't have to be decked out with line numbers, alternate line coloring, and syntax highlighting. It can be pretty basic for the first iterations for the reasons you suggested.
Here's another mistake I think I made in my concepts. In every image showing a caret or chevron meant to expand/collapse icon, I incorrectly used an up caret/chevron to indicate the content was in a collapsed state.
I think nitty gritty details like this are gonna come down to user preference. 🤷
Yeah i would put it in a different color or maybe even make it fixed position on top so that the scrolling starts right above "tasks queue" in your wireframe
Fixing the position might work well on large viewports, but laptop screens and mobile viewports it might be a bad idea. Not sure.
Since the Tasks Queue is the top element in the column it would be pretty easy to use a pseudo-class (eg.
:first-of-type
) in custom css to change the color of the card to whatever you think is appropriate.I'm currently looking at my TrueNAS dashboard to see if there's anything similar. It does have a Task Manager of sorts (itemized tasks progress with pct% indicator), but it is utilized as toast content when you click the task icon in the nav bar. Fwiw I think something like that is being added to the nav bar, just not sure how interactive it is going to be.
I mean this is outside the scope of this discussion but at some point possibly adding a footer bar to communicate information might be valuable?
Closing as the settings page has been refactored, and released in 0.12.0. Great work on the design!
### Scope Rework the config page for better organization.
Long Form
As #1548 is moving scrapers to its own page, I think it would be good to take a look at the configuration section overall.
My suggestions are as follows:
Separate pages into collapsible sections, expanded by default
(like this: https://www.codehim.com/bootstrap/bootstrap-vertical-menu-with-submenu-on-click/ )![Screenshot 2021-07-02 16 57 22](https://user-images.githubusercontent.com/3514095/124327906-a3fefe80-db56-11eb-9277-d6a288870716.png)
Move stuff around
(in no particular order)
Content Section
The purpose of the Library section is to show configuration settings related to WHICH CONTENT IS INDEXED OR NOT INDEXED
Library
Tasks
System Section
The purpose of the System section is to show configuation options and settings related to BACK-END SETTINGS
Paths Menu
Logs Menu
Maintenance Menu
Indexing Section
The purpose of the System section is to show configuation options and settings related to THE INGESTION OF CONTENT
Playback Section
The purpose of the Playback section is to show configuration options and settings related to VIDEO PLAYBACK
Playback Menu
Conversions Menu
DLNA Menu
Users Section
The purpose of the Users section is to show configuration options and settings related to USER LOGIN
Appearance Section
The purpose of the APPEARANCE section is to show configuration options and settings related to USER INTERFACE
Interface Menu
Theme Menu
Extensions Section
Plugins Manu
The purpose of the Plugins section is to show configuration options and settings generated by PLUGINS
Scrapers Menu
(as described in #1548 )
Tools Menu