Skip to content

Finish macOS NativeAOT port - #1

Merged
Marc-André Moreau (mamoreau-devolutions) merged 7 commits into
masterfrom
finish-macos-port
Sep 4, 2026
Merged

Finish macOS NativeAOT port#1
Marc-André Moreau (mamoreau-devolutions) merged 7 commits into
masterfrom
finish-macos-port

Conversation

@mamoreau-devolutions

Copy link
Copy Markdown
Contributor

Summary

Complete the macOS port as a first-class NativeAOT host: restore Ghostty and dt-pty-host for osx-arm64/osx-x64, publish an ad-hoc signed .app, and keep the Windows-style tab chrome with a macOS-only snug left inset for traffic lights.

What landed

  • Native restore builds libghostty-vt.dylib and dt-pty-host (Apple clang + SDK libutil on macOS).
  • Unix PTY, broker pipe names, and dt host launch work on Darwin.
  • scripts/Build-MacOsPackage.sh stages Devolutions Terminal.app + zip; CI jobs on macos-14.
  • Overlay title bar: ~70px left inset when traffic lights are on the left; original 8/138 layout when they are on the right (RTL or measured trailing chrome). Windows/Linux unchanged.
  • VT output is fed immediately so zsh cursor reports are not delayed on the UI thread.

Validation

  • Full managed test suite on osx-arm64
  • NativeAOT publish, package validate, dt --help, Ghostty ABI, real forkpty
  • Live GUI launch

Not in this PR: notarization, DMG, Homebrew, global hotkeys, default-terminal registration.

Test plan

  • dotnet test Devolutions.Terminal.slnx on a Mac
  • scripts/Build-MacOsPackage.sh osx-arm64 0.1.0 artifacts/packages
  • bash scripts/Test-MacOsPackage.sh osx-arm64 artifacts/packages/*.zip
  • Open the .app and confirm tabs clear the traffic lights
  • Confirm Windows title-bar layout is unchanged

Ship a working osx-arm64/osx-x64 port: restore Ghostty and dt-pty-host,
publish a signed .app, and run managed plus PTY/Ghostty gates on Darwin.
Keep the Windows tab chrome with a macOS-only snug left inset for traffic
lights; skip the inset when controls are on the right.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Marshal only IME/visual work off the PTY thread so cursor reports stay
fast without breaking selection tests that assert immediately after Feed.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Git clone progress on stderr was treated as an MSBuild error on macOS.
Swallow ObjectDisposedException when cancelling an Azure session CTS.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Host strip on x64 Ubuntu cannot process linux-arm64 libghostty-vt.so.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
PowerShell 5.1 rejects three-argument Join-Path. Install
libc6-dev-arm64-cross so aarch64 ld can find Scrt1.o and -ldl.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Windows hosted PowerShell 5.1 restore was failing because Get-FileHash
was not available in the MSBuild-launched session.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
libghostty-vt is built from source in CI and is not bit-reproducible, so
pinned SHA-256 values fail unsigned MSIX validation.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@mamoreau-devolutions
Marc-André Moreau (mamoreau-devolutions) merged commit 9968716 into master Sep 4, 2026
27 of 36 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant