-
Notifications
You must be signed in to change notification settings - Fork 29.5k
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
Comments panel redesign #142081
Comments
@laurentlb thank you for opening this issue, you have read my mind. We have been discussing a design similar to design 2. I think we will leave the twistie/expander off of each comment thread though. Regarding hiding resolved threads: I want to add a menu contribution point to the comments panel We should also mirror the editor comment expand/collapse state in the panel. |
This feature already exists. We have been able to add icons there in our extension using: "view/title": [
{
"command": "critique.publishComments",
"group": "navigation",
"when": "view == workbench.panel.comments && config.critique.enableComments"
},
// ...
], |
One less thing to do then! |
Thanks! A couple of questions:
|
It's the most recent comment on the thread.
Threads are not expandable. There was a bug that caused the third node to be missing it's comment snippet line.
Here it is with everything but the usernames in the smaller font: And here it is with just the timestamps and the comment counts in the smaller font: Not sure which I prefer. |
I personally do not like using different font sizes one next to the other, it can look ugly for the eye and we do not do this anywhere else in the workbench to my knowledge (I might be wrong). |
I'm afraid it will be difficult to distinguish the threads. It's common for a single person to leave a bunch of comments; if all the lines are similar, it can be confusing. When I see the last comment, I can more easily know the state of a thread and what I need to do: Is there a question? Is there a suggestion to apply? Did someone add a response since my last comment? |
I think it's also important to keep in mind the persona of the user: are they the reviewer of the change, or the author of the change? In our particular case, the focus is on change authors, since reviewers are less likely to review changes inside the IDE, relying instead on the code review tool, with test results, static analysis etc.; the author meanwhile is likely to make changes in response to reviewer comments, hence their integration into the IDE. I am not a heavy GitHub user these days, but I assume for GitHub pull requests it might be similar? As a change author, a significant function of the comments panel is to be a TODO list. To orient myself, it helps to see the first message of a thread from my reviewer(s) and also the last message from them. The last message on its own might not have enough context by itself to remind me what it was about, since the reviewer writes it assuming the previous messages on the thread as available context. Example: the reviewer saying "Looking better now, but can you inline this above?" is unlikely to bring back my memory of what the thread was originally about. As I address threads through code changes, I might check things off this list purely through status changes, i.e. the resolved / unresolved state from #127473. Note that the distinction is achieved through icons and color in Design 1 and 2 above, but disappeared in the most recent designs! In addition to changing the status of a thread, depending on the culture around my specific code review tool, I might also leave a short message like "Done.", "Acknowledged." (e.g. in response to a general mentoring suggestion that didn't trigger any particular code changes) or "Good catch, thanks!". My tool might even force me to enter some content to post a reply changing the thread status. If we only show the last message on a thread, including if it came from the change author, these won't be helpful for orientation again. As an aside, regarding the point directly above: if This could also inform filtering options mentioned by @laurentlb in the original post, e.g. showing only threads where the last reply is not from me. Let me know if I should file a separate issue for this. For us specifically, since our code review tool distinguishes between pending replies ("drafts") and published replies, the equation of which replies to surface / style in which way is a bit more complicated still, but I understand that we do not have that distinction at the moment in VS Code and it is somewhat out-of-scope here. Another option to provide context—mostly orthogonal to my points above—is to include a code snippet of the line the comment was left on. |
Yes, let's start a new issue for this. It's a good feature request, and we should make sure the UX changes we make here don't prevent us from adding it later, but it should be added separately to facilitate our API process. |
Here's where we're at so far. The arrows will instead be the nice "reply" icon from @misolori's mocks instead of the current icon.
Once we have the "reply" icon I'll merge this change so we can start getting user feedback. We can still iterate on it as much as we want for the rest of the February 2022 milestone. |
The arrows will instead be the nice "reply" icon from @misolori's mocks instead of the current icon. The have just not been added yet! |
In the last screenshot, I think it would be useful to add the username of the last comment, e.g.
I often want to know if someone else has responded after me. |
@alexr00 added the new icon as |
This is a followup to the discussion in #139524. Planned API changes means that more information can be surfaced on the UI (in particular, timestamp and thread status). At the same time, we want to reduce visual complexity; it can already be difficult to navigate through the set of comments and find which ones are relevant.
I'd like to explore here designs that remove intermediate replies in a discussion thread. Rationale: reading a full discussion in the comments panel is not really feasible (because comment snippets are truncated and lack styling). If someone wants to read the discussion, they should open it. We need to show enough context so that a user can find the thread they are interested in.
Design 1.
Here, we show only the first and the last messages in each thread. The first message is useful for the context. The last message helps the user know what is the state of the thread, and if there was a message since they last read it.
We could add "..." somewhere to make it clearer that intermediate messages are not shown.
Design 2.
Here, we don't show the first message and we focus on the last update. We give information about hidden messages: how many messages are not shown and who where the authors. This design makes it more obvious that the full thread is not shown.
Other thoughts:
Show warnings
can be unchecked).(mocks designed by @albertelo)
cc @alexr00 and @isidorn
The text was updated successfully, but these errors were encountered: