Giter Club home page Giter Club logo

whatsnew's Introduction

Get-WhatsNew

Get-WhatsNew is a cmdlet that provides information about changes and new features for a version of PowerShell, delivered to the local terminal experience.

Motivation

Customers are unaware of benefits, new features and changes, that could impact their automation, performance and security. Today, this useful information is provided through Microsoft Docs and the PowerShell GitHub repository. PowerShell customers would benefit from being able to get this information in the terminal as they expect.

  • Customers expect to learn about available features that may enable new solutions
  • Customers expect version specific information available from within PowerShell to make upgrade decisions.

As an admin, I can list the new features released in my current version of PowerShell, similar to webview so that I can discover and implement new features in managing my products.

As a developer, I can list the new features released in my current version of PowerShell, similar to webview so that I can discover and implement new features to develop automation solutions.

NOTE

This is a prototype for the draft RFC #317. We welcome your feedback in this repository.

whatsnew's People

Contributors

adityapatwardhan avatar jameswtruher avatar sdwheeler avatar stevel-msft avatar thejasonhelmick avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

whatsnew's Issues

Update 7.3 release notes before release

Prerequisites

  • Write a descriptive title.
  • Make sure you are able to repro it on the latest version
  • Search the existing issues.

Steps to reproduce

The current release notes for 7.3 are for preview.4. We just released preview.6.

Expected behavior

Show me the latest docs for 7.3.

Actual behavior

Shows me outdated docs for 7.3

Error details

No response

Environment data

n/a

Version

n/a

Visuals

No response

No package published to this repo

Prerequisites

  • Write a descriptive title.
  • Make sure you are able to repro it on the latest version
  • Search the existing issues.

Steps to reproduce

Ideally there should be a package published here as well as the gallery

Expected behavior

User can see a release in GitHub UI

Actual behavior

User cannot see a release in GitHub UI

Error details

No response

Environment data

not applicable

Version

not applicable

Visuals

No response

Join-Path: Could not find a parameter matching the name 'Additional'.

Prerequisites

  • Write a descriptive title.
  • Make sure you are able to repro it on the latest version
  • Search the existing issues.

Steps to reproduce

The module code uses PS Core specifics, while the module manifest says :

  PowerShellVersion = '5.1'

Expected behavior

No error.

Actual behavior

Get-WhatsNew -version 6.0,6.1,6.2,7.0 | Select-String 'encoding'
Join-Path : Impossible de trouver un paramètre correspondant au nom « Additional ».
Au caractère C:\Users\Laurent\Downloads\whatsnew\Microsoft.PowerShell.WhatsNew\Microsoft.PowerShell.WhatsNew.psm1:30 :
74
+ ... Join-Path -Path $PSScriptRoot -ChildPath relnotes -Additional "${file ...
+                                                       ~~~~~~~~~~~
    + CategoryInfo          : InvalidArgument : (:) [Join-Path], ParameterBindingException
    + FullyQualifiedErrorId : NamedParameterNotFound,Microsoft.PowerShell.Commands.JoinPathCommand

Error details

Here 'Get-Error' is specific to PS Core.

Environment data

Name                           Value
----                           -----
PSVersion                      5.1.19041.1682
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0, 5.0, 5.1.19041.1682}
BuildVersion                   10.0.19041.1682
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Version

5.1 and 7.3.0-preview.1

Visuals

No response

The -All parameter doesn't seem to emit data into the pipeline

Prerequisites

  • Write a descriptive title.
  • Make sure you are able to repro it on the latest version
  • Search the existing issues.

Steps to reproduce

Get-WhatsNew -version 6.0 | Select-String 'encoding'

# Default encoding is UTF-8 without a BOM except for New-ModuleManifest
# In the past, Windows PowerShell cmdlets like `Get-Content`, `Set-Content` used different encodings,
# such as ASCII and UTF-16. The variance in encoding defaults created problems when mixing cmdlets
# without specifying an encoding.
# ...

Get-WhatsNew -All | Select-String  -pattern 'encoding'
#No Result

Help Get-WhatsNew -parameter All

# -All [<SwitchParameter>]
#   Displays release notes for all versions.


