Skip to content

Windows support — Phase 0 de-risk spike (CI + config path) - #10

Merged
wess merged 3 commits into
mainfrom
windows/spike
Jul 8, 2026
Merged

Windows support — Phase 0 de-risk spike (CI + config path)#10
wess merged 3 commits into
mainfrom
windows/spike

Conversation

@wess

@wess wess commented Jul 8, 2026

Copy link
Copy Markdown
Owner

First step toward Windows support. This is a de-risk spike, not a shippable Windows build — it answers the one question that gates the whole effort: does our UI stack compile on Windows?

What's here

  • .github/workflows/windows.yml — a windows-latest job that, in a single run:
    • Probes gpui at our pinned zed rev (96285fc) — the make-or-break dependency.
    • Probes guise-ui on top of gpui-on-Windows (resolved through our [patch.crates-io], not guise's own crates.io pin).
    • Builds the platform-independent crates (vt, input, workspace, theme, config, macros, mcp, cast, plugin) — these must pass.
    • Logs the full remaining surface via a non-gating cargo build --workspace (pty/terminal/app are still #![cfg(unix)]).
    • Every probe carries if: always() so one failure never hides the others.
  • config — resolves %APPDATA%\prompt\config on Windows (cfg(windows)-guarded; macOS/Linux paths byte-for-byte unchanged).

What we learn from the run

  • ✅ gpui + guise compile on Windows → the port is viable; proceed to Phase 1 (ConPTY backend) and Phase 2 (app portability: named-pipe IPC, notifications, clipboard, window chrome).
  • ❌ gpui/guise don't compile → we need to sort out the gpui-on-Windows story (zed rev, Blade/DirectX/Vulkan, guise's prompt-gpui-port branch) before any deeper work.

Either way the "full workspace surface" step's log becomes the concrete work-list for Phases 1–2.

Not in scope here

ConPTY backend, named-pipe IPC, Windows window chrome, the WiX/MSI installer, and Scoop/Chocolatey packaging — all land in later phases.

Wess Cope added 3 commits July 8, 2026 14:01
…w blur

- Self-update (macOS): `stage_mac_app` returned the inner Mach-O binary to
  relaunch, but gpui's restart runs `open` on that path. `open` on a raw
  executable has no bundle handler, so macOS launches it inside Terminal.app.
  Return the `.app` bundle instead, so `open` hands it to LaunchServices and the
  GUI relaunches normally.

- Unfocused-split dimming (and the hidden cursor) keyed off `focused`, which
  also flips when the whole window loses focus — gpui fires focus-out on window
  deactivation — so backgrounding the app dimmed every pane. Track a separate
  `pane_active` flag that survives window blur and only clears on a real pane
  switch (window still active); dimming and the cursor key off it. `focused`
  still drives ?1004 focus reporting and the background-notification attention
  dot, which should react to window focus.
Phase 0 of Windows support: a windows-latest CI job that probes the
make-or-break dependency (gpui at our pinned zed rev, then guise-ui on
top of it), builds the platform-independent crates, and logs the full
remaining porting surface as an informational, non-gating step.

Also resolve the config file location on Windows to %APPDATA%\prompt\config
(guarded by cfg(windows); macOS/Linux paths unchanged).
cargo build --workspace stops at the first failing crate (notes), hiding
the rest of the porting surface. --keep-going compiles every crate it can
and reports all failures in a single run.
@wess
wess merged commit 4d412ed into main Jul 8, 2026
3 checks passed
@wess
wess deleted the windows/spike branch July 8, 2026 18:38
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