Sobre el proyecto

JUI es un framework Java ligero para crear aplicaciones web interactivas con una superficie de aplicación deliberadamente pequeña. La API canónica vive bajo `it.jui.framework` y sigue un modelo simple: implementa `JuiApp`, recibe un `UIContext` y describe la aplicación usando llamadas Java compactas como `ui.title(...)`, `ui.textInput(...)`, `ui.button(...)`, `ui.table(...)` y `ui.map(...)`. JUI luego gestiona HTTP, renderizado en el navegador y estado de sesión. Una aplicación mínima implementa `JuiApp` y sobrescribe `run(UIContext ui)`, llamando métodos como `ui.title(...)` y `ui.text(...)`. Las aplicaciones interactivas pueden leer entradas como `ui.textInput(...)` y `ui.slider(...)`, y reaccionar a `ui.button(...)`, que usa semántica de eventos de un solo uso: un clic evalúa a `true` para el renderizado provocado por ese clic y luego se consume. El estado del widget se clavea deterministicamente a partir de la etiqueta del widget en la API actual. Las APIs orientadas a texto escapan HTML por defecto, mientras que el HTML crudo debe ser explícito mediante `ui.html(...)`. Una CLI soporta crear un archivo fuente desde la plantilla canónica (`init`), ejecutarlo (`run`) y observarlo (`watch`). JUI compila el código fuente de la aplicación usando el JDK actual y lo sirve a través de un servidor HTTP integrado. El proyecto está organizado en módulos: `jui-core` es la implementación actual y la API canónica, mientras que `jui-core-old` es una implementación heredada mantenida solo con fines históricos/de referencia. Otros módulos y código de playground pueden contener ejemplos heredados y no deben tratarse como la fuente de verdad de la API. Un objetivo de diseño a largo plazo declarado es hacer que JUI sea especialmente adecuado para la generación de código por LLMs locales pequeños, favoreciendo pocos tokens de código fuente, poco contexto de framework y APIs deterministas. El principio de diseño se describe como "Tokens mínimos desde la intención del usuario hasta la aplicación en ejecución." Se espera que el trabajo futuro favorezca primitivas de aplicación de alta densidad semántica, un modelo/IR de aplicación compacto y validado, metadatos de API generados por máquina para contexto de LLM, y empaquetado/despliegue determinista. El proyecto se compila con `mvn test`; la suite de pruebas unitarias normal debe terminar automáticamente, y las pruebas manuales que inician un servidor bloqueante se mantienen deshabilitadas del ciclo de vida de pruebas unitarias de Maven. JUI está licenciado bajo Apache License 2.0.