Mejoramos GarBotGPT casi a diario. Estas son las novedades más recientes: nuevas herramientas, mejoras de velocidad y arreglos, contadas en claro.
v9.5.75
🤖 Búsqueda más lista + límites diarios del plan gratis
Dos cosas. 1) La decisión de mostrar resultados de productos ya no depende de palabras clave: un mini-modelo interpreta si tu mensaje busca un producto para comprar (más preciso). 2) Se aplican los límites diarios del plan gratis: generación de imágenes (2/día), documentos (3/día), App Builder (1/día) y presentaciones (3/día); al superarlos te invita a suscribirte. Además, comparar modelos pasa a ser una función de pago. Admins y suscriptores no se ven afectados.
✨ Nuevo
🤖 Un mini-modelo interpreta la intención (producto vs búsqueda normal)
📅 Límites diarios del plan gratis: imágenes 2, documentos 3, App Builder 1, presentaciones 3
🔒 Seguridad
🔒 Comparar modelos: función de pago
v9.5.74
🔒 Plan gratis: modelos y herramientas premium
El plan gratis pasa a tener acceso limitado (para impulsar las suscripciones). Los modelos premium GarBotGPT-5.5 y 5.4 quedan reservados a los planes de pago, y herramientas como Deep Research e Imagen→código se desactivan en el plan gratis. Es la primera fase: faltan por aplicar los límites diarios (imágenes, documentos, app builder, presentaciones) y el bloqueo de "comparar modelos", además del bloqueo visual en el selector. Admins y suscriptores no se ven afectados.
🔒 Seguridad
🔒 GarBotGPT-5.5 y 5.4 solo para planes de pago
🔒 Deep Research e Imagen→código desactivados en el plan gratis
v9.5.73
💳 Página de planes renovada
La página de planes (/pricing) se ha rediseñado: tabla comparativa mucho más clara que muestra qué incluye cada plan de verdad (modelos premium, herramientas, límites), página más ancha para reducir el scroll, y los packs de créditos (5.000 y 15.000) ahora tienen su propio icono en vez del logo genérico, en una fila de tarjetas compactas.
✨ Nuevo
📊 Tabla comparativa Gratis vs Pro vs Max mucho más clara
🎟️ Iconos propios para los packs de 5.000 y 15.000 créditos
↔️ Página más ancha: menos scroll
v9.5.72
🛍️ Fichas de producto mejoradas y en tiempo real
Mejoras en la búsqueda de productos. Las fichas ahora aparecen mientras el asistente está respondiendo (antes solo salían al terminar), porque los productos se envían en cuanto se encuentran. En búsquedas de producto ya no se muestra el bloque "Imágenes relacionadas" (era redundante con las fichas). Y las fichas se han rediseñado: imagen cuadrada con zoom al pasar el ratón, distintivo de valoración, precio destacado, botón "Comprar" con degradado y tarjeta que se eleva al pasar por encima.
✨ Nuevo
🧹 Sin "Imágenes relacionadas" en búsquedas de producto
💎 Mejorado
⚡ Las fichas de producto aparecen durante la respuesta (no al final)
🎨 Fichas rediseñadas (imagen con zoom, valoración, precio destacado, botón)
v9.5.71
🧹 Purga de invitados antiguos
Para no tener que borrar a mano las cuentas de invitado (anónimas) que se acumulan, ahora hay un botón "Purgar invitados" en Admin → Usuarios que borra de golpe todos los invitados de más de 7 días, y además una limpieza automática diaria que los elimina sola. Solo afecta a cuentas anónimas (no registradas) y es irreversible. La limpieza automática se ejecuta vía cron diario (requiere CRON_SECRET configurado en Vercel).
✨ Nuevo
🧹 Botón "Purgar invitados" en Admin → Usuarios (borra los de >7 días de una vez)
⏰ Limpieza automática diaria de invitados anónimos antiguos
v9.5.70
🛒 Comprar va directo a la tienda + "Mi selección para ti"
Dos mejoras en la búsqueda de productos. 1) El botón "Comprar" de cada ficha ahora lleva DIRECTAMENTE a la página del producto en la tienda (p. ej. Ralph Lauren, Zalando) en vez de a la página de Google Shopping; el enlace directo se resuelve al hacer clic. 2) El asistente añade una sección "Mi selección para ti" con una recomendación experta (mejor compra, alternativa elegante, opción casual y un veredicto), al estilo de ChatGPT.
✨ Nuevo
🛒 "Comprar" lleva directo a la tienda del producto (no a Google)
⭐ Sección "Mi selección para ti" con recomendación personalizada
v9.5.69
🛍️ Fichas de producto en el chat
Cuando buscas productos, los resultados se muestran como fichas visuales dentro de la respuesta: imagen, nombre, precio, tienda, valoración y botón "Comprar" que abre la página del producto. El asistente ya no los lista como texto plano; las tarjetas se renderizan a partir de los datos reales de Google Shopping. (Requiere SERPAPI_API_KEY configurada.)
✨ Nuevo
🛍️ Resultados de compra como fichas con imagen, precio, tienda y botón Comprar
🧹 El asistente ya no repite los productos en texto: solo una intro + las fichas
v9.5.68
🔗 Tarjetas de enlace (vista previa al pasar el ratón)
Los enlaces en las respuestas del asistente ahora muestran una tarjeta de vista previa al pasar el ratón (estilo ChatGPT): icono del sitio, dominio, título y descripción de la página; al hacer clic, se abre en una pestaña nueva. Funciona para fuentes y para los enlaces de compra de productos. Los metadatos se obtienen al vuelo con un endpoint protegido y con caché.
✨ Nuevo
🔗 Vista previa de enlaces al pasar el ratón (favicon + título + descripción)
🔒 Seguridad
🛡️ Endpoint de metadatos con caché y protección anti-SSRF
v9.5.67
🔗 Fix: enlaces de compra en la búsqueda de productos
En la búsqueda de productos, los enlaces de "Comprar" salían rotos: la URL de Google Shopping llevaba espacios sin codificar y eso partía el enlace, mostrando un trozo de URL como texto. Ahora la URL se codifica correctamente (el enlace funciona) y el asistente la muestra como un botón "Comprar en {tienda}" en vez de pegar la URL larga como texto.
✨ Nuevo
🔗 Enlaces de compra ya funcionan (URL codificada, sin romperse por espacios)
🛍️ El enlace se muestra como botón "Comprar", no como URL larga
v9.5.66
🔄 Estilo de respuesta sincronizado en tu cuenta
El estilo y tono de Personalización (cálido, entusiasta, títulos/listas, emoji) ahora se guarda en tu cuenta y se sincroniza entre dispositivos, en vez de quedarse solo en el navegador. Al iniciar sesión en otro equipo, tus preferencias de estilo viajan contigo.
✨ Nuevo
🔄 El estilo/tono se guarda en la cuenta y se sincroniza entre dispositivos
v9.5.65
🗓️ Plan anual (2 meses gratis)
Ahora puedes suscribirte por año y ahorrar un 17% (2 meses gratis): Pro 80 €/año (antes 96 €) y Max 200 €/año (antes 240 €). En la página de planes hay un selector Mensual / Anual. Aunque el cobro es una vez al año, los créditos se entregan CADA MES igual que en el plan mensual (5.000/mes Pro, 15.000/mes Max), mediante una concesión mensual automática. El cobro y la gestión siguen siendo seguros con Stripe.
✨ Nuevo
🗓️ Planes anuales con −17% (2 meses gratis): Pro 80 €/año, Max 200 €/año
🔀 Selector Mensual / Anual en la página de planes
💎 Mejorado
💎 Créditos entregados cada mes, aunque el cobro sea anual
v9.5.64
🛍️ Búsqueda de productos real
La búsqueda web ahora detecta cuándo buscas un producto para comprar (p. ej. "búscame mocasines de Ralph Lauren") y consulta un buscador de compras real (Google Shopping vía SerpAPI), devolviendo productos concretos con precio, tienda, valoración y enlace, en vez de un listado genérico de tiendas. El asistente los presenta como fichas con imagen y enlace de compra. Si no hay clave de SerpAPI configurada, la búsqueda funciona como hasta ahora (sin cambios). Requiere configurar SERPAPI_API_KEY para activarse.
✨ Nuevo
🛍️ Detecta consultas de compra y busca productos reales (Google Shopping)
🏷️ Resultados con precio, tienda, valoración y enlace (fichas, no listado de tiendas)
🔒 Seguridad
🔒 Fallback seguro: sin clave, la búsqueda web sigue igual
v9.5.63
🎨 Pestaña Personalización (estilo y tono)
Ajustes reorganiza Instrucciones y Memoria en una sola pestaña "Personalización" (como ChatGPT) y añade control de estilo y tono del asistente: Cálido, Entusiasta, Títulos y listas, y Emoji, cada uno en Menos / Predeterminado / Más. A diferencia de un ajuste decorativo, estas preferencias se envían en cada mensaje y se inyectan en las instrucciones del modelo, así que cambian de verdad cómo responde. Se guardan en tu navegador.
✨ Nuevo
🧩 Instrucciones + Memoria unificadas en la pestaña Personalización
✅ El estilo afecta de verdad a las respuestas (se inyecta en el prompt)
💎 Mejorado
🎨 Estilo y tono: Cálido, Entusiasta, Títulos/listas, Emoji (Menos/Predeterminado/Más)
v9.5.62
🗄️ Pestaña de Almacenamiento en Ajustes
Nueva pestaña "Almacenamiento" en Ajustes (grupo Tu contenido) donde ves cuánto espacio ocupan tus cosas: el total en uso, una barra con la proporción entre imágenes y archivos, y el desglose con el número y tamaño de cada tipo. Datos reales calculados sobre tus archivos.
✨ Nuevo
🗄️ Nueva pestaña Almacenamiento con uso total y desglose
🖼️ Separa imágenes y archivos (número y tamaño de cada uno)
v9.5.61
💜 Distintivo de suscripción en tu avatar
Igual que los administradores tienen un aro dorado alrededor de su foto, ahora los usuarios con suscripción activa tienen un aro de color (y una pequeña estrella) en su avatar, con un color distinto según el plan: violeta para Max, azul para Pro y verde para Plus. Además, en el menú de usuario aparece el nombre de tu plan junto a tu nombre. Visible tanto en escritorio como en móvil.
✨ Nuevo
💜 Aro de color en el avatar para suscriptores (distinto del dorado de admin)
🏷️ El plan aparece junto a tu nombre en el menú de usuario
💎 Mejorado
🎨 Color por plan: Max (violeta), Pro (azul), Plus (verde)
v9.5.60
🧠 Guardar en memoria de verdad (y por carpeta)
Corregido un fallo importante: cuando pedías al asistente "guarda en memoria" o "guarda todo", decía que lo había guardado pero NO guardaba nada (lo inventaba). Ahora, cuando pides guardar, el sistema extrae de la conversación los datos que merece la pena recordar y los guarda de verdad: si el chat está dentro de una carpeta, se guardan en la memoria de ESA carpeta; si no, en tu memoria global. Además, el asistente confirma exactamente qué ha guardado, sin inventar. Se evita duplicar memorias ya existentes.
✨ Nuevo
🧠 "Guarda en memoria" / "guarda todo" ahora guarda de verdad (antes se inventaba)
📁 Dentro de una carpeta, la memoria se guarda en esa carpeta
✅ El asistente confirma exactamente qué guardó
🚫 Evita duplicar lo ya guardado
v9.5.59
🔧 Los chats activos suben a "Hoy"
Corregido: al escribir en una conversación de hace días, no subía a la parte de arriba ni al grupo "Hoy" de la barra lateral, porque la fecha de última actividad de la conversación solo se actualizaba al renombrar chats nuevos. Ahora, cada vez que entra un mensaje (envío normal, regenerar, voz o chats compartidos), la conversación se marca como actividad reciente mediante un disparador en la base de datos, así que sube correctamente a "Hoy". Cambio en base de datos; no afecta a los mensajes ni a su contenido.
✨ Nuevo
🔧 Escribir en un chat antiguo lo sube a "Hoy" en la barra lateral
🗂️ Orden por última actividad correcto en todos los casos
v9.5.58
🧪 Consumo calculado para admins
El desglose "Dónde se van tus créditos" ahora también se ve en cuentas de administrador. Como a los admins no se les descuentan créditos, antes su consumo salía siempre a 0 y la sección quedaba vacía. Ahora, si no hay apuntes de consumo en el libro de créditos, la vista usa el coste que ya se guarda en cada mensaje (credits_cost) para mostrar "lo que habrías gastado", con barras por modelo y herramientas usadas. Se etiqueta claramente como coste calculado (no descontado). Para usuarios normales de pago no cambia nada: siguen usando el consumo real del ledger.
✨ Nuevo
🧪 Los admins ya ven su desglose de consumo (coste calculado, no descontado)
📊 Barras por modelo + herramientas también con datos calculados
✅ Sin cambios para usuarios de pago (consumo real del ledger)
v9.5.57
📈 Comparador de planes + métricas de negocio
Dos mejoras en torno a la suscripción. PARA EL USUARIO: la página de planes (/pricing) incluye ahora una tabla comparativa Gratis vs planes de pago (precio, créditos al mes y qué funciones incluye cada uno), para elegir con más claridad. PARA ADMIN: el panel de Facturación añade tres métricas de negocio nuevas junto al MRR ya existente — ARPU (ingreso medio por suscripción, exacto), churn de los últimos 30 días (% y nº de cancelaciones) y altas nuevas de los últimos 30 días. Churn y altas son aproximaciones basadas en las fechas de los entitlements.
✨ Nuevo
📊 Comparador de planes (Gratis vs Pro) en /pricing
💹 Admin: ARPU (ingreso medio por suscripción)
📉 Admin: churn de 30 días (% y cancelaciones)
🆕 Admin: altas nuevas de 30 días
v9.5.56
📊 Transparencia de créditos
La pantalla de suscripción (página /suscripcion y pestaña de Ajustes) ahora muestra en qué se gastan tus créditos. NUEVO: historial de movimientos (cada otorgamiento, compra o consumo con fecha, motivo legible y signo), desglose "dónde se van tus créditos" este mes con una barra por modelo y las herramientas usadas, y un aviso de saldo bajo que estima cuántos días te duran los créditos a tu ritmo actual (banner ámbar si quedan pocos, rojo si te has quedado a cero, con acceso directo a recargar). Datos calculados sobre el libro de créditos y el detalle de cada mensaje.
✨ Nuevo
🧾 Historial de movimientos de créditos (otorgados / comprados / consumidos)
📊 Desglose "dónde se van tus créditos" por modelo + herramientas
⏳ Estimación de días restantes según tu ritmo de consumo
🔔 Aviso de saldo bajo y de créditos agotados con botón de recarga
v9.5.55
💳 Suscripción rediseñada
Rediseño visual de la suscripción, tanto en la página /suscripcion como en la pestaña Suscripción de Ajustes (comparten el mismo componente). La novedad principal es una tarjeta "monedero" con degradado, el saldo de créditos en grande, el plan actual y una barra de consumo del periodo (usado frente a la asignación mensual). La tarjeta de plan es más clara, con iconos, indicador de estado en color y un aviso cuando la suscripción está marcada para cancelarse. Los botones de acción son más visibles, la carga ahora muestra un esqueleto en vez de un spinner, y el estado de invitado se ha rediseñado. Auto-recarga, referidos y facturas se mantienen.
✨ Nuevo
🎴 Tarjeta "monedero" con saldo de créditos y barra de consumo del periodo
📋 Tarjeta de plan más clara (estado en color, aviso de cancelación)
🟣 Botones de acción más visibles + esqueleto de carga
💎 Mejorado
👤 Estado de invitado rediseñado
v9.5.54
💬 Panel admin: gestión de Chats
Nueva pestaña "Chats" en el panel de administración (grupo Principal, junto a Usuarios) para ver y gestionar TODAS las conversaciones de todos los usuarios desde un único sitio. Permite buscar por título, abrir cualquier chat en el visor de solo lectura (ahora con enlace directo a la conversación concreta), renombrarlo en línea y eliminarlo. El borrado es atómico y preserva el histórico de coste (desliga token_usage antes de eliminar la conversación y sus mensajes). La lista carga por páginas y muestra dueño, número de mensajes, modelo y última actividad. Todo protegido con verificación de admin en servidor.
✨ Nuevo
💬 Nueva tab "Chats" en el panel admin con todas las conversaciones
🔎 Búsqueda por título + paginación "Cargar más"
👁️ Ver cualquier chat (visor de solo lectura con enlace directo)
✏️ Renombrar en línea y 🗑️ eliminar (borrado seguro que preserva el coste)
v9.5.53
✨ Pulido de la interfaz de escritorio
Mejoras visuales y de usabilidad centradas en el escritorio (PC). AJUSTES: el panel de ajustes se reorganiza en secciones para que se entienda mejor de cara a cliente. CABECERA: el menú de usuario se agrupa en "Cuenta" y "Más", y todas sus opciones (Suscripción, Mis archivos, Calendario, Cambiar de cuenta, Añadir cuenta) pasan por el sistema de idiomas en vez de estar fijas en español — así respetan el idioma elegido. BARRA LATERAL: arreglado el menú contextual del chat que salía cortado y no mostraba todas las opciones (p. ej. "Eliminar"); ahora se posiciona dinámicamente según el espacio disponible. Además se unificaron radios, tipografía y sombras de la barra lateral. ADMIN: los iconos de acción en Usuarios tienen más contraste; Modelos añade una leyenda visible para los badges de capacidad (S/V/T/J/D/W/R). LIMPIEZA: borrado el código admin antiguo que ya no se usaba (5 componentes "Modern*").
✨ Nuevo
⚙️ Panel de ajustes reorganizado en secciones
👤 Menú de usuario agrupado y traducible (ya no fija el español)
🛡️ Admin: iconos de Usuarios con más contraste + leyenda de capacidades en Modelos
🧹 Borrado código admin muerto (Modern*)
💎 Mejorado
🎨 Barra lateral: radios, tipografía y sombras unificados
🐛 Arreglado
🐛 Fix: menú contextual del chat ya no sale cortado (se ven todas las opciones)
v9.5.52
⚡ Chat más rápido + endurecimiento de seguridad
Mejoras internas de rendimiento y seguridad. RENDIMIENTO: el arranque de cada mensaje (/api/chat) ahora lee perfil + conversación + permisos + ajustes de colaboración en UNA sola consulta a la base de datos (nueva RPC get_chat_bootstrap) en lugar de varias idas y vueltas — clave porque la BD está en el NAS de casa y cada consulta cuesta. Se añade caché de 30s de app_settings (modelo de imagen/visión). Los invitados ya entran a /chat sin la pantalla "Preparando GarBotGPT…" (la sesión anónima se crea en el servidor). SEGURIDAD: la tabla guest_usage ahora tiene RLS y solo se toca vía RPC (antes un invitado podía resetear su límite por IP); search_path fijo en 7 funciones; /api/db-query registra el usuario real. FIX: el límite mensual de tokens ahora cuenta bien (antes pedía columnas inexistentes y nunca se aplicaba). Migraciones 121 y 122 aplicadas al NAS. Aparte, se subió max_connections de Postgres 100→200 y se ajustó la memoria/caché del NAS para reducir la lentitud por disco.
✨ Nuevo
🚪 Invitados entran a /chat sin pantalla de carga
💎 Mejorado
⚡ Arranque del chat en 1 sola consulta a BD (antes varias) → menos latencia
🗂️ Caché de ajustes (imagen/visión) durante 30s
🐛 Arreglado
🐛 Fix: el límite mensual de tokens ahora se aplica de verdad
🔒 Seguridad
🔒 guest_usage con RLS — no se puede saltar el límite por IP
v9.5.51
🔧 Fix deploy: consolidación de rutas API de ubicación
v9.5.49 y v9.5.50 añadieron 3 endpoints nuevos (/api/places/nearby, /api/user/location/home, /api/user/location/travel-mode) que cruzaron el límite de 12 Serverless Functions del plan Hobby de Vercel — el deploy fallaba después de "Build Completed". Ahora todo va en el endpoint existente /api/user/location: GET devuelve {location, home, travel, travel_mode_enabled}; PUT con body.target='home' o 'travel_mode' multiplexa; DELETE?target=home borra solo la casa. /api/places/nearby eliminado (el chat usa la lib directamente). Sin pérdida funcional para el user — las features de v9.5.49 (cerca de mí, modo viaje) siguen activas vía dynamic imports en /api/chat.
✨ Nuevo
✅ Deploy restaurado (eran 3 funciones de más sobre el límite de 12)
🔀 Endpoint unificado /api/user/location con parámetro target
Pestaña dedicada en Ajustes → Tu cuenta → Ubicación. Tres tarjetas: (1) "Ubicación actual" muestra dónde estás según GPS guardado + zona horaria + fecha de actualización + botón "Refrescar GPS" que pide ubicación al navegador. (2) "Tu casa" muestra tu punto de referencia + botón "Usar ubicación actual como casa" + botón "Borrar". (3) Toggle "Detección automática de viaje" que activa/desactiva el modo viaje. Si estás de viaje, en la parte superior aparece un banner ámbar con la distancia a casa y badge "🌍 Extranjero" si has cambiado de país. Nota de privacidad al final. Nuevo endpoint /api/user/location/travel-mode (GET/PUT).
✨ Nuevo
🗺️ Pestaña "Ubicación" en Ajustes → Tu cuenta
🏠 Botón "Usar ubicación actual como casa"
📡 Botón "Refrescar GPS" pide ubicación al navegador
✈️ Toggle "Detección automática de viaje"
🌍 Banner "Modo viaje activo" con distancia a casa y badge extranjero
v9.5.49
🗺️ "Cerca de mí" + Modo viaje automático
Dos features nuevas conectadas con ubicación. (1) Búsqueda CERCA DE MÍ: ahora puedes preguntar "qué restaurantes hay cerca", "farmacia abierta", "gasolinera", "cajero", "supermercado", "hotel", "qué visitar", etc. El chat detecta la intención + categoría, consulta OpenStreetMap (Overpass API, gratis) en un radio de 2 km de tu ubicación guardada, y devuelve hasta 10 resultados con nombre, distancia, dirección, horario, teléfono y web cuando los hay. 14 categorías soportadas: restaurantes, cafés, bares, farmacias, hospitales, gasolineras, cajeros, bancos, supermercados, hoteles, aparcamientos, paradas de bus, estaciones de tren, lugares de interés. (2) MODO VIAJE automático: profiles.home_location_json guarda tu casa (separada de la ubicación actual). Si tu ubicación actual está >100 km de casa, el chat lo detecta y le dice a la IA "este usuario está de viaje en X, considera moneda local, idioma, cultura, embajadas si pregunta por emergencias". Si además es OTRO PAÍS, añade nota sobre cambio cultural. Endpoints nuevos: /api/places/nearby?category=X y /api/user/location/home (GET/PUT/DELETE). Migración 120 aplicada al NAS (copia location actual como home la primera vez).
🗺️ 14 categorías OSM gratis (Overpass API, sin API key)
✈️ Modo viaje: si estás >100 km de casa, IA lo sabe
🌍 Si estás en otro país: contexto cultural/idioma/moneda automático
🏠 GET/PUT /api/user/location/home para gestionar la ubicación "casa"
v9.5.48
🛰️ Permiso ubicación TWA Android + header móvil mucho más rápido
(1) En la TWA Android, activar el permiso de ubicación en "Ajustes de la app" NO bastaba: Chrome internamente tiene una capa por origen separada. El LocationPrompt ahora detecta el estado con navigator.permissions.query, distingue TWA de navegador, y muestra instrucciones específicas + botón "Abrir ajustes" que lleva a chrome://settings/content/siteDetails. Soporta también GPS apagado, timeout, position_unavailable con mensajes distintos. (2) Los 3 botones del MobileHeader (sidebar, modelo, ajustes) eran lo más visible del lag en gama baja: cada uno tenía backdrop-filter:blur(18px)+saturate+brightness+contrast, 6 box-shadows, 2 pseudo-elementos ::before/::after y 6 listeners onPointerMove que recalculaban CSS vars en cada movimiento del dedo. En móvil simplificado a blur(6px) + 1 box-shadow + 0 pseudo-elementos + 0 listeners de pointer. Visual menos llamativo pero suave.
✨ Nuevo
🛰️ LocationPrompt detecta TWA vs navegador con instrucciones específicas
🔘 Botón "Abrir ajustes de Chrome para este sitio" en TWA Android
🎯 Cero listeners de pointer en móvil (eran 18 entre los 3 botones)
💎 Mejorado
⚡ MobileHeader botones: blur 18→6px, 6→1 shadows, sin pseudo-elementos
En móviles gama alta la app va bien, en gama baja iba lenta. Audit identificó 6 culpables principales. Fixes aplicados en globals.css (cubre toda la app de una sola pasada) + auth pages. (1) backdrop-blur-3xl/2xl/xl en móvil capeado a 8px (antes 12px, v9.5.37 ya bajó de 24+). (2) backdrop-saturate quitado en móvil (compite por GPU sin ser perceptible). (3) animate-ping deshabilitado en móvil (ahorra 8-12ms/frame por dot). (4) animate-pulse ralentizado a 2.5s (menos repaints). (5) mix-blend-mode forzado a normal en móvil (era screen/overlay/multiply, todos hacen composite extra pass). (6) SVG feTurbulence + feDisplacementMap (liquid-refract en login/register) ocultos en móvil — son los más caros de GPU móvil. (7) filter:blur ≥70px capeado a 16px (MusicPlayer, image-gen). (8) will-change permanente solo se activa al hover/focus/active (libera VRAM en idle).
✨ Nuevo
✨ animate-ping desactivado en móvil (status dots)
🌊 SVG liquid-refract solo en desktop (auth pages)
🎭 mix-blend-mode forzado a normal en móvil
💾 will-change solo al interactuar (libera VRAM)
📉 Estimado: 50-130ms menos por frame en Snapdragon 6xx
💎 Mejorado
🎨 backdrop-blur móvil: 12→8px + saturate stripped
v9.5.46
✅ Bug REAL del tema: Tailwind v4 seguía el modo oscuro del sistema
Ahora sí: la causa raíz. Tailwind v4 (que es lo que usamos con @import "tailwindcss") por DEFECTO activa la variante `dark:` con DOS condiciones unidas por OR: (1) clase `.dark` en un ancestro, (2) `@media (prefers-color-scheme: dark)`. Resultado: en Android con el sistema en dark, TODAS las clases `dark:bg-*` se activaban aunque nosotros NO añadiéramos la clase `.dark`. Por eso la app salía oscura con el sistema en oscuro pese a haber elegido claro. Fix: @custom-variant dark redefine la variante para que SOLO atienda a la clase. + meta color-scheme + color-scheme:light en :root para que el WebView Android no aplique scrollbars/inputs oscuros del sistema.
✨ Nuevo
🎯 @custom-variant dark — Tailwind ya solo reacciona a la clase, NO al sistema
🌐 meta color-scheme="light dark" — controla auto-styling de UA
💎 Mejorado
🎨 :root color-scheme:light — scrollbars/inputs nunca oscuros por sistema