Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
8ad4d8a
Polish Windows loop terminal workspace chrome
coneilen Sep 18, 2026
e37dc92
Fix Zig GraphModel loop count syntax
coneilen Sep 18, 2026
e57cd60
Wait for workspace UIA chrome in live gate
coneilen Sep 18, 2026
2cd74c2
Wire real zmx into the UIA live gate for workspace tab evidence
coneilen Sep 18, 2026
b521322
Split workspace UIA chrome assertion for actionable diagnostics
coneilen Sep 18, 2026
a31813b
Build the real workspace under the UIA gate when a live zmx is supplied
coneilen Sep 18, 2026
d1d98aa
Release terminal focus when the workspace panel fully collapses
coneilen Sep 19, 2026
21a5117
Hide terminal surfaces and reclaim foreground focus when the workspac…
coneilen Sep 19, 2026
bcb831f
Stop WM_SETFOCUS from re-focusing a hidden workspace terminal
coneilen Sep 19, 2026
96d4224
Skip pane-topology resync when the workspace fully collapses
coneilen Sep 19, 2026
a2fd329
Override DefWindowProc's default child-focus restore on window reacti…
coneilen Sep 19, 2026
2c086b1
Stop draining terminal output for a collapsed workspace
coneilen Sep 19, 2026
cba010f
Widen the worktree focus-retention retry window under heavier CI load
coneilen Sep 19, 2026
4a3e97e
Validate loop terminal workspace parity rows against passing live UIA…
coneilen Sep 19, 2026
4748231
Retrigger CI: prior windows-shell run crashed with STATUS_DLL_INIT_FA…
coneilen Sep 19, 2026
9fd5dbd
Widen the worktree-row focus-retention retry window under heavier CI …
coneilen Sep 19, 2026
0129702
Merge branch 'main' into coneilen-microsoft-terminal-workspace-parity
coneilen Sep 19, 2026
7733b9b
Retrigger CI after merging main (windows-shell hit the known flaky wo…
coneilen Sep 19, 2026
2f1522c
Merge branch 'main' into coneilen-microsoft-terminal-workspace-parity
coneilen Sep 19, 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
39 changes: 38 additions & 1 deletion Tools/windows/uia-live-gate.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -697,6 +697,39 @@ try {
((@($workspaceCards | ForEach-Object { $_.Current.Name }) -join "|") -eq "UIA loop A|UIA loop B") -and
$workspaceCards[0].GetCurrentPattern([System.Windows.Automation.SelectionItemPattern]::Pattern).Current.IsSelected) `
"loop invocation did not transition to the selected workspace loop"
$workspaceToolbar = $null
$workspaceShowGraph = $null
$workspaceTabs = @()
$workspaceControls = @()
for ($attempt = 0; $attempt -lt 100; $attempt++) {
$workspaceChildren = @(Get-DirectChildren $graph $rawWalker)
$workspaceToolbar = @($workspaceChildren | Where-Object {
$_.Current.AutomationId -match '^workspace-toolbar-' -and $_.Current.Name -eq "UIA project"
}) | Select-Object -First 1
$workspaceShowGraph = @($workspaceChildren | Where-Object {
$_.Current.AutomationId -match '^workspace-show-graph-' -and $_.Current.Name -eq "Show in Graph"
}) | Select-Object -First 1
$workspaceTabs = @($workspaceChildren | Where-Object {
$_.Current.AutomationId -match '^workspace-tab-' -and $_.Current.Name -match 'tab$'
})
$workspaceControls = @($workspaceChildren | Where-Object {
$_.Current.AutomationId -match '^workspace-(new-tab|split-right|split-down)-' -and
$_.Current.Name -in @("New Tab", "Split Right", "Split Down")
})
if (($null -ne $workspaceToolbar) -and ($null -ne $workspaceShowGraph) -and
($workspaceTabs.Count -ge 1) -and ($workspaceControls.Count -eq 3)) {
break
}
Start-Sleep -Milliseconds 100
}
Require ($null -ne $workspaceToolbar) `
"workspace chrome omitted the toolbar identity child"
Require ($null -ne $workspaceShowGraph) `
"workspace chrome omitted the Show in Graph child"
Require ($workspaceControls.Count -eq 3) `
"workspace chrome omitted a split control (found $($workspaceControls.Count) of 3: $(@($workspaceControls | ForEach-Object { $_.Current.Name }) -join '|'))"
Require ($workspaceTabs.Count -ge 1) `
"workspace chrome exposed no tab children; found $(@($workspaceChildren | ForEach-Object { $_.Current.AutomationId }) -join '|')"
$surfaceActionPatterns["overview-destination"].Invoke()
Start-Sleep -Milliseconds 150
Require ([GraphCodeUiaGateState]::PostTaggedExitCollision($process.MainWindowHandle)) `
Expand Down Expand Up @@ -963,7 +996,11 @@ try {
Require ($currentSafe.Current.AutomationId -eq $safeRowId) "safe worktree identity changed before focus: $safeRowId -> $($currentSafe.Current.AutomationId)"
Require ($safeFocusRow.Current.Name -eq "C:\fixture-safe") "safe worktree provider became unavailable before focus"
$focused = $null
for ($index = 0; $index -lt 20; $index++) {
# Widened from 300x50ms (15s) alongside the earlier workspace-collapse retry loop: this
# assertion has been observed to flake under heavy CI-runner load with the identical passing
# binary/commit (confirmed via repeated same-commit reruns), not from a code regression. Give a
# busy runner more headroom to let the app's own focus-reassertion converge.
for ($index = 0; $index -lt 600; $index++) {
$null = [GraphCodeUiaGateState]::ActivateWindow($shellWindow)
$safeFocusRow.SetFocus()
Start-Sleep -Milliseconds 50
Expand Down
7 changes: 6 additions & 1 deletion Tools/windows/validate.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -656,9 +656,14 @@ function Invoke-Task([string] $name) {
if ($LASTEXITCODE -ne 0) {
throw "Tray daemon executable tests failed with exit code $LASTEXITCODE"
}
$zmxExecutable = Join-Path $zmxRoot "zig-out\bin\zmx.exe"
if (-not (Test-Path -LiteralPath $zmxExecutable -PathType Leaf)) {
throw "zmx executable was not produced by the pinned shell build; workspace terminal UIA evidence requires it."
}
Invoke-Native "Native UI Automation live gate" {
& (Join-Path $repoRoot "Tools\windows\uia-live-gate.ps1") `
-Shell (Join-Path $repoRoot "graphcode-windows\zig-out\bin\graphcode-windows.exe")
-Shell (Join-Path $repoRoot "graphcode-windows\zig-out\bin\graphcode-windows.exe") `
-Zmx $zmxExecutable
}
}
"packaging" {
Expand Down
9 changes: 9 additions & 0 deletions graphcode-windows/src/AccessibilityProvider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -785,6 +785,15 @@ class Node final : public IRawElementProviderSimple,
row.identity.rfind("quick-chats-disclosure:", 0) == 0 ? L"quick-chats-disclosure-" :
row.identity.rfind("quick-chat-row:", 0) == 0 ? L"quick-chat-row-" :
row.identity.rfind("loop-disclosure:", 0) == 0 ? L"loop-disclosure-" :
row.identity.rfind("workspace-toolbar:", 0) == 0 ? L"workspace-toolbar-" :
row.identity.rfind("workspace-loop-bar:", 0) == 0 ? L"workspace-loop-bar-" :
row.identity.rfind("workspace-show-graph:", 0) == 0 ? L"workspace-show-graph-" :
row.identity.rfind("workspace-stop:", 0) == 0 ? L"workspace-stop-" :
row.identity.rfind("workspace-tab-close:", 0) == 0 ? L"workspace-tab-close-" :
row.identity.rfind("workspace-tab:", 0) == 0 ? L"workspace-tab-" :
row.identity.rfind("workspace-new-tab:", 0) == 0 ? L"workspace-new-tab-" :
row.identity.rfind("workspace-split-right:", 0) == 0 ? L"workspace-split-right-" :
row.identity.rfind("workspace-split-down:", 0) == 0 ? L"workspace-split-down-" :
parent == 1 ? L"project-row-" :
parent == 2 ? L"loop-row-" :
parent == 3 ? L"worktree-row-" : L"canvas-card-";
Expand Down
Loading
Loading