### Expected behavior

```console
The lines containing the search word, if it exists.

Actual behavior

No data seems to be emitted in the pipeline if the -All parameter is specified.

Error details

No error for this case.

Environment data

$PSVersionTable

Name                           Value
----                           -----
PSVersion                      7.3.0-preview.1
PSEdition                      Core
GitCommitId                    7.3.0-preview.1
OS                             Microsoft Windows 10.0.19044
Platform                       Win32NT
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0, 5.0, 5.1.10032.0, 6.0.0, 6.1.0, 6.2.0, 7.0.0, 7.1.0, 7.2.0, 7.3.0-…
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1
WSManStackVersion              3.0

Version

7.3.0-preview.1

Visuals

image

@juvtib Feedback

Summary of the new feature / enhancement

I am responding to the call for feedback on the PowerShell blog.

This project does not make sense to me. And I do not plan on using it in its current form.

I am comfortable referencing Microsoft Docs and the GitHub release notes for updated information on PowerShell.

I think a basic module which simply linked to those resources in the pwsh "logo" or message of the day would add value by increasing the visibility and accessibility of changelog information.

Basically, I'm afraid the WhatsNew module will add lag and errors to the changelogs without adding any compelling automation.

In part, I'm concerned that issues like #10 make it seem that WhatsNew will be an authoritative source of information. And companies might use the results from WhatsNew to justify cutting costs during upgrades. In this scenario, I do not think there is a substitute for reading the changelogs and testing software.


My challenge is for someone to reply with an example PowerShell session that proves me wrong and shows how the WhatsNew module adds value over the existing changelog sources.

Make whatever assumptions you would like including unlimited developer resources and the following feature requests:

  • The module is built-in to PowerShell.
  • The module is always up-to-date.
  • The module has all formatting magic like links, color, word wrap ...
  • The module provides additional tags on each line like [breaking] for breaking changes.

For example:

The PowerShell WhatsNew module helps me collect all the "breaking changes" in one place which is something I do manually now.

PowerShell 7.2.6
Copyright (c) Microsoft Corporation.

https://aka.ms/powershell
Type 'help' to get help.
Type 'whatsnew' for changes in this version. 

PS /home/michael> whatsnew

...

PS /home/michael> Get-WhatsNew -Heading "breaking changes", "engine updates" -Version "7.2.6", "6.0.0-rc.2"

## Breaking changes

* \[breaking\] Skip null-element check for collections with a value-type element type ([#5432](https://...))

...

## Engine updates and fixes

...

* Fix ForEach-Object -Parallel when passing in script block variable ([#16564](https://...))

I think the WhatsNew module can be made stronger by addressing these concerns.

Regards,

Proposed technical implementation details (optional)

No response

TestVersion is not recognized

Downloaded repo, import-module and ran Get-WhatsNew. Getting this error:

D:\Temp\whatsnew-main> Get-WhatsNew
TestVersion: The term 'TestVersion' is not recognized as a name of a cmdlet, function, script file, or executable program. Check the
spelling of the name, or if a path was included, verify that the path is correct and try again.

Get-WhatsNew should return a single string instead of an array of strings

Prerequisites

  • Write a descriptive title.
  • Make sure you are able to repro it on the latest version
  • Search the existing issues.

Steps to reproduce

Get-WhatsNew should return a single string instead of an array of strings.

There seems now point to return an array of strings from it. Also, returning an array of strings prevents Get-WhatsNew | Show-Markdown from working.

Error details

No response

Environment data

PS:17> Get-Module Microsoft.PowerShell.WhatsNew

ModuleType Version    PreRelease Name                                ExportedCommands
---------- -------    ---------- ----                                ----------------
Script     0.4.0                 Microsoft.PowerShell.WhatsNew       Get-WhatsNew


### Version

0.4.0

### Visuals

_No response_

The "What's New" content should try to pull from internet

Summary of the new feature / enhancement

Seems like the module should pull from internet and if that fails, then fallback to the local cache. Also include the article date in the content as an indicator of how old the info is.

Proposed technical implementation details (optional)

No response

The PR numbers in the content returned by `Get-WhatsNew` should be made hyperlinks

Prerequisites

  • Write a descriptive title.
  • Make sure you are able to repro it on the latest version
  • Search the existing issues.

Steps to reproduce

The PR numbers in the content returned by Get-WhatsNew should be made hyperlinks.

Today, they are just a number like #12345. That works fine in the GitHub context, but not in the terminal. The PR numbers should be made hyperlinks, so that Show-Markdown can make them clickable.

Error details

No response

Version

0.4.0

Visuals

No response

The content of `Get-WhatsNew` is not accurate

Prerequisites

  • Write a descriptive title.
  • Make sure you are able to repro it on the latest version
  • Search the existing issues.

Steps to reproduce

Known issues in 7.3-preview.5

These issues should be fixed in the next release of .NET 7 and included in a future preview of
PowerShell 7.3.

This issue is not being actively worked on, so it likely won't make into the 7.3.

Error details

No response

Environment data

PS:17> Get-Module Microsoft.PowerShell.WhatsNew

ModuleType Version    PreRelease Name                                ExportedCommands
---------- -------    ---------- ----                                ----------------
Script     0.4.0                 Microsoft.PowerShell.WhatsNew       Get-WhatsNew


### Version

0.4.0

### Visuals

_No response_

`Get-WhatsNew` should directly render the output using `Show-Marddown` on PS versions where that cmdlet is available

Prerequisites

  • Write a descriptive title.
  • Make sure you are able to repro it on the latest version
  • Search the existing issues.

Steps to reproduce

Get-WhatsNew should directly render the output using Show-Marddown on PS versions where that cmdlet is available.
And it should return a text string as is today only if -AsPlainText is used.

Error details

No response

Environment data

PS:17> Get-Module Microsoft.PowerShell.WhatsNew

ModuleType Version    PreRelease Name                                ExportedCommands
---------- -------    ---------- ----                                ----------------
Script     0.4.0                 Microsoft.PowerShell.WhatsNew       Get-WhatsNew

Version

0.4.0

Visuals

No response

Breaking changes are not referenced in module data

Know the breaking changes

Reading this:
Get-WhatsNew is a cmdlet that provides information about changes and new features for a version of PowerShell, delivered to the local terminal experience.

It is impossible to know the changes (breaking change).
If I plan to port existing code to powershell 7 and above, I know what's new but I don't know what doesn't work like it used to.

Get-WhatsNew -version 6.0 | Select-String 'breaking'
# systems. Some of these are breaking changes, which also affect Windows. Others are only present or
#  Breaking changes
# We've introduced a number of breaking changes in PowerShell Core 6.0.
# To read more about them in detail, see [Breaking Changes in PowerShell Core 6.0][breaking-changes].

For this :
"We've introduced a number of breaking changes in PowerShell Core 6.0."
Ok, but which ones?

here https://github.com/PowerShell/PowerShell/releases/tag/v6.0.0-rc.2 we reference issue 5432
But the module datas does not reference this change

Get-WhatsNew -version 6.0 | Select-String '5432'
#no result

According to the RFC this case is not yet taken into account, but the text quoted at the beginning seems to contradict it.

.
.

I know it's not its purpose, but in a way this module addresses the management of release notes of different Microsoft products offering Powershell cmdlets:
SCCM
https://docs.microsoft.com/en-us/powershell/sccm/2103-release-notes?view=sccm-ps

Teams
https://docs.microsoft.com/en-us/MicrosoftTeams/teams-powershell-release-notes

Azure
https://docs.microsoft.com/en-us/powershell/azure/release-notes-azureps?view=azps-8.0.0

Having a common format for these releases notes impacting Powershell cmdlets would be a great help.

Proposed technical implementation details (optional)

No response

Support third party modules

Summary of the new feature / enhancement

I would like this module to support third party modules so I can publish what's new content for my module and users can use this module to retrieve it.

Get-WhatsNew -Module MyModule

Proposed technical implementation details (optional)

A module would need to indicate that it supports this feature and ideally pull the content from a url. The easiest way I can think of is adding a module manifest key in PrivateData section with the url.

PrivateData = @{ WhatsNewUri = 'https://mywebsite.com/whatsnew' }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.