-
-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Consistent settings screens #5476
Comments
@lampholder and @ara4n - I'm particularly interested in your feedback. If this sounds reasonable, I'll be happy to add it to my list after granular settings and the few other PRs I have open are complete. Edit: I'm also willing to make a quick and dirty version within Riot if my fiddle isn't clear |
also related: #3243 (your mockup is basically what I was thinking of for that issue) Personally, I would call it "Display" instead of "Personalization" (and I guess "personalization" would be "personalisation" in en_GB?) Also, I would add a "Privacy" tab that would contain the "Don't send typing notifications" and "Opt out of analytics" options (and eventually "Don't send read receipts"). |
Would it be possible to have all the settings on the same "page" but allow jumping to the relevant section via the sidebar? This would allow scrolling through all the settings, rather than having to do a lot of clicking. This is especially useful the first time, if you want to see what settings actually exist. I think scrolling is something that fits very well into a web UI (most pages require scrolling, so users are familiar with this), as opposed to traditional apps where you usually do have separate pages/tabs when you have a lot of settings. |
Also, personally I think risky settings should also apply immediately, but only after confirming via a dialog that explains why it is risky, and what you should take into consideration when applying the setting, and whether it is possible to undo. |
I'm super excited that this is getting some enthusiastic attention - I'm very keen for us to address the... suboptimal situation we find ourselves in as regards riot web settings 😁 Before I join in on the specifics of this, I'm going to splurge a summary of my current thoughts on this topic 😀 Since we've been wrestling with settings for groups (with the modest goal of simply trying not to make the whole settings picture materially worse) I've been considering our general settings woes through a number of lenses: Conceptual "types" of settings:
Persistance modes
General UX considerations
I'll follow up with some more thoughts relating to the proposal (probably now after lunch) |
It might make sense to check how these things are handled in e.g. Windows, KDE, Gnome, macOS, iOS, Android, ... |
Certainly for iOS and Android we (should) be following the established patterns for those platforms. For web, I think it's wise to take inspiration from well-built and familiar systems, but also to be aware that the web defines its own grammar, too. Desktop is a pain in the ass :D Since it's just web, wrapped, it's always going to feel a bit clunky I think (though I'd be interested to hear other perspectives on that - do regular electron app users generally (not just Riot) lament the app's web origins or do they accept them as part of the package? |
Responding to the fiddle: I really like the structure :) I also agree with @pafcu's point about the value of all the settings being on the same page - it feels like one could tractably have @turt2live's tabs (esp in their current top-left position) both:
This is aligned with our desire for direct manipulation - at the moment I think the dropdowns and the checkboxes don't feel like they're doing any direct manipulation to me. Potential suggestions:
Regarding the naming and grouping of settings, I feel like it's important for users to have a clear mental model about:
What do other people think? |
I agree about toggles. Sliders IMHO imply an ordered relationship and can replace dropdowns and radiobuttons in situations like "Low - Medium - High" and "Off - On - Noisy", but not "Red - Green - Blue". I think text boxes and can also be persisted on blur almost always. For passwords I would actually recommend a "Change password" button that pops open a dialog asking for the current password and the new password twice. For emails and phone numbers you can add a small "Please confirm your email/phone number. Cancel / Resend" beneath the field to indicate that the setting has been persisted (but not yet confirmed). Cancel and Resend would be links to that when clicked perfom said actions (Cancel would simply invalidate the confirmation link in case it has already been sent out). There can be a small delay (e.g 10s) before actually sending the confirmation, which would allow the user to cancel before actually sending if they notice a typo immediately. I don't see a problem with persisting e.g. display names and aliases on blur. Again, you can have a small delay of a few seconds before the change is actually sent over the network, so that a user can correct any typo they notice immediately without spamming rooms with lots of name changes. |
The idea of a scrolling page would be possible, although it has some harder problems to solve. For instance, if someone is on a taller monitor (like myself), they may see multiple sections at once, and clicking the tab would appear to do nothing. It's fairly common on some documentation sites where the table of contents doesn't match what you're looking at because of the content being too small. Toggles also make sense to me. I forgot to mention it, but the idea would be to replace all checkboxes with toggles in the mockup. Sliders feel a bit questionable to me, but may turn out to be better than a dropdown (I'd have to try it to form an opinion). Spinners give the app a bit of a sluggish feel. Instead, maybe something like this would work? https://jsfiddle.net/turt2live/uzgfovsg/ (with appropriate css and care, of course). The names of the categories definitely need some work. I'd rather keep the display name and avatar behind an explicit button. Saving on blue gives too much opportunity for accidental changes leaving the avenue open for embarrassed users. The phone and email verification is a bit messy as is, and a resend button could certainly help. Phone and email could also be moved out of the risky box, as they are somewhat less dangerous (you have to confirm your email before it takes effect). Delaying the email notification doesn't make much sense to me. Chances are people won't typo their email too often, and sending it to the wrong address isn't the end of the world. Having the confirmation land in the inbox as soon as possible so they can return to Riot is more desirable in my opinion. |
I feel like good responsive design would be to not show the menu at all in that case?
I disagree. People typo their emails often (especially people who don't use them that much and barely even know theirs) and if you put in someone else's email they can now reset your password, right? |
@pafcu not until you verify it |
Getting rid of the menu wouldn't make much sense to me, as the page would be back to what it is currently (a pile of settings). I was going to use the Stripe API as an example, but they seemed to have made the whole experience better: https://stripe.com/docs/api Emails require verification before they are useful. |
@t3chguy But you verify the email address by clicking the link in the email, right? So I actually typo my email, the recipient clicks the link, and bam, now they can reset my password. Or am I missing something? |
@turt2live IMHO the current mess is due to the lack of clear sections and headings, not the number of settings. |
I'm hoping you have to be logged in on the machine you click the link on for it to actually work |
but thinking about it, since its a link to the IS, probably works without it |
The cancel button would allow you to invalidate a pending confirmation. The security of such options is almost certainly out of scope for the time being and covered by other issues (hopefully). |
I wish github let you react to individual paragraphs of people's statements :P If it did, I'd have put a 👍 next to most of what everyone has said here :)
Yes - we should only use them when there's a hierarchy. Notifications (off, on, "noisy") would work. Not for... language :P
Agreed 100%. General onblur thoughtsWhen we were discussing textbox/area saving on blur previously I mocked up a UX that would highlight unpersisted text changes and give people an opportunity to persist/undo: This would probably need to be combined with something that alerts you to any unpersisted changes on leaving the page (which is a bit grim) but protects against the half written display name/half composed group description problem. |
I'm still not a huge fan of the explicit saving stuff. When creating e.g. a new room, you end up clicking save a lot: Name. Save. Topic. Save. Avatar. Save. |
That's why I'd group the name and avatar at least, so that's one button. The topic could be argued on either side: part of the name/avatar or on it's own (I'd probably just group it). |
While we're talking about revamping the settings screen... one other thing to consider would be adding some sort of help text. |
I hadn't considered that - I wasn't thinking we'd need an explicit save for avatar, though, since an avatar change is already an atomic change - I'm thinking of text inputs as a special case because it's likely that people will want not want to commit a text field mid edit. |
I'd be a huge fan of our introducing some microcopy - I might have a go and see what that looks like. |
I think @turt2live wants to avoid you accidentally selecting the wrong file in the file selection dialog, and sending your embarrasing vacation picture for the whole world to see. There definitely should be a way to preview your avatar before setting it. edit: However, rather than having an explicit save button on the setting page, I'd have it like now, but after choosing a file, show a dialog that allows you to crop the image. The image could also be shown in various sizes here, so the user sees how well it works as a tiny icon, and not just a large photo. This makes it possible to avoid having an explicit save button on the settings page, and allows for additional functionality to be added easily without cluttering the settings page.
Sure, but how common is it that people unfocus something in the middle of editing (by clicking somewhere else on the page, switching to e.g. a different browser tab should of course be ignored)? Simple misclicks can be avoided by having a small delay before actually sending over the network. It's not a huge issue, it just seems inconsistent that everything else is updated instantly except one type of UI widget. It's not super important though, so I'll just stop spamming my view now :-) |
Agreed - it would be worth having a reusable component that could do this for pasting/uploading images in messages, too.
There's a chance I'm just overthinking this :) Save-on-blur might be most annoying for group long description, which could be quite... long (and hence is more likely for people to switch out midway through). We can of course trial the text input special case and see how it feels to use.
Personally I've found all the input on this thread super useful - thank you to all involved 😁 |
The other reason I want to put a button to save the avatar is to prevent the repetitive uploading people do. I often see people upload an avatar 2-3 times before settling with something. Some people also get out of the settings screen and apologize to the room for the spam they didn't realize was happening. Saving after a delay on blur is worse to me than just saving when I misclick. Chances are if I'm not looking at the page (ie: googling something in another tab, cutting/pasting from another section of the UI, or flipping through a notebook) then I'll miss the saving animation. At least with immediate on blur, there's a chance my focus hasn't been lost yet, and I'd just be disappointed that my half-finished changes went out to a few hundred people in the room. |
There is no reason you can't show something on blur, just because it takes a while to send it over the wire. |
+1 to putting a confirmation button on avatar uploads. |
I just discovered some long lost assets for settings screens, which provide a good template for consistent aesthetics for settings in general (although the actual content has moved on a bit since then): Meanwhile, I'm not sure where @lampholder wrote up the IRL discussion he/me/@AmandineLP had yesterday, but the conclusion was that we should turn UserSettings into a multitab approach (with a vertical stack of tabs), as proposed by @turt2live. Rather than each tab being a separate component/view though I think we should have all the views on the page in a long list; each view being as high as the viewpoint, so you get the impression of using the tabs to jump down the list. This means that Cmd/Ctrl-F still works, without overloading the user with too much detail. Finally, as a subsequent step, we can insert a SimpleUserSettings landing page (as proposed by @AmandineLP) which pulls out the most common settings whilst providing links to the tabs of the main UserSettings component as an even nicer refinement in future. |
Sounds like a plan! Unless someone beats me to it, I'll happily work on this in a post-granular settings world :) |
Link dump of various suggestions from the past. Nothing is concrete.
|
Whilst we're gathering other source material together, here's more working from @lampholder (looking at classifying the existing UserSettings into "preferences" versus "properties" - i.e. per-user preferences versus shared properties common to multiple users: |
To conclude: it looks like we have alignment between @turt2live, @lampholder, @AmandineLP & me at least:
I'm not sure anyone has got hugely strong thoughts as to what setting goes into which section. @lampholder's notes on the above are: https://docs.google.com/document/d/1CfyI8Oq0S0Wkcfkg5ukxzy1V2Pg97d8WFvBNXeQ8jD0/edit# It sounds like @turt2live has the conn on making it happen (thank yoouuuuuuuuuu!) |
After some discussion in #riot, I'm starting to get some motivation for working on this again. Since this was last updated, the Great Relayering happened though, so I suspect the existing branches won't be an easy merge. Either way, looks like a prime target for a weekend project. |
Ultimately this got fixed, and I'm intentionally pretending that group settings are a thing. When we fix groups, we'll fix the settings page. |
Several issues reference different problems with the current state of affairs in relation to settings. Some screens are instant, some require a button press, and some look completely different from the others. The relevant issues are:
I've mocked up a quick (and very dirty) interface for user settings here: https://jsfiddle.net/turt2live/tL3fsw47/11/
It's intended to be a full-page layout, where the sidebar shown takes the place of the room list, and the right sidebar is hidden while in settings. The mockup isn't complete, but should give a general idea of what is going on; if it doesn't, please let me know and I'll work on a better mockup.
Room settings would follow a similar layout. I'd imagine the categories would look something like this:
Group settings would also follow this layout, but in a slightly different manner. The communities icon could bring you to a similar looking page where the communities you're in are on the left and the homepage is on the right (members on the far right). When you click edit, you'd be brought to a settings page where the far right side disappears and the left sidebar has the first item being a back button and the categories listed below it. The categories could be:
For most settings the changes would be instantaneous. The exceptions would be anything that has some sort of risk involved (such as the display name/avatar area or password changes). The risky areas should be surrounded by a border to indicate that the settings are grouped to the save button (as is the case with the avatar stuff in the mockup).
Thoughts?
The text was updated successfully, but these errors were encountered: