feat: initial commit - Carinha Control Panel v1.0 com UI glassmorphism, watch-bar, emojis, braco robotico e conversa IA

This commit is contained in:
julio
2026-10-05 16:21:57 -03:00
commit 8217292893
114 changed files with 13145 additions and 0 deletions
+56
View File
@@ -0,0 +1,56 @@
# Treinamento e reações dinâmicas — 2026-10-05
## Visual sem frases e chuva de símbolos
Preferência aprovada: textos de conversa ficam apenas em /conversa; o celular exibe rosto e símbolos. Receitas antigas continuam válidas, mas suas legendas não são desenhadas. Música gera 16 notas caindo do topo; comemoração e carinho usam estrelas e corações. Café e ideia conservam um símbolo isolado, sem chuva. A chuva é curta, com posições/durações variadas e limpeza das partículas ao terminar ou substituir a reação. O prompt das novas receitas pede legenda vazia e símbolos coerentes com o assunto.
Teste em navegador confirmou 16 partículas, deslocamento vertical descendente, ausência de frase/balão e limpeza após o efeito. Reabra o app conectado para receber o HTML atualizado. Não gera novas imagens de figurinhas neste incremento.
Design aprovado: nova aba /treinamento, rotina e preferências, diário de conversas, resumo de uma hora, biblioteca de animações e feedback. É aprendizado por contexto; os pesos do Gemini não são treinados.
## Uso
1. Abra /treinamento e registre sua rotina ou converse no painel.
2. Clique Criar reações agora. Gemini Flash Lite gera um resumo e três novas receitas de animação.
3. Prévia anima o desenho dentro da aba. Mostrar no celular publica a reação; o app conectado consulta e renderiza. ACK do servidor não é confirmação visual do aparelho.
4. Gostei/Não gostei ficam salvos. O próximo pedido de geração recebe as avaliações; o Gemini da conversa pode escolher entre as cinco últimas reações que não tenham avaliação negativa.
5. Opcionalmente ative geração por hora. Está desligada por padrão. O servidor verifica a cada 30 segundos e gera após um intervalo de uma hora se houve nova conversa, sem movimentar motores. Abrir a aba não gera chamada. Reiniciar o serviço reinicia a contagem do intervalo.
## Diário e memória
treinamento.db no Orange Pi guarda rotinas, diário com horário, resumos e reações. Conversas são copiadas para o diário a partir da atualização; não retrodatamos conversas anteriores. O resumo usa até 200 mensagens da última hora e o último resumo. UI mostra 50 eventos e 30 reações; retenção: 2000 eventos, 100 reações e 100 resumos. Rotinas têm limite de 30 entradas, 300 caracteres cada, e também entram no contexto da conversa Gemini.
Atividades descritas pelo usuário são relatos; este diário não registra sensores ou ações físicas verificadas. O modelo pode cometer erros ao resumir. Apagar diário e resumos mantém rotinas e reações; apagar conversas e lembranças no painel também limpa diário/resumos. Rotinas podem ser apagadas individualmente.
## Renderização
Receitas contêm nome, motivo, legenda, símbolo e até seis passos. Cada passo define forma dos olhos e boca, cor de uma paleta, deslocamento limitado, escala e duração. O renderer usa o SVG existente, interpolação e símbolos animados. É composição procedural, não geração de imagens ou de código. Sobrancelhas seguem as opções e formas existentes do rosto. Receitas são validadas no servidor antes de salvar; o navegador também limita valores. Nenhum comando de servos é emitido.
O celular deve recarregar carinha.html para receber reacoes-render.js. Não há atualização de APK necessária no modo conectado. O fallback offline do APK antigo conserva as expressões anteriores.
## Verificação e limites
Gemini criou Comemoração, Dança Musical e Ideia Feliz a partir de uma conversa de teste. Em novo pedido, escolheu Dança Musical e publicou a receita para o app (2,58 s). Navegador verificou a prévia real e layout em 390 px, sem erros JS. Testes de validação, persistência, gatilho simulado de uma hora e catálogo passaram. A passagem física de uma hora e a exibição no celular não foram verificadas diretamente nesta sessão.
Dados de contexto são enviados ao Google quando Gemini é usado. A chave permanece no servidor. Geração manual/periódica consome cota; falhas são apresentadas na aba. As reações criadas inicialmente são dados de teste, avaliáveis/aproveitáveis pelo usuário.
Backup dos arquivos anteriores: /opt/carinha-pc/backup-treinamento-20261005. Para desativar geração periódica, desmarque a opção. Configurações do braço e dos servos foram preservadas.
## Ajuste visual aprovado
A queda foi substituida por simbolos em posicoes aleatorias que aparecem e desaparecem suavemente. Notas, estrelas e coracoes mantem posicao fixa durante cada efeito, com tempos diferentes e brilho leve. Teste do navegador confirmou ausencia de queda, animacao de opacidade e limpeza ao final. Atualize a previa e reabra o app conectado.
## Icones nos olhos
Ideia e cafe agora aparecem dentro de cada olho, acompanhando a posicao e a escala do desenho. O simbolo expira junto com a reacao. Teste do navegador confirmou dois icones contidos nos olhos, ausencia de legenda e restauracao ao terminar; efeito de simbolos piscando tambem passou. Reabra o app para atualizar o renderer do rosto.
A bolinha de brilho fica oculta enquanto ha icone dentro dos olhos e volta ao desenho normal ao terminar. Teste de navegador confirmou ocultacao e restauracao nos dois olhos.
## Refinamento visual — 05/10/2026
Prévia ampliada para 360 px no computador, controles agrupados ao lado, textos mais curtos e botão Desenhar e mostrar destacado. Opções automáticas e registros ficam em seções expansíveis. O rosto mantém fundo preto, com halo discreto na cor dos olhos e interpolação mais suave dos movimentos. Ícones e figurinhas nos olhos continuam ocultando o brilho branco da íris.
Validação: testes Chromium de prévia, SVG dentro e fora dos olhos, restauração do brilho e layout móvel de 390 px passaram sem erros JavaScript. A aparência física no celular depende de recarregar a tela HTML; não exige APK novo.
### IP e confirmação da recarga
O painel detecta o IP do celular pela origem da telemetria e preenche o endereço do servidor usado no navegador. Cada recarga recebe um identificador; a tela mostra Tela atualizada por quatro segundos e devolve o identificador na telemetria. O painel só informa sucesso após essa confirmação; após 12 segundos sem resposta, orienta reabrir o app. Uma tela HTML antiga precisa ser reaberta uma vez para receber o novo comando. Testes: 12 verificações HTTP, navegação única de recarga e teste Chromium de IP e aviso passaram. IP real recebido do celular: 192.168.1.16.