Referência

Dados e privacidade

As revisões ficam na pasta do seu projeto. As configurações ficam em ~/.ferret/, e as chaves e contas na pasta de dados do usuário do sistema. Só os relatórios de falhas chegam ao desenvolvedor, pelo Sentry, e você pode desativá-los. O feedback que você decidir enviar pelo app vira uma issue pública no GitHub.

#Dentro de .ferret/reviews/

<project>/.ferret/reviews/20261003-104500/
├── feedback.md      # what the agent reads
├── 01.png, 02.png…  # one or more images per finding
├── session.json     # review state and edit history
├── events.jsonl     # action log (built-in browser only)
├── recording.webm   # the video
└── work/            # intermediate audio and frames

As revisões feitas antes da mudança de nome ficam em .ade-movie/reviews/. Elas continuam sendo listadas e abertas, e as novas revisões vão para .ferret/reviews/.

Quando a gravação começa, .ferret/ é acrescentado ao .git/info/exclude. Worktrees e submódulos são tratados. O .gitignore nunca é modificado. Uma revisão interrompida pode ser recuperada pelo histórico se os registros dela sobreviveram. Nesse caso, o app avisa que os últimos segundos podem estar faltando.

#Retenção

Manter gravações (7 dias por padrão, 30 dias ou Para sempre): ao iniciar, as revisões concluídas mais antigas que isso perdem o recording.webm e a pasta work/. O feedback.md e as imagens dos apontamentos são mantidos. Revisões incompletas nunca são limpas. A limpeza é feita ao iniciar, no último projeto aberto.

#O que sai da sua máquina

QuandoDestinoDados
Transcrição: No dispositivo (gratuito)nenhum—
Transcrição: OpenAI / compatívelOpenAI ou a sua Base URLtrechos de áudio
Download de modeloHugging Facerequisição do arquivo
Organizara sua CLI do Claude Code / Codex, ou o endpoint de LLM que você definir em organizerapenas texto e registro de ações (sem imagens, áudio ou vídeo)
Verificação de aceitação (modelo de decisão, desativada por padrão)o seu agente, pelo relay local, para Ollama / Cloudflare / AI Gateway / TypeSafe / a sua URLo que o agente envia: o texto do apontamento, o "Done when" e as capturas de tela ANTES/DEPOIS (só modelos de imagem)
Enviar ao Agento agente no seu terminaluma instrução que aponta para o feedback.md
Enviar ao GitHubGitHub, via ghapenas o texto do corpo (sem imagens)
Uso no rodapé (só Claude Code e Codex)Anthropic, ChatGPTrequisição de uso com o seu próprio login
Pedido de estrela no GitHubGitHub, via o seu ghverifica se você deu estrela ao repositório e só dá a estrela se você clicar em Dar estrela no GitHub
Verificar atualizações (manual)servidor de download (Cloudflare R2)requisição do latest.json
Envio de feedback pelo app (só quando você envia; em breve)o relay de feedback do desenvolvedor (um Cloudflare Worker), que abre uma issue pública em JapanMarketing-Dev/ferreto seu texto, se é bug ou ideia, versão do app / do sistema e CPU, e até 3 capturas de tela que você anexar. Chaves, tokens, endereços de e-mail e caminhos da pasta pessoal são mascarados. O relay não armazena o seu endereço IP (veja Feedback pelo app)
Uma falha ou erro (Enviar relatórios de falhas ativado)Sentrystack trace e versões do sistema / CPU / app (veja Relatórios de falhas)
  • O app não tem analytics, rastreamento de desempenho nem gravação de sessão (session replay). Os únicos dados que ele envia sem você pedir são os relatórios de falhas: erros, uma sessão por execução e avisos de inicialização lenta e de travamento, todos descritos abaixo e todos controlados por Enviar relatórios de falhas.
  • Valores com cara de segredo em URLs (tokens, chaves) são ocultados antes de serem gravados no feedback.md.
  • O texto capturado da página é marcado como dados no feedback.md, então o agente é instruído a não seguir instruções encontradas nele.
  • Este site (não o app) conta visualizações de página com o Cloudflare Web Analytics: sem cookies, sem rastreamento entre sites e sem dados pessoais.

#Feedback pelo app

Em breve

O formulário de feedback dentro do app e o relay dele ainda não foram lançados. Esta seção descreve como vão funcionar.

