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

"Commonly Used" list in the first-time-opened Command Palette #169091

Closed
digitarald opened this issue Dec 14, 2022 · 22 comments · Fixed by #171293
Closed

"Commonly Used" list in the first-time-opened Command Palette #169091

digitarald opened this issue Dec 14, 2022 · 22 comments · Fixed by #171293
Assignees
Labels
command-center feature-request Request for new features or functionality insiders-released Patch has been released in VS Code Insiders on-testplan quick-open Quick-open issues (search, commands) ux User experience issues
Milestone

Comments

@digitarald
Copy link
Contributor

In user research Command Center (#149445) we found that the Command Palette on first opening is overwhelming, which might keep users from finding its value.

One core problem is that it is sorted A-Z, the top-most commands mostly not making sense in an environment that might not even have a file open:

image

One idea would be to curate ~5 commonly used commands that have high usage (format) and make make sense in a workspace-less state (split editor, toggle sidebars). It would be only shown when the user doesn't have past command history (which will then show the recently used).

cc @daviddossett @jrieken

@digitarald digitarald added feature-request Request for new features or functionality ux User experience issues command-center labels Dec 14, 2022
@jrieken
Copy link
Member

jrieken commented Dec 14, 2022

fyi @lramos15 @bpasero

@bpasero
Copy link
Member

bpasero commented Dec 14, 2022

I think that makes sense, similar to the settings editor:

image

I am just not sure how to present this, should it be another group below the recently used commands? And how do we pick the commands to add there, based on usage numbers?

//cc @TylerLeonhardt as component owner

@bpasero bpasero added the quick-open Quick-open issues (search, commands) label Dec 14, 2022
@jrieken
Copy link
Member

jrieken commented Dec 14, 2022

should it be another group below the recently used commands

How about renaming "recently used" to "commonly used" and always mix in certain default commands until enough true recently used commands push them out?

@TylerLeonhardt
Copy link
Member

TylerLeonhardt commented Dec 14, 2022

@sbatten and I were thinking:

  • last command at the top
  • list of pinned commands (that default to some list we come up with)
  • rest of recently used
  • other commands

It might be a bit busy, but it does:

  • still keep the command you spam at the top
  • but makes the pinned commands reachable from the keyboard

Ultimately it's one of those "I'd like to see it before I make a decisions"

@daviddossett
Copy link
Contributor

Here's what a relatively basic version of this could look like:

  • "commonly used" section initially shows at the top for new installs
  • After commands have been run, "recently used" pushes "commonly used" down
  • Users can remove commonly used command individually, eventually removing the section
CleanShot.2022-12-14.at.11.15.08.mp4

I'm interested in the idea of mixing in default items to "recently used" as a way to cut down the number of sections. However neither title really captures what the section is in that case. It would be strange to open the command palette for the first time and see "recently used" commands. It would also feel weird to have run a bunch of commands and see them under "commonly used".

@bpasero
Copy link
Member

bpasero commented Dec 15, 2022

+1 for the idea of renaming "recently used" to "commonly used" and simply seeding that list with some defaults based on telemetry so that first time users get this. We could also think about filling the set up with the commonly used ones even for those users that only have a few commands that they had invoked.

In other words, I would not introduce a third group for this.

@sbatten
Copy link
Member

sbatten commented Dec 15, 2022

We can't use the term quick access but it reminds me of this feature in Windows File Explorer. You get a default set of pinned folders and you can unpin and add more.
image

@digitarald
Copy link
Contributor Author

Love where the discussion went. Curating one list that is slowly being replaces by what users actually use helps new users but also keeps guiding users for a bit longer. Also less mental load for the user from one list vs another.

I will take a shot at the curated list based on most used, most likely to add value for new users, and most likely to work on all workspaces.

@TylerLeonhardt
Copy link
Member

For our initial attempt at implementing this, we will rename recently used to suggested (or something else) and follow this pattern:

For a new user

They will see 5 pre-seeded items underneath suggested, these items will have a certain weight to them and will be 5 commands we recommend for new users.

When they run a command, that command will show at the very top, under the suggested section, but above the 5 pre-seeded commands... it now has a weight, or frequency, of 1. If it's run again, that number bumps to 2, etc.

Eventually

The first 5 items in the suggested section will be the last 5 run commands. This is to not mess with muscle memory, and allow folks an easy way to re-run the last command or last few commands they just ran.

The next 5 items will be the top 5 unique commands by weight/frequency. These may include pre-seeded ones or ones that that user just runs a lot.

The next X items will be the rest of the recently used commands as it works today. This is to allow searching for a command to still be sorted by recently used.

Then the other commands section remains as is.

@digitarald will be getting me a nice list of pre-seeded commands based on our telemetry and other things.

Interesting details

Since commands showing up in the command palette is context driven (you can't git: commit if you don't have a repo open) we should handle the case for when there isn't a resolvable top 5. This would happen if the pre-seeded commands are run recently and are showing in the first 5 recently run section... the next 5, which should be the next unique top 5 commands by weight/frequency might not have anything to pull from... or the next highest frequency is like... 0 or 1. In this case, we can just only as many as we have.

@TylerLeonhardt
Copy link
Member

TylerLeonhardt commented Jan 13, 2023

I have playing around with this proposal, and frankly, I don't like it. It might be helpful for new users to see the 5 recommended commands, but for experienced users, it makes no difference and it doesn't feel any different than the current solution... so it's more complication and more work for no value.

So I have a different proposal.

For new users, they will see a new section called commonly used:
image
This is a list that we come up with based on telemetry.

As they start to run commands, recently used slowly pushes that list down below the fold and if a command inside of it is run, it will jump up to the recently used section:
image

Eventually, an experienced user will either:

  • no longer see the list
  • have run all the commands in the list causing them to go up to recently used
    image

This behavior is to help new users become experienced users. But experienced users should have some benefit of this work, which is why I propose that New Windows swap the commonly used list and the recently used list:
image

As the screenshot says, after the first command is run in a window, the commonly used and recently used swap going back to the normal experience above.

This proposal, I feel, enables new users to learn the ropes of the command palette while also making the Command Palette a useful launching pad for new windows.

Thoughts?

@bpasero
Copy link
Member

bpasero commented Jan 13, 2023

I think I partially get it and like the things I get:

  • first time users: get to see commonly used commands
  • existing users: will not see commonly used commands unless there is a commonly used command they have not run yet
  • recently used commands are always on top of commonly used commands (for muscle memory)

The part I do not get is the swapping thing? I am worried that changing the order of "commonly used" and "recently used" will break muscle memory. Think about users that blindly accept the first command from the picker.

@TylerLeonhardt
Copy link
Member

@bpasero yeah the swapping thing is a little tricky. My motivation for doing it is to ensure that that last command you ran is on top. Once the user runs any command, we expect that command to be on top. However, without the swapping idea, if in new windows we show commonly used at the top always, then the recently run command will be below it.

@bpasero
Copy link
Member

bpasero commented Jan 13, 2023

The list of recently run commands is global state though, so why would the new window show anything different?

@TylerLeonhardt
Copy link
Member

The thought was that a new window (ex. one without a workspace), the command palette could be used as a launcher in the same idea that the welcome view of the explorer is:
image
or the Remote Indicator is:
image

@TylerLeonhardt
Copy link
Member

The launcher idea came out of standup. I thought it was interesting... esp since a new window doesn't have anything open, and the first text you see is "Show All Commands":
image

@bpasero
Copy link
Member

bpasero commented Jan 13, 2023

This sounds to me like it could confuse users quickly as to why sometimes "recently used" is there and sometimes "commonly used". I do not think that users (even experienced ones) could make the connection to the fact that its only for new (empty?) windows.

@TylerLeonhardt
Copy link
Member

Perhaps the Command Center could be the difference instead of the "New Window" idea.

  • Command Center always shows "commonly used" on top since it's mostly mouse driven.
  • Command Palette always shows "recently used" on top for consistency

@TylerLeonhardt
Copy link
Member

To make the "commonly used" a little bit smarter, we were wanting the list to be updated over time based on the commands that the user actually used. So in the Command Center, that "commonly used" section that showed at the top would show the top 5 commands that the user uses, rather than 5 hard coded suggestions.

@TylerLeonhardt
Copy link
Member

TylerLeonhardt commented Jan 13, 2023

So I played around with the Command Freqency idea and ultimately, I don't think it provides a ton of value. My top 5 commands were like:

  • Reload Window
  • GitHub Copy Permalink
  • Show Running Extensions
  • Configure Display Language

I might be a bit bias because I work on VS Code but idk to me these aren't so useful and frankly I'm not about to open the Command Center, click "Show and Run Commands", then click on one of my top 5. That's too many clicks.

To simplify this change, and put focus on the users we are focusing on in this issue, new users, I have simplified the proposal above to everything but the "New Window/Command Center" proposal.

In other words:

We show a suggested list initially and over time that list either:

  • gets buried underneath all of the "recently opened" items that the user actually uses
  • gets replaced by the item going into "recently opened"

This is implemented in #171293

@TylerLeonhardt
Copy link
Member

Perhaps one day, we allow users to pin commands (#163509) and have that experience be tied to the Command Center.

@vscodenpa vscodenpa added the unreleased Patch has not yet been released in VS Code Insiders label Jan 17, 2023
@bpasero
Copy link
Member

bpasero commented Jan 18, 2023

@TylerLeonhardt to clarify, even for existing users, we now always show "commonly used" commands section in commands quick access? And if so, is that section below or above "recently used"?

@vscodenpa vscodenpa added insiders-released Patch has been released in VS Code Insiders and removed unreleased Patch has not yet been released in VS Code Insiders labels Jan 18, 2023
@TylerLeonhardt
Copy link
Member

@bpasero yes correct. And it is always below recently used

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
command-center feature-request Request for new features or functionality insiders-released Patch has been released in VS Code Insiders on-testplan quick-open Quick-open issues (search, commands) ux User experience issues
Projects
None yet
Development

Successfully merging a pull request may close this issue.

7 participants