Sobre el proyecto

SwiftTUI Web proporciona dos paquetes npm que llevan aplicaciones SwiftTUI—semántica de SwiftUI dibujada en celdas de terminal—al navegador. Crea una App una vez y envía el mismo árbol de vistas, @State y @FocusState a una página web, renderizado mediante Canvas o DOM con un árbol de accesibilidad semántico, sin reescribir ni usar un emulador de terminal como xterm.js. Una aplicación SwiftTUI se compila a wasm32-wasi y transmite una superficie rasterizada estructurada. El paquete @swifttui/web pinta esa superficie en la página mediante motores DOM o canvas y monta un árbol de accesibilidad ARIA real. El árbol ARIA es una vista previa de presentación semántica unidireccional: se presentan orden de lectura, nombres, roles, estado oculto, anuncios y enfoque de origen en tiempo de ejecución, pero el enfoque de origen asistivo, la activación, el ajuste y la edición no se devuelven a SwiftTUI. Este repositorio contiene dos de los cinco hosts de SwiftTUI: un paquete WASI estático y un WebHost de localhost. El framework en sí vive en SwiftTUI/swift-tui. La división mantiene los procesos Swift en tiempo de compilación y el trabajo del sistema de archivos fuera del runtime seguro para navegador, por lo que cualquier bundler puede importar el runtime. Paquetes: - @swifttui/web: Runtime de navegador—carga de manifiesto de escena, renderizado DOM + canvas, montaje ARIA, puentes de escena WebSocket + WASI. - @swifttui/build: Herramientas de compilación—generación de manifiesto, compilaciones Swift WASI, validación de wasm y la CLI swifttui-web. Instalación: Ambos paquetes se publican en npm como ESM con declaraciones TypeScript incluidas. No se necesita Bun ni cadena de herramientas TypeScript; contienen JavaScript dist/ compilado y declaraciones. Instala vía npm o desde tarballs de lanzamiento de GitHub. Uso básico: Compila una aplicación SwiftTUI a WASI con `npx swifttui-web build --package-path ./TerminalApp --app MyApp`, luego monta el manifiesto y wasm resultantes desde el runtime del navegador usando createWebHostApp y createWasmSceneRuntimeFactory. El runtime WASI requiere que la página host sirva los encabezados Cross-Origin-Opener-Policy: same-origin y Cross-Origin-Embedder-Policy: require-corp para stdin respaldado por SharedArrayBuffer; sin ellos el canvas permanece en blanco. Estado: beta; la API pública puede cambiar. Una demo en vivo corre en https://swifttui.sh/webexample. Documentación y referencia de API en https://swifttui.sh/docs/documentation/. Otros hosts incluyen terminal (importación SwiftTUI predeterminada), SwiftUI nativo (swift-tui-swiftui) y Jetpack Compose (swift-tui-android). Licencia: MIT.