Flowral Control Center — PRD e especificação
Stack aprovada: Rust + Slint. Aplicativo único, modular, iniciado sob demanda. UX compacta, papel, sidebar lateral e busca global. Não executar inteiro como root.
IA visual
Navegação: sidebar pequena (categorias), conteúdo com hierarquia direta, barra de busca, breadcrumbs opcionais, estados loading/error/empty, toasts acionáveis; layout responsivo para 1366×768 e HiDPI. Aplicar tokens dos seis temas.
Módulos e integrações
| Página | Ações | Fonte preferencial |
|---|---|---|
| Aparência | Sakura/Daisy/Petunia, light/dark, wallpapers, fonte, ícones, tema GTK/Qt, bordas e cursor | flowral-theme, adaptadores |
| Wi-Fi | scan, conectar/desconectar, status, esquecer, rede oculta | NetworkManager D-Bus |
| Bluetooth | liga/desliga, scan, pareamento, confiança, remoção | BlueZ D-Bus |
| Áudio | dispositivos, volume, mute, seleção de entrada/saída | PipeWire/WirePlumber |
| Monitores | resolução, taxa, escala, layout, brilho | interface de outputs que Swirl suporta; salvar/reverter |
| Energia | bateria, suspensão, tampa, brilho, TLP profile | UPower, acpid, TLP (sem controladores concorrentes) |
| Entrada | teclado, layout, TrackPoint, touchpad, gestos | Swirl/libinput e config validada |
| Aplicativos | listar, instalar, remover, atualizar por origem | XBPS, Flatpak, AppImage helper |
| Desenvolvimento | Neovim, ferramentas CLI, PATH, runtime, status | utilitários locais sob demanda |
| Servidores MCP | catalogar, configurar, habilitar por cliente/projeto, testar | flowral-mcp |
| Providers | editar endpoints, modelos, autenticação, escopos, custo e teste | flowral-providers |
| Agentes | agentes disponíveis, sessões, permissões, chat | flowral-acp e OpenCode API |
Componentização Slint
ControlCenterWindow: navigation + search + bread crumbs.SettingsSection,StatusCard,DeviceRow,PermissionDialog,OperationProgress.ThemePicker,ColorPicker,FontPicker,WallpaperPicker.ProviderEditor,ModelEditor,McpEditor,AgentSessionView.- Componente de busca por
setting_id, categoria, palavras-chave e alias; acessível por teclado.
Cada módulo implementa:
id / title / search_terms / capabilities / read_status()
read_settings() / validate(diff) / preview() / apply() / rollback()
permissions / supported / error / help_link
Essa estrutura é contrato arquitetural ilustrativo, não trait Rust implementado.
Transações perigosas
- Alteração de resolução: confirmação visível com timer e reversão caso não confirmada; manter display conhecido.
- Wi-Fi: avisar se conexão remota será interrompida.
- Pacotes: mostrar origem, dependências e removidos antes da transação.
- Segurança/credenciais: armazenar em keyring, não logar valores; mostrar apenas status (configurado/não configurado).
- Configuração de ACP/MCP: mudanças destrutivas ou com código executável pedem confirmação contextual.
UX acessível
Ações com textos compreensíveis; campos com validação imediata; nenhum botão de salvar inesperado; undo contextual; teclado/navegação, contraste, tamanho de fonte escalável e opção sem animações. Sidebar 8–12 categorias com agrupamentos em vez de centena de ajustes simultâneos.
Desempenho
Central fecha totalmente sem deixar processo residente, exceto tarefas em andamento explicitamente autorizadas. Módulos e queries carregados ao abrir sua página. Prévia de wallpaper com thumbnails/cache, nunca carregar dezenas de imagens full-res. Medir cold start, peak RSS, latency de page switch.
Aceite MVP
UI abre em Wayland; Appearance aplica e reverte; Wi-Fi lista/conecta; Bluetooth gerencia device; áudio volume/output; acesso seguro às operações elevadas; erro claro quando serviço ausente; restauração de config sem quebrar sessão. AI/MCP em entregas posteriores.