flowral.docs

Live Preview e laboratórios de execução

Estado: arquitetura aprovada para planejamento, ainda não implementada. Meta: permitir que agente de código edite, veja, interaja e teste o Flowral sem reconstruir uma ISO para cada mudança.

Quatro camadas de teste

Ambiente O que valida Limitação
Slint Viewer, Live Preview e MCP componentes, tema, layout, clique, teclado e acessibilidade não testa o compositor inteiro
Swirl aninhado (se suportado) janelas, Layer Shell, bordas, atalhos, gestos, painéis precisa de prova de compatibilidade do fork
Void Linux glibc em QEMU/KVM + libvirt serviços, runit, login, boot, ISO, pacotes e Swirl GPU virtual não reproduz a GPU do ThinkPad
ThinkPad Edge E430 gráficos Intel/NVIDIA da unidade, Wi-Fi, TrackPoint, bateria e RAM testes supervisionados, sem tocar discos reais automaticamente

Slint Live Preview

Usar a feature Cargo de desenvolvimento slint/live-preview e a variável SLINT_LIVE_PREVIEW=1. O nome do pacote no exemplo abaixo pressupõe que ele será criado.

SLINT_LIVE_PREVIEW=1 cargo run -p flowral-control --features slint/live-preview

É possível pré-visualizar somente uma interface, sem backend real, utilizando:

slint-viewer --auto-reload apps/flowral-control/ui/main.slint

Hot reload atualiza alterações visuais em arquivos .slint; alterações nas interfaces Rust/Slint podem exigir recompilar e reiniciar. Nunca incluir a feature de live preview no release.

Fonte: https://docs.slint.dev/latest/docs/slint/guide/tooling/live-preview/

Slint MCP — testes executados pelo code agent

Depois de criar um app Rust+Slint, habilitar feature slint/mcp somente em builds de teste e metadados de introspecção:

SLINT_EMIT_DEBUG_INFO=1 SLINT_MCP_PORT=8080 cargo run \
  -p flowral-control --features slint/mcp

O servidor oferece inspeção da árvore de UI, screenshots, clique, drag e digitação. Testar backend headless/software conforme suportado pela versão instalada. É servidor de debug sem autenticação, ligado ao localhost na implementação atual; não expor na rede pública nem manter ativo em produção. Usar dados falsos nos módulos de Wi-Fi, áudio, MCPs, providers e disco durante prévia.

Fontes:

  • https://docs.slint.dev/latest/docs/rust/i_slint_backend_testing/
  • https://github.com/slint-ui/slint/blob/master/docs/development/mcp-server.md

Sessão Swirl aninhada

Antes de anunciar uma receita funcional, validar commit/versão do Swirl, suporte a nested Wayland, wlr-layer-shell, IPC, EGL e gerenciamento de input. Se o nested não funcionar, usar VM e manter o preview Slint isolado. Um compositor secundário deve receber WAYLAND_DISPLAY específico; jamais alterar sessão principal do host.

Máquina virtual

Ferramentas: QEMU/KVM + libvirt com virt-manager/virt-viewer para visualização, virsh e SSH para automação. Boxes pode servir para testes manuais, mas não será o controlador principal.

Config inicial indicativa: 4 vCPUs, 4 GiB de RAM (até 8 GiB para builds internos), 40 GiB QCOW2, NAT e virtio-gpu/virgl se suportados. Guest com Void glibc e Swirl. SSH com chave e usuário sem root; snapshots antes de operações destrutivas. Testar BIOS Legacy e UEFI em VMs separadas.

# A VM flowral-dev já precisa existir
virsh start flowral-dev
virt-viewer flowral-dev
virsh screenshot flowral-dev /tmp/flowral-screen.png

O screenshot do libvirt mostra o console, sujeito ao backend gráfico. Acelerador virgl não emula a GPU real do Edge E430. Snapshots da VM não incluem necessariamente diretórios compartilhados com virtiofs; usar Git/rsync para versionar arquivos externos.

Fluxo

  1. Code agent lê AGENTS.md, especificação do domínio e objetivo do PR.
  2. Modifica Rust e Slint; bacon/just executam verificações rápidas.
  3. Live Preview atualiza tela; MCP inspeciona componentes e captura imagem real.
  4. Executa testes de teclado, foco, contraste e estados de interface.
  5. Valida shell Swirl em sessão nested quando disponível.
  6. Valida SO/serviços/ISO na VM com snapshot e SSH.
  7. Testa hardware E430 depois de aprovação.
  8. PR inclui evidências, versões, prints reais, regressões e limitações.

Critério de pronto do ambiente: hot reload demonstrado, botão testado via MCP, screenshot real, VM acessível com Swirl, captura do console e restauração de snapshot. Não afirmar que uma dessas etapas foi executada até existir evidência.