Você vai poder enviar um relato de bug ou uma ideia de dentro do Ferret sem uma conta no GitHub. Ele só é enviado quando você o envia e vira uma issue pública em JapanMarketing-Dev/ferret (abre em uma nova aba), com o rótulo from-app. Não inclua nada que você não publicaria abertamente.

  • O app envia do seu computador para um pequeno relay (um Cloudflare Worker mantido pelo desenvolvedor), que abre a issue com o próprio token do GitHub. Esse relay é o único servidor do desenvolvedor que recebe algo que você escreve.
  • Enviado: o seu título e texto, se é um bug ou uma ideia, a versão do app e até 3 capturas de tela PNG ou JPEG que você anexar. O nome e a versão do sistema operacional, a arquitetura da CPU e o ID aleatório de instalação só são enviados se você os mantiver incluídos. Não enviado: seu nome, e-mail, conta do GitHub, arquivos do projeto, gravações ou apontamentos.
  • Antes de criar a issue, o relay mascara textos que parecem chaves ou tokens, endereços de e-mail e o nome de usuário em caminhos da pasta pessoal, e impede que @mentions notifiquem alguém. Ele também remove a localização e outros metadados das capturas de tela. Confira o seu texto mesmo assim: o mascaramento não pega tudo.
  • O relay não armazena o seu endereço IP. Para limitar a frequência com que um mesmo remetente pode publicar (5 por hora, 20 por dia), ele conta um hash com chave do endereço IP (e do ID de instalação, se enviado) por até 24 horas e depois o exclui. Nenhum dos dois aparece na issue.
  • As capturas de tela são guardadas pelo relay no Cloudflare R2 com nomes impossíveis de adivinhar e exibidas na issue. Para que uma issue ou as capturas dela sejam removidas, comente na issue ou abra uma nova.
  • O código do relay está em workers/feedback-relay no repositório.

#Relatórios de falhas

Quando o app falha ou encontra um erro não tratado, o Ferret envia um relatório de falha ao Sentry (abre em uma nova aba) para que o bug possa ser corrigido. Isso vem ativado por padrão. Desative em Configurações → Privacidade → Enviar relatórios de falhas ou com Desativar no aviso mostrado na primeira execução. Desativar tem efeito imediato. Reativar tem efeito na próxima execução. As versões de desenvolvimento (pnpm dev) também enviam, marcadas como development, para que os desenvolvedores possam corrigir as falhas que encontram enquanto trabalham. Execuções de E2E e testes unitários nunca enviam.

EnviadoNão enviado
  • Tipo e mensagem do erro, com os caminhos da pasta pessoal exibidos como ~
  • Stack trace (em que ponto do código do Ferret aconteceu)
  • Em falhas nativas: apenas qual processo falhou, por que ele terminou (por exemplo crashed ou oom) e a versão do app
  • Nome e versão do sistema operacional, arquitetura da CPU, versões do Electron / Chrome / Node, versão do app, tamanho da tela, quantidade de memória
  • Eventos do ciclo de vida do app logo antes do erro (por exemplo app.ready) e falhas na inicialização
  • Qual parte do app falhou: uma área da tela que não pôde ser renderizada (e os nomes dos componentes React dela), uma chamada IPC, um terminal que não pôde iniciar, um processo que falhou ou travou, ou uma página do app que não carregou
  • Onde você estava no app: modo Editor ou Feedback, a aba aberta (Navegador, Apontamentos, Configurações ou apenas file) e se havia uma gravação em andamento
  • Uma sessão por execução (iniciada, encerrada normalmente ou com falha), para medir a taxa de execuções sem falhas de cada versão
  • Um ID aleatório de instalação (criado na primeira execução e guardado na pasta de configurações do app), para contar quantas instalações foram afetadas. Ele não é vinculado ao seu nome, e-mail ou dispositivo
  • Somente em falhas de JavaScript: as últimas 50 linhas de log do próprio Ferret (como [startup] e [recording]), encurtadas e sem caminhos, URLs, e-mails e chaves
  • O caminho da pasta do seu projeto e os nomes dos arquivos (substituídos por <project>)
  • URLs abertas no navegador integrado e qualquer outro endereço web (substituídos por <url>)
  • Saída do terminal, transcrições, apontamentos, texto das páginas, capturas de tela
  • Endereços de e-mail e chaves de API ou tokens (substituídos)
  • Seu nome, nome do dispositivo, endereço IP (não armazenado), cookies, variáveis locais
  • Dumps de memória de falhas nativas (minidumps). Eles podem conter qualquer coisa que estivesse na memória, então ficam no seu computador
  • Cliques, requisições de rede e qualquer linha de log que não seja do próprio Ferret

O app instalado envia no máximo 10 relatórios por execução e só metade dos erros de JavaScript (as falhas nativas são sempre enviadas). As versões de desenvolvimento enviam todos os erros, até 50 por execução. O mesmo erro só é enviado uma vez por execução. Inicializações lentas (mais de 5 segundos) e travamentos longos do app (mais de 1 segundo) são enviados como avisos, no máximo uma vez a cada 10 minutos. Não é usado rastreamento de desempenho nem gravação de sessão. O app usa o plano gratuito do Sentry. Se ele lotar, os relatórios extras são descartados e ninguém é cobrado.

Vai compilar o Ferret você mesmo? Defina FERRET_SENTRY_DSN (o nome antigo MOVIE_ADE_SENTRY_DSN também funciona) com o seu próprio DSN do Sentry, ou com uma string vazia para não enviar nada. O código está em src/main/telemetry.ts e src/shared/telemetry.ts.

Ajude a traduzir esta página no GitHub (abre em uma nova aba)