Repository navigation
Fix Windows terminal chrome density at high DPI - #941
Merged
Merged
Conversation
Scale terminal tab, control, pane-header, text, and hit-target geometry from the macOS logical measurements while preserving overflow and terminal allocation contracts. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Teach the live UIA gate to distinguish a mounted background tab from the bounded visible roster at DPI192, then verify stable Goal and Shell identities after exposing both tabs and switching each way. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Update the structural selector count for the new bounded overflow and collapsed-roster observations. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Clear and reacquire the dynamic selection provider before subscribing, bind the exact automation and runtime identity, and reject zero, duplicate, foreign, or stale-generation events within the bounded wait. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Treat zmx endpoint publication refusal as a bounded startup race, preserve exact resize geometry across retries, cancel owned resize controls during teardown, and retain explicit exhausted-command diagnostics. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Signed-off-by: Colin Neilens <coneilen@microsoft.com>
3 of 5 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes paired-review finding F2 by applying the macOS terminal chrome measurements as logical dimensions throughout the Windows physical-pixel workspace. The DPI192 live gate now distinguishes the bounded visible tab roster from the mounted tab topology instead of treating a hidden overflow tab as absent.
Changes
Test plan
RED:
& $env:GRAPHCODE_ZIG0152 test src\TerminalSurface.zig -target x86_64-windows-msvc -lc -luser32 -lkernel32 "-I$env:GRAPHCODE_WINGHOSTTY_ROOT\include" "$env:GRAPHCODE_WINGHOSTTY_ROOT\zig-out\lib\winghostty-win32-host.lib" zig-out\lib\ghostty-vt-static.lib -lgdi32 -lopengl32 -limm32 -lole32 -loleaut32 -luiautomationcore -lshell32 -ladvapi32 -lwinhttp --test-filter "workspace terminal chrome keeps mac logical density"-> failed: expected 50 physical pixels at DPI192, found 22GREEN: same focused pinned-Zig command after the change -> 1/1 passed at 96, 144, and 192 DPI with 1440/1508 width contracts
REGRESSION:
pwsh -NoProfile -File Tools\windows\validate.ps1 -Task windows-shell -ShellPart unit -ShellValidationRoot C:\v36-> 60/60 registered sections passed; native accessibility provider 224 checks, 0 failuresTerminalSurface.zigfull command -> 298/298 passed.App.zigfull command -> 1583 passed, 17 intentional skips, 0 failures.Tools\windows\Tests\ValidationRunner.Tests.ps1-> PASS; UiCaptureDriver 182/182.pwsh -NoProfile -File Tools\windows\validate.ps1 -Task hardening-> deterministic fixtures passed on 3/3 repeated runs.pwsh -NoProfile -File Tools\windows\validate.ps1 -Task windows-shell -ShellPart integration -ShellValidationRoot C:\v37 -SkipTrayLive-> F2 tab phase passed withoverflowObserved=true, stable Goal/Shell IDs, and 50-physical/25-logical tab pills. Exact-head CI then reproduced a later worktree SelectionItem observer race. The follow-up binds the exact automation/runtime identity and rejects zero, duplicate, wrong-element, and stale-generation events; local live GREEN recordedUIA_SELECTION_EVENT_DECISIONwith count1and exact identities plus passingUIA_WORKTREE_SELECTION_EVIDENCE.resizereturnedConnectionRefused/FILE_NOT_FOUNDfor a newly attached 50x10 session. The final change retries that exact owned surface/session/rows/cols up to five times with a 100 ms delay, cancels owned controls on teardown, logs session/geometry/exit/stderr, and still surfaces exhaustion. Pinned zmx resize passed independently; the live gate no longer reportedterminal PTY resize command failedand advanced through the Move-status phase to later unrelated UIA fixture work.F2_TERMINAL_CHROME_FOCUSED_VALIDATIONattempt on the exclusive PMv2 DPI192 desktop launched once from freshC:\f6and stopped before the first PNG because the focused wrapper did not include split/New Tab controls in its row query (Control roster differs for s-tabs-agent-unknown). The product, peer, and zmx processes cleaned to zero survivors.C:\f6\outputs\f2-focused-manifest.jsonSHA25666EB0EB2614CA8608EBAB053E3214BA51FC6C724B3180E32727D5B8163D10B80; sourcece92fe6970fa27f8a4da071e87fa21faeb84d904; binary SHA256367E77D99F7CB8890D6D81EBAFC251D6C53B1313E2EC4B82D0DED3189FF105C5; images0/11; privacy review had no images to inspect. No retry was authorized after launch, so the full focused scene matrix remains unproved.Checklist
git commit -s) per the DCOmake test)make check)