Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
63ff5a6
WIP: Builds but doesn't run
tig Nov 13, 2025
ab76e4a
WIP: Got it basically working.
tig Nov 13, 2025
8eccca8
WIP: Fixing bugs - -Filter is not working right
tig Nov 14, 2025
5795efa
Fixed Select All bug.
tig Nov 14, 2025
9af07aa
Code cleanup
tig Nov 14, 2025
4245236
WIP: Starting to get SOT working.
tig Nov 14, 2025
5fd9efd
Got SOT working + code cleanup
tig Nov 14, 2025
1052c39
Code modernization and cleanup.
tig Nov 14, 2025
9f4bc39
Refactor ConsoleGui to OutConsoleGridView
tig Nov 14, 2025
ee84e8a
Reverted cmdlet to ConsoleGridView
tig Nov 14, 2025
c22ca70
Massive OutConsoleGridView and ShowObjectTree refactor to prepare for…
tig Nov 14, 2025
b0cdb95
Enhance null checks, caching, and code readability
tig Nov 14, 2025
b8dbaa6
Refactor runspace creation in TypeGetter.cs
tig Nov 14, 2025
c5f7673
Refactor and enhance object formatting in OCGV
tig Nov 14, 2025
f8eec62
Refactor and enhance grid view rendering logic
tig Nov 15, 2025
aac40e6
Moved header into ListView's Padding.
tig Nov 15, 2025
f14ce81
WIP: Added -AllProperties option
tig Nov 15, 2025
71cca64
Better use of v2 tech + added -AllProperties
tig Nov 15, 2025
1432452
Ensure explicit List conversion for dataTableColumns
tig Nov 15, 2025
f23c77f
Update to .NET 10 and Terminal.Gui 2.0 API
tig Jan 12, 2026
8ee4bc1
updated to latest TG
tig Jan 16, 2026
55f693f
Merge branch 'terminal_gui_v2' of tig:tig/GraphicalTools into termina…
tig Jan 28, 2026
627ae55
Tons of fixes. Code cleanup. 99% working.
tig Jan 28, 2026
fa17dff
Update ListView API usage and improve marking logic
tig Mar 4, 2026
bbbc054
Refactor grid view data/layout; remove GridViewDetails
tig Mar 4, 2026
c1b9423
Remove duplicate property assignments in OutGridViewWindow
tig Mar 4, 2026
8d9816c
Realign build config with PowerShell team model
tig Mar 11, 2026
eeebd7e
Add local nuget.config override support for builds without Azure DevO…
tig Apr 8, 2026
a2afaec
Update Terminal.Gui to beta.149 and adapt to API changes
tig Apr 9, 2026
1123190
Merge branch 'terminal_gui_v2' of tig:tig/GraphicalTools into termina…
tig Apr 9, 2026
a9b8e93
Add xUnit test project with unit and integration tests
tig Apr 10, 2026
7e463b5
Fixed SHOT
tig Apr 10, 2026
5cc2652
Merge branch 'terminal_gui_v2' of tig:tig/GraphicalTools into termina…
tig Apr 10, 2026
b93f756
Fixes doc bugs
tig Apr 10, 2026
d85e9ed
Fixes README
tig Apr 10, 2026
e9b655c
Merge branch 'terminal_gui_v2' of github.com:tig/GraphicalTools into …
tig Apr 10, 2026
e2533a1
Add Out-ConsoleTableView (octv) cmdlet using Terminal.Gui TableView
tig Apr 11, 2026
48bfe56
Merge branch 'terminal_gui_v2' of github.com:tig/GraphicalTools into …
tig Apr 20, 2026
a835311
Updated to latest tg
tig Apr 20, 2026
a5d2f60
v1.0.0: Terminal.Gui v2
tig Apr 20, 2026
1a93320
Remove AllProperties feature
tig Apr 20, 2026
be09e1a
Refactor driver param, MinUI, and Terminal.Gui integration
tig Apr 20, 2026
d9a7fcb
Remove Out-ConsoleTableView prototype
tig Apr 20, 2026
8ee9f3f
Update docs for new params and clarify usage examples
tig Apr 20, 2026
6266046
Merge branch 'terminal_gui_v2' of tig:tig/GraphicalTools into termina…
tig Apr 21, 2026
724affc
Update Terminal.Gui to 2.0.0-rc.3 and solution config
tig Apr 22, 2026
2fa7898
Add Out-ConsoleTableView with native multi-selection and streaming pi…
tig Apr 30, 2026
4f4841d
Restore .vscode and launchSettings debug profiles
tig Apr 30, 2026
2b708f9
Upgrade Terminal.Gui to 2.0.1
tig Apr 30, 2026
6660b33
Fix Test task: specify slnx for dotnet test
tig Apr 30, 2026
e4074de
Add -FullScreen parameter to Out-ConsoleTableView
tig Apr 30, 2026
23b1afa
Restore single-feed nuget.config (CFS only)
andyleejordan Apr 30, 2026
b4c11ca
Replace .sln with .slnx; drop IDE-template scaffolding
andyleejordan Apr 29, 2026
b752146
Add GraphicalTools.Dev.slnx to .gitignore
tig May 1, 2026
a804f8d
Set AppName in StartUi before enabling configuration
tig May 1, 2026
6cfc8ea
Improve dynamic sizing for inline OutTableViewWindow
tig May 1, 2026
5bbb433
Fixes #250
tig May 1, 2026
574581a
Improve OCTV streaming performance
tig May 1, 2026
cf538e7
Adjust MinUI border logic
tig May 1, 2026
63aabf2
Remove default Title value in ApplicationData init
tig May 1, 2026
8278a28
Add column sorting with direction indicators (▲/▼)
tig May 1, 2026
24334e1
Add comprehensive unit tests for OutTableViewDataSource and OutTableV…
tig May 1, 2026
e4be9df
Remove OCGV, rename OCTV to OCGV
tig May 4, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/ci-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ jobs:

- name: Build and test
shell: pwsh
run: Invoke-Build -Configuration Release Build, Package
run: Invoke-Build -Configuration Release Build, Test, Package

- name: Upload module
if: always()
Expand Down
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,3 +4,12 @@ bin/
obj/
publish/
*.sln

# IDE support (keep locally, don't track)
/.vs/
*.user
*.suo
*.sln.DotSettings
Properties/launchSettings.json
nuget.local.config
GraphicalTools.Dev.slnx
7 changes: 7 additions & 0 deletions .vscode/extensions.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"recommendations": [
"ms-dotnettools.csdevkit",
"ms-dotnettools.csharp",
"ms-vscode.powershell"
]
}
40 changes: 40 additions & 0 deletions .vscode/launch.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{
// Single debug profile that prompts for a sample command at launch.
// Add new scenarios by appending an option to the "sampleCommand" input below.
"version": "0.2.0",
"inputs": [
{
"id": "sampleCommand",
"type": "pickString",
"description": "Sample command to run after importing the module",
"default": "Get-Process | Out-ConsoleGridView -Debug",
"options": [
"Get-Process | Out-ConsoleGridView -Debug",
"Get-Process | Select-Object ProcessName, Id, CPU | Out-ConsoleGridView -Debug -Filter com",
"Get-Process | Out-ConsoleGridView -MinUi",
"Get-Process | Select-Object ProcessName, Id, Handles, NPM, PM, WS, CPU | Out-ConsoleGridView",
"Get-ChildItem | Out-ConsoleGridView -OutputMode Single",
"Get-Process | Show-ObjectTree"
]
}
],
"configurations": [
{
"name": "ConsoleGuiTools",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build",
"program": "pwsh",
"args": [
"-NoProfile",
"-NoLogo",
"-NoExit",
"-Command",
"Import-Module ${workspaceFolder}/module/Microsoft.PowerShell.ConsoleGuiTools.psd1; ${input:sampleCommand}"
],
"cwd": "${workspaceFolder}",
"console": "integratedTerminal",
"stopAtEntry": false
}
]
}
3 changes: 3 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
{
"git.ignoreLimitWarning": true
}
60 changes: 60 additions & 0 deletions .vscode/tasks.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "build",
"detail": "Build module via Invoke-Build (copies to ./module/)",
"type": "process",
"command": "pwsh",
"args": [
"-NoProfile",
"-Command",
"Invoke-Build Build"
],
"options": {
"cwd": "${workspaceFolder}"
},
"group": {
"kind": "build",
"isDefault": true
},
"presentation": {
"reveal": "silent",
"panel": "shared",
"clear": true
},
"problemMatcher": "$msCompile"
},
{
"label": "test",
"detail": "Run xunit tests via dotnet test (resolves GraphicalTools.slnx)",
"type": "process",
"command": "dotnet",
"args": [
"test"
],
"options": {
"cwd": "${workspaceFolder}"
},
"group": {
"kind": "test",
"isDefault": true
},
"problemMatcher": "$msCompile"
},
{
"label": "clean",
"type": "process",
"command": "pwsh",
"args": [
"-NoProfile",
"-Command",
"Invoke-Build Clean"
],
"options": {
"cwd": "${workspaceFolder}"
},
"problemMatcher": []
}
]
}
2 changes: 1 addition & 1 deletion ConsoleGuiTools.Common.props
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<VersionPrefix>0.7.7</VersionPrefix>
<VersionPrefix>1.0.0</VersionPrefix>
<VersionSuffix></VersionSuffix>
<Company>Microsoft</Company>
<Copyright>© Microsoft Corporation.</Copyright>
Expand Down
25 changes: 16 additions & 9 deletions ConsoleGuiTools.build.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,18 @@ task Build {

Push-Location src/Microsoft.PowerShell.ConsoleGuiTools
Invoke-BuildExec { & dotnet publish --configuration $Configuration --output publish }
$Assets = $(
"./publish/Microsoft.PowerShell.ConsoleGuiTools.dll",
"./publish/Microsoft.PowerShell.ConsoleGuiTools.psd1",
"./publish/Microsoft.PowerShell.OutGridView.Models.dll",
"./publish/Terminal.Gui.dll",
"./publish/NStack.dll")
$Assets | ForEach-Object {
Copy-Item -Force -Path $_ -Destination ../../module

# Copy all DLLs except PowerShell SDK dependencies (those are provided by PowerShell itself)
Get-ChildItem "./publish/*.dll" | Where-Object {
$_.Name -notlike "System.Management.Automation.dll" -and
$_.Name -notlike "Microsoft.PowerShell.Commands.Diagnostics.dll" -and
$_.Name -notlike "Microsoft.Management.Infrastructure.CimCmdlets.dll"
} | ForEach-Object {
Copy-Item -Force -Path $_.FullName -Destination ../../module
}

# Copy the module manifest
Copy-Item -Force -Path "./publish/Microsoft.PowerShell.ConsoleGuiTools.psd1" -Destination ../../module
Pop-Location

$Assets = $(
Expand All @@ -45,6 +48,10 @@ task Build {
New-ExternalHelp -Path docs/Microsoft.PowerShell.ConsoleGuiTools -OutputPath module/en-US -Force
}

task Test {
Invoke-BuildExec { & dotnet test GraphicalTools.slnx --configuration $Configuration }
}

task Package {
New-Item -ItemType Directory -Force ./out | Out-Null
if (-Not (Get-PSResourceRepository -Name ConsoleGuiTools -ErrorAction SilentlyContinue)) {
Expand All @@ -53,4 +60,4 @@ task Package {
Publish-PSResource -Path ./module -Repository ConsoleGuiTools -Verbose
}

task . Clean, Build
task . Clean, Build, Test
3 changes: 3 additions & 0 deletions Directory.Build.props
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
<Project>
<PropertyGroup>
<ManagePackageVersionsCentrally>true</ManagePackageVersionsCentrally>
<!-- Use nuget.local.config if present (gitignored). Create it to override the
default nuget.config, e.g. to use nuget.org instead of the Azure DevOps feed. -->
<RestoreConfigFile Condition="Exists('$(MSBuildThisFileDirectory)nuget.local.config')">$(MSBuildThisFileDirectory)nuget.local.config</RestoreConfigFile>
</PropertyGroup>
</Project>
15 changes: 10 additions & 5 deletions Directory.Packages.props
Original file line number Diff line number Diff line change
@@ -1,8 +1,13 @@
<Project>
<ItemGroup>
<PackageVersion Include="Microsoft.PowerShell.SDK" Version="7.4.7" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
<PackageVersion Include="Nstack.Core" Version="1.1.1" />
<PackageVersion Include="Terminal.Gui" Version="1.17.1" />
<PackageVersion Include="Microsoft.PowerShell.SDK" Version="7.5.4" />
<PackageVersion Include="Newtonsoft.Json" Version="13.0.4" />
<PackageVersion Include="System.Management.Automation" Version="7.5.4" />
<PackageVersion Include="Terminal.Gui" Version="2.0.1" />
<!-- Test dependencies -->
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
<PackageVersion Include="xunit" Version="2.9.3" />
<PackageVersion Include="xunit.runner.visualstudio" Version="3.0.1" />
<PackageVersion Include="coverlet.collector" Version="6.0.4" />
</ItemGroup>
</Project>
</Project>
5 changes: 5 additions & 0 deletions GraphicalTools.slnx
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
<Solution>
<Project Path="src/Microsoft.PowerShell.ConsoleGuiTools/Microsoft.PowerShell.ConsoleGuiTools.csproj" />
<Project Path="src/Microsoft.PowerShell.OutGridView.Models/Microsoft.PowerShell.OutGridView.Models.csproj" />
<Project Path="test/Microsoft.PowerShell.ConsoleGuiTools.Tests/Microsoft.PowerShell.ConsoleGuiTools.Tests.csproj" />
</Solution>
30 changes: 23 additions & 7 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# ConsoleGuiTools - `Out-ConsoleGridView` and `Show-ObjectTree`

This repo contains the `Out-ConsoleGridView`
PowerShell Cmdlet providing console-based GUI experiences based on
This repo contains the `Out-ConsoleGridView` and `Show-ObjectTree`
PowerShell Cmdlets providing console-based GUI experiences based on
[Terminal.Gui (gui.cs)](https://github.com/gui-cs/Terminal.Gui).

_Note:_ A module named `Microsoft.PowerShell.GraphicalTools` used to be built and published out of this repo, but per [#101](https://github.com/PowerShell/ConsoleGuiTools/issues/101) it is deprecated and unmaintained until such time that it can be rewritten on top of [.NET MAUI](https://devblogs.microsoft.com/dotnet/introducing-net-multi-platform-app-ui/).
Expand All @@ -14,7 +14,7 @@ Install-Module Microsoft.PowerShell.ConsoleGuiTools

## Features

* [`Out-ConsoleGridview`](docs/Microsoft.PowerShell.ConsoleGuiTools/Out-ConsoleGridView.md) - Send objects to a grid view window for interactive filtering and sorting.
* [`Out-ConsoleGridView`](docs/Microsoft.PowerShell.ConsoleGuiTools/Out-ConsoleGridView.md) - Send objects to an interactive table view with column headers, horizontal scrolling, streaming, sorting, and native multi-selection.
* [`Show-ObjectTree`](docs/Microsoft.PowerShell.ConsoleGuiTools/Show-ObjectTree.md) - Send objects to a tree view window for interactive filtering and sorting.

* Cross-platform - Works on any platform that supports PowerShell 7.2+.
Expand Down Expand Up @@ -122,18 +122,34 @@ Whatever was typed on the command line prior to hitting `F7` or `Shift-F7` will
### Example 8: Output processes to a tree view

```PowerShell
PS C:\> Get-Process | Show-ObjectTree
Get-Process | Show-ObjectTree
```

This command gets the processes running on the local computer and sends them to a tree view window.

Use right arrow when a row has a `+` symbol to expand the tree. Left arrow will collapse the tree.

### Example 9: Output processes to a grid view with streaming

```PowerShell
Get-Process | Out-ConsoleGridView
```

This command gets the processes running on the local computer and sends them to an interactive table with column headers. The table appears as soon as the first object arrives — rows stream in as the pipeline executes.

### Example 10: Search for a specific row in the grid view

```PowerShell
Get-Service | ocgv -Search "wuauserv" -Focus Filter
```

This command displays all services in a grid view, positions the cursor on the first row matching "wuauserv", and starts with focus in the filter field.

## Development

### 1. Install PowerShell 7.2+
### 1. Install PowerShell 7.6+

Install PowerShell 7.2+ with [these instructions](https://github.com/PowerShell/PowerShell#get-powershell).
Install PowerShell 7.6+ with [these instructions](https://github.com/PowerShell/PowerShell#get-powershell).

### 2. Clone the GitHub repository

Expand Down Expand Up @@ -203,7 +219,7 @@ to learn more.

`ConsoleGuiTools` consists of 2 .NET Projects:

* ConsoleGuiTools - Cmdlet implementation for Out-ConsoleGridView
* ConsoleGuiTools - Cmdlet implementation for Out-ConsoleGridView and Show-ObjectTree
* OutGridView.Models - Contains data contracts between the GUI & Cmdlet

_Note:_ Previously, this repo included `Microsoft.PowerShell.GraphicalTools` which included the Avalonia-based `Out-GridView` (implemented in `.\Microsoft.PowerShell.GraphicalTools` and `.\OutGridView.Gui`). These components have been deprecated (see note above).
Expand Down
Loading
Loading