Skip to content

Windows improvements - #454

Merged
coneilen merged 5 commits into
scgopi:mainfrom
simra:simra/windows
Sep 25, 2026
Merged

coneilen merged 5 commits into
scgopi:mainfrom
simra:simra/windows

Conversation

@simra

@simra simra commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor

This pull request introduces comprehensive Windows support across several core components, ensuring that process management, shell command execution, and session launching work correctly on Windows as well as Unix-like platforms. The changes include conditional logic for platform-specific behavior, improvements to presence polling, and refactoring for consistent working directory resolution. Below are the most important changes grouped by theme:

Windows Platform Support:

  • Added Windows-compatible ZIP archive creation and extraction in GraphExportBundle+ZIP.swift, using tar.exe for Windows and ditto/unzip for other platforms. [1] [2] [3]
  • Updated ProviderPath to probe executable paths using where.exe on Windows and adjusted the logic for checking executable presence accordingly. [1] [2] [3]
  • Modified ShellPredicateEvaluator to use PowerShell for predicate evaluation on Windows, while retaining zsh for other platforms.
  • Ensured correct binary path resolution for zmx.exe on Windows in ZmxLocator.
  • Refactored ZmxSessionLauncher to handle environment variable setup and session launching appropriately for Windows, including direct process launches and command-line argument handling. [1] [2] [3] [4] [5] [6]

Process and Thread Handling:

  • Switched from using DispatchQueue to Thread.detachNewThread in WindowsNamedPipeTransport.swift for improved thread management on Windows.

Working Directory Logic:

  • Centralized and clarified working directory resolution for shell predicates in GraphStore, ensuring correct context for both local and imported loops. [1] [2] [3] [4] [5]

Presence Polling Improvements:

  • Enhanced presence polling in ProjectRegistry to use a shorter interval (15s) when loops are running and a longer interval (60s) when idle, reducing unnecessary polling. [1] [2]

Testing Enhancements:

  • Added a regex extraction for a timer-related code block in WindowsShell.Tests.ps1 to improve test coverage for Windows shell integration.

DPI correction evidence

This evidence covers correction c6753db, not the original commits' DCO or live touch/multi-monitor validation.

RED: Run pinned Zig App tests with --test-filter 'DPI ' against the original conversion behavior and final regression fixtures -> 5 passed, 4 expected failures: canvas underscaling, terminal double-scaling, sidebar gesture classification, and pinch anchoring.
GREEN: Run the same focused tests with c6753db and WindowsShell.Tests.ps1 -> 9/9 focused tests and all 43 source-file suites pass; 1,304 executions include repeated dependency tests.
REGRESSION: Independently restore each original conversion defect and run the unchanged fixtures -> 1, 1, and 2 expected failures; restore corrections -> App 298/298 and the pinned ReleaseSafe build pass.

@simra simra changed the title Simra/windows Windows improvements Sep 25, 2026
@simra

simra commented Sep 25, 2026 •

Copy link
Copy Markdown
Contributor Author

@scgopi this is more fyi than a PR - main improvements on Windows. I can try to isolate specific improvements if you want to take these piecemeal:

  • fix aggressive polling in graphcoded that was consuming >2 cores while idle
  • double-buffer the UI to eliminate flicker. However I notice there are still a lot of UI bugs and I don't know that I didn't introduce them.
  • font scaling for more comfortable UI on high DPI displays.

Aside I'm experimenting with generating a clean Tauri/React front end to make the UI much more responsive and easier to troubleshoot. cc @coneilen fyi

@coneilen

Copy link
Copy Markdown
Collaborator

@scgopi this is more fyi than a PR - main improvements on Windows. I can try to isolate specific improvements if you want to take these piecemeal:

  • fix aggressive polling in graphcoded that was consuming >2 cores while idle
  • double-buffer the UI to eliminate flicker. However I notice there are still a lot of UI bugs and I don't know that I didn't introduce them.
  • font scaling for more comfortable UI on high DPI displays.

Aside I'm experimenting with generating a clean Tauri/React front end to make the UI much more responsive and easier to troubleshoot. cc @coneilen fyi

Thanks for this I'll have my agents take a look. My agents are still beavering away at the windows port so quirks are expected atm, hoping they complete this week but theres still around 27 issues in its queue

simra and others added 4 commits September 25, 2026 13:40
Fix daemon-facing shell diagnostics and template fallback, eliminate paint and menu flicker, and make the native UI consistently DPI-aware.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Add native Windows graph bundle, predicate, provider, and zmx launch support. Replace idle named-pipe polling with blocking reads and back off presence refreshes when no loops are running.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Keep UIA output in physical client pixels with explicit logical/physical bounds. Reuse terminal chrome geometry without scaling it again, and normalize native gesture points and client bounds before routing and anchored zoom. Exercise the production sync and mapping paths at 96, 144, and 192 DPI.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Apply the pinned Swift 6.3.3 formatter to the two existing non-Windows conditional branches flagged by strict Linux lint. This changes only leading whitespace on seventeen lines, with no semantic changes.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Integrate the node editor snapshot/menu corrections from scgopi#452 and the merged zmx Windows startup pin from scgopi#455 while preserving the Windows DPI boundaries, buffered rendering, menu refresh, and Swift changes.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
@coneilen
coneilen marked this pull request as ready for review September 25, 2026 22:44
@coneilen
coneilen merged commit 4ea9327 into scgopi:main Sep 25, 2026
11 checks passed
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.

2 participants