- sistema/rede: a placa vira "carinha" na rede (avahi), http://carinha.local
na porta 80 (nftables redireciona para a 8100, sem tocar no 192.168.4.1
do portal Carinha-Config) e anúncio "_carinha._tcp" na 8100;
- app 0.9.1: quando o endereço salvo não responde, procura o anúncio na
rede (NsdManager), testa o endereço achado e passa a usar e guardar.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Todo dia, a partir das 9h, o Carinha cria 3 atividades novas (inspiracao.py):
- sinais de fontes abertas: tempo da cidade (Open-Meteo), datas
comemorativas da semana (lista fixa + feriados da BrasilAPI), "neste dia"
da Wikipédia e assuntos em alta no Google Trends Brasil;
- o Gemini escolhe ideias leves (descarta tragédia, política e afins) e
cada uma vira atividade pelo estúdio (Criacao.gerar), com motivo e uma
curiosidade;
- até 3 tentativas por dia, 30 min entre elas; botão "Criar mais agora";
- as atividades criadas entram na rotina do modo vida (as de hoje com 40%
de chance) e, com alguém perto, ele conta a curiosidade: legenda e voz
de robô (ordem "aprendi", até 2x por dia cada);
- painel: cartão "Ideias do dia" no estúdio (Mostrar, Contar, o que ele
viu na internet, ajustes: quantas, horário, cidade, fontes) e tópico no
guia.
Correções achadas no caminho:
- WebView de fábrica do S10 (Chrome 102) não tem AbortSignal.timeout: o
celular nunca mandava o status e a placa o via offline;
- arquivos estáticos com Cache-Control no-cache e o app com LOAD_NO_CACHE:
o WebView seguia com uma carinha.html velha depois de deploy;
- status do celular recusado vai para o journal (1 linha por minuto);
- legenda mais estreita para não cobrir a bateria.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sem servidor o app não finge mais que está tudo normal:
- o app guarda a última aparência e os ajustes vindos da placa (ponte
CarinhaApp); a cópia do APK abre com eles;
- a carinha dorme e não acorda com nada; no canto direito aparece a
placa ✕ celular animada com "sem conexão com a placa";
- o app tenta a placa a cada 10 s e volta sozinho; se a placa cai com
a página aberta, em 15 s ela dorme e mostra o aviso;
- endereço padrão passa a ser a Orange Pi (192.168.1.35:8100).
Também no app (0.9.0):
- modo quiosque como dono do aparelho (Quiosque/Admin, menu "Modo
quiosque"); a Samsung recusa com bootloader desbloqueado, vale no
LineageOS;
- carinha como tela inicial (HOME);
- android/enxugar-s10.ps1 desativa 57 apps sem uso no S10 (-Reativar
desfaz).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- historico.py: eventos de PIR (gpiomon no pino 11, gpiochip1 linha 70),
movimento e som do celular em SQLite; ate 200 eventos e 100 fotos;
cada sensor e a foto ligam/desligam; intervalo minimo por tipo
- PIR acorda o Carinha quando ele esta dormindo
- APK 0.8.3: o app consulta o pedido de foto e envia uma foto da camera
frontal (quadro da camera de movimento ou do video ao vivo)
- tela apaga depois de X minutos dormindo (preto total + brilho minimo no
AMOLED); acende com som, movimento, toque, comando ou PIR
- painel: tela Historico (sensores, fotos, filtros, apagar), atalho em Ao
vivo e no Ctrl+K, ajustes "Apagar a tela quando dormir"
- testes do historico (servico e rotas HTTP)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- palco fixo no topo: camera grande com o rosto num quadrinho no canto
(toque troca os dois); botao "Ligar camera" direto no palco
- controles em lista agrupada estilo Ajustes do iPhone (Grupo, Linha,
Interruptor): camera e rastreamento, gestos, aparencia, personalidade
- cartao do celular com modelo, Android, versao do app, bateria, Wi-Fi,
IP e estado do rosto
- APK 0.8.1 informa ip/modelo/android/app/wifi (ACCESS_WIFI_STATE, so o
nivel do sinal); servidor usa o IP informado pelo app em vez do
endereco da conexao
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- carinha.html assina /eventos (expressao, app_config, conversa, reacao,
recarregar) e volta ao polling de /fila sozinho se o SSE cair; foto dos
ajustes a cada (re)conexao; token (?t=) vai em todo fetch ao servidor
- APK 0.8-token: token nas preferencias e no menu de toque longo, enviado
na pagina, no HTTP do Java e ao llama-server (--api-key); trocar servidor
por Intent exige o token salvo; camera/microfone so para o servidor
configurado ou a copia local
- cerebro/conversa mandam a chave ao llama-server do S10
- servidor: evento SSE 'recarregar'; remove /camera/frame e /app/connect;
enderecos antigos redirecionam para a secao do painel novo
- remove dashboard, painel, conversa, emojis, treinamento, braco, servos,
api, scripts e CSS antigos, audio-robot.js e servir-local.bat
- logica pura do painel em web/src/lib/nucleo.ts com testes node --test
(substitui test_movimentos.js e test_rastreamento.js)
- testes de navegador portados para o painel novo (rtc, rosto, rastreamento)
- README, docs/PAINEL.md e docs/SEGURANCA.md reescritos; versao 0.8.0;
carinha-pc.service le /etc/carinha.env
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>