Política de privacidad
La app Xenon funciona en tu propio PC y guarda ahí sus datos. Esta web es otra cosa, con otras reglas. Esta página mantiene las dos separadas y explica qué envía y qué guarda cada una.
Última actualización: 27 de septiembre de 2026
Resumen
- La app Xenon no registra cómo la usas. No hay cuenta, ni perfil, ni un registro de uso que salga de tu PC. Existen dos contadores. Uno se envía cuando la app busca actualizaciones y describe la instalación en sí: su versión, su sistema y, más o menos, cuánto tiempo tiene. El otro suma 1 al contador de instalaciones de una creación cuando la instalas desde la Tienda. Ninguno dice nada sobre qué widgets abres, qué buscas o qué haces con el panel. En una instalación nueva los dos empiezan activados, y puedes desactivar cualquiera de ellos en Ajustes → General, con los interruptores «Contar esta instalación, de forma anónima» y «Contar instalaciones de la Tienda, de forma anónima»; si ya usabas Xenon antes de la versión que añadió uno de ellos, para ti siguió desactivado. Ninguno lleva un identificador, así que ninguno se puede asociar a ti ni cruzar con el otro.
- La app no funciona totalmente sin conexión. Busca actualizaciones y descarga por su cuenta una lista corta de anuncios; el tiempo, las carátulas de los álbumes y los servicios que conectas solo se contactan desde las funciones que los usan. Esas conexiones se detallan abajo.
- Esta web usa Google Analytics para ver a qué páginas y descargas llega la gente. En el EEE, el Reino Unido y Suiza no se guarda nada hasta que aceptas el aviso.
- También cuenta las visitas con Cloudflare Web Analytics, que no pone ninguna cookie ni crea perfiles. Solo me dice cuántas personas llegaron a una página.
- Pulsar un botón de descarga suma 1 a un contador en mi propio servidor, sin cookie y sin identificador. El enlace de descarga sigue apuntando directamente a GitHub, así que ese contador nunca puede interponerse entre tú y el archivo.
Responsable del tratamiento y contacto
Xenon es un proyecto personal de un solo desarrollador, Marcello Mastroeni, con el código fuente en GitHub bajo una licencia propia no comercial, y soy el responsable del tratamiento de esta web. Para cualquier cosa de esta página, como una pregunta, una corrección o una solicitud sobre tus datos, escribe a marcellomastroeni4@gmail.com o abre un issue en GitHub.
Esta web (xenon-app.com)
La web usa Google Analytics 4 (ID de medición G-LQ8Y8WZPQF) para entender qué páginas se leen, qué descargas se pulsan y de dónde llegan los visitantes. Son informes agregados sobre la web. No están conectados con tu copia de la app, y no tengo ninguna forma de vincular una visita aquí con una instalación en tu PC.
Qué recibe Analytics
- Las páginas que ves en esta web y la página de la que vienes.
- Los clics que he marcado como relevantes: descargas, entradas a Discord, visitas al catálogo y a la página para creadores, enlaces a GitHub.
- Ubicación aproximada (a nivel de país o ciudad, que Google deduce de tu IP; la IP completa no se guarda en los informes), tipo de dispositivo, navegador e idioma.
- Cookies llamadas
_gay_ga_*, que sirven para distinguir a un visitante que vuelve de uno nuevo. Duran hasta dos años.
Cloudflare Web Analytics
Además de Analytics, la web carga Cloudflare Web Analytics, un contador de visitas sin cookies. No pone ninguna cookie, no guarda ningún identificador y no puede seguirte entre sitios ni entre visitas; informa, de forma agregada, de la URL de la página, la página de origen, el país, el tipo de dispositivo y el tiempo de carga. Como no identifica a nadie, funciona sin el aviso de consentimiento, y aparece aquí para que sepas que está. Por qué los dos: Analytics solo cuenta a los visitantes que aceptan el aviso, así que este da el total completo con el que se comparan esas cifras.
El contador de descargas
Cuando pulsas un botón de descarga en esta web, la página también envía una nota de una línea a mi propio servidor (el mismo hub de supporters con el que habla la app) para decir que se pulsó un botón de descarga, y cuál (hero, footer, etc.). Ese es todo el mensaje: sin cookie, sin identificador, sin guardar la IP y sin nada que se pueda cruzar con otra cosa. Suma 1 a un contador por (día, botón) y la solicitud se descarta.
Existe porque ese paso concreto era invisible para mí. Cloudflare sabe que se vio la página y GitHub sabe que terminó una descarga, pero ninguno de los dos ve el clic que hay en medio, que es justo lo que dice si una página de descarga funciona de verdad. Google Analytics podría registrarlo, pero solo cuenta a quien aceptó el aviso y buena parte de este público lo bloquea por completo, así que la cifra estaría equivocada en una dirección que no podría medir.
El enlace de descarga en sí no pasa por mi servidor. Apunta directamente a GitHub, igual que antes; el contador es una nota aparte que la página envía sin esperar respuesta. Si mi servidor está caído, o lo bloqueas, la descarga funciona con normalidad y el clic simplemente no se cuenta.
Consentimiento de cookies
La web usa Google Consent Mode. Si estás en el EEE, el Reino Unido o Suiza, todas las señales de almacenamiento y publicidad empiezan como denegadas: hasta que pulsas Aceptar, no se escribe ninguna cookie y Analytics solo recibe pings sin cookies que no identifican a nadie. Fuera de esas regiones el valor predeterminado es concedido, y pulsar Rechazar lo desactiva. Rechazar es un solo clic, en el mismo sitio y del mismo tamaño que aceptar.
Puedes cambiar de opinión cuando quieras. Este botón borra la elección guardada y vuelve a mostrar el aviso:
El aviso de consentimiento no está disponible. Borra los datos del navegador para restablecerlo.Tu elección se recuerda en el almacenamiento local del navegador, bajo xenon.site.consent. Ese valor nunca sale de tu dispositivo. Si borras los datos del navegador, se restablece.
Alojamiento y fuentes
La web la sirve GitHub Pages, que procesa la solicitud y tu dirección IP para entregar la página y guarda registros de seguridad de corta duración. Esto es técnicamente necesario y ocurre antes de cualquier decisión sobre el consentimiento. La cabecera de la página también pide a la API de GitHub el número de estrellas del proyecto, una vez por sesión del navegador, así que GitHub también ve esa solicitud. Las fuentes de la web se sirven desde la propia web (/fonts/), así que cargarlas no contacta con nadie más. La única excepción es la demo en vivo, que ejecuta la propia página del panel de la app y carga sus fuentes desde Google Fonts, que entonces ve la solicitud. Las capturas de la comunidad se sirven desde Cloudflare R2 (assets.xenon-app.com).
La app Xenon
La app guarda tus datos en tu PC. Ajustes, notas, tareas, eventos, decks, memoria de la IA y fondos subidos están todos en server/data/. La app no sube esa carpeta a ningún sitio, y no incluye ningún SDK de analítica, ningún informe de fallos ni seguimiento de comportamiento. Los dos contadores anónimos descritos abajo son lo único que la app informa sobre sí misma, y ninguno lleva un identificador de ningún tipo: lo que guarda el servidor son contadores, nunca filas sobre una máquina.
La búsqueda local de archivos y el widget de espacio en disco funcionan en tu PC: tus frases de búsqueda, los nombres de archivo, el índice de carpetas y los resultados del análisis del disco se calculan ahí, y la lista de archivos que abres desde la búsqueda (que sirve para ordenar mejor tus propios resultados) está en server/data/ como todo lo demás. La excepción es lo que le pasas a Xenon AI. Con un proveedor de IA en la nube, la Búsqueda inteligente (Ctrl+I) envía a ese proveedor la frase que escribes, y pedirle a la IA que encuentre un archivo o te explique el disco le envía los resultados con los que responde, como nombres de archivo y tamaños de carpetas. El interruptor Contexto completo para búsqueda y limpieza con IA (desactivado de forma predeterminada) también envía los nombres de tus apps instaladas, de las carpetas indexadas, de las carpetas que más usas y de los archivos que abriste hace poco desde la búsqueda, nunca su contenido.
Lo que la app sí hace es conectarse a la red para las funciones que la necesitan. Esta es la lista, y cuándo ocurre cada conexión.
| Qué contacta | Cuándo | Por qué, y qué envía |
|---|---|---|
api.github.com |
Automático, al iniciar (en caché 24 h) | Comprueba si hay una versión más reciente. No envía ningún identificador, pero como en cualquier solicitud HTTP, GitHub ve tu dirección IP. Funciona sin que tengas que activar nada. |
xenon-app.com |
Cuando abres el catálogo de la comunidad o la Tienda | Descarga el catálogo público de temas, widgets y packs de la comunidad. Solo lectura, sin identificador. |
xenon-app.com(anuncios) |
Automático, como mucho una vez al día | Descarga la misma lista corta de anuncios que recibe todo el mundo: una versión nueva, algo nuevo en la Tienda, alguna nota ocasional. Solo lectura, sin identificador. Algunos anuncios son para una parte de la gente, como quienes usan un widget concreto o una versión concreta, y ese filtrado ocurre en tu PC: tu panel descarga la lista entera y decide por su cuenta cuáles le corresponden. Nunca se envía nada sobre lo que tienes instalado para decidir qué ves, así que no puedo dirigirme a ti ni saber quién vio qué. Puedes desactivar los anuncios desde cualquiera de ellos. |
| Hub de supporters (respuestas a encuestas) |
Solo si tocas una respuesta en una encuesta que aparece en un anuncio | Envía qué opción elegiste, y nada más: sin UUID de instalación, sin guardar la IP, sin cuenta, y ni siquiera la hora. El servidor suma 1 al contador de esa opción y descarta la solicitud, así que nadie, ni siquiera yo, puede averiguar qué respondió un PC concreto. Si no tocas nada, no se envía nada, y desactivar los anuncios lo detiene por completo. |
| Hub de supporters (conteo de instalaciones) |
Cuando instalas algo desde la Tienda, y solo si ese interruptor está activado | Envía el id de la creación que instalaste, y nada más: sin UUID de instalación, sin guardar la IP, sin cuenta. El servidor suma 1 al contador de esa creación y descarta la solicitud. Tu panel recuerda en tu propio PC cuáles ya contó, así que informa de cada creación como mucho una vez, y por eso no hace falta enviar nada identificativo para no contarla dos veces. La consecuencia es que la cifra significa «instalaciones informadas», no «cuántas personas la tienen», y así se indica allí donde aparece. |
| Hub de supporters (Cloudflare Worker) |
Cuando valoras un elemento del catálogo, canjeas un código de supporter o actualizas algo que desbloqueaste | Tu PC guarda un UUID aleatorio (install-id.json) para que un voto cuente una sola vez y un código no se pueda reutilizar sin fin. Ese UUID nunca sale de tu máquina: lo que se envía es un hash unidireccional de él, y valorar algo y canjear un código usan hashes distintos del mismo UUID. Es intencionado: con un único valor compartido, un código de supporter (que se puede vincular a una cuenta de Discord) y una valoración con estrellas quedarían en la base de datos bajo el mismo identificador, y yo podría ver qué creaciones valoró un supporter con nombre y apellido. Con dos, no hay nada con qué emparejarlos. Ningún hash está ligado a tu hardware ni a tu nombre; borra el archivo y se genera un UUID nuevo. Actualizar algo que desbloqueaste envía ese mismo hash, el id de la creación y la versión que tienes, y ningún código: el hub solo responde a un PC que ya conoce como propietario. |
ipwho.is |
Solo si la ubicación automática del tiempo está activada | Convierte tu IP en una ciudad aproximada para que el widget del tiempo sepa dónde estás. Si pones la ubicación a mano, esta conexión nunca se hace. |
| APIs del tiempo y de la calidad del aire open-meteo, met.no, wttr.in |
Solo con un widget del tiempo en tu panel | Envía las coordenadas del pronóstico. Sin identificador. |
itunes.apple.com |
Durante la reproducción de música o vídeo | Busca la carátula del álbum a partir del título de la pista. Sin identificador. |
| Servicios que conectas tú Spotify, Twitch, YouTube, Discord, Home Assistant, OBS, proveedores de IA, feeds de bolsa, noticias y fútbol |
Solo después de configurar esa integración | Cada uno habla con su propio proveedor, bajo la política de privacidad de ese proveedor, con las credenciales que tú das. No hacen nada hasta que los configuras. |
| El servicio push de tu teléfono Apple, Google o Mozilla, según el navegador del teléfono |
Solo después de activar las notificaciones en un teléfono o tablet vinculado | Permite que el PC despierte un teléfono con la pantalla apagada para algo que configuraste y estás esperando, como un temporizador que termina. El mensaje va cifrado de extremo a extremo para el navegador de ese teléfono, así que el servicio push lo transporta sin poder leerlo; sí ve que se envió un mensaje a ese teléfono, y cuándo. No se configura nada hasta que pulsas el botón en el teléfono, y quitar el dispositivo vinculado lo detiene. |
| Ping anónimo de versión hub de supporters |
Activado por defecto en las instalaciones desde la v4.8.0; desactivado en las anteriores, salvo que lo hayas activado tú | Versión, sistema, antigüedad de la instalación y un indicador de primera vez en la semana, enviados como mucho una vez al día al mismo hub de supporters de las filas anteriores. Ningún identificador de ningún tipo. La lista completa está en la sección de abajo. |
Las funciones de IA local (Ollama, Whisper) funcionan por completo en tu máquina. Los proveedores de IA en la nube no: si eliges Gemini, OpenAI o Anthropic, tus peticiones van a ese proveedor bajo sus condiciones. Las respuestas habladas funcionan de otra forma: con cualquier proveedor que no sea Gemini u OpenAI, que tienen voces propias, el texto que se lee en voz alta se envía al servicio de voz en línea de Microsoft Edge para convertirlo en audio. La app deja en tus manos la elección del proveedor de IA, y nunca envía una petición a un modelo en la nube que no hayas elegido.
El ping de versión
No tengo ni idea de cuántas personas usan Xenon de verdad. Las cifras de descargas son ruido, y prefiero saber si la gente se ha quedado en una versión antigua a tener que adivinarlo. Por eso hay un interruptor en Ajustes → General, llamado Contar esta instalación, de forma anónima, que envía unos pocos campos cuando la app busca actualizaciones, como mucho una vez al día. Esta es la lista completa:
- la versión que usas (p. ej.
4.11.0); - la familia de tu sistema operativo (p. ej.
win32), no tu máquina, ni su nombre, ni sus especificaciones; - la antigüedad de esta instalación, en uno de cinco rangos: el mismo día, 1–7 días, 8–30, 31–90, más de 90;
- el mes en que esta instalación se ejecutó por primera vez (p. ej.
2026-07), ounknown; - la versión que tenías antes, enviada solo en el primer ping después del cambio;
- dos indicadores de sí o no: si es el primer ping de la semana, y del mes;
- el idioma de tu interfaz, uno de los once que trae la app.
Eso es todo el contenido. Lo que no incluye: ningún UUID de instalación (ese identificador queda reservado para las valoraciones y los códigos de supporter, y mezclarlo aquí me permitiría relacionar las dos cosas, que es justo lo que no quiero poder hacer), ninguna IP guardada, ningún detalle del hardware, ninguna zona horaria, y nada sobre qué widgets usas, qué buscas o qué abres. El ping es una pequeña solicitud al hub de supporters, enviada justo después de la búsqueda de actualizaciones que la app ya hace.
Recuentos semanales y mensuales
La única cifra que no podía obtener sin identificar a la gente es «cuántas instalaciones distintas estuvieron activas esta semana». Normalmente eso necesita un id, para que el servidor distinga dos pings de un mismo PC de dos pings de dos PCs. Aquí ese trabajo lo hace tu propio PC: recuerda, en tu disco, la última semana y el último mes de los que informó, y dice simplemente «primera vez esta semana», una sola vez. El servidor suma 1 y no sabe nada más. Los recuentos semanales y mensuales salen exactos, y sigue sin haber nada con qué identificarte.
Cómo se guardan los recuentos
En el servidor solo hay contadores, ninguna fila sobre máquinas. Y los campos de arriba se cuentan en tablas separadas, una por campo, nunca juntos en una fila. Esa es la parte que importa. Una sola fila con la versión y el sistema y la antigüedad y el mes de nacimiento y el idioma podría describir fácilmente a una sola persona; y como la mayoría de esos datos no cambian de un día a otro, los días seguidos podrían unirse en el historial de una máquina: un identificador construido con los propios datos, después de haberse tomado la molestia de no enviar ninguno. Contar cada campo por separado significa que esa combinación simplemente no existe en la base de datos: no está oculta ni protegida con permisos, no está. Lo que puedo leer es «N instalaciones usaron la 4.11.0 hoy», «N nacieron en julio» y «N tienen más de 90 días», nunca cuáles son esas N ni en qué se solapan.
Hay dos sitios que guardan un par de valores juntos, porque ahí el par es la pregunta: cuántas instalaciones pasaron de una versión a otra, y cuántas de un mes de nacimiento concreto seguían activas en un mes posterior. Ninguno lleva nada más, y cualquier combinación vista menos de cinco veces se agrupa en «otros», también en la consola que solo veo yo.
Todo se borra a los 400 días. No se guardan filas por solicitud, así que no existe ningún conjunto de datos que se pueda entregar, exigir por vía judicial o filtrar.
Cambios en la v4.11.0
El interruptor en sí no cambió de estado para nadie: si estaba desactivado siguió desactivado, si estaba activado siguió activado. Lo que cambió es lo que envía el ping cuando está activado, y por eso esta página cambió en la misma versión.
Un límite: las instalaciones que ya existían antes de esta versión informan su antigüedad y su mes de nacimiento como unknown, y lo seguirán haciendo siempre. La app nunca registró cuándo se ejecutaron por primera vez, y prefiero tener un hueco visible que una cifra inventada. Ese punto ciego se cuenta y se muestra como un grupo propio, así que siempre puedo ver cuánto falta del panorama.
Cambios en la v4.8.0
Hasta la v4.7.1 este interruptor estaba desactivado hasta que lo activabas. Desde la v4.8.0 está activado por defecto en las instalaciones nuevas, porque casi nadie activa un interruptor así y por eso el recuento no servía. Puedes desactivarlo en cualquier momento en Ajustes, y el cambio es inmediato.
Si ya tenías Xenon instalado, para ti no cambió nada. El nuevo valor predeterminado solo se lee cuando todavía no existe un archivo de ajustes, es decir, en una instalación nueva. Si instalaste antes de la v4.8.0 y no tocaste el interruptor, sigue desactivado: se te dijo que estaba desactivado salvo que eligieras lo contrario, y una actualización no es el lugar para cambiar eso en silencio. Si lo habías activado, sigue activado. En cualquier caso, la app conserva lo que ya dicen tus ajustes.
Tus derechos
Según el RGPD puedes pedir el acceso, la rectificación o la supresión de tus datos personales, y puedes oponerte al tratamiento. Para esta web, las vías prácticas son: pulsar Rechazar (o el botón de arriba) para detener Analytics, usar el complemento de inhabilitación de Google, o borrar los datos del navegador. Para la app, desinstalarla detiene todas las conexiones descritas arriba, y borrar server/data/ elimina todo lo que la app guardó, incluido el UUID de instalación.
También tienes derecho a presentar una reclamación ante una autoridad de control; en Italia es el Garante per la protezione dei dati personali.
Cambios en esta página
Si la app empieza a hacer una conexión de red que no está en la tabla de arriba, la tabla se actualiza en la misma versión y las notas de la versión lo dicen. La fecha de arriba indica cuándo cambió esta página por última vez.
