#!/bin/bash set -e echo "๐Ÿ”จ Building ghostty-vt.wasm..." # Check for Zig if ! command -v zig &> /dev/null; then echo "โŒ Error: Zig not found" echo "" echo "Install Zig 0.15.2+:" echo " macOS: brew install zig" echo " Linux: https://ziglang.org/download/" echo "" exit 1 fi ZIG_VERSION=$(zig version) echo "โœ“ Found Zig $ZIG_VERSION" # Initialize/update submodule if [ ! -d "ghostty/.git" ]; then echo "๐Ÿ“ฆ Initializing Ghostty submodule..." git submodule update --init --recursive else echo "๐Ÿ“ฆ Ghostty submodule already initialized" fi # Apply patch echo "๐Ÿ”ง Applying WASM API patch..." cd ghostty git apply --check ../patches/ghostty-wasm-api.patch || { echo "โŒ Patch doesn't apply cleanly" echo "Ghostty may have changed. Check patches/ghostty-wasm-api.patch" exit 1 } git apply ../patches/ghostty-wasm-api.patch # Build WASM echo "โš™๏ธ Building WASM (takes ~20 seconds)..." zig build lib-vt -Dtarget=wasm32-freestanding -Doptimize=ReleaseSmall # Copy to project root cd .. cp ghostty/zig-out/bin/ghostty-vt.wasm ./ # Revert patch to keep submodule clean echo "๐Ÿงน Cleaning up..." cd ghostty git apply -R ../patches/ghostty-wasm-api.patch # Remove new files created by the patch rm -f include/ghostty/vt/terminal.h rm -f src/terminal/c/terminal.zig cd .. SIZE=$(du -h ghostty-vt.wasm | cut -f1) echo "โœ… Built ghostty-vt.wasm ($SIZE)"