Sobre o projeto

JUI é um framework Java leve para criar aplicações web interativas com uma superfície de aplicação deliberadamente pequena. A API canônica vive sob `it.jui.framework` e segue um modelo simples: implemente `JuiApp`, receba um `UIContext` e descreva a aplicação usando chamadas Java compactas como `ui.title(...)`, `ui.textInput(...)`, `ui.button(...)`, `ui.table(...)` e `ui.map(...)`. O JUI então cuida de HTTP, renderização no navegador e estado de sessão. Uma aplicação mínima implementa `JuiApp` e sobrescreve `run(UIContext ui)`, chamando métodos como `ui.title(...)` e `ui.text(...)`. Aplicações interativas podem ler entradas como `ui.textInput(...)` e `ui.slider(...)`, e reagir a `ui.button(...)`, que usa semântica de evento de uso único: um clique avalia para `true` na renderização acionada por esse clique e é então consumido. O estado do widget é chaveado deterministicamente a partir do rótulo do widget na API atual. APIs orientadas a texto escapam HTML por padrão, enquanto HTML bruto deve ser explícito via `ui.html(...)`. Uma CLI suporta criar um arquivo de origem a partir do template canônico (`init`), executá-lo (`run`) e observá-lo (`watch`). O JUI compila o código-fonte da aplicação usando o JDK atual e o serve através de um servidor HTTP embutido. O projeto é organizado em módulos: `jui-core` é a implementação atual e a API canônica, enquanto `jui-core-old` é uma implementação legada mantida apenas para fins históricos/referência. Outros módulos e código de playground podem ainda conter exemplos legados e não devem ser tratados como fonte de verdade da API. Um objetivo de design declarado de longo prazo é tornar o JUI especialmente adequado para geração de código por LLMs locais pequenos, favorecendo poucos tokens de origem, pouco contexto de framework e APIs determinísticas. O princípio de design é descrito como "Mínimos tokens da intenção do usuário até a aplicação em execução." Espera-se que o trabalho futuro favoreça primitivas de aplicação de alta densidade semântica, um modelo/IR de aplicação compacto e validado, metadados de API gerados por máquina para contexto de LLM e empacotamento/implantação determinísticos. O projeto compila com `mvn test`; a suíte de testes unitários normal deve terminar automaticamente, e testes manuais que iniciam um servidor bloqueante são mantidos desabilitados do ciclo de vida de testes unitários do Maven. O JUI é licenciado sob a Apache License 2.0.