Commit Graph
73 Commits
Author SHA1 Message Date
ddidderr 003d318fbf 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 c2a7730a33 docs(rewrite): status update 2026-10-12 19:25:44 +02:00
ddidderr fb79cc8d5c docs(rewrite): start phase 9 - port the Swift macOS app to Rust 2026-10-12 18:51:17 +02:00
ddidderr ae9cfde068 docs(rewrite): status update 2026-10-12 18:50:02 +02:00
ddidderr e44b9271d6 docs(rewrite): status update 2026-10-12 17:32:00 +02:00
ddidderr 78e550bdfc docs(rewrite): final status - no known unfixed differences remain 2026-10-12 17:30:52 +02:00
ddidderr a7e8eb0ac6 docs(rewrite): status update 2026-10-12 17:24:18 +02:00
ddidderr d1eb32b4f7 docs(rewrite): status update 2026-10-12 16:55:22 +02:00
ddidderr b828cab2e5 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 729b544820 docs(rewrite): status update 2026-10-12 16:39:38 +02:00
ddidderr 96b688c9e4 docs(rewrite): register commit for row 34; status update 2026-10-12 16:24:10 +02:00
ddidderr 75fd25d1f1 docs(rewrite): status update 2026-10-12 16:11:05 +02:00
ddidderr 2a80d98483 docs(rewrite): status update 2026-10-12 15:56:32 +02:00
ddidderr ebd603f3da docs(rewrite): status update 2026-10-12 15:47:25 +02:00
ddidderr c46b595fd8 docs(rewrite): status update 2026-10-12 15:39:43 +02:00
ddidderr 9d5a8994a6 docs(rewrite): status update 2026-10-12 15:29:39 +02:00
ddidderr ef9193270f docs(rewrite): status update 2026-10-12 15:19:53 +02:00
ddidderr 0170d74a5c docs(rewrite): status update 2026-10-12 15:18:02 +02:00
ddidderr 0398b87cfc docs(rewrite): status update 2026-10-12 15:15:54 +02:00
ddidderr 21490817b4 docs(rewrite): status update 2026-10-12 14:59:39 +02:00
ddidderr df517db221 docs(rewrite): status update 2026-10-12 14:49:10 +02:00
ddidderr 3ce3225642 docs(rewrite): status update 2026-10-12 14:30:14 +02:00
ddidderr 8f3eee6c98 docs(rewrite): status update 2026-10-12 14:20:59 +02:00
ddidderr 7dd54833b9 docs(rewrite): status update 2026-10-12 14:02:10 +02:00
ddidderr 2a49cd0d1d docs(rewrite): status update 2026-10-12 13:54:26 +02:00
ddidderr 1ff1bab0e8 docs(rewrite): status update 2026-10-12 13:48:07 +02:00
ddidderr a41831c631 docs(rewrite): status update 2026-10-12 13:24:19 +02:00
ddidderr 7b3fffded3 docs(rewrite): status update 2026-10-12 12:58:13 +02:00
ddidderr 73ed73831e docs(rewrite): status update 2026-10-12 12:46:40 +02:00
ddidderr ecd67c8f3e docs(rewrite): status update 2026-10-12 12:35:51 +02:00
ddidderr 7480f99d91 docs(rewrite): status update 2026-10-12 12:07:53 +02:00
ddidderr 7087ae8a3e docs(rewrite): status update 2026-10-12 11:57:13 +02:00
ddidderr 70c250cf2d docs(rewrite): status update 2026-10-12 11:09:29 +02:00
ddidderr 207782317d docs(rewrite): status update 2026-10-12 11:01:24 +02:00
ddidderr 1327e63811 docs(rewrite): status update 2026-10-12 10:54:15 +02:00
ddidderr ffc91c31e4 docs(rewrite): status update 2026-10-12 10:34:13 +02:00
ddidderr dbdac96dfa docs(rewrite): status update 2026-10-12 10:27:45 +02:00
ddidderr e57e54cbf2 docs(rewrite): status update 2026-10-12 10:12:12 +02:00
ddidderr a5deda9d7b docs(rewrite): status update 2026-10-12 10:06:14 +02:00
ddidderr 0f898d3e41 docs(rewrite): status update 2026-10-12 09:32:55 +02:00
ddidderr 41e0b9cb68 docs(rewrite): status update 2026-10-12 08:45:38 +02:00
ddidderr bc297c823b docs(rewrite): status update 2026-10-12 08:22:50 +02:00
ddidderr 2d897a61ad docs(rewrite): status update 2026-10-12 08:16:26 +02:00
ddidderr 5568f99bae docs(rewrite): status update 2026-10-12 06:55:01 +02:00
ddidderr d514dca6ee docs(rewrite): phase 8 status update 2026-10-12 06:38:49 +02:00
ddidderr 020beb2d75 docs(rewrite): phase 8 status update 2026-10-12 06:03:20 +02:00
ddidderr 452b782149 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 28f55ff2dd docs(rewrite): phase 8 status update 2026-10-12 05:22:10 +02:00
ddidderr 5b9a0723a9 docs(rewrite): extend scope to all of Ghostty's Zig code (phase 8) 2026-10-12 05:05:36 +02:00
ddidderr bdf9f1c362 docs(rewrite): mark the rewrite complete in STATUS 2026-10-12 05:03:59 +02:00