Referencia

Datos y privacidad

Las revisiones están en la carpeta de tu proyecto. Los ajustes están en ~/.ferret/, y las claves y las cuentas en la carpeta de datos de usuario del sistema operativo. Solo los informes de fallos llegan al desarrollador, a través de Sentry, y puedes desactivarlos. El feedback que decidas enviar desde la app se convierte en un issue público de 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

Las revisiones hechas antes del cambio de nombre están en .ade-movie/reviews/. Se siguen mostrando y abriendo, y las nuevas revisiones van a .ferret/reviews/.

Al empezar a grabar, se añade .ferret/ a .git/info/exclude. Se tienen en cuenta los worktrees y los submódulos. .gitignore nunca se modifica. Una revisión interrumpida se puede recuperar desde el historial si sus registros se conservaron. En ese caso la app avisa de que pueden faltar los últimos segundos.

#Conservación

Conservar grabaciones (7 días de forma predeterminada, 30 días o Siempre): al iniciar, las revisiones completadas más antiguas que eso pierden recording.webm y work/. Se conservan feedback.md y las imágenes de los hallazgos. Las revisiones incompletas nunca se limpian. La limpieza se ejecuta al iniciar, para el último proyecto abierto.

#Qué sale de tu equipo

CuándoDestinoDatos
Transcripción: En el dispositivo (gratis)ninguno—
Transcripción: OpenAI / compatibleOpenAI o tu Base URLfragmentos de audio
Descarga de modelosHugging Facesolicitud del archivo
Organizartu CLI de Claude Code / Codex, o el endpoint de LLM que definas en organizersolo texto y registro de acciones (sin imágenes, audio ni vídeo)
Comprobación de aceptación (modelo de decisión, desactivada de forma predeterminada)tu agente, a través del relay local, a Ollama / Cloudflare / AI Gateway / TypeSafe / tu URLlo que envía el agente: el texto del hallazgo, «Done when» y las capturas BEFORE/AFTER (solo modelos de imagen)
Enviar al agenteel agente de tu terminaluna instrucción que apunta a feedback.md
Enviar a GitHubGitHub mediante ghsolo el texto del cuerpo (sin imágenes)
Uso en el pie de la ventana (solo Claude Code y Codex)Anthropic, ChatGPTsolicitud de uso con tu propio inicio de sesión
Petición de estrella en GitHubGitHub mediante tu ghcomprueba si diste estrella al repositorio, y solo la da si haces clic en Dar estrella en GitHub
Buscar actualizaciones (manual)servidor de descarga (Cloudflare R2)solicitud de latest.json
Enviar feedback desde la app (solo cuando lo envías; próximamente)el relay de feedback del desarrollador (un Cloudflare Worker), que abre un issue público en JapanMarketing-Dev/ferrettu texto, si es un error o una idea, la versión de la app y del sistema operativo y la CPU, y hasta 3 capturas que adjuntes. Se ocultan las claves, los tokens, las direcciones de correo y las rutas de la carpeta personal. El relay no guarda tu dirección IP (consulta Feedback desde la app)
Un fallo o un error (con Enviar informes de fallos activado)Sentrystack trace y versiones del sistema operativo, la CPU y la app (consulta Informes de fallos)
  • La app no tiene analítica, ni trazas de rendimiento, ni reproducción de sesiones. Los únicos datos que envía sin que lo pidas son los informes de fallos: errores, una sesión por inicio y avisos de inicio lento y de bloqueo, todo descrito más abajo y todo controlado por Enviar informes de fallos.
  • Los valores de las URL que parecen secretos (tokens, claves) se ocultan antes de escribirse en feedback.md.
  • El texto capturado de la página se marca como datos en feedback.md, así que se indica al agente que no siga las instrucciones que contenga.
  • Este sitio web (no la app) cuenta las visitas con Cloudflare Web Analytics: sin cookies, sin seguimiento entre sitios y sin datos personales.

#Feedback desde la app

Próximamente

El formulario de feedback de la app y su relay aún no se han publicado. Esta sección describe cómo funcionarán.

