-
Notifications
You must be signed in to change notification settings - Fork 29.8k
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
What's new icon/UI for extensions (and future API) #102139
Comments
Here's a quick mockup of an idea that @eamodio and I have been talking about where we could add a custom entry in the status bar for this "What's new" section that has content similar to notifications but relative to extensions and features: We could also provide for extensions to provide links/commands for custom content that opens on the side (as an idea) |
@misolori great job! I like this UI. It's really intuitive. We could provide an API to show a WebView, run a command or return the URI of a markdown file with documentation for the new features. Something like this: export namespace extensions {
/**
* Registers a provider to supply extension documentation.
*
* @param extensionId extension identifier in the form of: `publisher.name`.
* @param provider provider implementation to supply docs for the given extension.
*/
export function registerExtensionDocsProvider(extensionId: string, provider: ExtensionDocsProvider): void;
}
/**
* Provider which supplies documentation for a given extension.
*/
export interface ExtensionDocsProvider {
/**
* Returns true whether the extension provides documentation for the specified
* version.
*
* @param version Version to check whether the extension provides documentation
*/
hasDocForVersion(version: string): boolean;
/**
* Provides documentation for the specified extension version.
*
* This method is called when user interacts with `What's New` pop-up,
* tipically shown when the extension is updated.
*
* @param version Version which documentation will be provided
* @returns A thenable that resolves to a command name, a Markdown URI or a Webview
* which will show documentation details for the given extension version
*/
provideDocResource(version: string): Thenable<string | Uri | Webview>;
} Besides, VSCode would need to store a list of versions for which the docs have already been presented to user. |
Here is a different idea of API function which already receives the extension version related to the provider: export namespace extensions {
/**
* Registers a provider to supply extension documentation.
*
* @param extensionId extension identifier in the form of: `publisher.name`
* @param version extension version for which documentation will be provided
* @param provider provider implementation to supply docs for the given extension
*/
export function registerExtensionDocProvider(extensionId: string, version: string, provider: ExtensionDocProvider): void;
}
/**
* Provider which supplies documentation for a given extension version.
*/
export interface ExtensionDocProvider {
/**
* Provides documentation for a given extension version.
*
* This method is called when user interacts with `What's New` pop-up,
* tipically shown when the extension is updated.
*
* @returns A thenable that resolves to a command name, a Markdown URI or a Webview
* which will show documentation details for the given extension version
*/
provideDocResource(): Thenable<string | Uri | Webview>;
} |
A couple more updates/ideas: Instead of trying to create a separate item for this info, what if we combined these messages into the notification center and provided for ways to filter between the content (All, Notifications, Updates): And what if we also showed this in the welcome screen where there would be more visibility for these items: Here's a flow for how the interaction would work: |
After feedback from the team, there's a strong desire to have these items separate from notifications and to have a dedicated area for them. So the updated proposal is back to the original one where we have a single "Updates" entry in the status bar that shows a list of extension updates and core features that can either link to a markdown preview or extension changelog. There's also discussion about bringing this directly into the Welcome screen for greater visibility: |
yeah, I like this last revision with dedicated updates page & changelog display for more info. should work really well for those of us who publish changelog.md for ext. updates. |
tbh, I would like to see you incorporate some of the UX from @alefragnani's what's new view: https://github.com/alefragnani/vscode-whats-new I would like to see sponsor, review & contact links to be displayed more prominently on ext. updates view. |
@misolori really like the mockups, my only comments:
|
I like all three. A setting to specify where we'd like them to appear would be great for devs to pick where they show up. Some might not like cluttered Welcome page. I don't use it as often. So, I would probably set it to show in the status bar, as my activity bar is a bit crowded too. How do we contribute custom message to What's New? Can you use last published release title from extension repository for those? So, we don't have to add anything extra to contributes in our extension As an example, I always try to add a short summary of what the release is about when I publish. Would be nice if vscode could just pull it from the github repository releases. Also, I think it would be a good convention for other extension developers to follow. See Snippets Viewer releases. I think those one liners would look good in the new what's new message box: https://github.com/RandomFractals/vscode-snippets-viewer/releases |
How about a counter badge on the Extensions icon in the Activity bar? Hovering it could show which extensions are updated, some optional message provided by the extension and an optional ”Read more” button. The same text and button could be displayed in the extension entry for the entries that the badge counts. These entries could be sorted topmost also. |
@PEZ:
P.S.: I am against the optional messages provided by the extension. I think it would be best to adopt some sensible conventions and pull your release title instead to avoid more messages adding to contributes per my note above. I don't want to code or update any new what's new document provider to see my extension release notes and title show up in those message boxes. :) Extension configuration is already long enough with config settings, etc. We even created an extension recently vscode-contributions for everyone to use and document your custom commands, settings and snippets in a standard way for extension developers since we all used to do it by hand before. |
oh, I see what @PEZ is suggesting. Not adding new badge to the activity bar, but using Extensions button to provide all that what's new info on hover. I like that. |
Because the changeling is pretty boring to read. It's not a place for CTA:s and stuff. (And I did state them as optional, so no extra work if you opt out. Default could be changelog.md for all I care. (My release notes are automatically grabbed from my changelog and I rather keep it that way.) |
right. release notes are much better for that, if they can also pull in pics for display. I used to just snap new charts and other things in Vega Viewer: https://github.com/RandomFractals/vscode-vega-viewer/releases also, what's the point of keeping a separate CHANGELOG.md and copying it over to your release for release notes. I think that's redundant and brief release summary is better in my opinion, based on some good OSS repos I've seen and use too. |
Hi @misolori , I like all three ideas, but personally I would keep only the Activity Bar and the Welcome Page choices. The toogle to choose between Activity Bar and Status Bar is clever, and could be added, for those that like thing on status bar 😄 Like @RandomFractals and @PEZ commented, I'm not sure how extensions would provide the message displayed, but I expect not to be from I understand this What's new feature as a way to extensions that want provide this information when its extension updates, right?. If that's the case, those that choose not to provide a message/contents, wouldn't appear here. I'm not sure a I prefer not using the Thank you |
Thanks everyone for the feedback, this is very helpful! In terms of adding this into the extensions view, we did consider this but the extensions view is already busy and the badge is used for when extensions are updating, so there could be a clash of badges there. That's how I ended up trying out the custom view version, which will be toggleable. For enabling this, this is something that we've yet to discuss in depth but there are a few ideas:
And in terms of deciding what string + content is used here and where it would go, a few options:
In terms of where this would appear, my comment was about allowing the user to configure the placement. We'd probably start with either the custom view or status bar and then have a command to toggle the position, just like other views. The API specifics haven't been fully discussed as we're just exploring what the design could look like and making sure we fill any gaps with either options, so we really appreciate all of the feedback! |
badges aside, I think it would be helpful to have new Releases view tab in Extension Info to view releases, install older versions of an extension as provided by Version History in VS Marketaple now, and have ability to view Release note summaries. Also, I don't know if adding another opt-in flag is necessary. We already have a lot of them for extensions. Why not do it by default? and use release title for the update message line without requiring extra config or docs update? |
Hi @misolori, For enabling, if you stick with an opt-in via "capabilities: {
"whatsNew": true
} But for the contents, even the description shown in the What's New icon, should be provided by the extension instead of being part of the For those extension devs that just want to be visible in the icon and don't provide the content, you could use that "generic approach" you commented to the description, and open the Changelog.md on click. Also, I wouldn't mix Changelog with What's New/Release Notes, mostly because I see as two separate things, with two kinds of consumers What's New / Release NotesConsumed by end users which are interested in rich, pleasant to read content. They want to know what has been released, and how it looks and works. The same VS Code users which keeps the ChangelogConsumed by "devs" which are more interested in issue tracking. Maybe they want to contribute to the project, or simply want to know how many bugs has been fixed. (that's me, sometimes 😬 ) Looking at the Getting Started content issue, I didn't understand why it has been decided to use the Thank you |
Any updates regarding this? |
@misolori
I see you click on |
@kakty3 these are all mockups so they are design explorations @anburocky3 no updates yet besides the design explorations posted. Once this gets added to a milestone we'll update this issue with next steps as there are a few scenarios to still work through. |
Hi all, Currently, is there any good way to pop up the changelog once our extension is updated in customer's VS Code? |
We closed this issue because we don't plan to address it in the foreseeable future. If you disagree and feel that this issue is crucial: we are happy to listen and to reconsider. If you wonder what we are up to, please see our roadmap and issue reporting guidelines. Thanks for your understanding, and happy coding! |
Could you at least ban extensions from popping open their changelogs without explicit user consent? Most of the time, I don't care — and I certainly don't want to have tabs suddenly open when I'm trying to concentrate on what I'm doing… |
Here's another use case: Getting rudely interrupted during flow effect by an update pop-up advertisement is really annoying. |
Example of how rude extensions get with this "feature": Hey @sandy081, we see you've commented in a community issue! Did you know you can do more with your comments? Upgrade to PRO and then you can do this:
Did we mention we have a discount?! A whopping 20%. So why wait?! Get the upgraded extension bugging mode. Continue using VS Code and get bugged, interrupted, and have ads shoved in your face! On your own computer! When you're trying to be productive! Did I make my point or should I pester-tag you in every damn comment you ever leave from this point on? |
I'm sad that this issue was closed, and that #112494 was closed as a duplicate of it. |
In the extension authors call today, it was confirmed that extension authors want to share the following items when extensions are updated. We also know that customers don't want to be bombarded by welcome/update pages opening when extensions are updated.
With that in mind, it's possible to alert customers that extensions have been updated and allow them to go as deep as they want, whenever they want, to learn about new features and fixes.
Provide a new UI element in the activity bar of a "gift" or something similar to indicate extensions have been updated.
The badge count would indicate how many extensions have been updated and clicking the "gift" icon would show an overlay with a short blurb taken from the extension changelog (automatically taken from the .md).
Firefox does something like this:
This allows customers to mark items as "read" to remove the badge count; out out of future update notifications; and click into the "learn more" link to go into the extension's changelog in the extension view.
Showing the changelog could be automatic, but in future iterations we could create richer experiences such as overlays or guided tours. This would require an API that extensions would expose to launch into the update experience.
The text was updated successfully, but these errors were encountered: