Skip to content
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

Various UX issues and other points #1914

Closed
benwainwright opened this issue Jun 11, 2020 · 4 comments
Closed

Various UX issues and other points #1914

benwainwright opened this issue Jun 11, 2020 · 4 comments
Labels
A-ux Area: Overall user experience and aesthetics bug Something isn't working

Comments

@benwainwright
Copy link

benwainwright commented Jun 11, 2020

So although I'm still kind of hindered by #1185, I've decided to make use of my partial workaround and give Oni2 a bit of an actual try because, tbh, your vision is something I've been desperate for for a long time. So far what you've got is really encouraging - its starting to look really slick and is far more responsive than vscode. So after an hour of playing with it, I've written down a bunch of feedback. I'm sorry to lump it into one issue - if you'd like me to split any of it out, please ask.

I appreciate that this is an Alpha release and you may well be aware of, be in the process of fixing, or have made decisions on any or all of the below. I have attempted to look for open issues that cover any of the ground below, but it isn't always that easy so apologies if I'm duplicating live discussions

UX Issues

  • It is confusing and unintuitive that three of the four buttons on the left switch between different sidebar panels, but one of them toggles the search drawer at the bottom on and off. At first I thought it was a bug in the rendering of the sidebar icons, because as you switch between them one of them remains highlighted (Basically the same point made by this commenter, but I would not describe it as "minor")
  • The "find in files" input box and the "command entry" (the input field that appears when I press :) look like they should be text inputs, but don't have all the normal behaviours. Because they have blinking cursors, you should be able to
    • Select text, either by clicking and dragging, or double clicking on words
    • Copy and paste into them
    • Use cmd-z to undo entries in them
  • I can use cmd-w h/j/k/l to move around splits, but I can't use them to move into the sidebar or find drawer (and once I'm there, I can't move out again). I can see that this has been discussed Feature: Vim navigation for the file explorer #528, but I'm bringing it up again because there doesn't appear to have been any movement on it for six months. This would absolutely block me from adopting Oni2.
  • When I create a newline with o the indenting behaviour is mostly wrong and weirdly inconsistent. This is very jarring behaviour for me because it takes me out of the "reasoning about code" headspace to the "reasoning about formatting" headspace. To illustrate, using the sample code below:
    • If I place the cursor on line 1 and press o, the cursor is placed on column 0 of the next line. I'd expect column 2, inline with the 'p' of public
    • Similarly, If I place the cursor on line 2 and press o, the cursor is placed on column 2 of the next line. I'd expect column 4.
    • Confusingly, if I place the cursor on line 4 and press o, the cursor is placed on column 4... which is in line with my expectations
export default class FileRecord {
  public constructor(
    public readonly name: string,
    public readonly path: string
  ) {}
}
  • I would expect the "command entry" dropdown to disappear when I click outside of it
  • Commands that don't work properly or do nothing are included in the : autocomplete. Is it possible to hardcode a whitelist to make the experience less confusing? Maybe have a "developer mode" flag that turns the whitelist off, to help with testing stuff.
  • Is there a list of the full set of ex commands you intend to support? While I was using Oni2 I tried to use pwd and set relativenumber and they both did nothing.
  • The way that resizes are rendered (the image is scaled without maintaining the aspect ratio until you release the mouse, at which point the layout appears to be recalculated) is ugly. See below:
    image
  • At the present time, it's not really very clear how I would open a "project". See my feature suggestion below
  • Do you intend to include menus (file/edit/view/window etc.)? I personally would not use them, but I think they need to be there for many
  • If I press : and then press <up>, I'd expect to cycle through the previous command history, as per vim.
  • The red underline that decorates problems in the editor is kind of basic in my view

