Skip to content

Fix Windows terminal rendering and ownership - #635

Merged
coneilen merged 1 commit into
mainfrom
coneilen-windows-preview-qualification-72c
Oct 6, 2026
Merged

coneilen merged 1 commit into
mainfrom
coneilen-windows-preview-qualification-72c

Conversation

@coneilen

@coneilen coneilen commented Oct 6, 2026

Copy link
Copy Markdown
Collaborator

Summary

Fix the two Windows preview blockers that made terminal output unreadable and allowed Stop to target a different zmx session from the daemon-owned workspace session.

Changes

  • Publish Winghostty v2 glyph snapshots with complete UTF-8 clusters, wide-cell occupancy, resolved colors, and independent accessibility text instead of the v1 pseudo-glyph cell path.
  • Use Ghostty VT by default while retaining GRAPHCODE_EXPERIMENTAL_TERMINAL_VT=0 as the explicit legacy rollback.
  • Stage VT cells and glyph data atomically so allocation or validation failures cannot partially replace the live terminal buffer.
  • Canonicalize attach, resize, and teardown identities as graphcode-UUID exactly once.
  • Register the shared zmx identity tests and document the renderer behavior, rollback, decoration limits, and live-pixel evidence boundary.

Test plan

RED: GRAPHCODE_ZIG0152 test src\TerminalSurface.zig --test-filter "real glyph snapshots" -> 1/1 executed; expected .snapshot, found .cells
GREEN: GRAPHCODE_ZIG0152 test src\TerminalSurface.zig --test-filter "real glyph snapshots" -> 1/1 passed
REGRESSION: Tools\windows\validate.ps1 -Task windows-shell -SkipTrayLive -ShellPart unit -ShellValidationRoot C:\g -> 747/747 passed; 54/54 sections executed

  • Attach/resize identity RED: 1/1 executed; expected graphcode-session-a, found session-a.
  • Teardown identity RED: 1/1 executed; expected graphcode-alpha-id, found alpha-id.
  • Both focused identity GREEN runs passed 1/1.
  • Final TerminalSurface.zig root passed 140/140.
  • The complete configured Windows-shell gate passed before the final atomic-staging hardening, including smoke/stress, daemon roundtrip, tray contracts, concurrent handoff, and native UI Automation. The finalized code then passed the 140/140 focused root and 747/747 aggregate unit gate.
  • No privacy-safe live terminal fixture was available for direct pixel-readability inspection; the tests establish the v2 payload and provider GDI path rather than human-observed candidate pixels.

Checklist

  • I have read the Contributing Guidelines
  • I have signed off my commits (git commit -s) per the DCO
  • Tests pass locally (make test)
  • Code follows the existing style (make check)
  • I added the test/contract before the implementation and observed the intended RED failure

Publish real Winghostty glyph snapshots, use the production VT parser by default, and keep staged terminal updates atomic.

Canonicalize zmx identities across attach, resize, and teardown so Stop targets the daemon-owned session.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
@coneilen
coneilen merged commit 399ae42 into main Oct 6, 2026
24 checks passed
coneilen added a commit that referenced this pull request Oct 6, 2026
Record the immutable, unpublished 0.1.78-windows.beta9 candidate built from
399ae42 with #635's terminal readability and zmx session-ownership fixes.
Beta8 is failed/superseded and kept unchanged. Exact artifact stays complete;
the other six gates and the 98/62/36 parity ledger are unchanged.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
@coneilen coneilen mentioned this pull request Oct 6, 2026
2 of 5 tasks
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