From 5b9a0723a9800747107ce38b03e252c066ce43ed Mon Sep 17 00:00:00 2001 From: ddidderr Date: Mon, 12 Oct 2026 05:05:36 +0200 Subject: [PATCH] docs(rewrite): extend scope to all of Ghostty's Zig code (phase 8) --- docs/rewrite/ARCHITECTURE.md | 16 ++++++++++++++-- docs/rewrite/STATUS.md | 16 +++++++++++++++- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/docs/rewrite/ARCHITECTURE.md b/docs/rewrite/ARCHITECTURE.md index afe00d5..72dd77a 100644 --- a/docs/rewrite/ARCHITECTURE.md +++ b/docs/rewrite/ARCHITECTURE.md @@ -3,8 +3,15 @@ Rust rewrite of Ghostty 1.3.1. Reference source: `../ghostty/` (Zig), referred to below as `ZIG/` (= `../../../ghostty`). -Target platform: **Linux (GTK4 + libadwaita, OpenGL)**. macOS/Metal/CoreText, -WASM, Windows and the embedded C API (`libghostty`) are out of scope. +Primary platform: **Linux (GTK4 + libadwaita, OpenGL)** — built, tested and +verified at runtime here. Phase 8 extends the port to the rest of Ghostty's +Zig code: the embedded `libghostty` C API (identical `include/ghostty.h` ABI, +so Ghostty's unchanged Swift macOS app can link the Rust library), the +`libghostty-vt` C API (`include/ghostty/vt*.h`), WASM (wasm32), macOS +(Metal renderer, CoreText fonts, Darwin keymap/os) and Windows (ConPTY). +Non-Linux targets are compile-checked (`cargo check --target ...`) on this +machine; they cannot be run here. The Swift macOS app itself is not Zig and +stays as-is (it is a client of the C ABI). ## Top-down decomposition @@ -112,6 +119,11 @@ integration), `po/` (translations), crate-local `res/`/`shaders/`/`resources/`. - macOS (Swift app, Metal, CoreText), Windows, WASM, libghostty C API. - (The ImGui inspector was deferred and is now ported: `docs/rewrite/notes/ghostty-inspector.md`.) +## Scope changes + +- 2026-10-12: Sentry crash handling and GTK<4.14/libadwaita<1.5 fallbacks, + previously omitted, are ported in Phase 8 for full parity. + ## Intentional omissions (decided by the orchestrator) - Sentry crash reporting (`crash/*`): optional and disabled by default in diff --git a/docs/rewrite/STATUS.md b/docs/rewrite/STATUS.md index 88fb699..f5b2e94 100644 --- a/docs/rewrite/STATUS.md +++ b/docs/rewrite/STATUS.md @@ -1,6 +1,6 @@ # Status -**Overall: complete.** Ghostty 1.3.1 is fully rewritten in Rust for Linux/GTK (see ARCHITECTURE.md for scope and intentional omissions). 3038 tests pass; clippy -D warnings clean; verified in the real app. +**Overall:** Linux/GTK port complete and verified (3038 tests). **Phase 8 in progress:** libghostty C API, libghostty-vt C API, WASM, macOS Zig paths, Windows, crash handling, GTK compat fallbacks, remaining verification + perf. Legend: ⬜ todo · 🟨 in progress · ✅ done (gate passed, committed) · ⚠️ done with gaps @@ -45,6 +45,19 @@ Legend: ⬜ todo · 🟨 in progress · ✅ done (gate passed, committed) · ⚠ | V3 | real-app verification: nvim/htop/less/tmux, mouse, unicode, kitty images, paste dialog | sonnet | ✅ | no product bugs found | | DOC | README, CHANGELOG, ARCHITECTURE decomposition | opus | ✅ | | +## Phase 8 — full scope +| WP | Scope | Owner | State | Notes | +|---|---|---|---|---| +| L2 | libghostty-vt C API (lib_vt.zig, terminal/c/*, vt.h) + run example/c-vt* + wasm examples | sonnet | 🟨 | batch A | +| W1 | WASM: main_wasm, config/Wasm, os/wasm, font web_canvas face+shaper | sonnet | 🟨 | batch A | +| CR | crash/* (sentry envelope, local crash reports, thread context hooks) | sonnet | 🟨 | batch A | +| PF | perf: RenderState render 2.4x, parser SGR 1.5x | sonnet | 🟨 | batch A | +| VR | verify IME, paste dialog confirm/deny, quick terminal (niri layer-shell), Flatpak via mock D-Bus | sonnet | 🟨 | batch A | +| L1 | libghostty C API (apprt/embedded.zig, main_c.zig, config CApi/c_get, ghostty.h ABI) | – | ⬜ | batch B | +| M1 | macOS: Metal renderer, CoreText face/shaper/discovery, KeymapDarwin, os macos/mach | – | ⬜ | batch B | +| WIN | Windows: ConPTY pty, os/windows, Command | – | ⬜ | batch B | +| GC | GTK/adw compat fallbacks, bench wcwidth/uucode modes, helpgen generators | – | ⬜ | batch B | + ## Log - 2026-10-11: Phase 0 complete; Phase 1 launched. - 2026-10-11: vt (W1+W2) and font sprite (W7) committed; S1 + T1 launched. @@ -64,3 +77,4 @@ Legend: ⬜ todo · 🟨 in progress · ✅ done (gate passed, committed) · ⚠ - 2026-10-12: V1b + P2 committed (2983 tests). I1 inspector + RV2 completeness audit launched. - 2026-10-12: I1, X1, X2 committed (3037 tests). Docs written. V3 real-app verification running. - 2026-10-12: V3 verification passed, final polish (nightly fmt) done. Rewrite complete. +- 2026-10-12: Stop-hook review: 'full end-to-end' not met → Phase 8 (full scope) started.