Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
31 changes: 31 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,36 @@
# PowerShell Extension Release History

## v2023.3.3
### Thursday, March 30, 2023

This is primarily a bug-fix focused release, and we want to say thanks to all our loyal
preview extension users! The "PowerShell Preview" extension has now been officially
deprecated, with "preview" releases now available via the "pre-release" option on the
stable "PowerShell" extension in the marketplace. While you should be migrated
automatically, feel free to just uninstall the preview and install the now one-and-only
extension, but please keep testing our pre-releases! This change makes it much simpler to
use, as you no longer have to switch between two different extensions and instead can use
VS Code's marketplace to install your choice of version!

#### [vscode-powershell](https://github.com/PowerShell/vscode-powershell)

- 🐛 👷 [vscode-powershell #4481](https://github.com/PowerShell/vscode-powershell/pull/4481) - Remove problematic `[RepoNames]` PowerShell class.
- ✨ 👷 [vscode-powershell #4464](https://github.com/PowerShell/vscode-powershell/pull/4464) - Remove `preview` label from marketplace.
- ✨ 👷 [vscode-powershell #3716](https://github.com/PowerShell/vscode-powershell/pull/4462) - Adopt the pre-release extension feature.
- 🐛 ✂️ [vscode-powershell #4455](https://github.com/PowerShell/vscode-powershell/pull/4455) - Fix up "Calculated Property" snippet. (Thanks @DougDyreng!)
- 🐛 📺 [vscode-powershell #4453](https://github.com/PowerShell/vscode-powershell/pull/4454) - Fix `GenerateBugReport` command to pre-fill template.
- ✨ 🙏 [vscode-powershell #4425](https://github.com/PowerShell/vscode-powershell/pull/4425) - Hide last line in folded ranges for ISE Mode. (Thanks @fflaten!)
- #️⃣ 🙏 [vscode-powershell #4417](https://github.com/PowerShell/vscode-powershell/pull/4417) - Fix up dependencies.

#### [PowerShellEditorServices](https://github.com/PowerShell/PowerShellEditorServices) v3.8.3

- Documentation update and CI fix.
- 🐛 🙏 [vscode-powershell #4443](https://github.com/PowerShell/PowerShellEditorServices/pull/2006) - Fix declaration detection for variables with type constraints.
- ✨ 🙏 [vscode-powershell #3604](https://github.com/PowerShell/PowerShellEditorServices/pull/2003) - Add document symbols for `#region`.
- ✨ 🙏 [PowerShellEditorServices #2000](https://github.com/PowerShell/PowerShellEditorServices/pull/2000) - Code clean-up and fixing end-to-end tests.
- 🐛 🐢 [PowerShellEditorServices #1998](https://github.com/PowerShell/PowerShellEditorServices/pull/1998) - Support module-qualified calls for Pester keywords. (Thanks @fflaten!)
- 🐛 🙏 [vscode-powershell #3192](https://github.com/PowerShell/PowerShellEditorServices/pull/1997) - Fix New-EditorFile adding content in current file. (Thanks @fflaten!)

## v2023.3.2-preview
### Monday, March 27, 2023

Expand Down
82 changes: 48 additions & 34 deletions docs/development.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,16 +70,24 @@ Microsoft. The comments are manual steps.

```powershell
Import-Module ./tools/ReleaseTools.psm1
New-Release -PsesVersion <version> -VsceVersion <version>
New-ReleaseBundle -PsesVersion <version> -VsceVersion <version>
# Amend changelog as necessary
# Push release branches to ADO
# Permit both pipelines to draft GitHub releases
# Download and test assets
# Check telemetry for stability before releasing
# Publish draft releases and merge (don't squash!) branches
# Permit vscode-extension pipeline to publish to marketplace
```

If rolling from pre-release to stable, use:

```powershell
New-Release -RepositoryName vscode-powershell -Version <version>
```

This is because we do not change the version of PowerShell Editor Services between a
pre-release and the subsequent stable release, so we only need to release the extension.

### Versioning

For both our repositories we use Git tags in the form `vX.Y.Z` to mark the releases in the
Expand All @@ -92,7 +100,7 @@ mark any specific release, that is the point of the tags.
For PowerShellEditor Services, we simply follow semantic versioning, e.g.
`vX.Y.Z`. We do not release previews frequently because this dependency is not
generally used directly: it's a library consumed by other projects which
themselves use preview releases for beta testing.
themselves use pre-releases for beta testing.

For the VS Code PowerShell Extension, our version follows `vYYYY.M.X`, that is:
current year, current month, and patch version (not day). This is not semantic
Expand All @@ -102,34 +110,40 @@ release on a chronological schedule: we release based on completed work. If the
month has changed over since the last release, the patch version resets to 0.
Each subsequent release that month increments the patch version.

Before releasing a "stable" release we should almost always first release a
"preview" of the same code. The exception to this is "hotfix" releases where we
need to push _only_ bug fixes out as soon as possible, and these should be built
off the last release's codebase (found from the Git tag). The preview release is
uploaded separately to the marketplace as the "PowerShell Preview" extension. It
should not significantly diverge from the stable release ("PowerShell"
extension), but is used for public beta testing. The preview version should
match the upcoming stable version, but with `-preview` appended. When multiple
previews are needed, the patch version is incremented, and the last preview's
version is used for the stable release. (So the stable version may jump a few
patch versions in between releases.)

For example, the date is May 7, 2022. The last release was in April, and its
version was `v2022.4.3`. Some significant work has been completed and we want to
release the extension. First we create a preview release with version
`v2022.5.0-preview` (the patch reset to 0 because the month changed, and
`-preview` was appended). After publishing, some issues were identified and we
decided we needed a second preview release. Its version is `v2022.5.1-preview`.
User feedback indicates that preview is working well, so to create a stable
release we use the same code (but with an updated changelog etc.) and use
version `v2022.5.1`, the _first_ stable release for May (as `v2022.5.0` was
skipped due to those identified issues in the preview). All of these releases
may consume the same or different version of PowerShell Editor Services, say
`v3.2.4`. It may update between preview versions or stable versions (but should
not change between a preview and its associated stable release, as they should
use the same code which includes dependencies).

### Pending Improvements

* `Update-Changelog` should verify the version is in the correct format
* `Update-Changelog` could be faster by not downloading _every_ PR
Before releasing a stable version we should almost always first release a preview of the
same code, which is a _pre-release_. The exception to this is hotfix releases where we
need to push _only_ bug fixes out as soon as possible, and these should be built off the
last release's codebase (found from the Git tag). The pre-release is uploaded to the
marketplace using the `--pre-release` flag given to `vsce` (the CLI tool used to do so).
The previous separate "PowerShell Preview" extension has been deprecated in favor of using
the marketplace's support for [pre-releases][] on the stable and now one-and-only
extension.

Because the marketplace does not actually understand Semantic Versioning pre-release tags
(the `-preview` suffix), the patch numbers need to increment continuously, but we append
`-preview` to _our_ version in the changelog and Git tags. When multiple pre-releases are
needed, the patch version is incremented (again because the marketplace ignores the
pre-release tag, we can't do `-alpha`, `-beta` etc.). Since migrating to a single
extension, the stable release has to increment one more after the last pre-release. So the
stable version may jump a few patch versions in between releases. Furthermore, the
`preview` field in the extension's manifest (the `package.json` file) is _always_ `false`,
even for pre-releases, because the marketplace takes the information from the latest
release inclusive of pre-releases, hence it was causing the one-and-only extension to look
like it was in preview. This is also why the icon no longer changes to the PowerShell
Preview icon for pre-releases. When they support pre-releases better (ideally that means
supporting the pre-release tags in full) we can revisit this.

[pre-releases]: https://code.visualstudio.com/api/working-with-extensions/publishing-extension#prerelease-extensions

For example, the date is May 7, 2022. The last release was in April, and its version was
`v2022.4.3`. Some significant work has been completed and we want to release the
extension. First we create a pre-release with version `v2022.5.0-preview` (the patch reset
to 0 because the month changed, and `-preview` was appended). After publishing, some
issues were identified and we decided we needed a second pre-release. Its version is
`v2022.5.1-preview`. User feedback indicates that pre-release is working well, so to
create a stable release we use the same code (but with an updated changelog etc.) and use
version `v2022.5.2`, the _first_ stable release for May (as `v2022.5.0` was skipped due to
those identified issues in the pre-release). All of these releases may consume the same or
different version of PowerShell Editor Services, say `v3.2.4`. It may update between
pre-release versions or stable versions, but must not change between a pre-release and the
subsequent stable release, as they should use the same code which includes dependencies.
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
{
"name": "powershell",
"displayName": "PowerShell",
"version": "2023.3.2",
"version": "2023.3.3",
"preview": false,
"publisher": "ms-vscode",
"description": "Develop PowerShell modules, commands and scripts in Visual Studio Code!",
Expand Down