Commit Graph
73 Commits
Author SHA1 Message Date
ddidderr 908d5b105a build(macos): build the original Swift app against the Rust core
Ghostty's macOS app stays the original, unchanged Swift app (agreed
scope); it is wired to the Rust core instead of the Zig core.
scripts/macos-swift-app.sh (`just macos-swift-app <ghostty-src>`)
mirrors the Zig build's GhosttyXcodebuild.zig:
1. scripts/xcframework.sh builds the Rust libghostty (identical
   include/ghostty.h ABI) as <src>/macos/GhosttyKit.xcframework,
2. `just install <src>/zig-out` provides the resources the Xcode project
   bundles from ../zig-out/share (ghostty, terminfo, completions, man,
   locale, vim, nvim, bat),
3. xcodebuild -target Ghostty in a clean environment.
macOS + Xcode only; DRY_RUN=1 previews the steps (verified on Linux).

Test Plan:
- DRY_RUN=1 scripts/macos-swift-app.sh ../ghostty
- on macOS: just macos-swift-app ../ghostty && open the built app
2026-10-12 19:29:26 +02:00
ddidderr 8254c82a43 docs(rewrite): status update 2026-10-12 19:25:44 +02:00
ddidderr feacba2d69 docs(rewrite): start phase 9 - port the Swift macOS app to Rust 2026-10-12 18:51:17 +02:00
ddidderr d91d86c444 docs(rewrite): status update 2026-10-12 18:50:02 +02:00
ddidderr 5cb5bbada2 docs(rewrite): status update 2026-10-12 17:32:00 +02:00
ddidderr d3b4cd563a docs(rewrite): final status - no known unfixed differences remain 2026-10-12 17:30:52 +02:00
ddidderr 03045f6ece docs(rewrite): status update 2026-10-12 17:24:18 +02:00
ddidderr b95aae16ae docs(rewrite): status update 2026-10-12 16:55:22 +02:00
ddidderr 6fef6fcb49 docs: close out the rewrite in README and STATUS
README now describes the full scope (Linux app, C APIs, WASM, crash
reporting, macOS/Windows compile-checked), the verification tooling
(difftest, visual-parity, check-all) and links DEVIANT_FIXES.md and
KNOWN_DIFFERENCES.md. STATUS records completion and the stopping
criterion.
2026-10-12 16:53:55 +02:00
ddidderr c126ae873d docs(rewrite): status update 2026-10-12 16:39:38 +02:00
ddidderr ff9d879d65 docs(rewrite): register commit for row 34; status update 2026-10-12 16:24:10 +02:00
ddidderr 5ab6dba4a4 docs(rewrite): status update 2026-10-12 16:11:05 +02:00
ddidderr 34c6871be1 docs(rewrite): status update 2026-10-12 15:56:32 +02:00
ddidderr 798a31ccac docs(rewrite): status update 2026-10-12 15:47:25 +02:00
ddidderr d831a7fe4d docs(rewrite): status update 2026-10-12 15:39:43 +02:00
ddidderr 0dffc62bdf docs(rewrite): status update 2026-10-12 15:29:39 +02:00
ddidderr 497c1f9a8d docs(rewrite): status update 2026-10-12 15:19:53 +02:00
ddidderr 433873ec38 docs(rewrite): status update 2026-10-12 15:18:02 +02:00
ddidderr 23ac714e47 docs(rewrite): status update 2026-10-12 15:15:54 +02:00
ddidderr dad4264606 docs(rewrite): status update 2026-10-12 14:59:39 +02:00
ddidderr 0216443764 docs(rewrite): status update 2026-10-12 14:49:10 +02:00
ddidderr 27e241d07b docs(rewrite): status update 2026-10-12 14:30:14 +02:00
ddidderr 22ffed9adb docs(rewrite): status update 2026-10-12 14:20:59 +02:00
ddidderr c9051641a5 docs(rewrite): status update 2026-10-12 14:02:10 +02:00
ddidderr 98aeec9463 docs(rewrite): status update 2026-10-12 13:54:26 +02:00
ddidderr 19ea627bed docs(rewrite): status update 2026-10-12 13:48:07 +02:00
ddidderr 38c6ad670a docs(rewrite): status update 2026-10-12 13:24:19 +02:00
ddidderr 95fe02b55a docs(rewrite): status update 2026-10-12 12:58:13 +02:00
ddidderr 44f39fb1d3 docs(rewrite): status update 2026-10-12 12:46:40 +02:00
ddidderr c8a85b8806 docs(rewrite): status update 2026-10-12 12:35:51 +02:00
ddidderr 61e7a680ac docs(rewrite): status update 2026-10-12 12:07:53 +02:00
ddidderr 0ed59764e1 docs(rewrite): status update 2026-10-12 11:57:13 +02:00
ddidderr 37a1646611 docs(rewrite): status update 2026-10-12 11:09:29 +02:00
ddidderr e47009e21e docs(rewrite): status update 2026-10-12 11:01:24 +02:00
ddidderr 5f16c24760 docs(rewrite): status update 2026-10-12 10:54:15 +02:00
ddidderr 1ff5db0527 docs(rewrite): status update 2026-10-12 10:34:13 +02:00
ddidderr 3503308385 docs(rewrite): status update 2026-10-12 10:27:45 +02:00
ddidderr 306a19227f docs(rewrite): status update 2026-10-12 10:12:12 +02:00
ddidderr 847a16f65c docs(rewrite): status update 2026-10-12 10:06:14 +02:00
ddidderr 7a3f0b0f2c docs(rewrite): status update 2026-10-12 09:32:55 +02:00
ddidderr 162aa260f1 docs(rewrite): status update 2026-10-12 08:45:38 +02:00
ddidderr 5bfc7bd856 docs(rewrite): status update 2026-10-12 08:22:50 +02:00
ddidderr 86d0d3830f docs(rewrite): status update 2026-10-12 08:16:26 +02:00
ddidderr 96314c1a8b docs(rewrite): status update 2026-10-12 06:55:01 +02:00
ddidderr 6d309d5d16 docs(rewrite): phase 8 status update 2026-10-12 06:38:49 +02:00
ddidderr cd86fe92a8 docs(rewrite): phase 8 status update 2026-10-12 06:03:20 +02:00
ddidderr bab49ee596 feat(macos): port Ghostty's macOS code paths (Metal, CoreText, Darwin)
Ports the macOS-specific Zig code behind cfg(target_os = "macos"):
- renderer: a GraphicsApi trait with generic::Renderer<G>; Metal backend
  (all renderer/metal/* files, shaders.metal verbatim, runtime library
  compile, IOSurface layer, CVDisplayLink), shadertoy -> MSL via naga;
  OpenGL remains the backend elsewhere.
- font: CoreText face, shaper and discovery with build.rs backend
  selection (coretext default; coretext-freetype / coretext-harfbuzz /
  coretext-noshape features), no fontconfig/freetype/harfbuzz on Apple.
- input: KeymapDarwin via UCKeyTranslate, option-as-alt, mac keycodes.
- os: macos, mach, cf_release_thread, NSProcessInfo args and macOS
  branches; config: macOS defaults, keybinds, Application Support paths.
- termio/core: login(1) wrapping, openpty/execvpe, Darwin child exit
  handling, os_log logging.

Compile-checked for aarch64/x86_64-apple-darwin (clippy -D warnings
clean) using the cross setup in docs/rewrite/notes/macos-M1.md; cannot
run here. The embedded runtime/C API (embedded.zig) is the next step.

Also includes the cross-platform integration edits shared by the crash,
verification, Windows and macOS work (Cargo target-gating, thread
crash-context hooks, apprt-gtk surface/IME refactor, termio/os cfg
gates), a cfg fix so ghostty-config builds on wasm32, and an allow for
the intentional recursion in the crash overflow test.

Test Plan:
- cargo test --workspace (3224 passed)
- cargo clippy --workspace --all-targets -- -D warnings
- cargo check --target aarch64-apple-darwin -p ghostty-renderer (with
  the documented cross env)
2026-10-12 06:02:39 +02:00
ddidderr cbc023a633 docs(rewrite): phase 8 status update 2026-10-12 05:22:10 +02:00
ddidderr 03e6e33686 docs(rewrite): extend scope to all of Ghostty's Zig code (phase 8) 2026-10-12 05:05:36 +02:00
ddidderr dcde847c4d docs(rewrite): mark the rewrite complete in STATUS 2026-10-12 05:03:59 +02:00