Abandonar o target web (sub-projeto 1 da reformulação) - #4
Merged
Merged
Conversation
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Pmgii3S5sfMZghFqQXhbkH
O parser de SQL com regex existia para o app rodar no browser. Ele moldava código de produção — JOINs feitos em JavaScript porque o parser não os entende — e exigiria suporte manual a cada tabela nova. Sem target web, dbDriver passa a falhar alto se usado antes de initDatabase(), em vez de simular sucesso vazio. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Pmgii3S5sfMZghFqQXhbkH
O ramo web sorteava um diagnóstico e gravava modelo_usado como se fosse inferência real. Os require() dentro da função só existiam para não carregar módulo nativo no browser. Converter os require() em imports tipados expôs dois bugs pré-existentes no pipeline nativo, ambos engolidos pelo catch genérico: o código chamava loadModel, que react-native-fast-tflite nunca exportou (o nome é loadTensorflowModel), e o pacote buffer nunca esteve instalado. Com qualquer um dos dois, runImageInference sempre caía em "Falha ao processar a imagem" no aparelho. Corrigidos aqui; o asset .tflite passa a import estático com declaração de tipo em types/assets.d.ts. Também passa a exigir o delegate de CPU explicitamente e falha com mensagem clara se o redimensionamento não devolver base64. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Pmgii3S5sfMZghFqQXhbkH
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Pmgii3S5sfMZghFqQXhbkH
Câmera, modelo on-device, GPS e mapa não fazem sentido no browser. Saem o react-native-web e o react-dom, o script build:web, a config web do app.json e o passo de export do CI. O @expo/metro-runtime permanece: expo-router/entry carrega expo-router/entry-classic, que importa '@expo/metro-runtime' incondicionalmente (primeira linha do arquivo), então removê-lo quebraria a inicialização do app nativo. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Pmgii3S5sfMZghFqQXhbkH
This was referenced Sep 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Primeira das duas branches do sub-projeto motor de conversa + persistência. Esta remove o target web por completo — pré-requisito para as tabelas novas de conversa não precisarem de suporte no parser de SQL com regex.
Spec e plano em
~/Documentos/Projetos/CropAI-docs/(privados). Cada tarefa foi implementada por subagente com TDD e revisada por um segundo subagente contra o brief; as decisões do controlador estão registradas no ledger de execução.O que sai
WebDatabaseDriverdbDriveragora falha alto antes deinitDatabase()modelo_usadocomo se fosse reallocalStoragedosecureStorageexpo-secure-storecomWHEN_UNLOCKED_THIS_DEVICE_ONLYreact-native-web,react-dom, scriptsweb/build:web, configwebdoapp.json, passo de export do CIDois achados que vão além da limpeza
O diagnóstico visual nativo nunca executou com este código. Converter os
require()sem tipo em imports tipados expôs dois bugs pré-existentes, ambos engolidos pelocatchgenérico derunImageInference: o código chamavaloadModel, quereact-native-fast-tflitenunca exportou (o nome éloadTensorflowModel), e o pacotebuffernunca esteve instalado. Com qualquer um dos dois, toda inferência no aparelho caía em "Falha ao processar a imagem". O mock web mascarava isso em desenvolvimento. Corrigidos em7cd34a2; o RF01 precisa de teste em aparelho real antes de qualquer homologação.@expo/metro-runtimefoi mantido, ao contrário do plano original:expo-router/entry-classic.js:3o importa incondicionalmente e é omaindo app. Desinstalar teria quebrado a inicialização nativa.Verificação
Frontend: 51 testes (54 → 47 ao remover os testes do mock web → 51 com os novos), typecheck limpo,
npm run build:webinexistente. Backend intocado.🤖 Generated with Claude Code
https://claude.ai/code/session_01Pmgii3S5sfMZghFqQXhbkH