Memory: libghostty-Build + MiniTerm-Integration dokumentiert

This commit is contained in:
marcus.hinz
2026-06-21 21:46:18 +02:00
parent d5df5e85ae
commit 717a97f476
+18 -1
View File
@@ -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.