Skip to content
DannyBaanksPublic

About

Studio local para explorar, editar y crear previews aproximadas de interfaces SwiftUI sin compilar Swift; CLI, sesiones con límites de escritura y evidencia SHA-256.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

15 Commits

Folders and files

Repository files navigation

OpenSwift

Una mesa compartida para diseñar una pantalla SwiftUI.
Un sketch local, una sesión con límites claros y una preview que humanos y agentes pueden revisar juntos.

Empieza · Studio · Qué dibuja · Desarrollo

Python 3 Tauri 2 License MIT


Qué es

OpenSwift convierte una parte reconocible de SwiftUI —stacks, texto, botones y algunos modificadores— en un bosquejo visual dentro de un marco de iPhone. No compila ni ejecuta Swift. Sirve para hablar de una pantalla y probar cambios de layout sin abrir Xcode.

La pieza central es la sesión .ui-session: fija una vista, guarda la intención, registra previews con hashes SHA-256 y, mientras la sesión está activa, limita los guardados de Studio al archivo target y a los archivos allowed. Así la persona y el agente pueden iterar sobre el mismo objetivo y ver qué cambió.

OpenSwift Studio ejecutándose como app de escritorio

Empieza en un minuto

Necesitas Python 3.10 o posterior. El CLI usa la biblioteca estándar de Python.

git clone https://github.com/DannyBaanks/OpenSwift.git
cd OpenSwift

# Abre una sesión para el ejemplo incluido
PYTHONPATH="$PWD" python3 -m openswift focus examples/hello.swift \
  --intent "darle más aire al panel"

# Genera la preview y consulta la sesión
PYTHONPATH="$PWD" python3 -m openswift render --device iphone-16-pro
PYTHONPATH="$PWD" python3 -m openswift status

Cada render guarda otra iteración en .ui-session/iterations/. La preview actual queda en .ui-session/preview.png y su SVG en .ui-session/preview.svg.

Para cerrar la sesión, elimina .ui-session/target.json cuando ya no necesites el límite de escritura. Los archivos de evidencia de la sesión se conservan.

Studio

App de escritorio

La app de escritorio usa Tauri 2, Bun, Rust y Python 3. Desde la raíz del clon:

cd app
bun install
bun run tauri dev

Abre una carpeta de proyecto, elige un archivo .swift y pulsa Run. Save escribe los cambios en el archivo abierto; Ctrl+S guarda y Ctrl+Enter vuelve a dibujar. La app no ejecuta breakpoints ni compila Swift.

Para compilar los paquetes disponibles en tu plataforma:

bun run tauri build

En Linux se generan los paquetes disponibles, incluido .deb, .rpm y AppImage. En Windows, Tauri integra icon.ico en el ejecutable y usa los paquetes nativos disponibles. La compilación requiere las dependencias nativas de desarrollo de Tauri. Consulta la guía de Tauri para los requisitos de tu sistema.

Descarga los instaladores de escritorio desde Releases. El release v0.5 incluye un instalador NSIS .exe para Windows, un .AppImage para Linux y sus checksums SHA-256.

Studio web local

Desde la raíz de OpenSwift, apunta PYTHONPATH al clon y pasa la carpeta del proyecto que quieras abrir:

OPENSWIFT_DIR="$PWD"
PYTHONPATH="$OPENSWIFT_DIR" python3 -m openswift studio \
  "/ruta/a/tu/proyecto" --port 8765

Abre http://127.0.0.1:8765. El servidor sólo acepta los hosts locales esperados, bloquea orígenes externos y comprueba que las rutas permanezcan dentro del proyecto. Si hay una .ui-session/target.json, también aplica su lista de escritura permitida.

CLI

# Dibujar un SVG sin crear sesión
PYTHONPATH="$PWD" python3 -m openswift draw examples/hello.swift \
  --device iphone-15 --output /tmp/hello.svg

# Revisar el árbol como JSON
PYTHONPATH="$PWD" python3 -m openswift sketch examples/hello.swift \
  --device iphone-12

# Ver las opciones disponibles
PYTHONPATH="$PWD" python3 -m openswift --help

Dispositivos incluidos: iphone-11, iphone-12, iphone-13, iphone-14, iphone-14-plus, iphone-14-pro, iphone-15, iphone-16 e iphone-16-pro.

Qué dibuja

SwiftUI Resultado aproximado
VStack, HStack, ZStack Layout básico y espaciado
Text, Button Texto, tamaño, peso y color básico
Spacer, Divider Separación y divisor
TextField, SecureField, Label, Image Caja etiquetada
Form, Section, List, ScrollView Contenedores verticales
NavigationStack, Group, GroupBox Contenedores del sketch
Padding, fondo, radio de esquina y frame sencillo Modificadores compatibles del preview
.sheet, .overlay, bindings, animaciones y vistas propias No se ejecutan; pueden aparecer como cajas o avisos

La salida ayuda a conversar sobre composición y proporciones. No representa fielmente el comportamiento, tipografía ni layout final de SwiftUI en iOS.

Sesiones y límites

Una sesión guarda:

.ui-session/
├── target.json       # objetivo, permitidos, proveedor e iteración
├── intent.md         # objetivo expresado en palabras
├── source.swift      # copia de referencia
├── preview.svg       # último sketch vectorial
├── preview.png       # último sketch rasterizado
├── preview.sha256    # hash de la preview PNG
└── iterations/       # previews anteriores y sus hashes

Studio bloquea las escrituras fuera de target y allowed mientras exista target.json. El límite se aplica al guardar desde Studio; no es un sandbox del sistema operativo ni restringe herramientas externas que editen archivos directamente.

Providers

Provider Estado
approximate-web Activo; dibuja SVG y PNG localmente
miniswift Nombre reservado; todavía no está conectado
xcode-preview Nombre reservado; todavía no está conectado

Desarrollo

PYTHONPATH="$PWD" python3 -m unittest discover -s tests

El editor puede usar el lexer msf para colorear Swift. Es opcional: para compilarlo se requiere Git y un compilador C:

./tools/build-lex.sh

El código de msf no está incluido en el repositorio. Está fijado a un commit y su licencia/procedencia se documenta en NOTICE.md.

El icono maestro está en app/src-tauri/icons/openswift-icon.svg. Para regenerar los iconos multiplataforma después de editarlo:

cd app
bun run tauri icon ./src-tauri/icons/openswift-icon.svg --output ./src-tauri/icons

Guías


Hecho para que humanos y agentes puedan mirar la misma pantalla y hablar de cambios concretos.

About

Studio local para explorar, editar y crear previews aproximadas de interfaces SwiftUI sin compilar Swift; CLI, sesiones con límites de escritura y evidencia SHA-256.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages