Auditoría
Cómo funciona Slopographic
Las apps se ejecutan en tu navegador. Esta página enumera las funciones del navegador que usan, cada petición de red que pueden hacer y lo que se guarda en tu dispositivo, para que puedas comprobar cada afirmación por ti mismo. Cada afirmación de esta página se ha contrastado con el código fuente del repositorio público.
La versión corta
- Tus archivos se quedan en tu dispositivo. Las apps no tienen ningún servidor que los reciba, y ningún código sube un archivo que abres o guardas. La única excepción es una copia que permites que el botón de IA envíe a un servicio de IA que tú mismo conectaste.
- Los archivos que eliges en el disco se leen y escriben mediante la API de acceso a archivos del sistema del navegador, en las carpetas que eliges. Consulta las APIs del navegador.
- Los datos se guardan en el almacenamiento propio del navegador en este dispositivo (IndexedDB y localStorage). Consulta qué se guarda.
- Algunas peticiones salen del sitio, pero solo en los casos listados en cada petición saliente: una descarga que confirmas, una copia de seguridad en la nube que conectas, un servicio de IA que conectas con tu propia clave, los tipos de cambio que activas, o la analítica o los anuncios que aceptas.
- El botón de IA funciona con un modelo en tu dispositivo, con un servidor en tu propio ordenador como Ollama o LM Studio, o con tu propia clave para un servicio como Claude, ChatGPT o Gemini. Con una clave, lo que preguntas va desde tu navegador directamente a ese proveedor. Consulta el botón de IA.
- La página de inicio carga el código de Google Analytics en cada visita, con la analítica en denegado. Las demás páginas lo cargan solo después de que aceptes la analítica. Los anuncios se cargan solo después de que aceptes los anuncios.
En palabras sencillas
¿Adónde van mis archivos?
A ninguna parte. Cuando abres una foto, un PDF o una hoja de cálculo, la app la lee dentro de esta pestaña del navegador. No hay ningún paso de subida ni ningún servidor de Slopographic que pueda recibirla. Lo que guardas va a tu propio disco, o al almacenamiento de este navegador en este dispositivo. Solo si conectas un servicio de IA con tu propia clave, y lo permites, una copia va a ese servicio (consulta el botón de IA).
¿Por qué una app a veces descarga algo?
Algunas funciones necesitan un archivo grande que la mayoría de la gente nunca usa: un modelo de IA (para quitar un fondo, leer texto o transcribir voz), el motor de vídeo (para convertir un vídeo), o una fuente para otro sistema de escritura. Estos archivos se descargan solo cuando usas la función, después de que la app te diga qué es y cuánto ocupa, y se guardan en el navegador para que ocurra una sola vez. Tus propios archivos nunca forman parte de esa petición.
¿Funciona sin conexión?
Sí, después de la primera visita. El navegador guarda los archivos propios del sitio, así que las apps se abren y funcionan sin conexión. Solo una descarga que aún no has hecho (un modelo o una fuente) necesita la red.
¿Tengo que instalar algo?
No. Basta con abrir una app en el navegador de tu teléfono, tableta u ordenador y empezar. Sigue funcionando sin internet después de tu primera visita. ¿Quieres un icono en la pantalla de inicio? En iPhone o iPad, pulsa Compartir y luego Añadir a la pantalla de inicio. En Android, abre el menú del navegador y pulsa Añadir a la pantalla de inicio. En un ordenador, haz clic en el icono de instalación de la barra de direcciones. No necesitas App Store ni Google Play, y tus archivos se quedan en tu dispositivo.
¿Qué envía el botón de IA, y adónde?
Depende del modelo que elijas. Un modelo en tu dispositivo (necesita WebGPU y se descarga una vez) responde dentro de esta pestaña, y nada de lo que preguntas sale del dispositivo. Ollama, LM Studio y servidores similares se ejecutan en tu propio ordenador, o en uno de tu red que tú configures. Con tu propia clave para un servicio como Claude, ChatGPT, Gemini, OpenRouter o Groq, tus mensajes van desde tu navegador directamente a ese proveedor, sin ningún servidor de Slopographic en medio, y se aplican sus condiciones y precios. Una copia de un archivo o una imagen de tu trabajo solo se envía después de que el panel lo pida y lo permitas (puedes permitirlo para una petición, para una visita o siempre, y retirarlo en Permisos de IA). Las imágenes creadas o modificadas por IA (Generar imagen, Editar con IA) necesitan un servicio de imágenes que conectes, como OpenAI, Gemini u OpenRouter con tu propia clave: nada en el navegador las dibuja. Los modelos en tu dispositivo y en tu propio ordenador no cuestan nada; Gemini, Groq y Mistral tienen planes gratuitos, y OpenRouter tiene modelos gratuitos (el panel los marca como Gratis). Una clave se guarda en esta pestaña hasta que la cierras, o en este navegador solo cuando marcas Recordar en este dispositivo. En OpenRouter también puedes pulsar Iniciar sesión con OpenRouter en lugar de pegar una clave: tu navegador va a openrouter.ai, permites el acceso allí, y al volver esta página pide a OpenRouter una clave para este navegador. El inicio de sesión va directamente entre tu navegador y OpenRouter, y nada pasa por los servidores de Slopographic. La clave se paga con tus propios créditos de OpenRouter y se guarda exactamente igual que una pegada; puedes limitarla o revocarla en openrouter.ai/settings/keys, y Olvidar clave la quita de este navegador.
¿Puede un agente de IA usar las apps?
En un navegador que admita WebMCP, sí: un asistente en el navegador, o un agente en tu ordenador conectado mediante una extensión del navegador, puede ejecutar los comandos de una app, las conversiones y flujos de File convert, y abrir, guardar o descargar archivos. Se refiere a tus archivos mediante identificadores; el trabajo se ejecuta en esta pestaña y las apps no suben nada, aunque el agente ve lo que las herramientas devuelven. Cualquier acción que borre o reemplace tu trabajo te pide permiso antes. WebMCP es un borrador temprano: Chrome lo tiene en prueba (versiones 149 a 156) y tras una marca, Edge tras una marca, y Firefox y Safari todavía no. Desactívalo en Configuración, o en Ayuda, Agentes de IA.
¿Puedo comprobarlo yo mismo?
Sí. El código fuente es público, y las secciones de abajo enumeran cada función del navegador que usan las apps y cada petición que pueden hacer, con el archivo que la realiza. También puedes abrir las herramientas para desarrolladores del navegador, ir a la pestaña Red y observar: abrir y guardar tus archivos no envía nada.
Usa Slopographic desde Claude Code y otras apps de IA
Próximamente: una app de IA en tu ordenador, como Claude Code, Codex, Cursor, VS Code o Claude Desktop, puede usar la app de Slopographic abierta en tu navegador: sus comandos, conversiones y flujos reales, con tus archivos entrando y los resultados saliendo como archivos en tu ordenador. Funciona a través del servidor MCP de Slopographic, un pequeño programa que la app de IA inicia en tu ordenador. No necesita cuenta ni instalación aparte de la propia app de IA.
- Claude Code: escribe
/plugin marketplace add slopographic/claude-plugin, y después/plugin install slopographic@slopographic. Hazlo una sola vez. - Escribe
/slopographic:slop-connect(añade un nombre de app, comophotoslop, si quieres). Claude Code abre Slopographic en tu navegador y muestra un código corto. - Chrome pregunta una vez si este sitio puede usar apps y servicios de este dispositivo. Elige Permitir: así es como la página llega a Claude Code en tu ordenador. La página solo se comunica con tu propio ordenador (127.0.0.1), no con tu red.
- Escribe el código en la página. La página muestra entonces “Claude Code está conectado · Desconectar” en la esquina. Pulsa Desconectar, o cierra la pestaña, para terminar.
Cada pestaña se empareja por separado, y el código funciona una sola vez. Nada más de tu ordenador puede usar la página sin él. Las acciones que borran o reemplazan tu trabajo siguen pidiéndote confirmación en la página, como en el panel de IA. Cualquier página de Slopographic puede conectarse desde la paleta de comandos: Ctrl+K (⌘K en un Mac), y luego “Conectar una app de IA…”.
La configuración para otras apps de IA (Codex, Gemini CLI, Cursor, VS Code, Windsurf, Claude Desktop) aparece aquí cuando se ejecutan los scripts.
Los chats de ChatGPT solo pueden llegar a servidores de internet, así que todavía no pueden usar este servidor local. Codex en la app de escritorio de ChatGPT sí puede.
APIs del navegador, y la especificación de cada una
Las rutas de archivo son los lugares principales donde se usa cada API. Busca el nombre de la API en el repositorio para encontrar el resto.
| API del navegador | Para qué se usa | Dónde está en el código | Especificación |
|---|---|---|---|
Acceso a archivos del sistema: window.showDirectoryPicker, FileSystemDirectoryHandle, createWritable | Unidades locales en Slop Drive, la carpeta de copias de seguridad para la sincronización en la nube, la importación de la carpeta de Galería (solo lectura) y la carga de una carpeta de modelo de IA desde el disco. Solo Chrome y Edge. Las escrituras reemplazan un archivo solo cuando se cierra. | drive/js/core/prov-dir.js, drive/js/ui/prov-drives.js, shared/sync/providers/local.js, gallery/js/io/source.js, shared/ai/webllm.js | wicg.github.io/file-system-access · MDN |
| IndexedDB | Archivos de Slop Drive, identificadores de carpetas, registros de negocio, almacenamiento de fuentes y de modelos de IA, fichas de inicio de sesión cifradas. Lista completa en Qué se guarda. | shared/hub.js, drive/js/core/drives-store.js, shared/data/store.js, shared/sync/tokens.js, shared/library/store.js | w3.org/TR/IndexedDB · MDN |
| localStorage | Ajustes pequeños: tu elección de consentimiento, los ajustes de sincronización en la nube, los ajustes por app y las preferencias de vista de Drive. | shared/consent/state.js, shared/sync/config.js, shared/profile/profile.js, drive/js/core/util.js | WHATWG HTML, Web Storage · MDN |
| sessionStorage | Estado del inicio de sesión que se guarda solo mientras hay una redirección de inicio de sesión en la nube en curso. Se borra al cerrar la pestaña. | shared/sync/sync.js | WHATWG HTML, Web Storage |
| Sistema de archivos privado de origen | No se usa. El código no hace ninguna llamada a navigator.storage.getDirectory. | ninguna | WHATWG File System |
| Service Workers | Uso sin conexión. Lo registra cada página de la app tras cargarse. Solo responde a peticiones GET del mismo origen. | service-worker.js, shared/pwa.js | w3.org/TR/service-workers · MDN |
| Cache Storage | Copias guardadas de los archivos propios del sitio, los archivos de modelos de recorte y los archivos de modelos de chat de IA después de descargarlos. | service-worker.js, shared/cutout/loader.js, shared/ai/webllm.js | W3C Service Workers, Cache objects · MDN |
| Manifiesto de aplicación web | Permite que un navegador instale el sitio como una app. Declara el nombre, los iconos y la página de inicio. | manifest.webmanifest | w3.org/TR/appmanifest · MDN |
Gestor de almacenamiento: navigator.storage.persist(), estimate() | Pide al navegador que conserve el almacenamiento de este sitio tras la instalación o en modo independiente. Slop Storage te pregunta antes de pedírselo al navegador. Muestra cuánto está lleno el almacenamiento. | shared/pwa.js, shared/storage/storage.js | WHATWG Storage · MDN |
| Web Workers | Ejecutar trabajo pesado fuera de la página: recorte de imágenes, escalado, inferencia de AI Tools, construcción de PDF. | shared/cutout/cutout.js, upscale/js/engine/engine.js, aitools/common.js, pdf/js/io/build.js | WHATWG HTML, Workers · MDN |
| WebAssembly | Ejecuta ONNX Runtime Web incluido para AI Tools, Upscale, Imagen a 3D, detección de caras y recorte, con un solo hilo. La biblioteca WebLLM de la app de chat también se basa en WebAssembly. | aitools/workers/ort.js, upscale/js/engine/worker.js, img3d/js/model/depth.js, shared/faces/index.js, shared/ai/webllm.js | WebAssembly Core spec · MDN |
| WebGPU | La app de chat comprueba qué puede ejecutar tu ordenador, y el worker de recorte pide un adaptador de GPU. Ejecuta el modelo de chat en la GPU, en Slop AI y en el panel de IA de cada app. | shared/ai/sysinfo.js, shared/cutout/worker.js, shared/ai/webllm.js | w3.org/TR/webgpu · MDN |
| WebGL 2 | Vista previa en 3D y la corrección de color en SlopCut. | 3d/js/render/stage.js, drive/js/core/render3d.js, slopcut/js/render/grade.js | Khronos WebGL 2.0 spec · MDN |
| Canvas 2D y OffscreenCanvas | Dibujo, edición de imágenes y exportación en casi todas las apps. | Unos 130 archivos llaman a getContext('2d'), por ejemplo photoslop/js/io/save.js | WHATWG HTML, Canvas · MDN |
| File y Blob, arrastrar y soltar | Abrir archivos que eliges o sueltas en una página. Los archivos nunca salen de la página salvo que los guardes o los compartas. | shared/drop/, shared/preview/chrome.js | W3C File API · MDN |
Web Crypto: crypto.subtle | Comprobaciones SHA-256 de cada archivo descargado antes de guardarlo, y AES-GCM para las fichas de inicio de sesión cifradas. | shared/cutout/loader.js, shared/library/store.js, shared/sync/tokens.js | w3.org/TR/WebCryptoAPI · MDN |
| Notificaciones | Notificaciones del navegador para los recordatorios, solo después de que pulses el botón para permitirlas. | reminders/js/app.js, shared/reminders/engine.js | WHATWG Notifications · MDN |
| BroadcastChannel | Mensajes entre pestañas abiertas de este sitio (canal slopographic). Se queda dentro del navegador. | shared/hub.js | WHATWG HTML, Broadcasting · MDN |
Web Share: navigator.share() | La hoja de compartir del sistema, solo cuando pulsas Compartir. Después, el sistema envía el archivo a la app que elijas. | shared/preview/chrome.js, ai/js/ui/speccard.js | w3.org/TR/web-share · MDN |
WebMCP: document.modelContext.registerTool() | Ofrece a un agente de IA en el navegador las acciones de la app como herramientas (sus comandos, las operaciones de archivo, los archivos por identificador), solo donde el navegador tenga la API y el ajuste “Permitir que los agentes de IA usen esta app” esté activado. Las herramientas se ejecutan en la página. El token de prueba de origen está en la cabecera de cada página. | shared/agent/webmcp.js, shared/agent/workspace.js, shared/agent/boot.js | W3C Web Machine Learning CG draft · Chrome |
| WebSocket | El enlace a una app de IA en tu ordenador (el servidor MCP de Slopographic), solo después de que elijas “Conectar una app de IA…”. Se conecta a ws://127.0.0.1, solo a este ordenador. | shared/agent/bridge.js | WHATWG WebSockets |
| Fetch | Cada petición de red de las apps. La lista completa está en Peticiones salientes. | Unos 35 puntos de llamada fetch( en unos 30 archivos (algunos son comentarios) | WHATWG Fetch · MDN |
Qué se guarda en este dispositivo
Todo lo que aparece abajo se guarda en este navegador, en este dispositivo. Nada de aquí se envía a un servidor. Cada sitio tiene su propio almacenamiento, así que la misma app en otro navegador tiene su propia copia.
| Nombre | Tipo | Qué contiene | Se define en |
|---|---|---|---|
slop-drive | IndexedDB | Archivos y carpetas de Slop Drive, incluido el contenido de los archivos. | shared/hub.js |
slop-drive-folders | IndexedDB | Las unidades locales con nombre: cada identificador de carpeta y su nombre. Quitar una unidad solo olvida el identificador. | drive/js/core/drives-store.js |
slop-sync, slop-sync-local | IndexedDB | Fichas de inicio de sesión en la nube cifradas (AES-GCM con una clave no extraíble). El identificador de la carpeta de copia de seguridad elegida. | shared/sync/tokens.js, shared/sync/providers/local.js |
slop-data | IndexedDB | Registros de negocio: clientes, productos, existencias, facturas, pagos y asientos del libro mayor (shared/data/schema.js). | shared/data/store.js |
slop-library | IndexedDB | Fuentes instaladas desde Obtener más y archivos de fuente que añades. | shared/library/store.js |
slop-aitools, slop-ai | IndexedDB | Modelos de AI Tools que instalaste, y chats de la app de chat de IA. | aitools/models.js, ai/js/core/store.js |
slop-session | IndexedDB | La vista abierta de cada app y los borradores sin guardar, para que una visita de vuelta continúe donde la dejaste. | shared/session/session.js |
slop-consent | localStorage | Tus elecciones de analítica, anuncios y tipos. Desactivadas hasta que eliges. | shared/consent/state.js |
slop-sync | localStorage | Ajustes de sincronización en la nube: tus identificadores de cliente OAuth y las últimas horas de sincronización. Las fichas no se guardan aquí. | shared/sync/config.js |
slop-ai-keys | IndexedDB | Tus claves de IA, solo cuando marcas Recordar en este dispositivo. Sin eso, una clave se queda en esta pestaña (sessionStorage) y desaparece al cerrarla. Se excluye de las copias de seguridad. | shared/ai/cloud/keys.js |
slop-ai.cloud, slop-ai.imagegen, slop-ai.permissions | localStorage | Qué servicio de IA y modelo elegiste, tu límite de gasto, los ajustes de imagen y los permisos de IA que concediste. Nunca una clave. | shared/ai/cloud/keys.js, shared/ai/imagegen/core.js, shared/ai/permissions.js |
slop-ai.signin | sessionStorage | Mientras inicias sesión con OpenRouter: el verificador PKCE de un solo uso y el estado que demuestran que el inicio de sesión empezó en esta pestaña. Se usa una vez, desaparece al cerrar la pestaña, y nunca es una clave. | shared/ai/cloud/signin.js |
slop.agents | localStorage | "off" cuando desactivaste “Permitir que los agentes de IA usen esta app”. No se guarda nada mientras está activado. | shared/agent/boot.js |
slop.bridge | sessionStorage | Mientras esta pestaña está emparejada con una app de IA en tu ordenador: el puerto y el token de emparejamiento, para que una recarga siga conectada. Desaparece al desconectar o cerrar la pestaña. | shared/agent/bridge.js |
slop-profile | localStorage | Ajustes por app que cambiaste respecto al valor predeterminado. | shared/profile/profile.js |
slop-drive.prefs, slop-drive.theme | localStorage | Preferencias de vista y tema de Slop Drive. | drive/js/core/util.js |
slopographic-v38 | Cache Storage | Copias guardadas de los archivos propios del sitio, para que el sitio funcione sin conexión. | service-worker.js |
slop-cutout-v1 | Cache Storage | Archivos de modelo para el recorte, después de comprobar su SHA-256. | shared/cutout/loader.js |
Cookies: el código del sitio nunca escribe una cookie (el repositorio no tiene ninguna llamada a document.cookie). Tu elección de consentimiento está en localStorage, no en una cookie. Los scripts de analítica y anuncios de Google pueden establecer sus propias cookies cuando se ejecutan. La sección Cookies y analítica indica cuándo se ejecutan.
Peticiones salientes: cada lugar al que puede ir una petición
La lista de abajo es completa para el repositorio: procede de una búsqueda de cada fetch(, XMLHttpRequest, dirección de script e imagen, y de cada URL externa del código. Salvo los scripts de analítica y anuncios, que se cargan solo como se indica abajo, las apps no cargan scripts, fuentes ni hojas de estilo de terceros. No hay fuentes de terceros ni iframes.
| Destino | Qué app o parte | Por qué | Cuándo ocurre |
|---|---|---|---|
www.googletagmanager.com (Google Analytics, ID G-HW6FWQVFK3) | Página de inicio (index.html); las demás páginas mediante shared/consent/consent-mode.js | Medición de visitas a páginas | Página de inicio: en cada visita, con la analítica en denegado hasta que aceptas. Otras páginas: solo después de que aceptes la analítica. |
pagead2.googlesyndication.com (AdSense) | Páginas con espacios de anuncios (shared/ads/ads.js) | Anuncios | Solo después de que aceptes los anuncios. Lo carga el único cargador de shared/consent/consent-mode.js. |
huggingface.co, y sus servidores de almacenamiento hf.co y xethub.hf.co | Chat de IA (shared/ai/webllm.js, ai/js/core/engine.js); AI Tools y las apps de OCR (aitools/model-registry.js, aitools/models.js) | Archivos de modelo: OCR (PP-OCRv4), etiquetas y los modelos de chat | Después de pulsar Descargar, o de instalar un modelo en Obtener más, y de confirmar su tamaño y licencia. AI Tools comprueba el SHA-256 de cada archivo, y un archivo debe venir de un servidor de Hugging Face o del repositorio slopographic/cdn. |
cdn.jsdelivr.net (jsDelivr, solo /gh/slopographic/cdn@ una versión fija) | Cada archivo del repositorio slopographic/cdn (shared/cdn/assets.js): paquetes de Obtener más, los modelos de voz y OCR, los motores HEIC, RAW de cámara, 3D y vídeo | Una copia más rápida y en caché del repositorio de abajo; los archivos de más de 20 MB vienen de raw.githubusercontent.com | Los mismos momentos que la fila de abajo. Si jsDelivr no responde o envía bytes incorrectos, el mismo archivo se descarga de raw.githubusercontent.com y se comprueba de la misma manera. |
raw.githubusercontent.com | Chat de IA (shared/ai/webllm.js, los kernels de GPU); paquetes de Obtener más (shared/library/packs.json) | Kernels para el modelo de chat; archivos de fuentes de github.com/google/fonts (OFL); fuentes de idiomas (Noto, OFL) para escribir en otros sistemas como árabe, chino o hindi; el modelo Real-ESRGAN 4x para Slop Upscale, el modelo de profundidad para Imagen a 3D, y los modelos de voz para Slop Transcribe y AI Tools (Whisper, KB-Whisper, NB-Whisper; aitools/speech-models.js), desde el repositorio slopographic/cdn | Cuando pulsas Descargar en Obtener más o en el diálogo de Idioma y modelo y lo confirmas, o cuando cargas un modelo de chat. Una fuente de idioma también se descarga cuando escribes texto en un sistema de escritura que la necesita (en Slop PDF, por ejemplo): la app pregunta antes, salvo que hayas elegido descargar las fuentes de idioma automáticamente (shared/fonts/jit.js). Cada archivo se comprueba con su SHA-256 antes de guardarlo. |
accounts.google.com, oauth2.googleapis.com, www.googleapis.com | Sincronización en la nube con tu propio Google Drive (shared/sync/providers/gdrive.js, pkce.js, config.js) | Inicio de sesión, y después copia de seguridad y restauración de un archivo de copia, en una carpeta opcional. Usa el ámbito drive.file, que solo llega a los archivos que crea esta app o que tú eliges. | Solo cuando conectas con tu propio identificador de cliente OAuth, y cuando pulsas un botón de copia de seguridad o de sincronización. |
www.dropbox.com, api.dropboxapi.com, content.dropboxapi.com | Sincronización en la nube con Dropbox (shared/sync/providers/dropbox.js) | Igual que Google Drive, para Dropbox | Solo cuando conectas y pulsas un botón de copia de seguridad o sincronización. |
data-api.ecb.europa.eu | Tipos de cambio (shared/data/rates-ecb.js, se abre desde Configuración, y lo leen Ledger y Calculator) | Tipos de referencia diarios en EUR del Banco Central Europeo | Solo cuando la categoría de tipos está activada y pulsas Actualizar. Actualizar al abrir se ejecuta solo si también lo marcas. |
| La dirección de una imagen arrastrada desde otro sitio web | PhotoSlop (photoslop/js/app/tabs.js) | Abre la imagen arrastrada en una pestaña nueva | Solo cuando arrastras una imagen de otra página a PhotoSlop. |
slopographic.com (el propio sitio) | Cada página, el logotipo de la página de inicio, el service worker | Los archivos propios del sitio | En cada visita. No se pide nada más de este origen. |
El servicio de IA que conectas con tu propia clave: por ejemplo api.anthropic.com, api.openai.com, generativelanguage.googleapis.com, openrouter.ai o api.groq.com, o la dirección que escribes para Ollama, LM Studio u otro servidor | El panel de IA (shared/ai/cloud/, la lista de servicios en shared/ai/cloud/catalog/); imágenes de IA (shared/ai/imagegen/) | Tus mensajes, las herramientas de la app y sus resultados, y una copia de un archivo o de una imagen solo después de que lo permitas; para las imágenes de IA, la descripción y, en una edición, la imagen (como máximo 1536 px) | Solo después de que añadas tu propia clave o una dirección de servidor y envíes una petición. Un modelo en tu dispositivo no envía nada. |
openrouter.ai/auth (una página a la que vas) y openrouter.ai/api/v1/auth/keys | Iniciar sesión con OpenRouter en el panel de IA (shared/ai/cloud/signin.js) | A la página de inicio de sesión: la dirección de esta página para volver, un desafío PKCE y un estado aleatorio. A la dirección de la clave: el código de un solo uso que dio OpenRouter y su verificador PKCE; OpenRouter responde con una clave para este navegador. Directamente entre tu navegador y OpenRouter, nada pasa por servidores de Slopographic. | Solo cuando pulsas Iniciar sesión con OpenRouter. |
127.0.0.1 (tu propio ordenador) | Conectar una app de IA (shared/agent/bridge.js) | La página se comunica con el servidor MCP de Slopographic que inició tu app de IA: las herramientas de la app, sus resultados, y los archivos que pides enviar o guardar | Solo después de que elijas “Conectar una app de IA…” y escribas el código que muestra la app de IA. Chrome pregunta antes. |
| Solo enlaces: Patreon, YouTube y Vimeo | Enlace de donación (shared/consent/donate.js), enlaces de vídeo de Notes (notes/js/video.js) | Abre el sitio en una pestaña nueva cuando haces clic | Solo cuando haces clic. Un vídeo en una nota se muestra como enlace, no como reproductor incrustado ni como imagen en miniatura. |
Dos cosas que parecen uso de red pero no lo son: tools/vendor-codemirror.mjs descarga paquetes de cdn.jsdelivr.net cuando un desarrollador lo ejecuta a mano para actualizar el código incluido. Las apps nunca cargan ese CDN. El visor de correo (eml/js/frame.js) bloquea imágenes y scripts remotos del correo con una Content Security Policy, así que abrir un mensaje no carga imágenes ni scripts remotos.
Cookies y analítica
- Guardado por el código del sitio: una elección de consentimiento en localStorage (
slop-consent), con analítica, anuncios y tipos desactivados hasta que eliges. El almacenamiento puede borrarse en el navegador en cualquier momento. - No guardado por el código del sitio: ninguna cookie y ninguna cuenta. El repositorio nunca escribe una cookie.
- Google Analytics: en la página de inicio, la etiqueta se carga con
analytics_storageen denegado. Se activa solo cuando aceptas la analítica. En otras páginas se carga solo después de que aceptes. - Los scripts propios de Google pueden establecer sus propias cookies cuando se ejecutan. Lo decide Google, no el código de Slopographic. Los pasos de auditoría de abajo muestran lo que el navegador guarda realmente.
- Anuncios: AdSense se carga solo después de que aceptes los anuncios. Rechazarlos deja vacíos los espacios de anuncios.
Trabajar sin conexión
Tras una visita, los archivos propios del sitio se guardan en Cache Storage mediante el service worker (service-worker.js, con su lista de archivos en sw-precache.js). Las páginas se comprueban primero en la red, después se toman de la caché y, después, se muestra la página sin conexión. Tus archivos no están en la caché del service worker: están en la carpeta que elegiste, o en IndexedDB. Las apps siguen funcionando sin red. Las descargas (los modelos y paquetes de fuentes de arriba) necesitan la red la primera vez.
Cómo comprobarlo tú mismo
- Pestaña Red, con la página cargada. Abre la app, pulsa F12 (o Cmd+Opción+I en un Mac), y abre la pestaña Red. Marca "Conservar registro", y recarga. Lee la columna Dominio. En una visita normal, deberías ver solo
slopographic.com, más los dominios de analítica de Google en la página de inicio. - Pestaña Red, sin conexión. En la pestaña Red, abre el menú de limitación de velocidad y elige Sin conexión. Recarga, después abre un archivo, edítalo y guárdalo. La app debería funcionar. Lo que necesite una descarga lo indica.
- Pestaña Aplicación, almacenamiento. En Chrome o Edge, abre la pestaña Aplicación. En Almacenamiento, mira Almacenamiento local, Almacenamiento de sesión, IndexedDB, Cookies, Cache Storage y Service workers. Compara lo que ves con las tablas de esta página.
- Acepta o rechaza, y compara. Rechaza la analítica y los anuncios en la franja de consentimiento, recarga, y comprueba la pestaña Red de nuevo. Después acéptalos, y mira qué peticiones aparecen.
- Lee el código fuente. El código es público en el repositorio de slopographic en GitHub. Busca
fetch(,indexedDB.open,localStorageoshowDirectoryPickerpara confirmar cualquier fila de esta página. El código del consentimiento está enshared/consent/, la sincronización en la nube enshared/sync/, y las listas de descargas enshared/library/yaitools/.
Las carpetas locales (la API de acceso a archivos del sistema) necesitan Chrome o Edge. Firefox y Safari no las ofrecen, y las apps lo indican donde corresponde.