microsoft / vsmarketplace

Customer feedback and issue tracker repository for Visual Studio Marketplace
MIT License
40 stars 10 forks source link

Pre-release extensions decorations in the UI #264

Open isidorn opened 2 years ago

isidorn commented 2 years ago

VS Code has released support for pre-release extensions. Documentation can be found here.

Currently the Marketplace always shows the latest version of the extension on the Marketplace site. After discussing with @SaiKanth007 we believe that the easiest solution for the Marketplace would be to offer visual cues to the user if the current version is a pre-release version.

Here are some suggestion how we could improve this visually:

  1. Render a pre-release decoration next to the version if the version is pre-release
  2. Render pre-release decoration in the version history as @weinand suggests here https://github.com/microsoft/vsmarketplace/issues/262
  3. Render a small info banner in the header of the extension that would have some text "Latest version of the NAME extension is a pre-release version. To explore and install a release version click here." @SaiKanth007 do you already have some "info banner" space we could reuse for this?

To detect if a version of an extension is pre-release check if an attribute "Microsoft.VisualStudio.Code.PreRelease": true is present.

Timing: we expect multiple extensions to jump on this in the next 3 months. We believe that the solution we are proposing is low hanging, so it would be great if we could get something in the next couple of months.

fyi @sandy081 @prashantvc @misolori @alexr00 @pratikgawali for ideas

axelson commented 2 years ago

Shouldn't the default version that is shown in the marketplace be the stable version? Then from there if there is a newer pre-release version there could be a link to the pre-release.

isidorn commented 2 years ago

@axelson yes, that was our initial idea as well. However this would be a bigger change on the MP side, so we decided to use UI decorations as help instead. Reason is that for this topic we want to focus MP engineering effort on fully supporting semver versioning.

axelson commented 2 years ago

Ah, okay. I guess my thinking is that my extension will nearly always have a pre-release since I want the pre-releases to be generated automatically from the most recent branch. What do you mean by fully supporting semver versioning?

weinand commented 2 years ago

@axelson Semantic versioning (aka "semver") supports pre-release versions (see https://semver.org/#spec-item-9). With that we would not have to use our own numbering convention to denote pre-release versions (e.g. even vs odd minor numbers). Today the Marketplace does not support semver's pre-release versions.

PEZ commented 1 week ago

It would be so awesome if the process was that if a published package has a semver pre-release version, it would automatically become a prerelease on the marketplace. And VS Code would choose latest stable as default, and make it easy for the user to choose any prereleases with higher semver than the latest stable.

This way our CI pipelines can produce pre-releases or stable release at will, and users will have an easy time helping to test any prerelease. This process would be even better if there was a way we could add release notes in the manifest, which VS Code would show.

GitMensch commented 1 week ago

@PEZ Why isn't the changelog entry enough for you?

PEZ commented 1 week ago

@GitMensch changelog is fine. I actually populate the release notes for the releases on Github with the entries from the Changelog. I think a special manifest entry would make it easier for VS Code to display the release note together with the extension, e.g. in the hover. Changelog formats vary a bit too much for VS Code to use the Changelog with any precision for this.

PEZ commented 1 week ago

Something like so is what I think would make it easier for users to decide if they want to try a particular pre-release or not.

https://github.com/user-attachments/assets/18ca98f7-4402-4120-8a9c-b08e42995c5a