Acompanhe as mudanças públicas do app, do painel, do laboratório e das integrações YouAutoCar.
Página 13 de 23
App passa a analisar também o fork do plugin Bluetooth com as mesmas regras
O fork interno do flutter_bluetooth_serial entra no analisador com as 16 regras estritas do app: arquivos renomeados, tipos explícitos no handler de pareamento, sink de escrita implementando a interface do SDK 3 e SDK mínimo atualizado; conexão com o V-LINK validada no tablet.
AndroidOperacao
Ver detalhes
107 correções automáticas no fork, nomes de arquivo em snake_case e diretivas part por URI; nomes de constantes da API pública preservados.
Análise do app sem exclusões, 1.151 testes e conexão Bluetooth Classic ao vivo no tablet.
Sem mudança visível para o usuário.
Fonte: Rodada 653 (DT-MOB-05): flutter analyze sem exclude, flutter test, APK R8 no SM-X236B
Painel com verificação de tipos completa (zero erros) e correções de bugs escondidos
A verificação de tipos do painel web passou a rodar completa e bloqueante no CI. Ao zerar os 40 erros restantes, quatro problemas reais foram corrigidos: a lista de veículos de guincho não carregava, a checagem de CPF duplicado ao criar cliente não funcionava, o horário das anomalias na sessão do scanner aparecia como data inválida e a aba Viagens do Diagnóstico mostrava um cabeçalho duplicado.
WebOperacao
Ver detalhes
Guincho: a lista de veículos de guincho (placa e modelo) volta a carregar na tela de despacho; a consulta pedia uma coluna inexistente e falhava silenciosamente.
Clientes: ao cadastrar um cliente com CPF, a checagem de CPF já existente volta a funcionar (o filtro de busca recebia o id da empresa no lugar do tipo de busca).
Sessão do scanner: o horário de cada anomalia usa a primeira detecção em vez de exibir 'Invalid Date'.
Diagnóstico > Viagens: o cabeçalho 'Histórico de Viagens' não aparece mais duplicado dentro da aba.
Interno: typecheck real (tsgo) em zero erros e bloqueante no CI; npm run typecheck passa a usar o tsgo.
Painel termina a divisão dos arquivos gigantes: nenhum acima de 800 linhas
Histórico, detalhe da sessão do scanner, serviços de guincho, cotação, upload e diagnóstico, busca de clientes, telemetria ao vivo, pagamentos, lembretes, clientes, colaboradores, evidências e catálogo de peças foram divididos em módulos menores sem mudar comportamento.
WebOperacao
Ver detalhes
15 arquivos divididos (1.040 -> 581 linhas no Histórico, 1.009 -> 704 no serviço de guincho...), tipos e funções públicas reexportados dos caminhos originais.
ESLint zero avisos e 591 testes verdes; 40 erros de tipo restantes concentrados nos serviços de guincho e diagnóstico, em correção.
APP 1.2.38: código reorganizado, logs sem dados pessoais e fila de anomalias mais resiliente
Versão de manutenção: 18 arquivos gigantes divididos em módulos, 16 regras estritas de código, todos os registros de log passando pelo redator de dados pessoais, avatares do Jarvis sem desfoque em GPU limitada e fila de anomalias que descarta eventos rejeitados por escopo em vez de travar.
AndroidOperacao
Ver detalhes
Nenhuma mudança de uso: telas, Jarvis Vivo, temperatura em tela cheia e card Rail seguem iguais à 1.2.37.
Validado no tablet SM-X236B com V-LINK e simulador (ECU conectada, sem erros de Flutter no log) antes de publicar em Internal e Alpha.
Production continua na 1.2.36+156 até pedido do Owner.
Painel corrige 997 erros de tipo e três falhas reais de execução expostas pela verificação
Com a verificação de tipos rodando de verdade, o cliente de consultas do painel passou a ser tipado pelo esquema do banco (eliminando 342 instanciações profundas) e 997 erros foram corrigidos com tipos reais; no caminho, três telas que chamavam funções inexistentes do cliente (canal realtime, storage, sessão) foram consertadas.
WebOperacao
Ver detalhes
queryService com overloads por tabela, view e função do banco; rpc tipado por nome com argumentos nulos e JSON.
Telemetria de diagnósticos, diagnósticos do veículo, entradas de diagnóstico e insights do veículo: chamadas a canal/storage/auth inexistentes no queryService trocadas pelos serviços corretos (antes falhavam em runtime).
Restam 30 erros nos quatro arquivos grandes em divisão (towService, diagnosticService, ScannerSessionDetail, History); CI publica a contagem e passa a bloquear ao chegar a zero.
Sem mudança visível para clientes e oficinas além dos consertos acima.
App termina a divisão dos arquivos gigantes: nenhum acima de 1.500 linhas
Serviço Bluetooth Classic, simulador OBD, repositório da O.S., controladores de diagnóstico, painel e sessão do scanner, preferências, narrador do Jarvis e aba do centro OBD foram divididos em partes menores sem mudar comportamento.
AndroidOperacao
Ver detalhes
Nove serviços e controladores divididos em partes (mixins e arquivos part) mantendo a API pública e os testes; analise limpa e 1.151 testes verdes.
Painel divide os seis maiores arquivos de código em módulos menores
Painel de cobranças Efi, aba de diagnósticos da O.S., Configurações, hook da O.S., Cotações e o serviço de detalhe da O.S. foram divididos em módulos de até 750 linhas, sem mudar comportamento; sobram 15 arquivos acima de 800 linhas para as próximas rodadas.
WebOperacao
Ver detalhes
EfiChargePanel 2.545 -> 568 linhas (8 módulos; as duas cópias do acordeão de cobranças viraram um componente).
DiagnosticsTab, Settings, useServiceOrder, Quotations e serviceOrderDetailService divididos em sub-hooks, helpers e componentes; caminhos de importação preservados.
Banco tira a extensão de vetores do schema público e o painel ganha CSP completa em modo de relatório
A extensão pgvector passa para o schema de extensões (advisor do Supabase); o painel web passa a enviar uma Content-Security-Policy completa em modo somente relatório, para validar no console antes de bloquear.
SupabaseWebAndroidOperacao
Ver detalhes
ALTER EXTENSION vector SET SCHEMA extensions, com dry-run antes; busca por similaridade continua funcionando (operador testado) e schema do PostgREST recarregado.
CSP-Report-Only cobrindo Supabase, Google Maps, Sentry, YouTube, Meta, tiles de mapa e Leaflet; a CSP aplicada continua a mínima (frame-ancestors, object-src, base-uri).
App: os 524 debugPrint restantes passam pelo AppLogger (redação de dados pessoais e nível de log), sem mudança de comportamento.
App desliga o desfoque dos avatares do Jarvis em GPU fraca e remove quatro dependências sem uso
Os avatares do Jarvis (clássico e 3D) deixam de aplicar desfoque nos traços quando o aparelho está no perfil de GPU segura ou multimídia; quatro bibliotecas sem uso saem do app.
AndroidOperacao
Ver detalhes
Avatar clássico recebe o perfil de renderização e desenha anéis e olhos sem blur em GPU fraca; dois pontos restantes do avatar 3D passaram a respeitar o mesmo perfil.
google_fonts, open_file, json_annotation e internet_connection_checker_plus removidos do pubspec (sem import no código); análise limpa e testes de avatar, guard de GPU e Jarvis Vivo verdes.
Sem mudança visível em celulares e tablets comuns.
Painel abre qualquer tela por link direto, remove dependências sem uso; app deixa de reenviar anomalias rejeitadas
O servidor do painel passa a servir todas as telas do app em navegação direta (antes 39 rotas, como clientes, agendamentos, financeiro e configurações, devolviam 404 ao atualizar a página); duas bibliotecas sem uso saem do painel; no app, eventos de anomalia rejeitados por escopo são descartados da fila local.
WebAndroidOperacao
Ver detalhes
Lista de rotas do worker do Sites sincronizada com o App (65 caminhos) e teste de paridade que reprova quando uma rota nova ficar de fora; caminhos fora do app (updates, assets) seguem com 404 por contrato.
playwright e @testing-library/jest-dom removidos do painel (sem referência no código); tsc e testes verdes.
Fila offline de anomalias descarta itens com erro 42501 do guard de tenant e mantém os demais para nova tentativa; teste unitário novo.
Sem mudança visível para clientes e oficinas.
Fonte: Rodada 653 (DT-WEB-09, DT-DB-11): npm uninstall + vitest; flutter analyze limpo e teste edge_event_emitter_scope_test
App passa a ser verificado com 16 regras estritas de código e sem print solto
O código do app Android agora é analisado com regras adicionais (futuros não aguardados, uso de contexto após await, assinaturas cancelláveis, constantes, tipos declarados) e os últimos prints viraram registros estruturados; sem mudança de comportamento para o usuário.
AndroidOperacao
Ver detalhes
analysis_options com 16 regras extras; 614 correções automáticas e 225 manuais em 241 arquivos, análise sem avisos e 1.149 testes verdes.
Quatro prints (upload de evidências e parser ELM) viraram AppLogger com redação de dados pessoais.
Um desvio de tipo no registro de anomalias de viagem (entidade errada no is-check) foi corrigido mantendo o mapeamento de runtime.
URLs HTTP do YouAutoTester mantidas (firmware na rede local sem TLS) com justificativa no código.
Fonte: Rodada 653 (DT-MOB-01/03/09): branch worktree-agent (3 commits) mesclada com analyze limpo e flutter test 1149/1149
Banco consolida regras de acesso sobrepostas em 54 tabelas
Regras de acesso (RLS) que se sobrepunham para o mesmo papel e ação foram unidas em uma só por tabela, ação e papel, sem mudar quem enxerga ou altera cada linha; o advisor de performance do Supabase deixa de apontar policies múltiplas.
SupabaseOperacao
Ver detalhes
197 policies removidas e 211 consolidadas (OR das mesmas condições), com comentário indicando as regras de origem.
Equivalência verificada em bancada (126 assinaturas de acesso idênticas) e dry-run revertido em produção antes de aplicar; app do tablet seguiu gravando telemetria sem erro de permissão.
Painel envia a empresa ativa para métricas de desempenho e analytics de diagnóstico
As telas de desempenho e de analytics passam a informar a empresa ativa ao banco, acompanhando o guard de tenant das funções; usuários de várias empresas deixam de receber erro de escopo.
WebSupabaseOperacao
Ver detalhes
PerformanceDashboard e DiagnosticAnalyticsService resolvem a empresa ativa (companyService) antes de chamar o banco; admin SaaS sem empresa mantém o escopo global.
Tipos do banco regenerados com os quatro helpers de escopo.
Fonte: Rodada 653 (DT-DB-11): tsc, eslint 0 e vitest 188/188 nos servicos e paginas
Painel web sem avisos de lint e sem tipos genéricos soltos
O código do painel passou a ser verificado com tolerância zero de avisos no CI; 216 usos de tipo genérico (any) viraram tipos reais e 106 exceções de lint foram removidas ou justificadas, sem mudança de comportamento.
WebOperacao
Ver detalhes
ESLint com --max-warnings 0 no CI, no CLAUDE.md e no runbook do Sites.
Serviços, componentes e páginas tipados com as tabelas do banco; payloads JSON tratados com narrowing em vez de any.
Apenas 22 exceções de lint permanecem, todas com regra explícita e motivo em português.
Dependências de teste atualizadas (jsdom 30, jest-dom 7) via Dependabot com CI verde.
Sem mudança visível para clientes e oficinas.
Fonte: Rodada 653 (DT-WEB-02/03/04): branch worktree-agent (3 commits) mesclada com tsc, eslint 0 e vitest verdes
Banco passa a exigir a empresa do usuário em dez funções de análise, insights e cotação
Dez funções chamadas pelo painel e pelo app (importar preços de cotação, insights de DTC recorrente, recomendações priorizadas, métricas de desempenho, analytics de diagnóstico e do scanner, contexto de casos similares, eventos de anomalia e vídeos por O.S.) passam a validar que o usuário pertence à empresa da O.S., do veículo ou informada; dados agregados entre empresas ficam restritos a quem optou por compartilhar.
SupabaseWebAndroidOperacao
Ver detalhes
Quatro helpers internos de escopo (empresa, O.S., veículo, escopo federado) usados só dentro das funções; não são chamáveis pelo app.
Usuário de uma única empresa continua funcionando sem informar a empresa; usuário de várias empresas precisa da empresa ativa nas telas de desempenho e analytics (ajuste de telas em andamento).
Métricas de desempenho deixam de expor nomes de técnicos de outras empresas; a função antes falhava por referenciar coluna inexistente e foi corrigida.
Eventos de anomalia do app só são gravados para veículos que o usuário alcança; itens rejeitados serão descartados da fila local (ajuste no app em andamento).
Operação (service_role) e administração SaaS mantêm o comportamento global.
Fonte: Rodada 653 (DT-DB-02): migration 20260904065000 validada em Postgres descartável (pgTAP 037, 39/39) e aplicada com db push
Banco fecha 25 funções internas que qualquer usuário logado podia executar
Rotinas internas de agregação, manutenção, transferência de clientes entre empresas e helpers sem uso no app deixam de ser executáveis por usuários logados; só a operação (service_role) e os crons continuam chamando.
SupabaseOperacao
Ver detalhes
Inventário das 64 funções SECURITY DEFINER sem guard executáveis por usuários logados: 9 públicas por contrato, 5 helpers de RLS, 16 RPCs com escopo, 10 RPCs sem escopo (guards em preparação) e 24 internas.
As 24 internas mais o wrapper do pipeline de drift do copiloto perdem EXECUTE para anon e authenticated; crons rodam como postgres e a Edge usa service_role, então nada muda para o app.
Manutenção: arquivos gerados do app em dia e dependências do site atualizadas
Os arquivos gerados do app Android voltaram a bater com o código e o CI passa a reprovar quando ficarem para trás; o site institucional recebeu o pacote de atualizações menores de dependências e a ação de varredura de vulnerabilidades foi atualizada.
AndroidWebOperacao
Ver detalhes
App: 16 arquivos gerados pelo build_runner regenerados; novo passo no CI bloqueia arquivos gerados desatualizados.
Site: 12 atualizações menores de dependências (grupo semanal do Dependabot) e osv-scanner 2.5.1.
Dependabot ativado com grupos por app e CODEOWNERS para migrations, Edge Functions e Android.
Sem mudança visível para clientes e oficinas.
Fonte: Rodada 653 (DT-MOB-04, DT-WEB-08): CI mobile com git diff apos build_runner; PRs #70 e #67 mergeados com CI verde
Banco fecha brecha na inserção de vídeos de conhecimento
A regra que permitia cadastrar vídeos de conhecimento comparava a empresa do vídeo com ela mesma, deixando qualquer usuário logado inserir vídeos em qualquer empresa; passa a exigir que a empresa seja uma das empresas do usuário.
SupabaseOperacao
Ver detalhes
Inserção em youtube_knowledge_videos restrita às empresas do usuário (mesmo critério das notificações).
Tabela ainda sem registros em produção; nenhuma mudança visível.
Fonte: Rodada 653 (DT-DB-05): achado durante a reescrita das policies; migration 20260904063000 com dry-run, pgTAP 035
Painel fecha alerta novo do sanitizador de HTML usado nos PDFs
A biblioteca DOMPurify, usada pelo gerador de PDF do painel, sobe para a versão que corrige um alerta de XSS publicado hoje.
WebSupabaseOperacao
Ver detalhes
Replay do banco alinhado à produção nas permissões das tabelas de conhecimento capturadas; nenhuma mudança em produção.
DOMPurify 3.4.12 para 3.4.14 (GHSA-55q2-fjhq-7xh7); auditoria de dependências de produção volta a zero.
Banco acelera as regras de acesso por linha em 31 tabelas
Cinquenta e seis regras de acesso (RLS) que consultavam a identidade do usuário a cada linha passam a consultá-la uma vez por comando, como recomenda o advisor de performance do Supabase; nenhuma permissão mudou.
SupabaseOperacao
Ver detalhes
Regras de acesso de sessões de diagnóstico, viagens, manutenção, notificações, comandos de veículo, leituras e telemetria ficam mais rápidas em consultas grandes.
A reescrita foi feita a partir do catálogo do banco, preservando tabela, nome, comando, papéis e expressões; foi simulada e revertida antes de aplicar.
Sem mudança de permissões, dados ou telas.
Fonte: Rodada 653 madrugada (YC-124 parte segura): migration 20260904062000 com dry-run no remoto (56 reescritas, 0 restantes), pgTAP 034