ghostty-next: sync to upstream Ghostty c7f68a7f4 (Zig 0.17.0), fixes the CVDisplayLinkStop freeze
Review (fable subagent): SHIP at 22deae8f2191982e40c1565061f8d2e0b6da6f40
Fixes #35300.
Why
cmux-next NIGHTLY froze with no "Not Responding": the main thread waited in ghostty_surface_free -> pthread_join on a Ghostty renderer stuck in CVDisplayLinkStop. Upstream Ghostty fixed this in ffaaf5d7a (start and stop the display link only on the main thread). ghostty-next main took it with v1.4.0, but cmux-next pinned 7d43bb68b on an older release line. Per Lawrence: take upstream instead of custom patches.
What
- ghostty-next gitlink and GhosttyNextKit move together to
a6b9048e9(manaflow-ai/ghostty-next#74,release/cmux-sync-20261104): upstream mainc7f68a7f4(2026-11-03) + the release line (PRs #66–#73). - Zig 0.17.0 now builds every shipped ghostty-next binary: reviewed toolchain record + LICENSE, tarball sha256s, the iOS
Threaded.zigstd fix ininstall-zig-ci.sh(same as ghostty-next's), workflows read the version from the ghostty-next manifest. 0.16.0 stays reviewed for the classicghosttysubmodule. - Upstream's
assume_nonnullinghostty.h(0e067ded7): Swift callers in CmuxNext, cmux-next-ios and ios/CmuxiOS follow the new non-null types. - OSC 7501 support reply is upstream revision 0.4 (
?:states=…:kinds=…): test + live scripts. - Linux terminal-corpus digests regenerated (round trip equal; snapshot version stays 1; old v1 fixtures unchanged).
Status
- Fleet build of the macOS app at the pin (job 49c2d44d, tag
gn-sync-v2); cmux-ci iOS device + simulator build (job 88f465ba) - Notices regenerated from the pin's artifacts (
ghosttykit_repin.py, vt-link-graph, package-notices Darwin review for Zig 0.17.0); terminal corpus digests for Linux and macOS (restore equal) - Review subagent, findings and fixes posted
- Source archive (run 41880174496) and the required clippy check pass
- ghostty-next#74 merged; the pin is ghostty-next
main383b27d73 (forward from feat-cmux-next's 12ec155e1)
Zig 0.17.0 fixes found on the way: the Linux macOS-cross libSystem.tbd (arm64e.x1), the installer's lib_dir check (build_runner.zig is gone), a non-classic Zig installs job-locally (never over the system zig), Windows CodeView relative paths in the link graph.
Base reds, not from this PR: r2-upload-tests (every branch), acpmux dispatch_durable / native_store_move in cmux-tui.yml.
Changelog
- Fixed: the app no longer freezes when a terminal pane closes or changes focus while macOS reconfigures a display.
![Autofix with [code]smith](https://pr-comments-assets.blacksmith.sh/codesmith/autofix-with-codesmith-dark-3x.png)
Open in [code]smith · Need help on this PR? Tag @codesmith-bot with what you need.
Summary by cubic
Syncs ghostty-next and GhosttyNextKit to upstream Ghostty c7f68a7f4 (pin 383b27d73), fixing #35300: terminal pane closes and focus changes no longer freeze the app during macOS display reconfiguration. The pin is ghostty-next main after #74 merged, with the same source tree as the earlier 706c6963a sync pin; moving forward was required because 12ec155e1 → 706c6963a diverged and failed the forward-only submodule guard.
- Zig 0.17.0 builds
ghostty-next; Zig 0.16.0 remains reviewed for classic Ghostty. - CI installs each tree's Zig without touching PATH or the system zig: a job that builds both isolates the ghostty-next Zig in a job-local install so concurrent classic jobs are never raced.
- The Zig installer applies and verifies the iOS standard-library fix required by Zig 0.17.0, and its completeness check now uses
lib/std/std.ziginstead of Zig 0.17.0's removedlib/compiler/build_runner.zig. - Swift callers follow upstream's non-null pointer types. The iOS runtime config is built in a nonisolated static func: formed inside the
@MainActorinit, the callbacks carried main-actor isolation and Ghostty's renderer thread trapped onwakeup_cb. - The iOS CI build retries once after clearing stale precompiled modules, which a GhosttyNextKit pin change leaves behind; the unit-test step already did this.
- OSC 7501 replies now list supported states and kinds; regenerated Linux and macOS corpus snapshots retain version 1 and remain compatible with older v1 fixtures.
- Ghostty license notices reviewed for the new pin: new iterm2-themes and zig-gobject releases resolve through byte-equal pinned texts, z2d 0.13.2 ships its own license files so the collector now adds a reviewed MPL-2.0 source offer for packages with license files too, the vt-link-graph is regenerated (uucode moves to upstream, Zig 0.17.0 links fewer compiler_rt files, and its relative CodeView paths attribute correctly, including the Windows generated files), the Zig 0.17.0 Darwin review keeps no musl text, and GhosttyNextKit's link sets and iOS Acknowledgements pane come from the pinned xcframework.
- The macOS cross build strips Zig 0.17.0's arm64e.x1 targets from the libSystem stub, which ld64.lld 20 rejected before linking.
Status
- Fleet build of the macOS app at the pin (job 49c2d44d, tag
gn-sync-v2); cmux-ci iOS device + simulator build (job 88f465ba) - Notices regenerated from the pin's artifacts (
ghosttykit_repin.py, vt-link-graph, package-notices Darwin review for Zig 0.17.0); terminal corpus digests for Linux and macOS - ghostty-next#74 merged, so the pin is an ancestor of ghostty-next
main
Base reds, not from this PR: r2-upload-tests (every branch), acpmux dispatch_durable / native_store_move in cmux-tui.yml.
Changelog
- Fixed: the app no longer freezes when a terminal pane closes or changes focus while macOS reconfigures a display.
- Fixed: iOS no longer traps when Ghostty's renderer thread wakes the runtime.