From 717a97f47605f7cf35f2a665983a418250da0671 Mon Sep 17 00:00:00 2001 From: "marcus.hinz" Date: Sun, 21 Jun 2026 21:46:18 +0200 Subject: [PATCH] Memory: libghostty-Build + MiniTerm-Integration dokumentiert --- limbach/memory/ghostty-miniterm-einbindung.md | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/limbach/memory/ghostty-miniterm-einbindung.md b/limbach/memory/ghostty-miniterm-einbindung.md index baea0b0..81c115a 100644 --- a/limbach/memory/ghostty-miniterm-einbindung.md +++ b/limbach/memory/ghostty-miniterm-einbindung.md @@ -20,4 +20,21 @@ Befund: - Bestehende Mac-Tools reichen sonst: swift (Xcode CLT), sips/iconutil/codesign (macOS built-in). Nur Zig ist neu. - Bundle-Hülle, make-app.sh und Shift+Enter-Key-Monitor bleiben unverändert; SwiftTerm-Variante bleibt als Rückfallpunkt funktionsfähig. -Stand 2026-06-21: Marcus tendiert dazu, es zu probieren; Umsetzung auf dem Mac noch nicht begonnen. +Projekt umgezogen nach `~/projects/claude-app-builder-4-mac` (eigenes Git, Remote git.lintus.art); aus `~/claude-projects` entfernt. + +Stand 2026-06-21: **libghostty erfolgreich gebaut.** Volle macOS-Variante mit Metal-Renderer (Surface-/App-API: `ghostty_app_new`, `ghostty_surface_new/draw/key`…) liegt als `vendor/libghostty/{lib/libghostty.a (arm64, 135 MB), include/, patches/, README.md}` im Projekt. Quelle Ghostty v1.3.1 + Zig 0.15.2. + +Stolpersteine (alle gelöst, im README/Patch dokumentiert): +- Zig 0.15.2 linkt auf dem **Host (macOS 26.5)** kein natives Binary — libSystem-Inkompatibilität mit dem 26er-SDK (Auto-Erkennung von `26.x` scheitert; explizit `26.0` ginge). 0.16/0.17 linken, aber Ghostty 1.3.1 baut nicht damit (ArrayList/EnvMap/Writer-Drift + requireZig). Kein Patch am Host möglich. +- Lösung: Build in **macOS-15-VM** (tart, cirruslabs-Image, Apple-Silicon-Host) mit aktivem **CLT (15.5-SDK)** → Zig linkt. `metal`-Shader-Compiler nur per `DEVELOPER_DIR` aus Xcode geholt. +- 3 Build-Patches an Ghostty: build.zig (macOS-libghostty.a-Install freischalten, shared `.so` raus), GhosttyXCFramework.zig (nur macOS-Slice, kein iOS/Universal), MetallibStep.zig (metal via Xcode-DEVELOPER_DIR). + +Link gegen Host-Swift verifiziert: Smoke-Test (modulemap + `swiftc -lghostty` + Frameworks AppKit/Metal/MetalKit/QuartzCore/CoreText/CoreGraphics/CoreVideo/IOSurface/Carbon/Foundation/CoreFoundation, `-lc++`) linkt die arm64-`.a` auf macOS 26.5/SDK-26 und ruft `ghostty_info()` (Cross-SDK unkritisch). + +**Surface-Integration gebaut und lauffähig** (Stand 2026-06-21): MiniTerm linkt libghostty, kompiliert, läuft, Test-`.app` startet ohne Crash mit GPU-gerenderter Login-Shell. +- `Sources/CGhostty/` — C-Modul (ghostty.h + modulemap) für die C-API. +- `Sources/MiniTerm/Ghostty.swift` — `GhosttyApp` (init/config/runtime-callbacks/tick) + `GhosttySurfaceView` (NSView, `ghostty_surface_new` mit nsview-Zeiger, Größe/Scale/Fokus, Tastatur inkl. Shift+Enter→`ghostty_surface_text`, Maus/Scroll). +- `main.swift` — Engine-Wahl per Info.plist `MTEngine` (Default `ghostty`, `swiftterm` = Fallback; auch bei libghostty-Init-Fehler). +- `Package.swift` — CGhostty-Target + linkerSettings (`-Lvendor/libghostty/lib -lghostty` + Frameworks AppKit/Metal/MetalKit/QuartzCore/CoreText/CoreGraphics/CoreVideo/IOSurface/Carbon, `-lc++`). + +Offen/zu prüfen: visuelle Bestätigung (Rendering, Tippen, Resize); Clipboard-Callbacks sind no-op (kein ⌘C/⌘V über libghostty); Font-Family wird nicht gesetzt (nur font_size); arm64-only. VM + Scratch abgeräumt.