Feature Suggestions

  • Generally when I use an editor, I want to start in a folder/workspace that contains a project, and drill down to a file within that folder. I also want to be able to easily and quickly switch between those folders. If you can properly implement this in Oni2, particularly something like my current workflow as described below, it would be a KILLER feature and a major reason for me to switch away from VsCode/Vim. My current workflow in both VsCode and Vim is:
    • Configuration file has a hardcoded list of workspace roots; folders that contain all my different project directories. Mine is currently an array of two folders: ['~/repos', '~/workspace'], where the former contains misc projects I've checked out and personal projects and the latter contains work repositories
    • Keyboard mapping brings up a fuzzy find list of all of the folders contained within those n roots
    • Selecting a project changes the working directory (vim) or the workspace (VsCode). The thing I hate about VsCode is the fact that this workspace change forces the whole editor to reload, including reloading all the extensions (one of which is the Vim plugin, which means I literally can't type for a short period). This is massively jarring.
    • Now that I have a wd/workspace selected, I use the cmd-p style mapping to drill down into the actual file I want
  • Is it possible to allow users to change the font size in the status bar at the bottom? I've always found the one in VsCode WAY too small

Bugs

  • Occasionally notifications appear that have no text. Surely the sensible thing would be to just not display the notification?
  • Syntax highlighter doesn't appear to understand HTML or TSX. The JavaScript bits work (in HTML as well) but the xml is grey. This is particularly strange because I can see that it is definitely working for some...
  • For some unknown reason .yarn/releases/yarn-berry.js in one of my projects doesn't get syntax highlighting. As far as I can see, it is a normal JavaScript file, albiet minified and with a shebang at the top. I tried removing the shebang and that made no difference. I'm afraid I have no idea why its any different from any other JavaScript file 🤷
  • :e <path/to/directory> opens the folder as an empty, editable, plaintext buffer, which errors when I try to save it rather than doing something sensible like listing the directory, or opening it in the sidebar

Ok, I think its time for bed now (1:35am UK time)

@benwainwright benwainwright changed the title Various UX issues Various UX issues and other points Jun 11, 2020
@bryphe bryphe added A-ux Area: Overall user experience and aesthetics bug Something isn't working labels Jun 11, 2020
@bryphe
Copy link
Member

bryphe commented Jun 13, 2020

Thanks @benwainwright for the great feedback, really appreciate you taking the time to list this out! I'll put some quick notes in here, but I'll break this up further (track issues for items that we don't already have tracked).

It is confusing and unintuitive that three of the four buttons on the left switch between different sidebar panels, but one of them toggles the search drawer at the bottom on and off.

Agreed! I'll look at revisiting this. An option would be to move our search experience back to the sidebar - which would make it clearer. Alternatively, we could have the same behavior as today (open the pane at the bottom), but not persist the highlighting. It does look like a bug when the highlighting sticks on multiple buttons.

The "find in files" input box and the "command entry" (the input field that appears when I press :) look like they should be text inputs, but don't have all the normal behaviours.

Right, we definitely need to improve this.

I can use cmd-w h/j/k/l to move around splits, but I can't use them to move into the sidebar or find drawer (and once I'm there, I can't move out again). I can see that this has been discussed #528, but I'm bringing it up again because there doesn't appear to have been any movement on it for six months. This would absolutely block me from adopting Oni2.

We're actually working on this - it's high on my list too. @glennsl has made some recent progress with #1924 and #1931

When I create a newline with o the indenting behaviour is mostly wrong and weirdly inconsistent.

High on my list too! This is something I'm actually working on this week - we have Vim's autoindent set (which preserves indentation), along with some indentation-handling for auto-closing pairs... but the autoindent behavior is what you're seeing.

My plan is to hook into the language configuration that we load - which provide regex's for increasing indent / decreasing indent. Just started the plumbing for this today: onivim/libvim#208 - hopefully should be wired up by end of next week. Will be great to get feedback on it to see if it feels more natural.

The way that resizes are rendered (the image is scaled without maintaining the aspect ratio until you release the mouse, at which point the layout appears to be recalculated) is ugly. See below:

This is on our radar for sure. @zbaylin made some great progress on this in revery-ui/reason-sdl2#57 - need to work through some additional issues though to get it back in.

Occasionally notifications appear that have no text. Surely the sensible thing would be to just not display the notification?

😆 totally!

I really like your idea for the workspace configuration - something I'm interested in exploring. I often jump between a few projects (ie, onivim2, revery, libvim) - having a quick way to switch, as you describe, would be great!

I'll continue going through the feedback, and link up existing issues, or log new ones to track - but wanted to make sure you knew I've start going through it. Thanks @benwainwright !

@benwainwright
Copy link
Author

Great, thanks for the reply @bryphe. Please let me know you'd like me to do give anything a try!

bryphe added a commit that referenced this issue Sep 9, 2020
In starting to work on #528 - vim navigation for the file explorer (and other bits of UI, like search, SCM, etc) - there's some preliminary work that needs to happen. In particular, we need to refine our concept of 'Focus' - for example, we currently have 'Explorer' as a focus state, but as we break down #528 and look at features like #1785 (directory explorers) - we need to refine this. In particular, there could multiple 'explorers' in the view, and the focus might need some state along with - like the current selected item, information about the viewport (for `zz`, etc).

We'll need to 'fractalize' our focus state - we'll keep track of sort of the high-level place we have focus - for example, the `Sidebar`, and then from there, the `Sidebar` can route focus operations, like text-input and paste, to the appropriate piece, which can then delegate it further (for example, for search - one focus state will be input focus, and another will be navigating the search results). So just like we have a 'fractal' model for state - we'll need a 'fractal' model for focus to handle these cases.

In addition, a common request I get (mentioned in #1914, and comes up a lot in e-mail) is that the search behavior right now is confusing - all other buttons in the sidebar change the sidebar stop, but the search one opens up an extra pane. Since we can now resize the search pane, and it will simplify the focus-work described above (it would otherwise be a special case), figured it was a good to move it. The UX should still be improved - with the default sidebar size, it's difficult to interpret the results.

__TODO:__
- [x] Fix context menu behavior in new model - there are some cases where it stays open
- [x] Fix default focus for search / SCM / extensions
@benwainwright
Copy link
Author

benwainwright commented Dec 12, 2020

I've just been through this post and I can see that you have resolved a bunch of these issues ✅ I'm going to close this post now and open the remaining points I feel are still worth addressing as separate issues.

@bryphe
Copy link
Member

bryphe commented Dec 12, 2020

I've just been through this post and I can see that you have resolved a bunch of these issues

Awesome! Thanks @benwainwright - tracking the remaining issues separately sounds great 💯

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-ux Area: Overall user experience and aesthetics bug Something isn't working
Projects
None yet
Development

No branches or pull requests

2 participants