flowral.docs

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.