-
Notifications
You must be signed in to change notification settings - Fork 29
Add agent metadata statusbar to monitor resource usage #555
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
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome! Left some minor thoughts. We should add a changelog entry as well, and it might make sense to mention that if they want to change which shows in the toolbar, they can reorder the metadata in the Terraform since we show the first one.
src/remote.ts
Outdated
this.storage.writeToCoderOutputChannel( | ||
formatMetadataError(agentWatcher.error), | ||
); | ||
statusBarItem.hide(); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Would it make sense to show the error here? Or just a warning icon or something with the error in the tooltip maybe?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmmm tbh I am not entirely sure how frequent an error like this can happen.
If we show an error, it could be annoying if it keeps popping up frequently. Perhaps adding an error icon with some label and the tooltip can include the error message is good (while still logging of course). Though I don't love having a "useless" status bar item since the status bar is already crowded 🤔
Which is why I favor the current approach, what do you think?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
My thinking is that if we think it is important enough to show metadata in the status bar, it is important enough to show errors getting that metadata.
Definitely agree there should be no popups or anything like that, that would be super annoying.
Thinking about it from the original request, the user wanted to be able to see disk space in the status bar. Suppose one day there was an error and we could not fetch the metadata, likely the user wants to be aware of that (I am projecting of course lol)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hmmm yeah I see your point now. In that case, I think I can show the something like a warning logo with a label then when hovering we show the error details (the same one that is logged). We can even change the background color so it's yellow-ish for example.
So my proposal is something like
statusBarItem.text = "$(warning) Agent Status Unavailable";
statusBarItem.tooltip = errMessage;
statusBarItem.color = new vscode.ThemeColor(
"statusBarItem.warningForeground",
);
statusBarItem.backgroundColor = new vscode.ThemeColor(
"statusBarItem.warningBackground",
);
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I like it!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ah I almost forgot, we still hide the status bar if there is no metadata. Do we want that still?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Oh good point hmmm...I wonder if it would make sense to show "no metadata" and in the popup explain that if you want metadata you have to add it to your workspace template?
But on the other hand, maybe if the template has no metadata it is because the user explicitly did not want to see metadata, and this could be annoying to them.
Honestly not sure, maybe the best move is to add a toggle to hide/disable the metadata?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
You mean always show the status bar item, and if there are no data then we simply say "No metadata available" and the user can toggle the status bar item in a setting 🤔 ?
Yeah not sure as well... For reference, in the tree view, if there is no metadata then nothing is shown to the user about that
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yup that was what I was thinking.
I think for now we just hide it, like you say we hide it in the sidebar as well. It could be nice to show a message for discoverability reasons; users may not even realize they can have metadata to show. But, I think it would make sense to revisit that together with the sidebar at a later point.
I prefer the no logo, or if we can make the logo smaller, such as 70% of its original size. |
@rachelmullenax can we have a square logo for use cases like this? |
I wonder if some generic icon indicating a remote resource would work better than the logo? Like a cloud icon or something. |
39c307d
to
f5c8b9f
Compare
True! But yeah I like the idea of consistent-looking icons in the status bar. I think mostly the logo being so thick and bold compared to the other icons is what throws me off. But I will defer to what you and @matifali think. |
Let's keep using the Coder logo. We can update when @rachelmullenax gets back. |
Alright, I'll keep the 70% one but I did have to write a The former will make sure we can easily add more icons but requires some discussion since it should be added to the build workflow, while the latter is just a single Alternatively, we can just use one of the default VS Code logos above (for now) |
I am not familiar with the complexities of custom fonts, so let's use the Dashboard logo, specifically the round gauge. |
Alright, will do, adding a custom font is not difficult but requires some thought and makes sense to do after we have the logo |
f5c8b9f
to
dfc1a3a
Compare
Looks awesome thank you! |
If there is a template with no |
#191
Looks like the following:
The statusbar creation happens in
remote.ts#setup
which AFAIK seems to be called only once per session/extension activation. The creation of this statusbar happens at the very end when everything goes smoothly.