Skip to content

Add inline recovery controls to unwired Windows cards - #940

Merged
coneilen merged 5 commits into
mainfrom
coneilen-fix-unwired-goal-recovery
Oct 28, 2026
Merged

coneilen merged 5 commits into
mainfrom
coneilen-fix-unwired-goal-recovery

Conversation

@coneilen

@coneilen coneilen commented Oct 27, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

Adds the macOS-visible inline Wire it up and Mark as entry recovery controls to unwired Windows graph cards. Both controls reuse the existing context-menu action plumbing and expose stable, invokable UI Automation identities.

Changes

  • Paint and hit-test the inline recovery controls on project and overview cards without changing the existing context menus.
  • Route pointer and stable-ID UIA invocation through the existing edge-drag and declared-entry effects.
  • Extend native accessibility, matched selected/unselected Goal scene observations, and the focused live UIA gate.
  • Preserve the terminal/App/UIA contracts merged by Fix Windows terminal chrome density at high DPI #941; this branch is rebased onto bae13e2f360109d617a8d609c145ce9a49996dd4.
  • Keep the parity ledger Partial because a newly authorized paired macOS/Windows screenshot review was not available.

Test plan

RED: zig test src\GraphCanvas.zig --test-filter "unwired loop card paints inline recovery controls" -> 0 passed; 1 failed because the inline control surface had zero pixels
GREEN: zig test src\GraphCanvas.zig --test-filter "unwired loop card paints inline recovery controls"; zig test src\App.zig --test-filter "unwired inline recovery controls route pointer" -> 1/1 passed in each executable
REGRESSION: pwsh -NoProfile -File Tools\windows\Tests\ValidationRunner.Tests.ps1 -> UiCaptureDriver executed=182 passed=182 failed=0 skipped=0

  • zig test src\GraphCanvas.zig -target x86_64-windows-msvc -lc -luser32 -lgdi32 -lgdiplus -I...\winghostty\include -> 407 passed, 17 skipped, 0 failed (424 executed).
  • Registered zig test src\App.zig ... command from WindowsShell.Tests.ps1 -> 1582 passed, 17 skipped, 0 failed (1599 executed).
  • pwsh -NoProfile -File Tools\windows\Tests\AccessibilityProvider.Native.Tests.ps1 -> 240 checks, 0 failures.
  • pwsh -NoProfile -File Tools\windows\Tests\UiCaptureDriver.Tests.ps1 -MatchedScenarioContractOnly -ScratchRoot C:\gcf1-... -> 8 passed, 0 failed.
  • Post-rebase pwsh -NoProfile -File Tools\windows\Tests\ValidationRunner.Tests.ps1 -> 182 passed, 0 failed, 0 skipped.
  • Post-rebase focused short-root live UIA gate -> Wire it up entered Choose a target loop to wire this entry; Mark as entry reported Marked as an entry for this session, removed both controls, preserved the same card, and verified zero surviving owned processes.
  • Post-rebase validate.ps1 -Task windows-shell -SkipTrayLive -ShellPart integration passed build, smoke, daemon roundtrip, F2 New Tab, and F1 card/UIA evidence on three attempts, then the local desktop consistently rejected a later unrelated SelectionItem.Select() call during delete-target setup. Cleanup was verified each time. Fix Windows terminal chrome density at high DPI #941's exact-head CI passed the same integration gate after its startup fix; Add inline recovery controls to unwired Windows cards #940 exact-head CI is the final full-gate authority after this rebase.

Checklist

  • I have read the Contributing Guidelines
  • I have signed off my commits (git commit -s) per the DCO
  • Tests pass locally (make test) — not run; this is a Windows-only change and the registered Windows suites above passed
  • Code follows the existing style (make check) — not run; macOS Swift style surfaces were not changed, and the changed Zig files were formatted with pinned zig fmt
  • I added the test/contract before the implementation and observed the intended RED failure

coneilen and others added 4 commits October 27, 2026 21:11
Expose the existing wire and entry recovery routes directly on Windows graph cards with stable UIA identities and live evidence.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Treat only the four stable unwired recovery prefixes as owned source-supported chrome while retaining unknown and foreign rejection coverage.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Reacquire the already-requested workspace provider until the exact owned loop bar and toolbar appear or a bounded absolute deadline expires, without replaying navigation.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
After an exact metadata observation, wait to an absolute deadline for the already-requested exact owned loop bar and toolbar without replaying input, then re-run the full workspace census.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
@coneilen
coneilen force-pushed the coneilen-fix-unwired-goal-recovery branch from 1f8ef63 to 972c625 Compare October 28, 2026 04:38
Use the card title strip for multi-project native activation so inline recovery buttons cannot intercept workspace navigation, with overlap and invalid-bounds contracts.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
@coneilen
coneilen merged commit 4088986 into main Oct 28, 2026
25 checks passed
@coneilen
coneilen deleted the coneilen-fix-unwired-goal-recovery branch October 28, 2026 05:39
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.

1 participant