Podrás enviar un informe de error o una idea desde Ferret sin cuenta de GitHub. Solo se envía cuando tú lo envías, y se convierte en un issue público en JapanMarketing-Dev/ferret (se abre en una pestaña nueva), con la etiqueta from-app. No incluyas nada que no publicarías en abierto.

  • La app lo envía desde tu ordenador a un pequeño relay (un Cloudflare Worker gestionado por el desarrollador), que abre el issue con su propio token de GitHub. Este relay es el único servidor del desarrollador que recibe algo de lo que escribes.
  • Se envía: tu título y tu texto, si es un error o una idea, la versión de la app y hasta 3 capturas PNG o JPEG que adjuntes. El nombre y la versión del sistema operativo, la arquitectura de la CPU y el ID de instalación aleatorio solo se envían si los dejas incluidos. No se envía: tu nombre, tu correo, tu cuenta de GitHub, los archivos del proyecto, las grabaciones ni los hallazgos.
  • Antes de crear el issue, el relay oculta el texto que parece una clave o un token, las direcciones de correo y el nombre de usuario en las rutas de la carpeta personal, y evita que las @mentions notifiquen a nadie. También elimina la ubicación y otros metadatos de las capturas. Revisa tu texto de todos modos: el ocultado no lo detecta todo.
  • El relay no guarda tu dirección IP. Para limitar la frecuencia con la que un mismo remitente puede publicar (5 por hora, 20 por día), cuenta un hash con clave de la dirección IP (y del ID de instalación, si se envía) durante un máximo de 24 horas y luego lo elimina. Ninguno de los dos aparece en el issue.
  • El relay guarda las capturas en Cloudflare R2 con nombres imposibles de adivinar y las muestra en el issue. Para que se elimine un issue o sus capturas, comenta en el issue o abre uno nuevo.
  • El código del relay está en workers/feedback-relay del repositorio.

#Informes de fallos

Cuando la app falla o se encuentra con un error no controlado, Ferret envía un informe de fallo a Sentry (se abre en una pestaña nueva) para que se pueda corregir el error. Está activado de forma predeterminada. Desactívalo en Ajustes → Privacidad → Enviar informes de fallos, o con Desactivar en el aviso que aparece en el primer inicio. Desactivarlo surte efecto al instante. Volver a activarlo surte efecto en el siguiente inicio. Las versiones de desarrollo (pnpm dev) también envían, con la etiqueta development, para que los desarrolladores puedan corregir los fallos que encuentran mientras trabajan. Las ejecuciones E2E y los tests unitarios nunca envían.

Se envíaNo se envía
  • Tipo y mensaje del error, con las rutas de la carpeta personal mostradas como ~
  • Stack trace (en qué parte del código de Ferret ocurrió)
  • En los fallos nativos: solo qué proceso falló, por qué terminó (por ejemplo crashed u oom) y la versión de la app
  • Nombre y versión del sistema operativo, arquitectura de la CPU, versiones de Electron / Chrome / Node, versión de la app, tamaño de pantalla, tamaño de memoria
  • Eventos del ciclo de vida de la app justo antes del error (por ejemplo app.ready) y fallos de inicio
  • Qué parte de la app falló: una zona de la pantalla que no se pudo renderizar (y los nombres de sus componentes de React), una llamada IPC, una terminal que no se pudo iniciar, un proceso que falló o se colgó, o una página de la app que no se cargó
  • Dónde estabas en la app: modo editor o feedback, la pestaña abierta (Navegador, Hallazgos, Ajustes o simplemente file) y si había una grabación en curso
  • Una sesión por inicio (iniciada, terminada con normalidad o con fallo), para poder medir la tasa sin fallos de cada versión
  • Un ID de instalación aleatorio (creado en el primer inicio y guardado en la carpeta de ajustes de la app), para poder contar las instalaciones afectadas. No está vinculado a tu nombre, tu correo ni tu dispositivo
  • Solo en los fallos de JavaScript: las últimas 50 líneas del propio registro de Ferret (como [startup] y [recording]), acortadas y sin rutas, URL, correos ni claves
  • La ruta de la carpeta de tu proyecto y los nombres de archivo (sustituidos por <project>)
  • Las URL abiertas en el navegador integrado y cualquier otra dirección web (sustituidas por <url>)
  • Salida de la terminal, transcripciones, hallazgos, texto de las páginas, capturas de pantalla
  • Direcciones de correo y claves de API o tokens (sustituidos)
  • Tu nombre, el nombre del dispositivo, la dirección IP (no se guarda), las cookies, las variables locales
  • Volcados de memoria de los fallos nativos (minidumps). Pueden contener cualquier cosa que estuviera en memoria, así que se quedan en tu ordenador
  • Clics, solicitudes de red y cualquier línea de registro que no sea del propio Ferret

La app instalada envía como máximo 10 informes por inicio y solo la mitad de los errores de JavaScript (los fallos nativos siempre se envían). Las versiones de desarrollo envían todos los errores, hasta 50 por inicio. El mismo error solo se envía una vez por inicio. Los inicios lentos (más de 5 segundos) y los bloqueos largos de la app (más de 1 segundo) se envían como avisos, como máximo una vez cada 10 minutos. No se usan trazas de rendimiento ni reproducción de sesiones. La app usa el plan gratuito de Sentry. Si se llena, los informes adicionales se descartan y no se cobra nada a nadie.

¿Compilas Ferret tú mismo? Define FERRET_SENTRY_DSN (el nombre antiguo MOVIE_ADE_SENTRY_DSN también funciona) con tu propio DSN de Sentry, o con una cadena vacía para no enviar nada. El código está en src/main/telemetry.ts y src/shared/telemetry.ts.

Ayuda a traducir esta página en GitHub (se abre en una pestaña nueva)