Skip to content

Conversation

@caesay
Copy link
Contributor

@caesay caesay commented Jan 30, 2024

fixes #1077
fixes #1076

Changes

Because ReadKeyAsync returns null if the cancellationToken is cancelled, this creates infinite loops in the AnsiConsoleExtensions.ReadLine method and the ListPrompt.Show method.

@caesay
Copy link
Contributor Author

caesay commented Jan 30, 2024

@microsoft-github-policy-service agree

@caesay
Copy link
Contributor Author

caesay commented Jan 31, 2024

Just as a note here, the check failed because the macOS runner failed to start, not because of the change.

@patriksvensson patriksvensson merged commit 71631b2 into spectreconsole:main Jan 31, 2024
@patriksvensson
Copy link
Contributor

Merged! Thank you for your contribution. Much appreciated! 👍

renovate bot referenced this pull request in dotnet/dotnet-operator-sdk Apr 23, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[Spectre.Console.Testing](https://togithub.com/spectreconsole/spectre.console)
| `0.48.0` -> `0.49.0` |
[![age](https://developer.mend.io/api/mc/badges/age/nuget/Spectre.Console.Testing/0.49.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/nuget/Spectre.Console.Testing/0.49.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/nuget/Spectre.Console.Testing/0.48.0/0.49.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/Spectre.Console.Testing/0.48.0/0.49.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>spectreconsole/spectre.console
(Spectre.Console.Testing)</summary>

###
[`v0.49.0`](https://togithub.com/spectreconsole/spectre.console/releases/tag/0.49.0)

[Compare
Source](https://togithub.com/spectreconsole/spectre.console/compare/0.48.0...0.49.0)

##### What's Changed

- Cleanup Line-Endings by [@&#8203;nils-a](https://togithub.com/nils-a)
in
[https://github.com/spectreconsole/spectre.console/pull/1381](https://togithub.com/spectreconsole/spectre.console/pull/1381)
- Added spectre.console.cli to quick-start. by
[@&#8203;nils-a](https://togithub.com/nils-a) in
[https://github.com/spectreconsole/spectre.console/pull/1413](https://togithub.com/spectreconsole/spectre.console/pull/1413)
- Fix rendering of ListPrompt for odd pageSizes by
[@&#8203;nils-a](https://togithub.com/nils-a) in
[https://github.com/spectreconsole/spectre.console/pull/1365](https://togithub.com/spectreconsole/spectre.console/pull/1365)
- Remove mandelbrot example due to conflicting license by
[@&#8203;patriksvensson](https://togithub.com/patriksvensson) in
[https://github.com/spectreconsole/spectre.console/pull/1426](https://togithub.com/spectreconsole/spectre.console/pull/1426)
- Allow specifying a property to ignore the use of build-time packages
for versioning and analysis by
[@&#8203;baronfel](https://togithub.com/baronfel) in
[https://github.com/spectreconsole/spectre.console/pull/1425](https://togithub.com/spectreconsole/spectre.console/pull/1425)
- Add the possibility to register multiple interceptors by
[@&#8203;nils-a](https://togithub.com/nils-a) in
[https://github.com/spectreconsole/spectre.console/pull/1412](https://togithub.com/spectreconsole/spectre.console/pull/1412)
- Added the ITypeResolver to the ExceptionHandler by
[@&#8203;nils-a](https://togithub.com/nils-a) in
[https://github.com/spectreconsole/spectre.console/pull/1411](https://togithub.com/spectreconsole/spectre.console/pull/1411)
- Updated typo in commandApp.md by
[@&#8203;DarqueWarrior](https://togithub.com/DarqueWarrior) in
[https://github.com/spectreconsole/spectre.console/pull/1431](https://togithub.com/spectreconsole/spectre.console/pull/1431)
- Command with -v displays app version instead of executing the command
by [@&#8203;FrankRay78](https://togithub.com/FrankRay78) in
[https://github.com/spectreconsole/spectre.console/pull/1427](https://togithub.com/spectreconsole/spectre.console/pull/1427)
- HelpProvider colors should be configurable by
[@&#8203;FrankRay78](https://togithub.com/FrankRay78) in
[https://github.com/spectreconsole/spectre.console/pull/1408](https://togithub.com/spectreconsole/spectre.console/pull/1408)
- Direct contributors to the current CONTRIBUTING.md by
[@&#8203;tonycknight](https://togithub.com/tonycknight) in
[https://github.com/spectreconsole/spectre.console/pull/1435](https://togithub.com/spectreconsole/spectre.console/pull/1435)
- Fix deadlock when cancelling prompts by
[@&#8203;caesay](https://togithub.com/caesay) in
[https://github.com/spectreconsole/spectre.console/pull/1439](https://togithub.com/spectreconsole/spectre.console/pull/1439)
- Add progress bar value formatter by
[@&#8203;jsheely](https://togithub.com/jsheely) in
[https://github.com/spectreconsole/spectre.console/pull/1414](https://togithub.com/spectreconsole/spectre.console/pull/1414)
- Update dependencies and do some clean-up by
[@&#8203;patriksvensson](https://togithub.com/patriksvensson) in
[https://github.com/spectreconsole/spectre.console/pull/1440](https://togithub.com/spectreconsole/spectre.console/pull/1440)
- Delete \[UsesVerify], which has become obsolete through the latest
update. by [@&#8203;danielcweber](https://togithub.com/danielcweber) in
[https://github.com/spectreconsole/spectre.console/pull/1456](https://togithub.com/spectreconsole/spectre.console/pull/1456)
- Don't erase secret prompt text upon backspace when mask is null by
[@&#8203;danielcweber](https://togithub.com/danielcweber) in
[https://github.com/spectreconsole/spectre.console/pull/1458](https://togithub.com/spectreconsole/spectre.console/pull/1458)
- Update dependencies to the latest version by
[@&#8203;patriksvensson](https://togithub.com/patriksvensson) in
[https://github.com/spectreconsole/spectre.console/pull/1459](https://togithub.com/spectreconsole/spectre.console/pull/1459)
- Automatically register command settings by
[@&#8203;patriksvensson](https://togithub.com/patriksvensson) in
[https://github.com/spectreconsole/spectre.console/pull/1463](https://togithub.com/spectreconsole/spectre.console/pull/1463)
- chore: Update dependency dotnet-example to v3.1.0 by
[@&#8203;renovate](https://togithub.com/renovate) in
[https://github.com/spectreconsole/spectre.console/pull/1470](https://togithub.com/spectreconsole/spectre.console/pull/1470)
- chore: Update dependency Roslynator.Analyzers to v4.11.0 by
[@&#8203;renovate](https://togithub.com/renovate) in
[https://github.com/spectreconsole/spectre.console/pull/1473](https://togithub.com/spectreconsole/spectre.console/pull/1473)
- Remove \[DebuggerDisplay] from Paragraph by
[@&#8203;martincostello](https://togithub.com/martincostello) in
[https://github.com/spectreconsole/spectre.console/pull/1477](https://togithub.com/spectreconsole/spectre.console/pull/1477)
- Selection Prompt Search by
[@&#8203;slang25](https://togithub.com/slang25) in
[https://github.com/spectreconsole/spectre.console/pull/1289](https://togithub.com/spectreconsole/spectre.console/pull/1289)
- Update dependency SixLabors.ImageSharp to v3.1.3 by
[@&#8203;renovate](https://togithub.com/renovate) in
[https://github.com/spectreconsole/spectre.console/pull/1486](https://togithub.com/spectreconsole/spectre.console/pull/1486)
- Positioned Progress Tasks - Before or After Other Tasks by
[@&#8203;thomhurst](https://togithub.com/thomhurst) in
[https://github.com/spectreconsole/spectre.console/pull/1250](https://togithub.com/spectreconsole/spectre.console/pull/1250)
- Added NoStackTrace to ExceptionFormats by
[@&#8203;gerardog](https://togithub.com/gerardog) in
[https://github.com/spectreconsole/spectre.console/pull/1489](https://togithub.com/spectreconsole/spectre.console/pull/1489)
- Pipe character for listing options (issue 1434) by
[@&#8203;FrankRay78](https://togithub.com/FrankRay78) in
[https://github.com/spectreconsole/spectre.console/pull/1498](https://togithub.com/spectreconsole/spectre.console/pull/1498)
- Improve XmlDoc output by
[@&#8203;yenneferofvengerberg](https://togithub.com/yenneferofvengerberg)
in
[https://github.com/spectreconsole/spectre.console/pull/1503](https://togithub.com/spectreconsole/spectre.console/pull/1503)
- Revert
[`71a5d83`](https://togithub.com/spectreconsole/spectre.console/commit/71a5d830)
to undo flickering regression by
[@&#8203;phil-scott-78](https://togithub.com/phil-scott-78) in
[https://github.com/spectreconsole/spectre.console/pull/1504](https://togithub.com/spectreconsole/spectre.console/pull/1504)
- AddDelegate uses an abstract type when used in a branch by
[@&#8203;BlazeFace](https://togithub.com/BlazeFace) in
[https://github.com/spectreconsole/spectre.console/pull/1509](https://togithub.com/spectreconsole/spectre.console/pull/1509)
- Missing Separator When Headers are Hidden by
[@&#8203;BlazeFace](https://togithub.com/BlazeFace) in
[https://github.com/spectreconsole/spectre.console/pull/1513](https://togithub.com/spectreconsole/spectre.console/pull/1513)
- Expose raw arguments on the command context by
[@&#8203;patriksvensson](https://togithub.com/patriksvensson) in
[https://github.com/spectreconsole/spectre.console/pull/1523](https://togithub.com/spectreconsole/spectre.console/pull/1523)
- Add token representation to remaining arguments by
[@&#8203;patriksvensson](https://togithub.com/patriksvensson) in
[https://github.com/spectreconsole/spectre.console/pull/1525](https://togithub.com/spectreconsole/spectre.console/pull/1525)

##### New Contributors

- [@&#8203;baronfel](https://togithub.com/baronfel) made their first
contribution in
[https://github.com/spectreconsole/spectre.console/pull/1425](https://togithub.com/spectreconsole/spectre.console/pull/1425)
- [@&#8203;DarqueWarrior](https://togithub.com/DarqueWarrior) made their
first contribution in
[https://github.com/spectreconsole/spectre.console/pull/1431](https://togithub.com/spectreconsole/spectre.console/pull/1431)
- [@&#8203;tonycknight](https://togithub.com/tonycknight) made their
first contribution in
[https://github.com/spectreconsole/spectre.console/pull/1435](https://togithub.com/spectreconsole/spectre.console/pull/1435)
- [@&#8203;caesay](https://togithub.com/caesay) made their first
contribution in
[https://github.com/spectreconsole/spectre.console/pull/1439](https://togithub.com/spectreconsole/spectre.console/pull/1439)
- [@&#8203;jsheely](https://togithub.com/jsheely) made their first
contribution in
[https://github.com/spectreconsole/spectre.console/pull/1414](https://togithub.com/spectreconsole/spectre.console/pull/1414)
- [@&#8203;danielcweber](https://togithub.com/danielcweber) made their
first contribution in
[https://github.com/spectreconsole/spectre.console/pull/1456](https://togithub.com/spectreconsole/spectre.console/pull/1456)
- [@&#8203;martincostello](https://togithub.com/martincostello) made
their first contribution in
[https://github.com/spectreconsole/spectre.console/pull/1477](https://togithub.com/spectreconsole/spectre.console/pull/1477)
- [@&#8203;slang25](https://togithub.com/slang25) made their first
contribution in
[https://github.com/spectreconsole/spectre.console/pull/1289](https://togithub.com/spectreconsole/spectre.console/pull/1289)
- [@&#8203;thomhurst](https://togithub.com/thomhurst) made their first
contribution in
[https://github.com/spectreconsole/spectre.console/pull/1250](https://togithub.com/spectreconsole/spectre.console/pull/1250)
- [@&#8203;gerardog](https://togithub.com/gerardog) made their first
contribution in
[https://github.com/spectreconsole/spectre.console/pull/1489](https://togithub.com/spectreconsole/spectre.console/pull/1489)
-
[@&#8203;yenneferofvengerberg](https://togithub.com/yenneferofvengerberg)
made their first contribution in
[https://github.com/spectreconsole/spectre.console/pull/1503](https://togithub.com/spectreconsole/spectre.console/pull/1503)
- [@&#8203;BlazeFace](https://togithub.com/BlazeFace) made their first
contribution in
[https://github.com/spectreconsole/spectre.console/pull/1509](https://togithub.com/spectreconsole/spectre.console/pull/1509)

**Full Changelog**:
spectreconsole/spectre.console@0.48.0...0.49.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 9pm,before 6am" in timezone
Europe/Zurich, Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/buehler/dotnet-operator-sdk).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMTMuMSIsInVwZGF0ZWRJblZlciI6IjM3LjMxMy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
ian-buse referenced this pull request in dh2i-devs/dotnet-operator-sdk May 3, 2024
…tnet#751)

[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[Spectre.Console.Testing](https://togithub.com/spectreconsole/spectre.console)
| `0.48.0` -> `0.49.0` |
[![age](https://developer.mend.io/api/mc/badges/age/nuget/Spectre.Console.Testing/0.49.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/nuget/Spectre.Console.Testing/0.49.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/nuget/Spectre.Console.Testing/0.48.0/0.49.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/Spectre.Console.Testing/0.48.0/0.49.0?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>spectreconsole/spectre.console
(Spectre.Console.Testing)</summary>

###
[`v0.49.0`](https://togithub.com/spectreconsole/spectre.console/releases/tag/0.49.0)

[Compare
Source](https://togithub.com/spectreconsole/spectre.console/compare/0.48.0...0.49.0)

##### What's Changed

- Cleanup Line-Endings by [@&#8203;nils-a](https://togithub.com/nils-a)
in
[https://github.com/spectreconsole/spectre.console/pull/1381](https://togithub.com/spectreconsole/spectre.console/pull/1381)
- Added spectre.console.cli to quick-start. by
[@&#8203;nils-a](https://togithub.com/nils-a) in
[https://github.com/spectreconsole/spectre.console/pull/1413](https://togithub.com/spectreconsole/spectre.console/pull/1413)
- Fix rendering of ListPrompt for odd pageSizes by
[@&#8203;nils-a](https://togithub.com/nils-a) in
[https://github.com/spectreconsole/spectre.console/pull/1365](https://togithub.com/spectreconsole/spectre.console/pull/1365)
- Remove mandelbrot example due to conflicting license by
[@&#8203;patriksvensson](https://togithub.com/patriksvensson) in
[https://github.com/spectreconsole/spectre.console/pull/1426](https://togithub.com/spectreconsole/spectre.console/pull/1426)
- Allow specifying a property to ignore the use of build-time packages
for versioning and analysis by
[@&#8203;baronfel](https://togithub.com/baronfel) in
[https://github.com/spectreconsole/spectre.console/pull/1425](https://togithub.com/spectreconsole/spectre.console/pull/1425)
- Add the possibility to register multiple interceptors by
[@&#8203;nils-a](https://togithub.com/nils-a) in
[https://github.com/spectreconsole/spectre.console/pull/1412](https://togithub.com/spectreconsole/spectre.console/pull/1412)
- Added the ITypeResolver to the ExceptionHandler by
[@&#8203;nils-a](https://togithub.com/nils-a) in
[https://github.com/spectreconsole/spectre.console/pull/1411](https://togithub.com/spectreconsole/spectre.console/pull/1411)
- Updated typo in commandApp.md by
[@&#8203;DarqueWarrior](https://togithub.com/DarqueWarrior) in
[https://github.com/spectreconsole/spectre.console/pull/1431](https://togithub.com/spectreconsole/spectre.console/pull/1431)
- Command with -v displays app version instead of executing the command
by [@&#8203;FrankRay78](https://togithub.com/FrankRay78) in
[https://github.com/spectreconsole/spectre.console/pull/1427](https://togithub.com/spectreconsole/spectre.console/pull/1427)
- HelpProvider colors should be configurable by
[@&#8203;FrankRay78](https://togithub.com/FrankRay78) in
[https://github.com/spectreconsole/spectre.console/pull/1408](https://togithub.com/spectreconsole/spectre.console/pull/1408)
- Direct contributors to the current CONTRIBUTING.md by
[@&#8203;tonycknight](https://togithub.com/tonycknight) in
[https://github.com/spectreconsole/spectre.console/pull/1435](https://togithub.com/spectreconsole/spectre.console/pull/1435)
- Fix deadlock when cancelling prompts by
[@&#8203;caesay](https://togithub.com/caesay) in
[https://github.com/spectreconsole/spectre.console/pull/1439](https://togithub.com/spectreconsole/spectre.console/pull/1439)
- Add progress bar value formatter by
[@&#8203;jsheely](https://togithub.com/jsheely) in
[https://github.com/spectreconsole/spectre.console/pull/1414](https://togithub.com/spectreconsole/spectre.console/pull/1414)
- Update dependencies and do some clean-up by
[@&#8203;patriksvensson](https://togithub.com/patriksvensson) in
[https://github.com/spectreconsole/spectre.console/pull/1440](https://togithub.com/spectreconsole/spectre.console/pull/1440)
- Delete \[UsesVerify], which has become obsolete through the latest
update. by [@&#8203;danielcweber](https://togithub.com/danielcweber) in
[https://github.com/spectreconsole/spectre.console/pull/1456](https://togithub.com/spectreconsole/spectre.console/pull/1456)
- Don't erase secret prompt text upon backspace when mask is null by
[@&#8203;danielcweber](https://togithub.com/danielcweber) in
[https://github.com/spectreconsole/spectre.console/pull/1458](https://togithub.com/spectreconsole/spectre.console/pull/1458)
- Update dependencies to the latest version by
[@&#8203;patriksvensson](https://togithub.com/patriksvensson) in
[https://github.com/spectreconsole/spectre.console/pull/1459](https://togithub.com/spectreconsole/spectre.console/pull/1459)
- Automatically register command settings by
[@&#8203;patriksvensson](https://togithub.com/patriksvensson) in
[https://github.com/spectreconsole/spectre.console/pull/1463](https://togithub.com/spectreconsole/spectre.console/pull/1463)
- chore: Update dependency dotnet-example to v3.1.0 by
[@&#8203;renovate](https://togithub.com/renovate) in
[https://github.com/spectreconsole/spectre.console/pull/1470](https://togithub.com/spectreconsole/spectre.console/pull/1470)
- chore: Update dependency Roslynator.Analyzers to v4.11.0 by
[@&#8203;renovate](https://togithub.com/renovate) in
[https://github.com/spectreconsole/spectre.console/pull/1473](https://togithub.com/spectreconsole/spectre.console/pull/1473)
- Remove \[DebuggerDisplay] from Paragraph by
[@&#8203;martincostello](https://togithub.com/martincostello) in
[https://github.com/spectreconsole/spectre.console/pull/1477](https://togithub.com/spectreconsole/spectre.console/pull/1477)
- Selection Prompt Search by
[@&#8203;slang25](https://togithub.com/slang25) in
[https://github.com/spectreconsole/spectre.console/pull/1289](https://togithub.com/spectreconsole/spectre.console/pull/1289)
- Update dependency SixLabors.ImageSharp to v3.1.3 by
[@&#8203;renovate](https://togithub.com/renovate) in
[https://github.com/spectreconsole/spectre.console/pull/1486](https://togithub.com/spectreconsole/spectre.console/pull/1486)
- Positioned Progress Tasks - Before or After Other Tasks by
[@&#8203;thomhurst](https://togithub.com/thomhurst) in
[https://github.com/spectreconsole/spectre.console/pull/1250](https://togithub.com/spectreconsole/spectre.console/pull/1250)
- Added NoStackTrace to ExceptionFormats by
[@&#8203;gerardog](https://togithub.com/gerardog) in
[https://github.com/spectreconsole/spectre.console/pull/1489](https://togithub.com/spectreconsole/spectre.console/pull/1489)
- Pipe character for listing options (issue 1434) by
[@&#8203;FrankRay78](https://togithub.com/FrankRay78) in
[https://github.com/spectreconsole/spectre.console/pull/1498](https://togithub.com/spectreconsole/spectre.console/pull/1498)
- Improve XmlDoc output by
[@&#8203;yenneferofvengerberg](https://togithub.com/yenneferofvengerberg)
in
[https://github.com/spectreconsole/spectre.console/pull/1503](https://togithub.com/spectreconsole/spectre.console/pull/1503)
- Revert
[`71a5d83`](https://togithub.com/spectreconsole/spectre.console/commit/71a5d830)
to undo flickering regression by
[@&#8203;phil-scott-78](https://togithub.com/phil-scott-78) in
[https://github.com/spectreconsole/spectre.console/pull/1504](https://togithub.com/spectreconsole/spectre.console/pull/1504)
- AddDelegate uses an abstract type when used in a branch by
[@&#8203;BlazeFace](https://togithub.com/BlazeFace) in
[https://github.com/spectreconsole/spectre.console/pull/1509](https://togithub.com/spectreconsole/spectre.console/pull/1509)
- Missing Separator When Headers are Hidden by
[@&#8203;BlazeFace](https://togithub.com/BlazeFace) in
[https://github.com/spectreconsole/spectre.console/pull/1513](https://togithub.com/spectreconsole/spectre.console/pull/1513)
- Expose raw arguments on the command context by
[@&#8203;patriksvensson](https://togithub.com/patriksvensson) in
[https://github.com/spectreconsole/spectre.console/pull/1523](https://togithub.com/spectreconsole/spectre.console/pull/1523)
- Add token representation to remaining arguments by
[@&#8203;patriksvensson](https://togithub.com/patriksvensson) in
[https://github.com/spectreconsole/spectre.console/pull/1525](https://togithub.com/spectreconsole/spectre.console/pull/1525)

##### New Contributors

- [@&#8203;baronfel](https://togithub.com/baronfel) made their first
contribution in
[https://github.com/spectreconsole/spectre.console/pull/1425](https://togithub.com/spectreconsole/spectre.console/pull/1425)
- [@&#8203;DarqueWarrior](https://togithub.com/DarqueWarrior) made their
first contribution in
[https://github.com/spectreconsole/spectre.console/pull/1431](https://togithub.com/spectreconsole/spectre.console/pull/1431)
- [@&#8203;tonycknight](https://togithub.com/tonycknight) made their
first contribution in
[https://github.com/spectreconsole/spectre.console/pull/1435](https://togithub.com/spectreconsole/spectre.console/pull/1435)
- [@&#8203;caesay](https://togithub.com/caesay) made their first
contribution in
[https://github.com/spectreconsole/spectre.console/pull/1439](https://togithub.com/spectreconsole/spectre.console/pull/1439)
- [@&#8203;jsheely](https://togithub.com/jsheely) made their first
contribution in
[https://github.com/spectreconsole/spectre.console/pull/1414](https://togithub.com/spectreconsole/spectre.console/pull/1414)
- [@&#8203;danielcweber](https://togithub.com/danielcweber) made their
first contribution in
[https://github.com/spectreconsole/spectre.console/pull/1456](https://togithub.com/spectreconsole/spectre.console/pull/1456)
- [@&#8203;martincostello](https://togithub.com/martincostello) made
their first contribution in
[https://github.com/spectreconsole/spectre.console/pull/1477](https://togithub.com/spectreconsole/spectre.console/pull/1477)
- [@&#8203;slang25](https://togithub.com/slang25) made their first
contribution in
[https://github.com/spectreconsole/spectre.console/pull/1289](https://togithub.com/spectreconsole/spectre.console/pull/1289)
- [@&#8203;thomhurst](https://togithub.com/thomhurst) made their first
contribution in
[https://github.com/spectreconsole/spectre.console/pull/1250](https://togithub.com/spectreconsole/spectre.console/pull/1250)
- [@&#8203;gerardog](https://togithub.com/gerardog) made their first
contribution in
[https://github.com/spectreconsole/spectre.console/pull/1489](https://togithub.com/spectreconsole/spectre.console/pull/1489)
-
[@&#8203;yenneferofvengerberg](https://togithub.com/yenneferofvengerberg)
made their first contribution in
[https://github.com/spectreconsole/spectre.console/pull/1503](https://togithub.com/spectreconsole/spectre.console/pull/1503)
- [@&#8203;BlazeFace](https://togithub.com/BlazeFace) made their first
contribution in
[https://github.com/spectreconsole/spectre.console/pull/1509](https://togithub.com/spectreconsole/spectre.console/pull/1509)

**Full Changelog**:
spectreconsole/spectre.console@0.48.0...0.49.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 9pm,before 6am" in timezone
Europe/Zurich, Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/buehler/dotnet-operator-sdk).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMTMuMSIsInVwZGF0ZWRJblZlciI6IjM3LjMxMy4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
vgmello referenced this pull request in ellosoft/aws-cred-mgr May 31, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[Spectre.Console.Analyzer](https://togithub.com/spectreconsole/spectre.console)
| `0.48.0` -> `0.49.1` |
[![age](https://developer.mend.io/api/mc/badges/age/nuget/Spectre.Console.Analyzer/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/nuget/Spectre.Console.Analyzer/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/nuget/Spectre.Console.Analyzer/0.48.0/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/Spectre.Console.Analyzer/0.48.0/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
|
[Spectre.Console.Cli](https://togithub.com/spectreconsole/spectre.console)
| `0.48.0` -> `0.49.1` |
[![age](https://developer.mend.io/api/mc/badges/age/nuget/Spectre.Console.Cli/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/nuget/Spectre.Console.Cli/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/nuget/Spectre.Console.Cli/0.48.0/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/nuget/Spectre.Console.Cli/0.48.0/0.49.1?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>spectreconsole/spectre.console
(Spectre.Console.Analyzer)</summary>

###
[`v0.49.1`](https://togithub.com/spectreconsole/spectre.console/compare/0.49.0...0.49.1)

[Compare
Source](https://togithub.com/spectreconsole/spectre.console/compare/0.49.0...0.49.1)

###
[`v0.49.0`](https://togithub.com/spectreconsole/spectre.console/releases/tag/0.49.0)

[Compare
Source](https://togithub.com/spectreconsole/spectre.console/compare/0.48.0...0.49.0)

#### What's Changed

- Cleanup line endings by [@&#8203;nils-a](https://togithub.com/nils-a)
in
[https://github.com/spectreconsole/spectre.console/pull/1381](https://togithub.com/spectreconsole/spectre.console/pull/1381)
- Added Spectre.Console.Cli to quick-start. by
[@&#8203;nils-a](https://togithub.com/nils-a) in
[https://github.com/spectreconsole/spectre.console/pull/1413](https://togithub.com/spectreconsole/spectre.console/pull/1413)
- Fix rendering of ListPrompt for odd pageSizes by
[@&#8203;nils-a](https://togithub.com/nils-a) in
[https://github.com/spectreconsole/spectre.console/pull/1365](https://togithub.com/spectreconsole/spectre.console/pull/1365)
- Remove mandelbrot example due to conflicting license by
[@&#8203;patriksvensson](https://togithub.com/patriksvensson) in
[https://github.com/spectreconsole/spectre.console/pull/1426](https://togithub.com/spectreconsole/spectre.console/pull/1426)
- Allow specifying a property to ignore the use of build-time packages
for versioning and analysis by
[@&#8203;baronfel](https://togithub.com/baronfel) in
[https://github.com/spectreconsole/spectre.console/pull/1425](https://togithub.com/spectreconsole/spectre.console/pull/1425)
- Add the possibility to register multiple interceptors by
[@&#8203;nils-a](https://togithub.com/nils-a) in
[https://github.com/spectreconsole/spectre.console/pull/1412](https://togithub.com/spectreconsole/spectre.console/pull/1412)
- Added the ITypeResolver to the ExceptionHandler by
[@&#8203;nils-a](https://togithub.com/nils-a) in
[https://github.com/spectreconsole/spectre.console/pull/1411](https://togithub.com/spectreconsole/spectre.console/pull/1411)
- Updated typo in CommandApp.md by
[@&#8203;DarqueWarrior](https://togithub.com/DarqueWarrior) in
[https://github.com/spectreconsole/spectre.console/pull/1431](https://togithub.com/spectreconsole/spectre.console/pull/1431)
- Command with -v displays app version instead of executing the command
by [@&#8203;FrankRay78](https://togithub.com/FrankRay78) in
[https://github.com/spectreconsole/spectre.console/pull/1427](https://togithub.com/spectreconsole/spectre.console/pull/1427)
- HelpProvider colors should be configurable by
[@&#8203;FrankRay78](https://togithub.com/FrankRay78) in
[https://github.com/spectreconsole/spectre.console/pull/1408](https://togithub.com/spectreconsole/spectre.console/pull/1408)
- Direct contributors to the current CONTRIBUTING.md by
[@&#8203;tonycknight](https://togithub.com/tonycknight) in
[https://github.com/spectreconsole/spectre.console/pull/1435](https://togithub.com/spectreconsole/spectre.console/pull/1435)
- Fix deadlock when cancelling prompts by
[@&#8203;caesay](https://togithub.com/caesay) in
[https://github.com/spectreconsole/spectre.console/pull/1439](https://togithub.com/spectreconsole/spectre.console/pull/1439)
- Add progress bar value formatter by
[@&#8203;jsheely](https://togithub.com/jsheely) in
[https://github.com/spectreconsole/spectre.console/pull/1414](https://togithub.com/spectreconsole/spectre.console/pull/1414)
- Update dependencies and do some clean-up by
[@&#8203;patriksvensson](https://togithub.com/patriksvensson) in
[https://github.com/spectreconsole/spectre.console/pull/1440](https://togithub.com/spectreconsole/spectre.console/pull/1440)
- Delete \[UsesVerify], which has become obsolete through the latest
update. by [@&#8203;danielcweber](https://togithub.com/danielcweber) in
[https://github.com/spectreconsole/spectre.console/pull/1456](https://togithub.com/spectreconsole/spectre.console/pull/1456)
- Don't erase secret prompt text upon backspace when mask is null by
[@&#8203;danielcweber](https://togithub.com/danielcweber) in
[https://github.com/spectreconsole/spectre.console/pull/1458](https://togithub.com/spectreconsole/spectre.console/pull/1458)
- Update dependencies to the latest version by
[@&#8203;patriksvensson](https://togithub.com/patriksvensson) in
[https://github.com/spectreconsole/spectre.console/pull/1459](https://togithub.com/spectreconsole/spectre.console/pull/1459)
- Automatically register command settings by
[@&#8203;patriksvensson](https://togithub.com/patriksvensson) in
[https://github.com/spectreconsole/spectre.console/pull/1463](https://togithub.com/spectreconsole/spectre.console/pull/1463)
- Remove \[DebuggerDisplay] from Paragraph by
[@&#8203;martincostello](https://togithub.com/martincostello) in
[https://github.com/spectreconsole/spectre.console/pull/1477](https://togithub.com/spectreconsole/spectre.console/pull/1477)
- Selection Prompt Search by
[@&#8203;slang25](https://togithub.com/slang25) in
[https://github.com/spectreconsole/spectre.console/pull/1289](https://togithub.com/spectreconsole/spectre.console/pull/1289)
- Update dependency SixLabors.ImageSharp to v3.1.3 by
[@&#8203;renovate](https://togithub.com/renovate) in
[https://github.com/spectreconsole/spectre.console/pull/1486](https://togithub.com/spectreconsole/spectre.console/pull/1486)
- Positioned Progress Tasks - Before or After Other Tasks by
[@&#8203;thomhurst](https://togithub.com/thomhurst) in
[https://github.com/spectreconsole/spectre.console/pull/1250](https://togithub.com/spectreconsole/spectre.console/pull/1250)
- Added NoStackTrace to ExceptionFormats by
[@&#8203;gerardog](https://togithub.com/gerardog) in
[https://github.com/spectreconsole/spectre.console/pull/1489](https://togithub.com/spectreconsole/spectre.console/pull/1489)
- Pipe character for listing options (issue 1434) by
[@&#8203;FrankRay78](https://togithub.com/FrankRay78) in
[https://github.com/spectreconsole/spectre.console/pull/1498](https://togithub.com/spectreconsole/spectre.console/pull/1498)
- Improve XmlDoc output by
[@&#8203;yenneferofvengerberg](https://togithub.com/yenneferofvengerberg)
in
[https://github.com/spectreconsole/spectre.console/pull/1503](https://togithub.com/spectreconsole/spectre.console/pull/1503)
- Revert
[`71a5d83`](https://togithub.com/spectreconsole/spectre.console/commit/71a5d830)
to undo flickering regression by
[@&#8203;phil-scott-78](https://togithub.com/phil-scott-78) in
[https://github.com/spectreconsole/spectre.console/pull/1504](https://togithub.com/spectreconsole/spectre.console/pull/1504)
- AddDelegate uses an abstract type when used in a branch by
[@&#8203;BlazeFace](https://togithub.com/BlazeFace) in
[https://github.com/spectreconsole/spectre.console/pull/1509](https://togithub.com/spectreconsole/spectre.console/pull/1509)
- Missing Separator When Headers are Hidden by
[@&#8203;BlazeFace](https://togithub.com/BlazeFace) in
[https://github.com/spectreconsole/spectre.console/pull/1513](https://togithub.com/spectreconsole/spectre.console/pull/1513)
- Expose raw arguments on the command context by
[@&#8203;patriksvensson](https://togithub.com/patriksvensson) in
[https://github.com/spectreconsole/spectre.console/pull/1523](https://togithub.com/spectreconsole/spectre.console/pull/1523)
- Add token representation to remaining arguments by
[@&#8203;patriksvensson](https://togithub.com/patriksvensson) in
[https://github.com/spectreconsole/spectre.console/pull/1525](https://togithub.com/spectreconsole/spectre.console/pull/1525)

#### New Contributors

- [@&#8203;baronfel](https://togithub.com/baronfel) made their first
contribution in
[https://github.com/spectreconsole/spectre.console/pull/1425](https://togithub.com/spectreconsole/spectre.console/pull/1425)
- [@&#8203;DarqueWarrior](https://togithub.com/DarqueWarrior) made their
first contribution in
[https://github.com/spectreconsole/spectre.console/pull/1431](https://togithub.com/spectreconsole/spectre.console/pull/1431)
- [@&#8203;tonycknight](https://togithub.com/tonycknight) made their
first contribution in
[https://github.com/spectreconsole/spectre.console/pull/1435](https://togithub.com/spectreconsole/spectre.console/pull/1435)
- [@&#8203;caesay](https://togithub.com/caesay) made their first
contribution in
[https://github.com/spectreconsole/spectre.console/pull/1439](https://togithub.com/spectreconsole/spectre.console/pull/1439)
- [@&#8203;jsheely](https://togithub.com/jsheely) made their first
contribution in
[https://github.com/spectreconsole/spectre.console/pull/1414](https://togithub.com/spectreconsole/spectre.console/pull/1414)
- [@&#8203;danielcweber](https://togithub.com/danielcweber) made their
first contribution in
[https://github.com/spectreconsole/spectre.console/pull/1456](https://togithub.com/spectreconsole/spectre.console/pull/1456)
- [@&#8203;martincostello](https://togithub.com/martincostello) made
their first contribution in
[https://github.com/spectreconsole/spectre.console/pull/1477](https://togithub.com/spectreconsole/spectre.console/pull/1477)
- [@&#8203;slang25](https://togithub.com/slang25) made their first
contribution in
[https://github.com/spectreconsole/spectre.console/pull/1289](https://togithub.com/spectreconsole/spectre.console/pull/1289)
- [@&#8203;thomhurst](https://togithub.com/thomhurst) made their first
contribution in
[https://github.com/spectreconsole/spectre.console/pull/1250](https://togithub.com/spectreconsole/spectre.console/pull/1250)
- [@&#8203;gerardog](https://togithub.com/gerardog) made their first
contribution in
[https://github.com/spectreconsole/spectre.console/pull/1489](https://togithub.com/spectreconsole/spectre.console/pull/1489)
-
[@&#8203;yenneferofvengerberg](https://togithub.com/yenneferofvengerberg)
made their first contribution in
[https://github.com/spectreconsole/spectre.console/pull/1503](https://togithub.com/spectreconsole/spectre.console/pull/1503)
- [@&#8203;BlazeFace](https://togithub.com/BlazeFace) made their first
contribution in
[https://github.com/spectreconsole/spectre.console/pull/1509](https://togithub.com/spectreconsole/spectre.console/pull/1509)

**Full Changelog**:
spectreconsole/spectre.console@0.48.0...0.49.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined),
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about these
updates again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR has been generated by [Mend
Renovate](https://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/ellosoft/aws-cred-mgr).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMTMuMSIsInVwZGF0ZWRJblZlciI6IjM3LjMyMS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
0xced added a commit to 0xced/spectre.console that referenced this pull request Sep 10, 2024
The current prompt APIs suffer from several problems.

First, the prompt APIs are fundamentally synchronous APIs. If we get down to the underlying implementation of all the prompt APIs, i.e. the `DefaultInput` class we can see some issues.

Here's are the problematic implementation (before this commit fixes it):

```csharp
public ConsoleKeyInfo? ReadKey(bool intercept)
{
    return System.Console.ReadKey(intercept);
}

public async Task<ConsoleKeyInfo?> ReadKeyAsync(bool intercept, CancellationToken cancellationToken)
{
    while (true)
    {
        if (cancellationToken.IsCancellationRequested)
        {
            return null;
        }

        if (System.Console.KeyAvailable)
        {
            break;
        }

        await Task.Delay(5, cancellationToken).ConfigureAwait(false);
    }

    return ReadKey(intercept);
}
```

* The syncrhonous `ReadKey` method returns a nullable `ConsoleKeyInfo` struct but `System.Console.ReadKey` can never return a nullable `ConsoleKeyInfo`.
* The asyncrhonous `ReadKeyAsync` method can return `null` only if cancellation has been requested. But this can never actually happen since [Fix deadlock when cancelling prompts (spectreconsole#1439)](spectreconsole#1439) was merged.
* The asyncrhonous `ReadKeyAsync` method is not actually an synchronous method, it's waiting for a key to be pressed in a loop, waiting 5 milliseconds before checking again if it can break out of the loop.

The proposed fix obsoletes the `ReadKeyAsync` method and add cancellation support to the synchronous `ReadKey` method through an optional  `CancellationToken`. It also returns a non-nullable `ConsoleKeyInfo` making it clear that the only way to get out of this method is through cancellation. Then this change bubbles up to all the prompt APIs, also obsoleting the `IPrompt.ShowAsync` methods.

This is a better alternative to [Async overloads for AnsiConsole Prompt/Ask/Confirm (spectreconsole#1194)](spectreconsole#1194) where the actual need is having a `CancellationToken` to perform some cleanup and not having async prompt APIs.

Note that this is a breaking change since it modifies the signatures of the public `IAnsiConsoleInput` interface but that should not be an issue since it's impossible to use another implentation than `DefaultInput` when used through `AnsiConsole.Create(AnsiConsoleSettings settings)`.  

I have also searched for [implementers of IAnsiConsoleInput](https://grep.app/search?q=IAnsiConsoleInput) and I think this change won't break anything since nobody actually implemented `IAnsiConsoleInput`. Only exising implementations which have been udated are being used (at least across a half million public git repos).
0xced added a commit to 0xced/spectre.console that referenced this pull request Sep 10, 2024
The current prompt APIs suffer from several problems.

First, the prompt APIs are fundamentally synchronous APIs. If we get down to the underlying implementation of all the prompt APIs, i.e. the `DefaultInput` class we can see some issues.

Here's are the problematic implementation (before this commit fixes it):

```csharp
public ConsoleKeyInfo? ReadKey(bool intercept)
{
    return System.Console.ReadKey(intercept);
}

public async Task<ConsoleKeyInfo?> ReadKeyAsync(bool intercept, CancellationToken cancellationToken)
{
    while (true)
    {
        if (cancellationToken.IsCancellationRequested)
        {
            return null;
        }

        if (System.Console.KeyAvailable)
        {
            break;
        }

        await Task.Delay(5, cancellationToken).ConfigureAwait(false);
    }

    return ReadKey(intercept);
}
```

* The syncrhonous `ReadKey` method returns a nullable `ConsoleKeyInfo` struct but `System.Console.ReadKey` can never return a nullable `ConsoleKeyInfo`.
* The asyncrhonous `ReadKeyAsync` method can return `null` only if cancellation has been requested. But this can never actually happen since [Fix deadlock when cancelling prompts (spectreconsole#1439)](spectreconsole#1439) was merged.
* The asyncrhonous `ReadKeyAsync` method is not actually an synchronous method, it's waiting for a key to be pressed in a loop, waiting 5 milliseconds before checking again if it can break out of the loop.

The proposed fix obsoletes the `ReadKeyAsync` method and add cancellation support to the synchronous `ReadKey` method through an optional  `CancellationToken`. It also returns a non-nullable `ConsoleKeyInfo` making it clear that the only way to get out of this method is through cancellation. Then this change bubbles up to all the prompt APIs, also obsoleting the `IPrompt.ShowAsync` methods.

This is a better alternative to [Async overloads for AnsiConsole Prompt/Ask/Confirm (spectreconsole#1194)](spectreconsole#1194) where the actual need is having a `CancellationToken` to perform some cleanup and not having async prompt APIs.

Note that this is a breaking change since it modifies the signatures of the public `IAnsiConsoleInput` interface but that should not be an issue since it's impossible to use another implentation than `DefaultInput` when used through `AnsiConsole.Create(AnsiConsoleSettings settings)`.  

I have also searched for [implementers of IAnsiConsoleInput](https://grep.app/search?q=IAnsiConsoleInput) and I think this change won't break anything since nobody actually implemented `IAnsiConsoleInput`. Only exising implementations which have been udated are being used (at least across a half million public git repos).

The addition of the `CancellationToken` to `IPrompt.Show(IAnsiConsole console, CancellationToken cancellationToken = default)` is also a breaking change but it should be mitigated since it has bee introduced with a default value.
0xced added a commit to 0xced/spectre.console that referenced this pull request Sep 10, 2024
The current prompt APIs suffer from several problems.

First, the prompt APIs are fundamentally synchronous APIs. If we get down to the underlying implementation of all the prompt APIs, i.e. the `DefaultInput` class we can see some issues.

Here's are the problematic implementation (before this commit fixes it):

```csharp
public ConsoleKeyInfo? ReadKey(bool intercept)
{
    return System.Console.ReadKey(intercept);
}

public async Task<ConsoleKeyInfo?> ReadKeyAsync(bool intercept, CancellationToken cancellationToken)
{
    while (true)
    {
        if (cancellationToken.IsCancellationRequested)
        {
            return null;
        }

        if (System.Console.KeyAvailable)
        {
            break;
        }

        await Task.Delay(5, cancellationToken).ConfigureAwait(false);
    }

    return ReadKey(intercept);
}
```

* The syncrhonous `ReadKey` method returns a nullable `ConsoleKeyInfo` struct but `System.Console.ReadKey` can never return a nullable `ConsoleKeyInfo`.
* The asyncrhonous `ReadKeyAsync` method can return `null` only if cancellation has been requested. But this can never actually happen since [Fix deadlock when cancelling prompts (spectreconsole#1439)](spectreconsole#1439) was merged.
* The asyncrhonous `ReadKeyAsync` method is not actually an synchronous method, it's waiting for a key to be pressed in a loop, waiting 5 milliseconds before checking again if it can break out of the loop.

The proposed fix obsoletes the `ReadKeyAsync` method and add cancellation support to the synchronous `ReadKey` method through an optional  `CancellationToken`. It also returns a non-nullable `ConsoleKeyInfo` making it clear that the only way to get out of this method is through cancellation. Then this change bubbles up to all the prompt APIs, also obsoleting the `IPrompt.ShowAsync` methods.

This is a better alternative to [Async overloads for AnsiConsole Prompt/Ask/Confirm (spectreconsole#1194)](spectreconsole#1194) where the actual need is having a `CancellationToken` to perform some cleanup and not having async prompt APIs.

Note that this is a breaking change since it modifies the signatures of the public `IAnsiConsoleInput` interface but that should not be an issue since it's impossible to use another implentation than `DefaultInput` when used through `AnsiConsole.Create(AnsiConsoleSettings settings)`.  

I have also searched for [implementers of IAnsiConsoleInput](https://grep.app/search?q=IAnsiConsoleInput) and I think this change won't break anything since nobody actually implemented `IAnsiConsoleInput`. Only exising implementations which have been udated are being used (at least across a half million public git repos).

The addition of the `CancellationToken` to `IPrompt.Show(IAnsiConsole console, CancellationToken cancellationToken = default)` is also a breaking change but it should be mitigated since it has bee introduced with a default value.
0xced added a commit to 0xced/spectre.console that referenced this pull request Sep 10, 2024
The current prompt APIs suffer from several problems.

First, the prompt APIs are fundamentally synchronous APIs. If we get down to the underlying implementation of all the prompt APIs, i.e. the `DefaultInput` class we can see some issues.

Here's are the problematic implementation (before this commit fixes it):

```csharp
public ConsoleKeyInfo? ReadKey(bool intercept)
{
    return System.Console.ReadKey(intercept);
}

public async Task<ConsoleKeyInfo?> ReadKeyAsync(bool intercept, CancellationToken cancellationToken)
{
    while (true)
    {
        if (cancellationToken.IsCancellationRequested)
        {
            return null;
        }

        if (System.Console.KeyAvailable)
        {
            break;
        }

        await Task.Delay(5, cancellationToken).ConfigureAwait(false);
    }

    return ReadKey(intercept);
}
```

* The syncrhonous `ReadKey` method returns a nullable `ConsoleKeyInfo` struct but `System.Console.ReadKey` can never return a nullable `ConsoleKeyInfo`.
* The asyncrhonous `ReadKeyAsync` method can return `null` only if cancellation has been requested. But this can never actually happen since [Fix deadlock when cancelling prompts (spectreconsole#1439)](spectreconsole#1439) was merged.
* The asyncrhonous `ReadKeyAsync` method is not actually an synchronous method, it's waiting for a key to be pressed in a loop, waiting 5 milliseconds before checking again if it can break out of the loop.

The proposed fix obsoletes the `ReadKeyAsync` method and add cancellation support to the synchronous `ReadKey` method through an optional  `CancellationToken`. It also returns a non-nullable `ConsoleKeyInfo` making it clear that the only way to get out of this method is through cancellation. Then this change bubbles up to all the prompt APIs, also obsoleting the `IPrompt.ShowAsync` methods.

This is a better alternative to [Async overloads for AnsiConsole Prompt/Ask/Confirm (spectreconsole#1194)](spectreconsole#1194) where the actual need is having a `CancellationToken` to perform some cleanup and not having async prompt APIs.

Note that this is a breaking change since it modifies the signatures of the public `IAnsiConsoleInput` interface but that should not be an issue since it's impossible to use another implentation than `DefaultInput` when used through `AnsiConsole.Create(AnsiConsoleSettings settings)`.  

I have also searched for [implementers of IAnsiConsoleInput](https://grep.app/search?q=IAnsiConsoleInput) and I think this change won't break anything since nobody actually implemented `IAnsiConsoleInput`. Only exising implementations which have been udated are being used (at least across a half million public git repos).

The addition of the `CancellationToken` to `IPrompt.Show(IAnsiConsole console, CancellationToken cancellationToken = default)` is also a breaking change but it should be mitigated since it has bee introduced with a default value.
0xced added a commit to 0xced/spectre.console that referenced this pull request Sep 11, 2024
The current prompt APIs suffer from several problems.

First, the prompt APIs are fundamentally synchronous APIs. If we get down to the underlying implementation of all the prompt APIs, i.e. the `DefaultInput` class we can see some issues.

Here's are the problematic implementation (before this commit fixes it):

```csharp
public ConsoleKeyInfo? ReadKey(bool intercept)
{
    return System.Console.ReadKey(intercept);
}

public async Task<ConsoleKeyInfo?> ReadKeyAsync(bool intercept, CancellationToken cancellationToken)
{
    while (true)
    {
        if (cancellationToken.IsCancellationRequested)
        {
            return null;
        }

        if (System.Console.KeyAvailable)
        {
            break;
        }

        await Task.Delay(5, cancellationToken).ConfigureAwait(false);
    }

    return ReadKey(intercept);
}
```

* The syncrhonous `ReadKey` method returns a nullable `ConsoleKeyInfo` struct but `System.Console.ReadKey` can never return a nullable `ConsoleKeyInfo`.
* The asyncrhonous `ReadKeyAsync` method can return `null` only if cancellation has been requested. But this can never actually happen since [Fix deadlock when cancelling prompts (spectreconsole#1439)](spectreconsole#1439) was merged.
* The asyncrhonous `ReadKeyAsync` method is not actually an synchronous method, it's waiting for a key to be pressed in a loop, waiting 5 milliseconds before checking again if it can break out of the loop.

The proposed fix obsoletes the `ReadKeyAsync` method and add cancellation support to the synchronous `ReadKey` method through an optional  `CancellationToken`. It also returns a non-nullable `ConsoleKeyInfo` making it clear that the only way to get out of this method is through cancellation. Then this change bubbles up to all the prompt APIs, also obsoleting the `IPrompt.ShowAsync` methods.

This is a better alternative to [Async overloads for AnsiConsole Prompt/Ask/Confirm (spectreconsole#1194)](spectreconsole#1194) where the actual need is having a `CancellationToken` to perform some cleanup and not having async prompt APIs.

Note that this is a breaking change since it modifies the signatures of the public `IAnsiConsoleInput` interface but that should not be an issue since it's impossible to use another implentation than `DefaultInput` when used through `AnsiConsole.Create(AnsiConsoleSettings settings)`.  

I have also searched for [implementers of IAnsiConsoleInput](https://grep.app/search?q=IAnsiConsoleInput) and I think this change won't break anything since nobody actually implemented `IAnsiConsoleInput`. Only exising implementations which have been udated are being used (at least across a half million public git repos).

The addition of the `CancellationToken` to `IPrompt.Show(IAnsiConsole console, CancellationToken cancellationToken = default)` is also a breaking change but it should be mitigated since it has bee introduced with a default value.
0xced added a commit to 0xced/spectre.console that referenced this pull request Sep 11, 2024
The current prompt APIs suffer from several problems.

First, the prompt APIs are fundamentally synchronous APIs. If we get down to the underlying implementation of all the prompt APIs, i.e. the `DefaultInput` class we can see some issues.

Here's are the problematic implementation (before this commit fixes it):

```csharp
public ConsoleKeyInfo? ReadKey(bool intercept)
{
    return System.Console.ReadKey(intercept);
}

public async Task<ConsoleKeyInfo?> ReadKeyAsync(bool intercept, CancellationToken cancellationToken)
{
    while (true)
    {
        if (cancellationToken.IsCancellationRequested)
        {
            return null;
        }

        if (System.Console.KeyAvailable)
        {
            break;
        }

        await Task.Delay(5, cancellationToken).ConfigureAwait(false);
    }

    return ReadKey(intercept);
}
```

* The syncrhonous `ReadKey` method returns a nullable `ConsoleKeyInfo` struct but `System.Console.ReadKey` can never return a nullable `ConsoleKeyInfo`.
* The asyncrhonous `ReadKeyAsync` method can return `null` only if cancellation has been requested. But this can never actually happen since [Fix deadlock when cancelling prompts (spectreconsole#1439)](spectreconsole#1439) was merged.
* The asyncrhonous `ReadKeyAsync` method is not actually an synchronous method, it's waiting for a key to be pressed in a loop, waiting 5 milliseconds before checking again if it can break out of the loop.

The proposed fix obsoletes the `ReadKeyAsync` method and add cancellation support to the synchronous `ReadKey` method through an optional  `CancellationToken`. It also returns a non-nullable `ConsoleKeyInfo` making it clear that the only way to get out of this method is through cancellation. Then this change bubbles up to all the prompt APIs, also obsoleting the `IPrompt.ShowAsync` methods.

This is a better alternative to [Async overloads for AnsiConsole Prompt/Ask/Confirm (spectreconsole#1194)](spectreconsole#1194) where the actual need is having a `CancellationToken` to perform some cleanup and not having async prompt APIs.

Note that this is a breaking change since it modifies the signatures of the public `IAnsiConsoleInput` interface but that should not be an issue since it's impossible to use another implentation than `DefaultInput` when used through `AnsiConsole.Create(AnsiConsoleSettings settings)`.  

I have also searched for [implementers of IAnsiConsoleInput](https://grep.app/search?q=IAnsiConsoleInput) and I think this change won't break anything since nobody actually implemented `IAnsiConsoleInput`. Only exising implementations which have been udated are being used (at least across a half million public git repos).

The addition of the `CancellationToken` to `IPrompt.Show(IAnsiConsole console, CancellationToken cancellationToken = default)` is also a breaking change but it should be mitigated since it has bee introduced with a default value.
0xced added a commit to 0xced/spectre.console that referenced this pull request Sep 11, 2024
The current prompt APIs suffer from a few problems.

* The syncrhonous `ReadKey` method does not support cancellation.
* The syncrhonous `ReadKey` method returns a nullable `ConsoleKeyInfo` struct but `System.Console.ReadKey` can never return a nullable `ConsoleKeyInfo`.
* The asyncrhonous `ReadKeyAsync` method can return `null` only if cancellation has been requested. But this can never actually happen since [Fix deadlock when cancelling prompts (spectreconsole#1439)](spectreconsole#1439) was merged.

Here's are the problematic implementation (before this commit fixes it):

```csharp
public ConsoleKeyInfo? ReadKey(bool intercept)
{
    return System.Console.ReadKey(intercept);
}

public async Task<ConsoleKeyInfo?> ReadKeyAsync(bool intercept, CancellationToken cancellationToken)
{
    while (true)
    {
        if (cancellationToken.IsCancellationRequested)
        {
            return null;
        }

        if (System.Console.KeyAvailable)
        {
            break;
        }

        await Task.Delay(5, cancellationToken).ConfigureAwait(false);
    }

    return ReadKey(intercept);
}
```

Note that adding a `CancellationToken` parameter and returning `ConsoleKeyInfo` instead of `ConsoleKeyInfo?` is a breaking change since it modifies the signatures of the public `IAnsiConsoleInput` interface. But this should not be an issue since it's impossible to use another implentation than `DefaultInput` when used through `AnsiConsole.Create(AnsiConsoleSettings settings)`.  

I have also searched for [implementers of IAnsiConsoleInput](https://grep.app/search?q=IAnsiConsoleInput) and I think this change won't break anything since nobody actually implemented `IAnsiConsoleInput`. Only exising implementations which have been udated are being used (at least across a half million public git repos).

The addition of the `CancellationToken` to `IPrompt.Show(IAnsiConsole console, CancellationToken cancellationToken = default)` is also a breaking change but it should be mitigated since it has bee introduced with a default value.
0xced added a commit to 0xced/spectre.console that referenced this pull request Sep 19, 2024
The current prompt APIs suffer from a few problems.

* The syncrhonous `ReadKey` method does not support cancellation.
* The syncrhonous `ReadKey` method returns a nullable `ConsoleKeyInfo` struct but `System.Console.ReadKey` can never return a nullable `ConsoleKeyInfo`.
* The asyncrhonous `ReadKeyAsync` method can return `null` only if cancellation has been requested. But this can never actually happen since [Fix deadlock when cancelling prompts (spectreconsole#1439)](spectreconsole#1439) was merged.

Here's are the problematic implementation (before this commit fixes it):

```csharp
public ConsoleKeyInfo? ReadKey(bool intercept)
{
    return System.Console.ReadKey(intercept);
}

public async Task<ConsoleKeyInfo?> ReadKeyAsync(bool intercept, CancellationToken cancellationToken)
{
    while (true)
    {
        if (cancellationToken.IsCancellationRequested)
        {
            return null;
        }

        if (System.Console.KeyAvailable)
        {
            break;
        }

        await Task.Delay(5, cancellationToken).ConfigureAwait(false);
    }

    return ReadKey(intercept);
}
```

Note that adding a `CancellationToken` parameter and returning `ConsoleKeyInfo` instead of `ConsoleKeyInfo?` is a breaking change since it modifies the signatures of the public `IAnsiConsoleInput` interface. But this should not be an issue since it's impossible to use another implentation than `DefaultInput` when used through `AnsiConsole.Create(AnsiConsoleSettings settings)`.  

I have also searched for [implementers of IAnsiConsoleInput](https://grep.app/search?q=IAnsiConsoleInput) and I think this change won't break anything since nobody actually implemented `IAnsiConsoleInput`. Only exising implementations which have been udated are being used (at least across a half million public git repos).

The addition of the `CancellationToken` to `IPrompt.Show(IAnsiConsole console, CancellationToken cancellationToken = default)` is also a breaking change but it should be mitigated since it has bee introduced with a default value.
agocke pushed a commit to serdedotnet/serde.cmdline that referenced this pull request Nov 16, 2025
Updated
[Spectre.Console](https://github.com/spectreconsole/spectre.console)
from 0.49.1 to 0.54.0.

<details>
<summary>Release notes</summary>

_Sourced from [Spectre.Console's
releases](https://github.com/spectreconsole/spectre.console/releases)._

## 0.54.0

Version `0.54.0` of Spectre.Console has been released!

## Spectre.Console.Cli has a new home!

We've decided to move `Spectre.Console.Cli` to its own repository, where
we will prepare it for a _1.0_ release. This means that the
_Spectre.Console.Cli_ NuGet packages will no longer be versioned
together with _Spectre.Console_. They will now have a preview version
such as `1.0.0-alpha-0.x`.

There should be no issues staying on version _0.53.0_ of
_Spectre.Console.Cli_ until we release a stable version if you prefer
not to use a pre-release dependency.

## New unit testing package for Spectre.Console.Cli

There is now a new testing package for _Spectre.Console.Cli_ called
[Spectre.Console.Cli.Testing](https://www.nuget.org/packages/Spectre.Console.Cli.Testing).
This is where you will find the `CommandAppTester` from now on.

You can find more information about unit testing in the
[documentation](https://spectreconsole.net/cli/unit-testing).

## What's Changed

* Normalizes paths when writing exceptions to the console for tests. by
[@​phil-scott-78](https://github.com/phil-scott-78) in
[#​1758](spectreconsole/spectre.console#1758)
* Fixes issue with Panel not applying overflow to children by
[@​phil-scott-78](https://github.com/phil-scott-78) in
[#​1942](spectreconsole/spectre.console#1942)
* Remove Spectre.Console.Cli from repository by
[@​patriksvensson](https://github.com/patriksvensson) in
[#​1928](spectreconsole/spectre.console#1928)

**Full Changelog**:
spectreconsole/spectre.console@0.53.0...0.54.0

## 0.53.0

## What's Changed

* Add top-level CancellationToken support to Spectre.Console.Cli by
[@​0xced](https://github.com/0xced) in
[#​1911](spectreconsole/spectre.console#1911)
* Update the Spectre.Console.Cli documentation with CancellationToken by
[@​0xced](https://github.com/0xced) in
[#​1920](spectreconsole/spectre.console#1920)

**Full Changelog**:
spectreconsole/spectre.console@0.52.0...0.53.0

## 0.52.0

## What's Changed

* Add OpenCLI integration to Spectre.Console.Cli by
[@​patriksvensson](https://github.com/patriksvensson) in
[#​1909](spectreconsole/spectre.console#1909)
* Fix OPENCLI_VISIBILITY_INTERNAL to DefineConstants concat by
[@​devlead](https://github.com/devlead) in
[#​1912](spectreconsole/spectre.console#1912)

**Full Changelog**:
spectreconsole/spectre.console@0.51.1...0.52.0

## 0.51.1

## What's Changed

* Fix IndexOutOfRangeException in ExceptionFormatter by
[@​martincostello](https://github.com/martincostello) in
[#​1800](spectreconsole/spectre.console#1800)
* TestConsole can now be configured and accessed in CommandAppTester by
[@​magiino](https://github.com/magiino) in
[#​1803](spectreconsole/spectre.console#1803)
* Add ShowRowSeparators in Table Widget docs by
[@​bartoginski](https://github.com/bartoginski) in
[#​1807](spectreconsole/spectre.console#1807)
* Add support for required options by
[@​patriksvensson](https://github.com/patriksvensson) in
[#​1825](spectreconsole/spectre.console#1825)
* Added documentation for align widget by
[@​Elementttto](https://github.com/Elementttto) in
[#​1746](spectreconsole/spectre.console#1746)
* Fixed link not displayed in markup in Style.cs and added unit test
cases by [@​Elementttto](https://github.com/Elementttto) in
[#​1750](spectreconsole/spectre.console#1750)
* Update System.Memory dependency by
[@​WeihanLi](https://github.com/WeihanLi) in
[#​1832](spectreconsole/spectre.console#1832)
* Reduce memory usage for rune width cache. by
[@​Pannoniae](https://github.com/Pannoniae) in
[#​1756](spectreconsole/spectre.console#1756)
* Fix resizing of Live views with reduced size. by
[@​belucha](https://github.com/belucha) in
[#​1840](spectreconsole/spectre.console#1840)
* Corrects comment for optional text prompt by
[@​aljanabim](https://github.com/aljanabim) in
[#​1857](spectreconsole/spectre.console#1857)
* Update spinners by [@​FroggieFrog](https://github.com/FroggieFrog) in
[#​1873](spectreconsole/spectre.console#1873)
* Support J and K for navigating list prompts by
[@​tobias-tengler](https://github.com/tobias-tengler) in
[#​1877](spectreconsole/spectre.console#1877)
* Fix space triggering selection when items in the selection list have a
space. by [@​mitchdenny](https://github.com/mitchdenny) in
[#​1881](spectreconsole/spectre.console#1881)
* Fix bug setting Header by
[@​mattfennerom](https://github.com/mattfennerom) in
[#​1890](spectreconsole/spectre.console#1890)

## New Contributors
* [@​magiino](https://github.com/magiino) made their first contribution
in [#​1803](spectreconsole/spectre.console#1803)
* [@​bartoginski](https://github.com/bartoginski) made their first
contribution in
[#​1807](spectreconsole/spectre.console#1807)
* [@​Elementttto](https://github.com/Elementttto) made their first
contribution in
[#​1746](spectreconsole/spectre.console#1746)
* [@​WeihanLi](https://github.com/WeihanLi) made their first
contribution in
[#​1832](spectreconsole/spectre.console#1832)
* [@​Pannoniae](https://github.com/Pannoniae) made their first
contribution in
[#​1756](spectreconsole/spectre.console#1756)
* [@​belucha](https://github.com/belucha) made their first contribution
in [#​1840](spectreconsole/spectre.console#1840)
* [@​aljanabim](https://github.com/aljanabim) made their first
contribution in
[#​1857](spectreconsole/spectre.console#1857)
* [@​FroggieFrog](https://github.com/FroggieFrog) made their first
contribution in
[#​1873](spectreconsole/spectre.console#1873)
* [@​tobias-tengler](https://github.com/tobias-tengler) made their first
contribution in
[#​1877](spectreconsole/spectre.console#1877)
* [@​mitchdenny](https://github.com/mitchdenny) made their first
contribution in
[#​1881](spectreconsole/spectre.console#1881)
* [@​mattfennerom](https://github.com/mattfennerom) made their first
contribution in
[#​1890](spectreconsole/spectre.console#1890)

**Full Changelog**:
spectreconsole/spectre.console@0.50.0...0.51.1

## 0.50.0

## What's Changed

### General

* Strong name the assemblies by
[@​KirillOsenkov](https://github.com/KirillOsenkov) in
[#​1623](spectreconsole/spectre.console#1623)
* Update MSDN link to learn.microsoft.com by
[@​Kissaki](https://github.com/Kissaki) in
[#​1575](spectreconsole/spectre.console#1575)
* Add spanish translation for help strings by
[@​kzu](https://github.com/kzu) in
[#​1597](spectreconsole/spectre.console#1597)
* Update documentation: add example for the Text Prompt usage by
[@​davide-pi](https://github.com/davide-pi) in
[#​1636](spectreconsole/spectre.console#1636)
* Fix typos xml docs by [@​devlead](https://github.com/devlead) in
[#​1684](spectreconsole/spectre.console#1684)
* Upgrade SixLabors.ImageSharp to 3.1.7 by
[@​Moustafaa91](https://github.com/Moustafaa91) in
[#​1779](spectreconsole/spectre.console#1779)

### Console

* AOT Support for Spectre.Console by
[@​phil-scott-78](https://github.com/phil-scott-78) in
[#​1690](spectreconsole/spectre.console#1690)
* Make method reference to Markup.Escape more obvious by
[@​Kissaki](https://github.com/Kissaki) in
[#​1574](spectreconsole/spectre.console#1574)
* Fix `HtmlEncoder` Incorrectly Applying Italics to Bold Text by
[@​z4ryy](https://github.com/z4ryy) in
[#​1590](spectreconsole/spectre.console#1590)
* Fix Console Display Issue with Deleting Wide Characters by
[@​TonWin618](https://github.com/TonWin618) in
[#​1595](spectreconsole/spectre.console#1595)
* Fix search bug in prompt related to custom item types by
[@​patriksvensson](https://github.com/patriksvensson) in
[#​1627](spectreconsole/spectre.console#1627)
* Cleanup the prompt tests by [@​0xced](https://github.com/0xced) in
[#​1635](spectreconsole/spectre.console#1635)
* Add custom style for each calendar event by
[@​davide-pi](https://github.com/davide-pi) in
[#​1246](spectreconsole/spectre.console#1246)
* Fix tree expansion bug by [@​davide-pi](https://github.com/davide-pi)
in [#​1245](spectreconsole/spectre.console#1245)
* Enhance the style of the checkboxes for multi-selection by
[@​davide-pi](https://github.com/davide-pi) in
[#​1244](spectreconsole/spectre.console#1244)
* Improve exception if a (multi)selection prompt is used incorrectly by
[@​0xced](https://github.com/0xced) in
[#​1637](spectreconsole/spectre.console#1637)
* Fix incorrect panel height calculation in complex layout by
[@​BlazeFace](https://github.com/BlazeFace) in
[#​1514](spectreconsole/spectre.console#1514)
* Adding Enricher for Azure Pipelines by
[@​BlazeFace](https://github.com/BlazeFace) in
[#​1675](spectreconsole/spectre.console#1675)
* Added hex color conversion by [@​jsheely](https://github.com/jsheely)
in [#​1432](spectreconsole/spectre.console#1432)
* Fixed type in Segment description by
[@​PascalSenn](https://github.com/PascalSenn) in
[#​1687](spectreconsole/spectre.console#1687)
* Adding TransferSpeedColumn configuration to display bits/bytes +
binary/decimal prefixes by [@​tpill90](https://github.com/tpill90) in
[#​904](spectreconsole/spectre.console#904)
* Changes Emoji dictionary to OrdinalIgnoreCase for performance by
[@​phil-scott-78](https://github.com/phil-scott-78) in
[#​1691](spectreconsole/spectre.console#1691)
* ProgressTask.GetPercentage() returns 100 when max value is 0 by
[@​FrankRay78](https://github.com/FrankRay78) in
[#​1694](spectreconsole/spectre.console#1694)
* Async overloads for AnsiConsole Prompt/Ask/Confirm. by
[@​tmds](https://github.com/tmds) in
[#​1194](spectreconsole/spectre.console#1194)
* Support 3-digit hex codes in markup by
[@​TheMarteh](https://github.com/TheMarteh) in
[#​1708](spectreconsole/spectre.console#1708)
* Add async spinner extension methods and related documentation by
[@​phil-scott-78](https://github.com/phil-scott-78) in
[#​1747](spectreconsole/spectre.console#1747)
* Fix generic exception formatting by
[@​0xced](https://github.com/0xced) in
[#​1755](spectreconsole/spectre.console#1755)

### CLI

* Remove redundant explain settings ctor by
[@​gitfool](https://github.com/gitfool) in
[#​1534](spectreconsole/spectre.console#1534)
* Trim trailing comma in settings by
[@​devlead](https://github.com/devlead) in
[#​1550](spectreconsole/spectre.console#1550)
* Consider -? as an alias to -h by [@​kzu](https://github.com/kzu) in
[#​1552](spectreconsole/spectre.console#1552)
* Trimming of TestConsole output by CommandAppTester is user
configurable. by [@​FrankRay78](https://github.com/FrankRay78) in
[#​1739](spectreconsole/spectre.console#1739)
* Include resource files for additional cultures in HelpProvider. by
[@​Tolitech](https://github.com/Tolitech) in
[#​1717](spectreconsole/spectre.console#1717)
* Conditionally trim trailing periods of argument and option
descriptions by [@​TheTonttu](https://github.com/TheTonttu) in
[#​1740](spectreconsole/spectre.console#1740)
* Changed IConfigurator to return IConfigurator instead of void by
[@​byte2pixel](https://github.com/byte2pixel) in
[#​1762](spectreconsole/spectre.console#1762)
* Add parsed unknown flag to remaining arguments for a branch with a
default command by [@​FrankRay78](https://github.com/FrankRay78) in
[#​1660](spectreconsole/spectre.console#1660)
* Correctly show application version; execution of command with version
option by [@​FrankRay78](https://github.com/FrankRay78) in
[#​1663](spectreconsole/spectre.console#1663)
* Help output correctly decides when to show the version option by
[@​FrankRay78](https://github.com/FrankRay78) in
[#​1664](spectreconsole/spectre.console#1664)

## New Contributors
* [@​Kissaki](https://github.com/Kissaki) made their first contribution
in [#​1575](spectreconsole/spectre.console#1575)
 ... (truncated)

Commits viewable in [compare
view](https://github.com/spectreconsole/spectre.console/commits/0.54.0).
</details>

Updated
[Spectre.Console.Testing](https://github.com/spectreconsole/spectre.console)
from 0.46.0 to 0.54.0.

<details>
<summary>Release notes</summary>

_Sourced from [Spectre.Console.Testing's
releases](https://github.com/spectreconsole/spectre.console/releases)._

## 0.54.0

Version `0.54.0` of Spectre.Console has been released!

## Spectre.Console.Cli has a new home!

We've decided to move `Spectre.Console.Cli` to its own repository, where
we will prepare it for a _1.0_ release. This means that the
_Spectre.Console.Cli_ NuGet packages will no longer be versioned
together with _Spectre.Console_. They will now have a preview version
such as `1.0.0-alpha-0.x`.

There should be no issues staying on version _0.53.0_ of
_Spectre.Console.Cli_ until we release a stable version if you prefer
not to use a pre-release dependency.

## New unit testing package for Spectre.Console.Cli

There is now a new testing package for _Spectre.Console.Cli_ called
[Spectre.Console.Cli.Testing](https://www.nuget.org/packages/Spectre.Console.Cli.Testing).
This is where you will find the `CommandAppTester` from now on.

You can find more information about unit testing in the
[documentation](https://spectreconsole.net/cli/unit-testing).

## What's Changed

* Normalizes paths when writing exceptions to the console for tests. by
[@​phil-scott-78](https://github.com/phil-scott-78) in
[#​1758](spectreconsole/spectre.console#1758)
* Fixes issue with Panel not applying overflow to children by
[@​phil-scott-78](https://github.com/phil-scott-78) in
[#​1942](spectreconsole/spectre.console#1942)
* Remove Spectre.Console.Cli from repository by
[@​patriksvensson](https://github.com/patriksvensson) in
[#​1928](spectreconsole/spectre.console#1928)

**Full Changelog**:
spectreconsole/spectre.console@0.53.0...0.54.0

## 0.53.0

## What's Changed

* Add top-level CancellationToken support to Spectre.Console.Cli by
[@​0xced](https://github.com/0xced) in
[#​1911](spectreconsole/spectre.console#1911)
* Update the Spectre.Console.Cli documentation with CancellationToken by
[@​0xced](https://github.com/0xced) in
[#​1920](spectreconsole/spectre.console#1920)

**Full Changelog**:
spectreconsole/spectre.console@0.52.0...0.53.0

## 0.52.0

## What's Changed

* Add OpenCLI integration to Spectre.Console.Cli by
[@​patriksvensson](https://github.com/patriksvensson) in
[#​1909](spectreconsole/spectre.console#1909)
* Fix OPENCLI_VISIBILITY_INTERNAL to DefineConstants concat by
[@​devlead](https://github.com/devlead) in
[#​1912](spectreconsole/spectre.console#1912)

**Full Changelog**:
spectreconsole/spectre.console@0.51.1...0.52.0

## 0.51.1

## What's Changed

* Fix IndexOutOfRangeException in ExceptionFormatter by
[@​martincostello](https://github.com/martincostello) in
[#​1800](spectreconsole/spectre.console#1800)
* TestConsole can now be configured and accessed in CommandAppTester by
[@​magiino](https://github.com/magiino) in
[#​1803](spectreconsole/spectre.console#1803)
* Add ShowRowSeparators in Table Widget docs by
[@​bartoginski](https://github.com/bartoginski) in
[#​1807](spectreconsole/spectre.console#1807)
* Add support for required options by
[@​patriksvensson](https://github.com/patriksvensson) in
[#​1825](spectreconsole/spectre.console#1825)
* Added documentation for align widget by
[@​Elementttto](https://github.com/Elementttto) in
[#​1746](spectreconsole/spectre.console#1746)
* Fixed link not displayed in markup in Style.cs and added unit test
cases by [@​Elementttto](https://github.com/Elementttto) in
[#​1750](spectreconsole/spectre.console#1750)
* Update System.Memory dependency by
[@​WeihanLi](https://github.com/WeihanLi) in
[#​1832](spectreconsole/spectre.console#1832)
* Reduce memory usage for rune width cache. by
[@​Pannoniae](https://github.com/Pannoniae) in
[#​1756](spectreconsole/spectre.console#1756)
* Fix resizing of Live views with reduced size. by
[@​belucha](https://github.com/belucha) in
[#​1840](spectreconsole/spectre.console#1840)
* Corrects comment for optional text prompt by
[@​aljanabim](https://github.com/aljanabim) in
[#​1857](spectreconsole/spectre.console#1857)
* Update spinners by [@​FroggieFrog](https://github.com/FroggieFrog) in
[#​1873](spectreconsole/spectre.console#1873)
* Support J and K for navigating list prompts by
[@​tobias-tengler](https://github.com/tobias-tengler) in
[#​1877](spectreconsole/spectre.console#1877)
* Fix space triggering selection when items in the selection list have a
space. by [@​mitchdenny](https://github.com/mitchdenny) in
[#​1881](spectreconsole/spectre.console#1881)
* Fix bug setting Header by
[@​mattfennerom](https://github.com/mattfennerom) in
[#​1890](spectreconsole/spectre.console#1890)

## New Contributors
* [@​magiino](https://github.com/magiino) made their first contribution
in [#​1803](spectreconsole/spectre.console#1803)
* [@​bartoginski](https://github.com/bartoginski) made their first
contribution in
[#​1807](spectreconsole/spectre.console#1807)
* [@​Elementttto](https://github.com/Elementttto) made their first
contribution in
[#​1746](spectreconsole/spectre.console#1746)
* [@​WeihanLi](https://github.com/WeihanLi) made their first
contribution in
[#​1832](spectreconsole/spectre.console#1832)
* [@​Pannoniae](https://github.com/Pannoniae) made their first
contribution in
[#​1756](spectreconsole/spectre.console#1756)
* [@​belucha](https://github.com/belucha) made their first contribution
in [#​1840](spectreconsole/spectre.console#1840)
* [@​aljanabim](https://github.com/aljanabim) made their first
contribution in
[#​1857](spectreconsole/spectre.console#1857)
* [@​FroggieFrog](https://github.com/FroggieFrog) made their first
contribution in
[#​1873](spectreconsole/spectre.console#1873)
* [@​tobias-tengler](https://github.com/tobias-tengler) made their first
contribution in
[#​1877](spectreconsole/spectre.console#1877)
* [@​mitchdenny](https://github.com/mitchdenny) made their first
contribution in
[#​1881](spectreconsole/spectre.console#1881)
* [@​mattfennerom](https://github.com/mattfennerom) made their first
contribution in
[#​1890](spectreconsole/spectre.console#1890)

**Full Changelog**:
spectreconsole/spectre.console@0.50.0...0.51.1

## 0.50.0

## What's Changed

### General

* Strong name the assemblies by
[@​KirillOsenkov](https://github.com/KirillOsenkov) in
[#​1623](spectreconsole/spectre.console#1623)
* Update MSDN link to learn.microsoft.com by
[@​Kissaki](https://github.com/Kissaki) in
[#​1575](spectreconsole/spectre.console#1575)
* Add spanish translation for help strings by
[@​kzu](https://github.com/kzu) in
[#​1597](spectreconsole/spectre.console#1597)
* Update documentation: add example for the Text Prompt usage by
[@​davide-pi](https://github.com/davide-pi) in
[#​1636](spectreconsole/spectre.console#1636)
* Fix typos xml docs by [@​devlead](https://github.com/devlead) in
[#​1684](spectreconsole/spectre.console#1684)
* Upgrade SixLabors.ImageSharp to 3.1.7 by
[@​Moustafaa91](https://github.com/Moustafaa91) in
[#​1779](spectreconsole/spectre.console#1779)

### Console

* AOT Support for Spectre.Console by
[@​phil-scott-78](https://github.com/phil-scott-78) in
[#​1690](spectreconsole/spectre.console#1690)
* Make method reference to Markup.Escape more obvious by
[@​Kissaki](https://github.com/Kissaki) in
[#​1574](spectreconsole/spectre.console#1574)
* Fix `HtmlEncoder` Incorrectly Applying Italics to Bold Text by
[@​z4ryy](https://github.com/z4ryy) in
[#​1590](spectreconsole/spectre.console#1590)
* Fix Console Display Issue with Deleting Wide Characters by
[@​TonWin618](https://github.com/TonWin618) in
[#​1595](spectreconsole/spectre.console#1595)
* Fix search bug in prompt related to custom item types by
[@​patriksvensson](https://github.com/patriksvensson) in
[#​1627](spectreconsole/spectre.console#1627)
* Cleanup the prompt tests by [@​0xced](https://github.com/0xced) in
[#​1635](spectreconsole/spectre.console#1635)
* Add custom style for each calendar event by
[@​davide-pi](https://github.com/davide-pi) in
[#​1246](spectreconsole/spectre.console#1246)
* Fix tree expansion bug by [@​davide-pi](https://github.com/davide-pi)
in [#​1245](spectreconsole/spectre.console#1245)
* Enhance the style of the checkboxes for multi-selection by
[@​davide-pi](https://github.com/davide-pi) in
[#​1244](spectreconsole/spectre.console#1244)
* Improve exception if a (multi)selection prompt is used incorrectly by
[@​0xced](https://github.com/0xced) in
[#​1637](spectreconsole/spectre.console#1637)
* Fix incorrect panel height calculation in complex layout by
[@​BlazeFace](https://github.com/BlazeFace) in
[#​1514](spectreconsole/spectre.console#1514)
* Adding Enricher for Azure Pipelines by
[@​BlazeFace](https://github.com/BlazeFace) in
[#​1675](spectreconsole/spectre.console#1675)
* Added hex color conversion by [@​jsheely](https://github.com/jsheely)
in [#​1432](spectreconsole/spectre.console#1432)
* Fixed type in Segment description by
[@​PascalSenn](https://github.com/PascalSenn) in
[#​1687](spectreconsole/spectre.console#1687)
* Adding TransferSpeedColumn configuration to display bits/bytes +
binary/decimal prefixes by [@​tpill90](https://github.com/tpill90) in
[#​904](spectreconsole/spectre.console#904)
* Changes Emoji dictionary to OrdinalIgnoreCase for performance by
[@​phil-scott-78](https://github.com/phil-scott-78) in
[#​1691](spectreconsole/spectre.console#1691)
* ProgressTask.GetPercentage() returns 100 when max value is 0 by
[@​FrankRay78](https://github.com/FrankRay78) in
[#​1694](spectreconsole/spectre.console#1694)
* Async overloads for AnsiConsole Prompt/Ask/Confirm. by
[@​tmds](https://github.com/tmds) in
[#​1194](spectreconsole/spectre.console#1194)
* Support 3-digit hex codes in markup by
[@​TheMarteh](https://github.com/TheMarteh) in
[#​1708](spectreconsole/spectre.console#1708)
* Add async spinner extension methods and related documentation by
[@​phil-scott-78](https://github.com/phil-scott-78) in
[#​1747](spectreconsole/spectre.console#1747)
* Fix generic exception formatting by
[@​0xced](https://github.com/0xced) in
[#​1755](spectreconsole/spectre.console#1755)

### CLI

* Remove redundant explain settings ctor by
[@​gitfool](https://github.com/gitfool) in
[#​1534](spectreconsole/spectre.console#1534)
* Trim trailing comma in settings by
[@​devlead](https://github.com/devlead) in
[#​1550](spectreconsole/spectre.console#1550)
* Consider -? as an alias to -h by [@​kzu](https://github.com/kzu) in
[#​1552](spectreconsole/spectre.console#1552)
* Trimming of TestConsole output by CommandAppTester is user
configurable. by [@​FrankRay78](https://github.com/FrankRay78) in
[#​1739](spectreconsole/spectre.console#1739)
* Include resource files for additional cultures in HelpProvider. by
[@​Tolitech](https://github.com/Tolitech) in
[#​1717](spectreconsole/spectre.console#1717)
* Conditionally trim trailing periods of argument and option
descriptions by [@​TheTonttu](https://github.com/TheTonttu) in
[#​1740](spectreconsole/spectre.console#1740)
* Changed IConfigurator to return IConfigurator instead of void by
[@​byte2pixel](https://github.com/byte2pixel) in
[#​1762](spectreconsole/spectre.console#1762)
* Add parsed unknown flag to remaining arguments for a branch with a
default command by [@​FrankRay78](https://github.com/FrankRay78) in
[#​1660](spectreconsole/spectre.console#1660)
* Correctly show application version; execution of command with version
option by [@​FrankRay78](https://github.com/FrankRay78) in
[#​1663](spectreconsole/spectre.console#1663)
* Help output correctly decides when to show the version option by
[@​FrankRay78](https://github.com/FrankRay78) in
[#​1664](spectreconsole/spectre.console#1664)

## New Contributors
* [@​Kissaki](https://github.com/Kissaki) made their first contribution
in [#​1575](spectreconsole/spectre.console#1575)
 ... (truncated)

## 0.49.0

## What's Changed

* Cleanup line endings by @​nils-a in
spectreconsole/spectre.console#1381
* Added Spectre.Console.Cli to quick-start. by @​nils-a in
spectreconsole/spectre.console#1413
* Fix rendering of ListPrompt for odd pageSizes by @​nils-a in
spectreconsole/spectre.console#1365
* Remove mandelbrot example due to conflicting license by
@​patriksvensson in
spectreconsole/spectre.console#1426
* Allow specifying a property to ignore the use of build-time packages
for versioning and analysis by @​baronfel in
spectreconsole/spectre.console#1425
* Add the possibility to register multiple interceptors by @​nils-a in
spectreconsole/spectre.console#1412
* Added the ITypeResolver to the ExceptionHandler by @​nils-a in
spectreconsole/spectre.console#1411
* Updated typo in CommandApp.md by @​DarqueWarrior in
spectreconsole/spectre.console#1431
* Command with -v displays app version instead of executing the command
by @​FrankRay78 in
spectreconsole/spectre.console#1427
* HelpProvider colors should be configurable by @​FrankRay78 in
spectreconsole/spectre.console#1408
* Direct contributors to the current CONTRIBUTING.md by @​tonycknight in
spectreconsole/spectre.console#1435
* Fix deadlock when cancelling prompts by @​caesay in
spectreconsole/spectre.console#1439
* Add progress bar value formatter by @​jsheely in
spectreconsole/spectre.console#1414
* Update dependencies and do some clean-up by @​patriksvensson in
spectreconsole/spectre.console#1440
* Delete [UsesVerify], which has become obsolete through the latest
update. by @​danielcweber in
spectreconsole/spectre.console#1456
* Don't erase secret prompt text upon backspace when mask is null by
@​danielcweber in
spectreconsole/spectre.console#1458
* Update dependencies to the latest version by @​patriksvensson in
spectreconsole/spectre.console#1459
* Automatically register command settings by @​patriksvensson in
spectreconsole/spectre.console#1463
* Remove [DebuggerDisplay] from Paragraph by @​martincostello in
spectreconsole/spectre.console#1477
* Selection Prompt Search by @​slang25 in
spectreconsole/spectre.console#1289
* Update dependency SixLabors.ImageSharp to v3.1.3 by @​renovate in
spectreconsole/spectre.console#1486
* Positioned Progress Tasks - Before or After Other Tasks by @​thomhurst
in spectreconsole/spectre.console#1250
* Added NoStackTrace to ExceptionFormats by @​gerardog in
spectreconsole/spectre.console#1489
* Pipe character for listing options (issue 1434) by @​FrankRay78 in
spectreconsole/spectre.console#1498
* Improve XmlDoc output by @​yenneferofvengerberg in
spectreconsole/spectre.console#1503
* Revert 71a5d830 to undo flickering regression by @​phil-scott-78 in
spectreconsole/spectre.console#1504
* AddDelegate uses an abstract type when used in a branch by @​BlazeFace
in spectreconsole/spectre.console#1509
* Missing Separator When Headers are Hidden by @​BlazeFace in
spectreconsole/spectre.console#1513
* Expose raw arguments on the command context by @​patriksvensson in
spectreconsole/spectre.console#1523
* Add token representation to remaining arguments by @​patriksvensson in
spectreconsole/spectre.console#1525

## New Contributors
* @​baronfel made their first contribution in
spectreconsole/spectre.console#1425
* @​DarqueWarrior made their first contribution in
spectreconsole/spectre.console#1431
* @​tonycknight made their first contribution in
spectreconsole/spectre.console#1435
* @​caesay made their first contribution in
spectreconsole/spectre.console#1439
* @​jsheely made their first contribution in
spectreconsole/spectre.console#1414
* @​danielcweber made their first contribution in
spectreconsole/spectre.console#1456
* @​martincostello made their first contribution in
spectreconsole/spectre.console#1477
* @​slang25 made their first contribution in
spectreconsole/spectre.console#1289
* @​thomhurst made their first contribution in
spectreconsole/spectre.console#1250
* @​gerardog made their first contribution in
spectreconsole/spectre.console#1489
* @​yenneferofvengerberg made their first contribution in
spectreconsole/spectre.console#1503
* @​BlazeFace made their first contribution in
spectreconsole/spectre.console#1509

**Full Changelog**:
spectreconsole/spectre.console@0.48.0...0.49.0

## 0.48.0

Version 0.48 of Spectre.Console has been released!

Several rendering issues have been addressed, such as fixing problems
related to rendering inside status causing corrupt output, avoiding
exceptions on Rows with no children, as well as addressing rendering
bugs in TextPath.

New features have been added, such as the ability to show separators
between table rows. Other notable additions include progress bar header
and footer support, customizable (and localizable) help providers, and
the option to style text and confirmation prompts.

# New Contributors

* [@​icalvo](https://github.com/icalvo) made their first contribution in
[#​1215](spectreconsole/spectre.console#1215)
* [@​fredrikbentzen](https://github.com/fredrikbentzen) made their first
contribution in
[#​1132](spectreconsole/spectre.console#1132)
* [@​jeppevammenkristensen](https://github.com/jeppevammenkristensen)
made their first contribution in
[#​1241](spectreconsole/spectre.console#1241)
* [@​tomaszprasolek](https://github.com/tomaszprasolek) made their first
contribution in
[#​1257](spectreconsole/spectre.console#1257)
* [@​olabacker](https://github.com/olabacker) made their first
contribution in
[#​1302](spectreconsole/spectre.console#1302)
* [@​AndrewRathbun](https://github.com/AndrewRathbun) made their first
contribution in
[#​1315](spectreconsole/spectre.console#1315)


# What's Changed

## Rendering

* Add .NET 8 support by
[@​patriksvensson](https://github.com/patriksvensson) in
[#​1367](spectreconsole/spectre.console#1367)
* Fixed render issue where writeline inside status caused corrupt output
#​415 #​694 by [@​fredrikbentzen](https://github.com/fredrikbentzen) in
[#​1132]([#​1132](spectreconsole/spectre.console#1132))
* Relax the SDK requirements by rolling forward to the latest feature by
[@​0xced](https://github.com/0xced) in
[#​1237]([#​1237](spectreconsole/spectre.console#1237))
* Add fix to avoid exception on rows with no children by
[@​jeppevammenkristensen](https://github.com/jeppevammenkristensen) in
[#​1241]([#​1241](spectreconsole/spectre.console#1241))
* Set `end_of_line` to `LF` instead of `CRLF` by
[@​0xced](https://github.com/0xced) in
[#​1256](spectreconsole/spectre.console#1256)
* Fix `Rule` widget docs by
[@​tomaszprasolek](https://github.com/tomaszprasolek) in
[#​1257](spectreconsole/spectre.console#1257)
* Added the missing columns-cast by [@​nils](https://github.com/nils)-a
in [#​1294](spectreconsole/spectre.console#1294)
* Render tables with zero-width columns by
[@​Frassle](https://github.com/Frassle) in
[#​1197](spectreconsole/spectre.console#1197)
* Fix figlet centering possibly throwing due to negative size by
[@​olabacker](https://github.com/olabacker) in
[#​1302](spectreconsole/spectre.console#1302)
* Add option to show separator between table rows by
[@​patriksvensson](https://github.com/patriksvensson) in
[#​1304](spectreconsole/spectre.console#1304)
* Enable setting the color of the values in a `BreakdownChart` by
[@​nils](https://github.com/nils)-a in
[#​1303](spectreconsole/spectre.console#1303)
* Progress bar header and footer by
[@​phil](https://github.com/phil)-scott-78 in
[#​1262](spectreconsole/spectre.console#1262)
* Add an example showing the decorations off by
[@​Frassle](https://github.com/Frassle) in
[#​1191](spectreconsole/spectre.console#1191)
* Fixes `TextPath` rendering bugs by
[@​patriksvensson](https://github.com/patriksvensson) in
[#​1308](spectreconsole/spectre.console#1308)
* Fix greedy row measure by [@​nils](https://github.com/nils)-a in
[#​1338](spectreconsole/spectre.console#1338)
* Fix `AnsiConsoleOutput` safe height by
[@​0xced](https://github.com/0xced) in
[#​1358](spectreconsole/spectre.console#1358)
* Allow passing a nullable style in `DefaultValueStyle()` and
`ChoicesStyle()` by [@​0xced](https://github.com/0xced) in
[#​1359](spectreconsole/spectre.console#1359)
* Allow `ConfirmationPrompt` Styling by
[@​wbaldoumas](https://github.com/wbaldoumas) in
[#​1210](spectreconsole/spectre.console#1210)

## CLI
* Add async command unit tests by
[@​FrankRay78](https://github.com/FrankRay78) in
[#​1228](spectreconsole/spectre.console#1228)
* Add support for async delegate by
[@​icalvo](https://github.com/icalvo) in
[#​1215]([#​1215](spectreconsole/spectre.console#1215))
* Remove unnecessary `[NotNull]` attributes by
[@​0xced](https://github.com/0xced) in
[#​1255](spectreconsole/spectre.console#1255)
* Allow custom help providers by
[@​FrankRay78](https://github.com/FrankRay78) in
[#​1259](spectreconsole/spectre.console#1259)
* Specified details for settings for the argument vector by
[@​nils](https://github.com/nils)-a in
[#​1301](spectreconsole/spectre.console#1301)
* Add support for localisation in help provider by
[@​FrankRay78](https://github.com/FrankRay78) in
[#​1349](spectreconsole/spectre.console#1349)
* Fix DefaultValue for `FileInfo` and `DirectoryInfo` by
[@​0xced](https://github.com/0xced) in
[#​1238](spectreconsole/spectre.console#1238)

## Documentation & Samples
* Added a minimal PR template by [@​nils](https://github.com/nils)-a in
[#​1318](spectreconsole/spectre.console#1318)
 ... (truncated)

## 0.47.0

## What's Changed
* Add Alacritty to the supported terminals in AnsiDetector by @​MaxAtoms
in spectreconsole/spectre.console#1211
* Add an implicit operator to convert from Color to Style by @​0xced in
spectreconsole/spectre.console#1160
* Allow case-insensitive confirmation prompt by @​MartinZikmund in
spectreconsole/spectre.console#1151
* Allow configuration of confirmation prompt comparison via
`StringComparer` by @​MartinZikmund in
spectreconsole/spectre.console#1161
* Do not register analyzer if SpectreConsole is not available in the
current compilation by @​meziantou in
spectreconsole/spectre.console#1172
* Ensure correct comparer is used for `TextPrompt` by @​MartinZikmund in
spectreconsole/spectre.console#1152
* Forward CancellationToken to GetOperation by @​meziantou in
spectreconsole/spectre.console#1173
* Fix minor typo in Prompt example by @​Frassle in
spectreconsole/spectre.console#1183
* Fix coconut spelling by @​phillip-haydon in
spectreconsole/spectre.console#1218
* Improve conversion error messages by @​0xced in
spectreconsole/spectre.console#1141
* Make the code fix more robust and detect more symbols of type
IAnsiConsole by @​meziantou in
spectreconsole/spectre.console#1169
* Minor Refactorings by @​Elisha-Aguilera in
spectreconsole/spectre.console#1081
* Simplify access to the SemanticModel in analyzers by @​meziantou in
spectreconsole/spectre.console#1167
* Use SymbolEqualityComparer.Default when possible by @​meziantou in
spectreconsole/spectre.console#1171
* Use StringComparison.Ordinal instead of culture-sensitive comparisons
by @​meziantou in
spectreconsole/spectre.console#1174

## Command line updates
* Add possibility to set description and/or data for the default command
by @​0xced in
spectreconsole/spectre.console#1091
* Add support for converting command parameters into FileInfo and
DirectoryInfo by @​0xced in
spectreconsole/spectre.console#1145
* Add support for arrays in [DefaultValue] attributes by @​0xced in
spectreconsole/spectre.console#1164
* Add ability to pass example args using `params` syntax by @​seclerp in
spectreconsole/spectre.console#1166
* Alias for branches by @​ilyahryapko in
spectreconsole/spectre.console#1131
* Command line improvements by @​FrankRay78 in
spectreconsole/spectre.console#1103

## Documentation updates
* Alignment => Justification Docs Fixes by @​wbaldoumas in
spectreconsole/spectre.console#1143

## New Contributors
* @​wbaldoumas made their first contribution in
spectreconsole/spectre.console#1143
* @​MartinZikmund made their first contribution in
spectreconsole/spectre.console#1151
* @​ilyahryapko made their first contribution in
spectreconsole/spectre.console#1131
* @​meziantou made their first contribution in
spectreconsole/spectre.console#1174
* @​MaxAtoms made their first contribution in
spectreconsole/spectre.console#1211
* @​phillip-haydon made their first contribution in
spectreconsole/spectre.console#1218

**Full Changelog**:
spectreconsole/spectre.console@0.46.0...0.47.0

Commits viewable in [compare
view](spectreconsole/spectre.console@0.46.0...0.54.0).
</details>

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after
your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge
and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating
it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)


</details>

Signed-off-by: dependabot[bot] <[email protected]>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Prompt Cancellation is broken

2 participants