La IA ya puede usar herramientas en todos los modelos
14 de agosto de 2026
Hasta ahora solo el modelo mas basico podia buscar en internet, leer paginas o consultar el calendario por su cuenta: en el resto habia que activar cada herramienta a mano. Ya funciona en los ocho modelos, incluidos los de pago. Ademas tres modelos que respondian peor tenian su configuracion vacia, y ya la tienen completa.
Lo destacado
3
✨ Nuevo1
Todos los modelos pueden decidir por si mismos cuando buscar en internet, leer una pagina o mirar tu calendario.
💎 Mejorado1
Tres modelos que daban respuestas peores ya siguen el mismo formato que el resto.
🐛 Arreglado1
Cuando la IA falla queda registrado el motivo, para poder avisar en vez de que parezca que la web no va.
Un certificado a punto de caducar no da ninguna senal: la web responde igual de bien hasta el minuto en que deja de funcionar. Ahora se comprueba a diario cuanto le queda a cada dominio y llega un aviso por Telegram con 21, 14, 7, 3 y 1 dia de margen.
Lo destacado
2
✨ Nuevo1
Aviso automatico antes de que caduque un certificado, con varios dias de margen.
💎 Mejorado1
La comprobacion mira lo que el servidor sirve de verdad, no lo que dice el panel.
Las paginas del historial ya pueden salir en Google
07 de agosto de 2026
Al paginar el historial, las 35 paginas decian ser copias de la primera, asi que Google las habria descartado. Ahora cada una se identifica por separado y tiene su propio titulo.
Lo destacado
2
💎 Mejorado1
Cada pagina del historial tiene su propio titulo y descripcion.
🐛 Arreglado1
Cada pagina del historial se identifica por separado ante los buscadores.
Cargaba las 478 versiones de golpe: pesaba 21 veces mas que la portada y en el movil tardaba varios segundos. Ahora va de 30 en 30, con enlaces de pagina al final. No se ha quitado ninguna version: siguen estando todas, repartidas.
Lo destacado
2
✨ Nuevo1
Navegacion por paginas al final del historial, con el total de versiones publicadas.
💎 Mejorado1
La pagina de novedades abre mucho mas rapido, sobre todo en el movil.
Los anuncios del blog y los de novedades se gestionan por separado
07 de agosto de 2026
Antes las dos zonas compartian identificador e interruptor: no se podia apagar una sin apagar la otra, ni saber cual rendia mejor. Ahora cada una tiene el suyo, con un resumen de donde cae cada bloque. Si no pones identificador propio en novedades, sigue usando el del blog.
Lo destacado
3
✨ Nuevo2
Interruptor propio para el blog y para la pagina de novedades.
La pagina de novedades puede tener su propio bloque, para ver por separado cuanto rinde cada zona.
🐛 Arreglado1
Los ajustes de publicidad ya no se guardan a cada paso al mover un deslizador, solo al soltarlo.
La pagina publica de novedades puede llevar dos bloques de publicidad intercalados entre versiones, siempre marcados como publicidad y nunca al principio. Se activa desde el mismo sitio que los del blog; sin identificador configurado, la pagina se ve igual que ahora.
Lo destacado
2
✨ Nuevo1
La pagina de novedades admite dos bloques de publicidad entre versiones.
💎 Mejorado1
Los bloques ya se ven bien en cualquier pagina, no solo dentro del blog.
Los articulos del blog ya pueden llevar publicidad en huecos fijos, repartida entre secciones y siempre marcada como publicidad. Se configura desde el panel de anuncios pegando los identificadores que da AdSense; mientras no haya ninguno, los articulos se ven exactamente igual que hasta ahora.
Lo destacado
3
✨ Nuevo2
Los articulos del blog admiten bloques de publicidad entre secciones y uno al final.
Nuevo apartado en el panel de anuncios para pegar los identificadores y elegir cuantos bloques como maximo.
💎 Mejorado1
La publicidad nunca parte un parrafo, nunca abre el articulo y nunca sale en textos cortos.
Iba con tirones al hacer scroll desde el telefono. Eran dos cosas: las manchas de color del fondo se movian sin parar aunque estan desenfocadas (y mover algo desenfocado obliga a recalcularlo entero en cada fotograma), y el codigo de los anuncios se ejecutaba justo mientras la pagina arrancaba. Medido en el movil: de 92 a 121 fotogramas por segundo, y medio segundo menos de bloqueo al abrir.
Lo destacado
3
💎 Mejorado2
La pagina abre antes: los anuncios se cargan cuando ya puedes usarla, no mientras carga.
Las cintas de logos se paran solas cuando no se ven, para no gastar bateria de fondo.
🐛 Arreglado1
El scroll de la pagina publica en movil va suelto: las manchas del fondo ya no se animan (se ven exactamente igual).
Blog renovado y articulo nuevo sobre los investigadores delegados
31 de julio de 2026
El blog estrena imagen de portada en cada articulo, tipografia y espaciado propios pensados para leer, y modo oscuro de verdad. Y hay un articulo nuevo que explica como varios investigadores trabajan a la vez sobre una misma pregunta, con imagenes sacadas de una ejecucion real.
Lo destacado
4
✨ Nuevo2
Articulo nuevo: como trabajan varios investigadores a la vez sobre una misma pregunta.
Cada articulo puede llevar imagen de portada, que es la que se ve al compartirlo.
💎 Mejorado2
El blog se lee mejor: ancho de linea comodo, mejor contraste y tablas que se desplazan solas sin descuadrar la pagina.
Un ojo en la cabecera para ocultar el bloque de modelos
31 de julio de 2026
El selector de modelo esta en dos sitios a la vez: la barra de arriba y la caja de escribir. Ahora hay un ojo junto al de la barra de arriba para esconderlo o volver a mostrarlo al momento, sin pasar por ningun panel.
Lo destacado
1
✨ Nuevo1
Ojo junto al selector de la barra superior para ocultar o mostrar ese bloque al instante.
La caja de escribir vuelve a su sitio en movil y Spotify deja de aparecer caido
31 de julio de 2026
En movil, la caja de escribir de la pantalla de inicio se habia quedado flotando en mitad de la pagina, encima de los accesos rapidos, en vez de anclada abajo. Y el panel de estado decia que Spotify no estaba disponible aunque funcionara: comprobaba una direccion que Spotify ha retirado.
Lo destacado
2
🐛 Arreglado2
En movil, la caja de escribir de la pantalla de inicio vuelve a estar anclada abajo.
El panel de estado ya no marca Spotify como caido cuando funciona con normalidad.
Arreglado el login con Google cuando ya tenias la sesion iniciada
31 de julio de 2026
Si entrabas con Google teniendo ya una cuenta activa, el paso final del login se saltaba y nunca llegaba a completarse. El sistema trataba esa pantalla de retorno como una pagina de acceso normal y te sacaba de ella antes de tiempo.
Lo destacado
2
💎 Mejorado1
El interruptor para ocultar el selector de modelos de la barra superior ahora esta a la vista al abrir el menu, no escondido en un submenu.
🐛 Arreglado1
El paso final del login con Google ya no se salta cuando ya tienes una sesion iniciada.
El nivel de inteligencia que eliges se mantiene al cambiar de chat
31 de julio de 2026
Elegias Alta en la pantalla de inicio, entrabas en una conversacion y el boton saltaba al nombre de un modelo: cada chat recordaba el suyo y pisaba tu eleccion. Ahora el nivel es tuyo, no de la conversacion, y se mantiene en todas. El nombre de un modelo solo aparece si lo eliges tu a mano. Ademas se han corregido dos fallos de los avisos programados.
Lo destacado
4
💎 Mejorado1
El nombre de un modelo solo se muestra si lo eliges tu; si usas un nivel, se ve el nivel.
🐛 Arreglado2
El nivel elegido (Instantanea, Media o Alta) se mantiene al entrar en cualquier chat y al recargar.
Los avisos programados se guardan con tu hora real: uno puesto a las 22:00 ya no se publicaba dos horas tarde.
🔒 Seguridad1
Un aviso dirigido a una persona concreta ya no puede mostrarse a los demas si falla la consulta principal.
Arreglado el cargando infinito de avisos y nuevo articulo sobre los investigadores delegados
31 de julio de 2026
La pestana de avisos del panel se quedaba cargando para siempre cuando no habia ninguno creado: no era que la carga no terminara, es que se relanzaba sola en bucle. Ademas se han cerrado varios fallos silenciosos de esa misma pantalla, y hay un articulo nuevo en el blog explicando como funcionan los investigadores delegados.
Lo destacado
4
✨ Nuevo1
Nuevo articulo en el blog: como trabajan varios investigadores a la vez sobre una misma pregunta.
🐛 Arreglado3
La pestana de avisos ya no se queda cargando cuando no hay ninguno: ahora muestra un estado vacio con que hacer.
Si falla la carga se ve el error y un boton para reintentar, en vez de un giro infinito.
Crear, borrar o activar un aviso ya no dice que ha ido bien cuando el servidor lo ha rechazado.
El nivel de inteligencia ya no se contradice, y avisa si tu plan lo limita
30 de julio de 2026
El menu marcaba «Alta» mientras el boton del chat ponia «Media» a la vez: eran dos formas distintas de calcular lo mismo. Ademas, si tu plan no llega al nivel que pide la opcion, el sistema lo bajaba sin decir nada -- en el plan gratuito las tres opciones acababan haciendo exactamente lo mismo. Ahora se avisa en la propia fila.
Lo destacado
2
💎 Mejorado1
Si tu plan limita el nivel, la opcion lo indica en vez de bajarlo en silencio.
🐛 Arreglado1
El nivel que marca el menu y el que muestra el boton del chat son siempre el mismo.
Al entrar con Google volvias a la web como invitado. Fue un fallo introducido ayer al hacer mas pequena la cookie de sesion: se reescribia con una codificacion ligeramente distinta a la que espera el sistema de cuentas, asi que la sesion se descartaba sin avisar. Ya esta corregido.
Lo destacado
1
🐛 Arreglado1
Iniciar sesion con Google vuelve a funcionar: ya no te devuelve a la web como invitado.
Menu de modelos mas claro, input menos transparente y vista previa con artifacts
30 de julio de 2026
El submenu con la lista de modelos se quedaba abierto aunque movieras el raton a otra opcion, tapando media pantalla. La caja de escribir era tan transparente que se leia el texto del chat a traves de ella. Y en la vista previa de la barra lateral los artifacts salian como texto en crudo.
Lo destacado
4
💎 Mejorado2
El menu de modelos se ve mejor: mas ancho (ya no se corta el nombre del modelo), con barras que indican cuanto piensa cada nivel y la opcion activa resaltada.
La vista previa de los chats enseña los artifacts como una pastilla con su nombre, en vez de un codigo suelto.
🐛 Arreglado2
La lista de modelos se cierra al apartar el raton, con un margen para que no se cierre mientras vas hacia ella.
La caja de escribir ya no deja leer el texto del chat a traves: sigue con efecto cristal pero se distingue.
Al abrir la web, el boton del selector mostraba unos segundos el nombre del modelo y despues saltaba al nivel de inteligencia. Pasaba porque esperaba a dos consultas al servidor para saber que nivel tenias puesto. Ahora lo lee de tu navegador al instante, asi que sale bien desde el primer momento.
Lo destacado
1
🐛 Arreglado1
El boton del selector muestra el nivel correcto desde el primer instante, sin cambiar de texto a los pocos segundos.
Los investigadores en paralelo ya no tiran su trabajo a medias
30 de julio de 2026
Al probar el sistema de investigadores delegados contra el modelo real aparecio un fallo que ninguna prueba de laboratorio veia: si a un investigador se le acababa el presupuesto mientras consultaba fuentes, devolvia un informe VACIO. El trabajo se pagaba y se perdia, y quien coordinaba ni se enteraba de que habia datos a medias. Ahora siempre se le reserva la ultima llamada para que escriba lo que haya averiguado.
Lo destacado
2
💎 Mejorado1
Los resultados a medias se marcan como INCOMPLETO, para que la respuesta final no de por cierto lo que falta.
🐛 Arreglado1
Un investigador que se queda sin presupuesto a mitad entrega lo que ha averiguado en vez de nada.
Arreglado el error de Synology al entrar despues de unos dias
30 de julio de 2026
Si volvias a entrar tras varios dias con la sesion de Google, a veces salia una pagina de error de Synology en vez de la app. La causa: al caducar la sesion se renovaba y la cookie resultante dejaba la respuesta a 114 bytes del limite del servidor, que cortaba la conexion. Ahora la sesion se guarda sin los tokens de Google (que ya estaban guardados aparte y no los leia nadie), asi que la cookie es unos 2,8 KB mas pequena y queda muy lejos del limite.
Lo destacado
3
💎 Mejorado1
La cookie de sesion es unos 2,8 KB mas pequena, asi que TODAS las peticiones viajan mas ligeras.
🐛 Arreglado1
Ya no aparece la pagina de error de Synology al volver a la app despues de dias.
🔒 Seguridad1
Los tokens de Google dejan de viajar en la cookie del navegador en cada peticion: se quedan solo guardados en el servidor.
La bienvenida ya se puede personalizar en los 7 idiomas
30 de julio de 2026
El panel de administracion solo dejaba editar la bienvenida en espanol y catalan: quien entraba en ingles, frances, aleman, italiano o portugues veia un saludo que no se podia cambiar, y el panel no avisaba de ello. Ahora estan los siete. Ademas vuelven la corona de administrador y el aro de color del plan alrededor de la foto de perfil, y el saludo entra con animacion cuando llega de verdad, no antes.
Lo destacado
5
✨ Nuevo1
La bienvenida se configura en los 7 idiomas, cada uno con su vista previa en ese idioma.
💎 Mejorado2
El saludo y tu nombre entran con animacion en el momento en que llegan, no antes de cargarse.
En movil la caja de escribir de la bienvenida tambien entra con animacion.
🐛 Arreglado2
Lo que se escribe en admin para ingles, frances, aleman, italiano y portugues ahora SI se aplica en la pantalla.
La foto de perfil recupera la corona de administrador y el aro de color segun el plan.
El menu que se abre desde la caja de escribir era una lista larga de modelos agrupados por proveedor: para pedir que pensara mas habia que reconocer nombres internos. Ahora lo primero que ves es la INTELIGENCIA (Instantanea, Media o Alta) y el catalogo completo se abre en un submenu al lado, con todo lo que tenia: buscador, planes, topes diarios y nivel de razonamiento por modelo.
Lo destacado
3
💎 Mejorado3
El menu de modelos ahora empieza por la inteligencia: Instantanea, Media o Alta. Debajo de cada una se ve que modelo usa.
La lista completa de modelos se abre en un submenu al lado, sin perder buscador, planes, topes ni nivel de razonamiento.
El boton del chat muestra el nivel elegido (por ejemplo "Alta") en vez del nombre interno del modelo.
Elige como quieres la respuesta: Rapido, Equilibrado o Pensar a fondo
30 de julio de 2026
Para que una respuesta saliera rapida o profunda habia que combinar dos cosas tecnicas: el modelo (con nombres internos) y el nivel de razonamiento. Ahora hay tres botones arriba del selector que lo fijan todo de una vez, y debajo sigue la lista completa de siempre para quien quiera elegir a mano. Ademas la vista previa del chat se ve como el propio chat, con tu mensaje en burbuja y la respuesta debajo.
Lo destacado
5
✨ Nuevo2
Tres botones de comportamiento en el selector de modelo: Rapido, Equilibrado y Pensar a fondo. Cada uno fija el modelo y cuanto piensa.
Debajo de cada boton se ve que modelo va a usar, asi que no es una caja negra.
💎 Mejorado2
Las opciones se adaptan a tu plan: nunca ofrecen un modelo que no puedas usar ni prometen un nivel de razonamiento que tu plan no incluya.
La vista previa del chat se pinta como el chat: tu mensaje en burbuja a la derecha y la respuesta a la izquierda.
🐛 Arreglado1
El menu de tres puntos de cada chat vuelve a aparecer al pasar el raton, como antes.
Tu cuenta baja a la barra lateral y los chats se pueden ojear sin abrirlos
30 de julio de 2026
El avatar y todo lo que colgaba de el (Ajustes, Suscripcion, Mis archivos, Calendario, Changelog, cambiar de cuenta y cerrar sesion) estaba arriba a la derecha, en diagonal desde la barra lateral y peleando por sitio con el selector de modelo y la busqueda. Ahora vive al pie de la barra lateral, junto al resto de la navegacion. Ademas, dejando el raton sobre un chat sale una tarjeta con sus ultimas lineas: util cuando tienes cuatro chats que se llaman "Hola".
Lo destacado
4
✨ Nuevo1
Vista previa del chat al dejar el raton encima: las ultimas lineas sin abrirlo ni cambiar de pagina.
💎 Mejorado3
Tu cuenta y todas sus opciones estan al pie de la barra lateral, con tu nombre, tu correo y tu plan a la vista.
El menu de tres puntos de cada chat ya se ve siempre; antes habia que pasar el raton por encima para descubrirlo.
La cabecera del chat se queda solo con lo que es de la conversacion abierta.
Los recordatorios ya llegan a Telegram al ejecutarlos a mano, y la repeticion funciona
30 de julio de 2026
Pulsar el rayo de "Ejecutar ahora" en Automatizaciones programadas solo escribia el resultado en el chat: no avisaba por Telegram, ni por notificacion, ni por correo, aunque la tarea lo tuviera configurado. Ya salen por todos los canales. Y la repeticion tenia dos fallos: poner "Cada hora" a una tarea ya terminada la dejaba en el limbo (se veia "Completada - Cada hora" y no volvia a ejecutarse nunca), y una repeticion diaria o semanal se saltaba siempre la primera cita.
Lo destacado
5
💎 Mejorado1
En el historial de la tarea queda anotado por que canales salio el aviso, para poder revisar un "no me ha llegado" sin repetirlo.
🐛 Arreglado4
Ejecutar una automatizacion a mano avisa por Telegram, notificacion y correo, igual que cuando salta por si sola.
Anadir una repeticion a una tarea ya completada o cancelada la reactiva y calcula la proxima vez que toca.
Una repeticion diaria a las 21:00 guardada por la manana salta HOY a las 21:00, no manana: antes se perdia el primer aviso.
Lo mismo en las semanales: si el dia elegido es hoy y la hora no ha pasado, salta hoy y no la semana que viene.
Numeracion de codigo arreglada de raiz y un campo para pedir cambios sin salir del panel
30 de julio de 2026
La numeracion de lineas se descuadraba porque el codigo se pintaba un pixel mas alto por linea que los numeros: invisible al principio y, en la linea 480, veinticuatro lineas de codigo sin numero. Ya esta corregido en la raiz. Ademas, el panel del artifact tiene ahora un campo abajo para pedir cambios directamente, sin volver al chat ni explicar de que archivo hablas.
Lo destacado
4
✨ Nuevo1
Nuevo campo en el panel del artifact para pedir un cambio directamente. La respuesta se guarda como una version nueva del mismo archivo, no como uno aparte.
💎 Mejorado2
El campo flota sobre el contenido con acabado de cristal y deja hueco abajo, asi que no tapa las ultimas lineas ni el pie de la pagina.
Con un tema activo (Navidad, Halloween, Terminal, Papel) el campo adopta los colores del tema en lugar del cristal.
🐛 Arreglado1
La numeracion de lineas cuadra con el codigo hasta la ultima linea, en archivos de cualquier tamano.
La numeracion del codigo no se puede volver a descuadrar
30 de julio de 2026
Refuerzo de la vista de codigo del artifact. El tamano de letra, el interlineado y los margenes de la columna de numeros y del codigo estaban escritos por duplicado, asi que cuadraban por coincidencia: cambiar uno y olvidar el otro descuadraba la numeracion poco a poco (invisible en la linea 5, enorme en la 480). Ahora hay una sola definicion para las dos columnas y las lineas largas no se pueden partir.
Lo destacado
2
💎 Mejorado2
La numeracion de lineas y el codigo comparten una unica definicion de tamano e interlineado, asi que no pueden desalinearse.
Con el panel estrecho y lineas muy largas, el codigo se desplaza en horizontal en lugar de partirse (que era lo que descuadraba la cuenta).
Los numeros de linea del codigo ya siguen al scroll
30 de julio de 2026
En el panel del artifact, al bajar por el codigo la numeracion se quedaba clavada en 1-41: el codigo avanzaba y los numeros no. Habia dos zonas de desplazamiento independientes y la numeracion estaba fuera de la que se movia, asi que segun donde tuvieras el raton se movia una u otra. Ahora se desplaza todo junto, y al mirar lineas largas los numeros se quedan fijos a la izquierda.
Lo destacado
2
🐛 Arreglado2
La numeracion de lineas acompana al codigo al hacer scroll, en lugar de quedarse clavada.
Con lineas muy largas, los numeros se quedan fijos a la izquierda al desplazarte en horizontal, en vez de desaparecer.
El codigo del artifact ya se ve completo en el panel
30 de julio de 2026
El panel lateral mostraba el codigo cortado: una web de 579 lineas aparecia truncada en la linea 41, con la numeracion siguiendo hasta el final. El archivo estaba bien guardado (y la tarjeta del chat decia las lineas correctas): lo que fallaba era que el ultimo tramo del texto generado no llegaba al panel. Lo introdujimos nosotros al optimizar el rendimiento en la version anterior.
Lo destacado
3
💎 Mejorado1
La optimizacion de rendimiento de la version anterior se mantiene intacta: los artifacts siguen sin ir a tirones.
🐛 Arreglado2
El panel del artifact muestra el codigo COMPLETO. Antes se cortaba y parecia que la numeracion de lineas estaba mal, cuando lo que faltaba era el codigo.
Tambien afectaba a la vista previa y a la descarga desde el panel, que partian de ese contenido incompleto.
Leer en voz alta y mejorar el mensaje vuelven al cuadro de escritura
30 de julio de 2026
En la version anterior los movimos al menu +, y fue un error: «mejorar mi mensaje» actua sobre el texto que acabas de escribir y esconderlo en un menu anadia un paso justo cuando tienes prisa. Vuelven al cuadro de escritura. El amontonamiento se arregla de otra forma: «mejorar» solo aparece cuando hay texto (antes estaba siempre, en gris, ocupando sitio sin poder pulsarse) y los controles van agrupados por lo que hacen.
Lo destacado
3
💎 Mejorado2
El boton de mejorar el mensaje solo aparece cuando hay algo escrito, asi que el cuadro vacio se ve mas limpio.
Los controles se agrupan por lo que hacen (ajustes del chat, modelo, acciones del mensaje) en lugar de ser una tira de iconos iguales.
🐛 Arreglado1
Leer en voz alta y mejorar el mensaje vuelven al cuadro de escritura, donde se usan.
Nueva pantalla de administracion para los subagentes
30 de julio de 2026
Los limites de los subagentes (cuantos investigadores, cuantos a la vez, cuanto pueden buscar, que herramientas usan) estaban fijos en el codigo y cambiarlos exigia una actualizacion. Ahora hay una pantalla propia en administracion donde se ajusta todo en caliente, con el coste estimado de cada delegacion a la vista antes de guardar.
Lo destacado
4
✨ Nuevo2
Nueva pantalla Administracion → Subagentes: numero de investigadores, cuantos trabajan a la vez, presupuesto, tiempo maximo y modelo.
Se elige una por una que herramientas puede usar un investigador, y se pueden anadir indicaciones propias (por ejemplo, exigir fuentes oficiales).
💎 Mejorado2
La pantalla ensena lo que costara una delegacion ANTES de guardar, en lugar de descubrirlo en el consumo.
Avisa de las tres llaves que hacen falta para que funcione y de cuales estan puestas, en vez de dejarte adivinar por que no pasa nada.
La IA puede repartir una investigacion entre varios investigadores
30 de julio de 2026
Cuando una pregunta se parte en varias preguntas independientes (comparar cinco herramientas, cubrir seis areas de un sistema, cruzar tu correo con tu base de datos), el asistente puede lanzar hasta seis investigadores en paralelo. Cada uno trabaja por su cuenta con sus propias herramientas y devuelve un informe; despues el asistente los contrasta. Y el composer del ordenador queda mas despejado: de siete controles a cuatro.
Lo destacado
4
✨ Nuevo2
Nuevo: el asistente puede repartir una investigacion amplia entre varios investigadores que trabajan a la vez, y luego contrasta sus informes.
Cada investigador te dice si no ha podido averiguar algo, en lugar de rellenarlo con suposiciones.
💎 Mejorado2
El composer del ordenador pasa de siete controles a cuatro: leer en voz alta y mejorar el mensaje se han movido al menu +.
Un unico boton de voz, con un desplegable que por fin explica la diferencia entre dictar y hablar como en una llamada.
Recordatorios: la hora correcta, mas formas de pedirlos y entrega a Telegram
30 de julio de 2026
Pedir «ponme un recordatorio cada 90 minutos» no creaba nada y el asistente te mandaba a la app del movil: solo entendia «recuerdame». Ademas, la hora del aviso se anunciaba dos horas antes de la real, y si elegias Telegram como chat de una automatizacion el mensaje se quedaba en la web sin llegarte al movil. Las tres cosas arregladas. Y el panel de contexto ahora explica de verdad por que se resume una conversacion.
Lo destacado
5
💎 Mejorado2
El panel de tokens ya ensena lo que de verdad decide si se resume la conversacion (numero de mensajes), no solo un porcentaje que nunca era el motivo.
El resumen de lo que la IA recuerda se abre en una ventana amplia y legible, en lugar de una cajita minuscula donde no se podia leer.
🐛 Arreglado3
Ya puedes pedir recordatorios como hablas: «ponme», «pon una alarma», «configurame», «necesito un aviso»... no solo «recuerdame».
La hora del recordatorio se anuncia en tu zona horaria (antes salia dos horas antes de la real).
Si eliges Telegram como chat de una automatizacion, el aviso te llega ahora al movil por Telegram, no solo a la conversacion.
Los artifacts ya no van a tirones (ni tumban la pestaña)
30 de julio de 2026
Mientras se generaba un artifact, la vista de código se recalculaba entera —con resaltado de sintaxis y todo— en cada palabra que escribía la IA. Eso saturaba el navegador: iba a tirones y, en respuestas largas, acababa saliendo la pantalla de «recargando la app». Ahora el código se pinta en crudo mientras se escribe y se colorea al terminar: 480 veces menos trabajo por actualización.
Lo destacado
3
🐛 Arreglado3
Se acabaron los tirones al generar artifacts largos, y la pantalla de error que aparecía a media respuesta.
La vista previa de una web ahora se ve construirse de verdad mientras se escribe (antes se quedaba congelada hasta que la IA terminaba).
Cuando algo falla de verdad, la pantalla de error lo dice claro y te confirma que tu conversación está guardada, en lugar de culpar a una actualización que no era el problema.
Paneles de datos: pide un cuadro de mando y te lo dibuja
30 de julio de 2026
Pide «hazme un panel de ventas por mes y comercial» y el asistente consulta tus datos reales (tu base de datos conectada o la hoja de cálculo que hayas adjuntado), calcula los totales y te devuelve un panel visual con cifras clave, gráficas y tabla de detalle. Se abre en el lateral, se puede editar, descargar y conserva el historial de versiones. Los datos personales se anonimizan antes de salir.
Lo destacado
4
✨ Nuevo1
Nuevo panel de datos sobre tus propias fuentes: cifras clave, gráficas y tabla, en claro y en oscuro, y también en el móvil.
💎 Mejorado1
Cada panel guarda de dónde salieron los datos (fuente, consulta y número de filas) para poder comprobarlo después.
🔒 Seguridad2
Los nombres, correos y DNI se sustituyen antes de generar el panel. Si esa protección no puede aplicarse por completo, se dice en el propio panel en lugar de dar la anonimización por hecha.
Solo consultas de lectura: cualquier instrucción que no sea una consulta se rechaza y no llega a ejecutarse contra tu base de datos.
Automatizaciones que se disparan cuando pasa algo, no cuando toca el reloj
30 de julio de 2026
Hasta ahora una automatización solo podía ejecutarse a una hora fija o cada X horas. Ahora puedes decirle «cuando llegue un correo de Hacienda», «cuando cambie esta página», «cuando haya novedades en este feed» o «cuando esta consulta a la base de datos devuelva algo», y se ejecuta en ese momento. La primera comprobación solo activa el vigilante, así que no recibes de golpe todo el histórico que ya tenías.
Lo destacado
4
✨ Nuevo2
Nuevo tipo de automatización: por evento. Cuatro disparadores: correo recibido, cambio en una web, novedad en un feed RSS y condición en la base de datos.
El aviso te dice QUÉ lo ha disparado (de quién es el correo, qué ha cambiado), no un genérico «se ha cumplido la condición».
💎 Mejorado2
En la lista de automatizaciones ves si el vigilante está activo, cuántas veces ha saltado y si la última comprobación ha fallado.
Si la web está caída o la cuenta de Google ha caducado, no te avisa en falso: lo marca como error y lo reintenta.
La IA decide qué herramienta usar (ya no hay que adivinar el botón)
30 de julio de 2026
Hasta ahora, para que el asistente consultara tu calendario, tu correo, tu base de datos o el tiempo tenías que acordarte de activar el botón correcto antes de escribir; si no lo hacías, te decía que no podía. Ahora lo decide él: si tu pregunta necesita una de esas fuentes, la consulta solo, puede encadenar varias y sigue respetando tu plan y tus límites. Además, los modelos que razonan ya pueden usar herramientas sin perder el panel de razonamiento.
Lo destacado
4
✨ Nuevo1
El asistente puede consultar por su cuenta el tiempo, tu calendario, tu correo (solo lectura), tus bases de datos, GitHub y Slack, sin que actives ningún botón.
💎 Mejorado2
Si ya has activado una herramienta a mano, el asistente no la repite: nunca se ejecuta dos veces ni te cuesta el doble.
Nunca enviará correos por iniciativa propia: leer sí, enviar sigue necesitando que lo pidas tú desde el menú.
🐛 Arreglado1
Los modelos que razonan ya pueden usar herramientas: antes, al activarlas, sus respuestas salían cortas y sin tablas y perdían el panel de razonamiento.
La barra lateral se adapta por completo a cada tema
30 de julio de 2026
Con los temas de Navidad, Halloween, Terminal y Papel, la barra lateral se quedaba clara y sus detalles salían en violeta o azul pastel, desentonando y dejando el texto casi ilegible. Ahora el fondo, el botón de nuevo chat, los iconos de carpeta, los títulos de sección y el chat activo adoptan la paleta del tema.
Lo destacado
3
🐛 Arreglado3
Con un tema activo, la barra lateral vuelve a tener el color del tema en lugar de quedarse clara con el texto ilegible.
El botón «Nuevo chat», los iconos de carpeta y los títulos de sección adoptan los colores del tema (antes eran violeta y azul pastel fijos).
El chat activo ya no muestra dos marcas superpuestas: se queda solo con la del tema.
Ahora puedes subir un audio al chat, escribir «analízamelo» y GarBotGPT te dice el tempo (BPM), la tonalidad, cómo está masterizado y la forma de la canción, además de transcribir la letra. Todo se mide sobre el propio audio, así que funciona igual con una maqueta tuya que con un tema publicado.
Lo destacado
3
✨ Nuevo2
Sube una canción y pide «analízamelo»: te da el tempo en BPM, la tonalidad (por ejemplo, La menor), el volumen y el rango dinámico, y el perfil de energía de principio a fin.
El análisis se calcula sobre la onda del audio, no se consulta a ningún catálogo: funciona con maquetas, ensayos, notas de voz o cualquier grabación tuya.
💎 Mejorado1
Cada dato viene con su nivel de fiabilidad: si el pulso no está claro (una balada libre o alguien hablando), lo dice en vez de darte un número inventado.
Sube audios y la IA los escucha, y ordena tus archivos
29 de julio de 2026
Ya puedes subir un audio o un vídeo y GarBotGPT lo transcribe entero para poder buscarlo y preguntarte sobre él. Antes se subía y luego daba un error de tipo no soportado. Además, en Mis archivos puedes ordenar por fecha, tamaño o nombre.
Lo destacado
4
✨ Nuevo2
Los audios y vídeos que subes se transcriben enteros (no solo un fragmento), así que puedes buscarlos y preguntarle a la IA sobre lo que se dice en ellos.
En Mis archivos puedes ordenar por fecha, por tamaño o por nombre, y cambiar entre ascendente y descendente. Útil para encontrar qué ocupa más.
💎 Mejorado1
La app recuerda tu orden preferido en Mis archivos para la próxima visita.
🐛 Arreglado1
Subir un audio (mp3, wav, m4a…) ya no falla con «tipo de archivo no soportado»: se sube y se transcribe.
El Wrapped estrena una entrada de cine: barrido de color y cuenta atrás 3·2·1 antes de empezar tu historia. Además arreglamos que las horas escuchadas no cuadraran entre los logros y tus récords, y que crear una playlist desde Telegram fallara.
Lo destacado
4
✨ Nuevo1
El Wrapped arranca con una transición cinematográfica: barrido de color y cuenta atrás 3·2·1 antes de tu primera escena.
💎 Mejorado1
Spotify aguanta mejor sus límites: cuando nos pide esperar, ahora dejamos de insistir desde todas partes y el servicio se recupera antes.
🐛 Arreglado2
Las horas escuchadas ya coinciden entre los logros y tus récords (antes cada pantalla daba una cifra distinta del mismo dato).
Crear una playlist desde Telegram vuelve a funcionar, y si algo falla te lo dice en vez de asegurar que se creó con canciones.
Suspensiones que se levantan solas, avisan por correo y nueva página de bloqueo
29 de julio de 2026
Si una cuenta se suspende temporalmente, ahora se reactiva sola al vencer el plazo y avisamos por correo tanto al suspender como al reactivar. La página que ve una cuenta bloqueada se ha rediseñado por completo: se entiende de un vistazo cuánto queda, por qué, y cómo pedir una revisión.
Lo destacado
5
✨ Nuevo1
Recibes un correo cuando se suspende tu cuenta —con el motivo y hasta cuándo— y otro cuando vuelve a activarse.
💎 Mejorado1
La página de cuenta bloqueada estrena diseño: el tiempo restante es el protagonista, el motivo se lee claro, funciona en modo oscuro y ofrece un botón para pedir revisión.
🐛 Arreglado2
Las suspensiones temporales se levantan solas al vencer el plazo (antes el bloqueo se quedaba marcado y podías seguir encontrándote errores).
El tiempo restante del bloqueo ya se muestra en tu idioma (antes salía en español aunque tuvieras la app en otro).
🔒 Seguridad1
Una cuenta suspendida ya no puede seguir escribiendo: el bloqueo se aplica también en la base de datos y se cierran sus sesiones abiertas.
Cambios detallados2 · 1
Seguridad
2
Nuevas políticas de base de datos que impiden crear o modificar conversaciones, mensajes y archivos con la cuenta suspendida (antes el bloqueo solo existía en la web).
Al suspender se revocan las sesiones y se marca la cuenta en el sistema de identidad, de modo que el bloqueo no depende de que la web lo compruebe.
Página de suscripción más ancha y en tu idioma, y costes más claros
29 de julio de 2026
La página de suscripción aprovecha ahora toda la pantalla (la mitad de scroll) y por fin se muestra en tu idioma, no siempre en español. Además arreglamos un fallo por el que, tras una suspensión temporal, el chat seguía bloqueado para siempre.
Lo destacado
4
💎 Mejorado2
La página de suscripción usa todo el ancho de la pantalla y reparte las tarjetas en dos columnas: aproximadamente la mitad de scroll.
El coste en dinero del consumo de tokens pasa a ser información interna (solo administración) y se muestra en dólares y en euros.
🐛 Arreglado2
La página de suscripción ya se muestra en tu idioma (antes salía siempre en español aunque tuvieras la app en otro).
Si tu cuenta estuvo suspendida temporalmente, al vencer el plazo el chat volvía a fallar para siempre. Ya funciona en cuanto expira.
Cambios detallados3 · 1
Administración
3
El tab de Análisis de Documentos indica el motor de extracción activo y si cuesta dinero (Tika y pdf2json 0 €; la visión de OpenAI solo entra si el texto sale ilegible), más el estado real de la cola, Tika y cuántos archivos necesitaron visión de pago.
Nueva entrada "Análisis de archivos" en el tarifario de coste por herramienta (nace en 0 créditos: visible y configurable, sin cobrar).
Un administrador ya no puede suspenderse a sí mismo ni quitarse el rol (antes se quedaba fuera del panel sin forma de volver), y no se admiten fechas de suspensión en el pasado.
El móvil va mucho más fluido y el mantenimiento avisa de verdad
29 de julio de 2026
Hemos quitado del móvil los efectos de cristal y los fondos animados que lo hacían ir lento: la pantalla de inicio carga antes y el menú de modelos se cierra al instante. Además, el modo mantenimiento ahora avisa antes de empezar, te escribe cuando volvemos y ya no genera falsas alarmas de caída.
Lo destacado
8
✨ Nuevo1
Si programamos un mantenimiento, recibes un aviso antes de que empiece y otro cuando volvemos (por notificación, Telegram o correo si lo pediste).
💎 Mejorado3
La app va bastante más fluida en el móvil: quitamos fondos animados y efectos de cristal que obligaban al teléfono a repintar la pantalla continuamente (en el ordenador se ven igual que siempre).
En los minutos previos a una parada programada dejamos de aceptar mensajes nuevos para que los que están en marcha terminen enteros.
El aviso de «volvemos en X minutos» ahora se ve en toda la app, no solo en el chat.
🐛 Arreglado4
La pantalla de inicio ya no tarda en aparecer en el móvil: el fondo de colores pasa a ser un degradado ligero en vez de tres manchas desenfocadas en movimiento.
El menú de modelos en el móvil se cierra al instante al elegir un modelo (antes se quedaba un momento bloqueado).
Un mantenimiento planificado ya no se confunde con una caída: se acabaron los avisos falsos de «servicio caído».
La página de mantenimiento muestra el estado REAL de los sistemas (antes eran datos de ejemplo).
Cambios detallados3 · 1
Administración
3
El panel de mantenimiento muestra el estado efectivo y avisa de qué herramientas o secciones están capadas ahora mismo, aunque el interruptor general esté apagado.
Nueva lista de acceso: puedes dejar entrar a usuarios o IPs concretos durante un mantenimiento (para pruebas o para un cliente).
La página de rescate /garmantenimiento incorpora "APAGAR TODO" y presets rápidos (deploy 15 min, migración 1 h, incidencia).
En el móvil, el menú lateral se cerraba de golpe (aparecía y desaparecía sin transición y a veces con un tirón). Ahora se desliza para cerrarse de forma suave y rápida, tanto al tocar fuera como al deslizarlo con el dedo.
Lo destacado
1
🐛 Arreglado1
En el móvil, el menú lateral ya no se cierra de golpe: se desliza para cerrarse con una animación suave y rápida (al tocar fuera o al deslizar).
Arreglo del menú de chats, tu plan en la barra lateral y quién está detrás
29 de julio de 2026
Arreglamos el menú de tres puntos de los chats, que se quedaba escondido a la derecha. Ahora tu plan de suscripción aparece junto a «GarBotGPT» en la barra lateral, como en otras apps. Y la página «Sobre nosotros» estrena una sección personal de quién hay detrás del proyecto.
Lo destacado
3
✨ Nuevo2
Tu plan (Free, Pro o Max) se muestra junto a «GarBotGPT» arriba en la barra lateral, con un toque de color.
La página «Sobre nosotros» incluye ahora una sección de quién está detrás de GarBotGPT, con foto y presentación.
🐛 Arreglado1
El menú de tres puntos (⋯) de cada chat en la barra lateral ya no se queda escondido detrás del área de conversación: vuelve a abrirse por encima.
Bloques de escritura, modelos por plan en canales y composer con más marca
29 de julio de 2026
Los textos largos y documentos (correos, informes, guiones, plantillas…) ahora se muestran en una tarjeta de documento que puedes editar, copiar, descargar y ampliar. En los canales, al escribir «@» los modelos que no incluye tu plan salen bloqueados. Y el cuadro de escribir y el menú de tu perfil estrenan detalles: botón de enviar con el color de la marca, cristal en modo oscuro y menú más claro.
Lo destacado
5
✨ Nuevo1
Los documentos largos (correos, informes, guiones, plantillas, artículos…) aparecen en una tarjeta aparte con editar, copiar, descargar (.txt/.md) y ampliar a pantalla completa.
💎 Mejorado3
El botón de enviar luce el degradado violeta→fucsia de la marca (antes negro/azul) y los iconos del cuadro de escribir se resaltan al pasar por encima.
El cuadro de escribir recupera el efecto cristal y por fin se ve bien en modo oscuro.
El menú de tu perfil: «Cerrar sesión» con su icono, tu plan con color (o «Free»), iconos en tarjetas de color, más ancho y separadores visibles.
🐛 Arreglado1
En canales, al mencionar un modelo con «@» ahora se ven bloqueados los que no incluye tu plan (con candado y acceso a mejorar de plan), como en el chat.
Fondo de aurora en la bienvenida y barra lateral más limpia
29 de julio de 2026
La pantalla de bienvenida estrena un fondo de aurora sutil (los mismos orbes de color difuminados de la página de Aplicaciones) que le da profundidad sin distraer. Y ajustamos la barra lateral: los reflejos de color ya no emborronan la zona del botón «Nuevo chat».
Lo destacado
2
💎 Mejorado1
La pantalla de bienvenida tiene un fondo de aurora suave (orbes de color muy difuminados) que le da profundidad, a juego con la página de Aplicaciones.
🐛 Arreglado1
En la barra lateral, el reflejo de color ya no emborrona la parte de arriba: la cabecera y el botón «Nuevo chat» se ven limpios.
Repasamos la pantalla de bienvenida y la barra lateral para que se vean más cuidadas: el saludo y tu nombre destacan, las tarjetas cobran vida al pasar por encima y la barra lateral gana acentos de color (chat activo, carpetas, grupos) y una barra de desplazamiento que ahora sí se ve.
Lo destacado
5
💎 Mejorado4
La pantalla de bienvenida saluda con más carácter: tu nombre en degradado, logo con brillo y tarjetas que se elevan al pasar el ratón.
El chat que estás viendo se marca con una barra de color y un fondo tenue, para localizarlo de un vistazo.
El botón «Nuevo chat» ahora es un botón de color (degradado violeta), a juego con el resto de la app.
Las carpetas muestran su color en el icono y los títulos de sección («Fijados», fechas) llevan color y una línea sutil.
🐛 Arreglado1
La barra de desplazamiento de la barra lateral vuelve a verse en modo claro (antes era casi invisible).
Confirmación al contactar + logos y tarjetas de Aplicaciones
29 de julio de 2026
Ahora, cuando escribes por el formulario de contacto, recibes al momento un correo de confirmación (lo hemos recibido y te responderemos pronto). Además, en Aplicaciones los logos de Google y Slack ya salen en color de verdad y las tarjetas son más translúcidas.
Lo destacado
2
✨ Nuevo1
Al enviar el formulario de contacto recibes un correo de confirmación al instante («hemos recibido tu mensaje, te responderemos lo antes posible»).
💎 Mejorado1
En Aplicaciones, los logos de Google y Slack se ven en sus colores reales y las tarjetas de cristal son más translúcidas.
El nivel de razonamiento ahora es una barra deslizante
29 de julio de 2026
El selector de nivel de razonamiento de cada modelo pasa de botones a una barra deslizante estilo ChatGPT: arrastra para elegir de Auto a Extra. Los niveles que no incluye tu plan siguen bloqueados (marcados y con acceso a mejorar de plan).
Lo destacado
1
💎 Mejorado1
El nivel de razonamiento se elige con una barra deslizante (arrastra de Auto a Extra) en vez de botones.
La página de Integraciones (Aplicaciones) estrena look: una cabecera con degradado vivo, tarjetas más grandes de cristal (liquid glass) que dejan ver el color de fondo, y categorías de colores. Misma funcionalidad de siempre (conectar, desconectar, buscar), mucho más vistosa.
Lo destacado
1
💎 Mejorado1
La página de Aplicaciones (Integraciones) tiene un diseño nuevo, colorido y con tarjetas de cristal más grandes.
Ajustes de consumo y rendimiento en documentos de red
28 de julio de 2026
Correcciones de fondo: el consumo de una respuesta que paras a medias ya se contabiliza (antes, en algunos casos, no se registraba), y preguntar varias veces sobre el mismo documento de una unidad de red es más rápido y barato porque ya no se vuelve a procesar cada vez.
Lo destacado
2
💎 Mejorado1
Preguntar repetidamente sobre el mismo documento de una unidad de red es más rápido: se reutiliza el análisis en lugar de rehacerlo en cada pregunta.
🐛 Arreglado1
El consumo de una respuesta que detienes a mitad se contabiliza correctamente (antes podía no quedar registrado).
La indexación de documentos se recupera sola si se interrumpe
28 de julio de 2026
Si el procesado de un documento se cortaba a la mitad (por un reinicio del servidor o una actualización), el archivo se quedaba «a medias» y no se volvía a intentar. Ahora el sistema detecta esos casos y los reintenta solo, así ningún documento se queda sin indexar.
Lo destacado
1
🐛 Arreglado1
Si el procesado de un documento se interrumpe (reinicio o actualización del servidor), se reintenta automáticamente en lugar de quedarse a medias.
Cuando una respuesta mezcla tus documentos y la búsqueda web, las citas [N] de las fuentes web ya enlazan a la fuente correcta (antes podían apuntar a otra). Y el medidor de uso de tokens del cuadro de escribir ya cuenta el contexto real que se envía, no una parte, así que la estimación de créditos deja de quedarse corta.
Lo destacado
2
🐛 Arreglado2
Citas de fuentes web: en respuestas que combinan tus documentos y la web, el enlace [N] ya apunta a la fuente correcta (antes podía llevar a otra).
El medidor de tokens cuenta ahora el contexto que de verdad se envía (antes solo los últimos mensajes), así que el «X / ventana» y la estimación de créditos son más fieles.
Muchos archivos subidos se quedaban sin procesar y la IA no podía «leerlos» al preguntar por ellos. Ahora hay un reconciliador que recoge cualquier documento pendiente y lo indexa, y volver a subir un documento que no se había indexado ya lo pone en cola. Los que estaban a medias se irán completando solos.
Lo destacado
2
🐛 Arreglado2
Los documentos que subes y se quedaban sin procesar ahora se indexan solos: la IA puede responder sobre ellos y citarlos (antes muchos quedaban invisibles para las preguntas).
Volver a subir un documento que no se había indexado ya lo encola para procesarlo (antes se marcaba como duplicado y seguía sin leerse).
Correcciones de fondo en el chat, la búsqueda web y el cobro
28 de julio de 2026
Una tanda de arreglos de correctitud, privacidad y facturación tras una auditoría del sistema de IA: se corrige que un fallo del modelo cobrara y mostrara el modelo caro en vez de la reserva, una fuga entre usuarios en la búsqueda web, respuestas fallidas contadas como correctas, y bloqueos de plan que se saltaban.
Lo destacado
6
💎 Mejorado1
Si la conversación supera la ventana del modelo, se avisa claramente para compactarla en vez de cambiar de modelo a escondidas.
🐛 Arreglado3
Si un modelo falla y responde la reserva, ahora se muestra y se cobra la reserva (antes se veía y se cobraba el modelo caro que había fallado).
Una respuesta cortada por un error del proveedor a mitad ya no se guarda como «completada»: se marca como error y puedes continuarla.
Los modelos y la búsqueda web que tu plan tiene bloqueados ya no se cuelan por el modo Automático ni por detección de intención.
🔒 Seguridad2
La búsqueda web ya no puede mezclar el resumen o el mapa de un usuario con los de otro cuando hay varias búsquedas a la vez.
Al leer una URL que pegas, se bloquea que una redirección apunte a direcciones internas de la red.
Los documentos largos ya se leen enteros (no a medias)
28 de julio de 2026
Al analizar documentos escaneados por visión (nóminas, facturas, PDFs de varias páginas), la transcripción podía cortarse a la mitad sin avisar y se guardaba como si fuera el documento completo. Ahora se procesa por tramos y se comprueba que no se corte; lo que no cabe se marca en vez de darse por completo.
Lo destacado
1
🐛 Arreglado1
Los documentos escaneados de varias páginas se transcriben completos: antes la lectura por visión se cortaba a la mitad en documentos largos y se indexaba incompleta sin avisar.
Los modelos ocultos ya no aparecen en el menú (admin)
28 de julio de 2026
Si ocultabas un modelo desde el panel de administración, seguía saliendo en el menú de selección de modelos (a ti, como admin). Corregido: los modelos ocultos solo se ven ahora en el modo edición del menú (atenuados, para poder reactivarlos), no en el menú normal.
Lo destacado
1
🐛 Arreglado1
Un modelo que ocultas en administración ya no aparece en el selector de modelos (antes te seguía saliendo a ti como admin). Solo se ve en el modo edición del menú, para poder reactivarlo.
Selector de modelo del composer, junto a “mejorar prompt”
28 de julio de 2026
El selector de modelo del cuadro de escribir (PC) pasa a la fila de acciones de la derecha, justo al lado del botón de mejorar prompt, en la misma línea (ya no en una fila aparte debajo).
Lo destacado
1
💎 Mejorado1
El selector de modelo del cuadro de escribir está ahora en la misma fila que los controles de la derecha, junto al botón de mejorar prompt.
Selector de modelo del composer: a la derecha y con TODO
28 de julio de 2026
El selector de modelo del cuadro de escribir (PC) pasa a la esquina inferior derecha, y ya incluye absolutamente todo lo del selector de la cabecera: el nivel de razonamiento por modelo y, para admin, el editor en el propio menú (arrastrar para reordenar, ocultar y fijar plan/tope por modelo).
Lo destacado
3
✨ Nuevo2
Eliges el nivel de razonamiento de cada modelo desde el propio selector del composer.
Admin: reordena (arrastrando), oculta y fija plan/tope diario de cada modelo sin salir del menú del composer.
💎 Mejorado1
El selector de modelo del cuadro de escribir se coloca ahora abajo a la derecha.
Selector de modelo del composer: dentro de la caja y completo
28 de julio de 2026
El selector de modelo del cuadro de escribir (PC) ahora vive DENTRO de la caja, abajo a la izquierda como en ChatGPT (antes se salía debajo, descolocado). Y trae ya todas las opciones del de la cabecera: modelos agrupados por proveedor, buscador, modo Automático, candados por plan y tu límite diario por modelo.
Lo destacado
3
💎 Mejorado2
Ahora incluye todo lo del selector de la cabecera: modelos agrupados por proveedor, buscador y modo Automático.
Ves el candado y el plan necesario de los modelos superiores, y cuántos mensajes te quedan hoy con cada modelo.
🐛 Arreglado1
El selector de modelo del cuadro de escribir ya no se sale debajo: queda dentro de la caja, abajo a la izquierda, como en ChatGPT.
Elige el modelo desde la propia caja de escribir (PC)
28 de julio de 2026
En el ordenador ya puedes cambiar de modelo sin subir a la cabecera: junto al «+» del cuadro de escritura aparece el modelo actual y, al pulsarlo, se abre la lista (con buscador y el modo Automático) igual que en ChatGPT. Sigue estando también arriba; ambos van sincronizados.
Lo destacado
3
✨ Nuevo2
Selector de modelo dentro del cuadro de escritura (en el PC): pulsa el nombre del modelo, junto al «+», y elige otro al instante.
Incluye el modo Automático y un buscador; los modelos de planes superiores se ven con su candado y el plan necesario.
💎 Mejorado1
El selector nuevo y el de la cabecera comparten el mismo estado: cambies donde cambies, siempre coinciden.
La página de estado marcaba la app como «rendimiento degradado» por un falso positivo del propio chequeo, y mezclaba idiomas (títulos en tu idioma pero los nombres de los servicios y el estado global en español). Las dos cosas arregladas.
Lo destacado
2
🐛 Arreglado2
La app web ya no aparece como «rendimiento degradado» por el retardo del propio chequeo interno; el umbral se ajusta a lo que de verdad experimentas.
La página de estado sale entera en tu idioma: el estado global y los nombres de los servicios ya no quedan en español cuando usas otro idioma.
AdSense también en la web y menú «/» arreglado en el móvil
23 de julio de 2026
El comando /adsense ya está también en el chat de la web, no solo en Telegram. Y el menú de comandos «/» en el móvil ya no se corta ni se solapa: las descripciones se leen enteras y la cabecera queda limpia.
Lo destacado
2
✨ Nuevo1
Escribe /adsense en el chat de la web para ver tus ingresos de AdSense (hoy, ayer y mes).
🐛 Arreglado1
En el móvil, el menú de comandos «/» ya no corta las descripciones a media palabra ni solapa la cabecera con las pistas de teclado.
Escribe /adsense en el bot de Telegram y te devuelve tus ingresos de AdSense de hoy, ayer y lo que llevas de mes, al momento. Los avisos automáticos de AdSense por Telegram ya existían; esto añade poder consultarlo cuando quieras.
Lo destacado
1
✨ Nuevo1
Nuevo comando /adsense en Telegram: ingresos de hoy, ayer y del mes, más el RPM, sin abrir la app.
Telegram: tu modelo, chat en grupos, avisos y compartir
23 de julio de 2026
Telegram ahora usa el mismo modelo de IA que tienes en la app (y lo cambias con /modelo), funciona en grupos cuando lo mencionas, te lleva al móvil los avisos de la app (menciones, mensajes, cuenta) y puedes enviarte cosas de la app a tu Telegram.
Lo destacado
4
✨ Nuevo4
Telegram usa el modelo de IA que tengas elegido en la app; se cambia con /modelo (respeta tu plan).
Chat en grupos: mete el bot en un grupo y menciónalo (@GarBotGPT_bot) o responde a un mensaje suyo. Cobra a quien pregunta y no toca la memoria de nadie.
Los avisos de la app (te mencionan en un canal, te escriben, cosas de tu cuenta) te llegan también por Telegram. Se activa o desactiva con /avisos.
Nueva forma de enviarte a tu Telegram algo de la app de un toque.
Modelos bloqueados en el menú «@» y el mantenimiento sale al momento
23 de julio de 2026
En el menú de «@», los modelos que tu plan no incluye ahora salen en gris con un candado y llevan a los planes, igual que en el menú de modelos. Y cuando marcas una herramienta en mantenimiento, ya aparece cerrada en segundos sin tener que recargar la página.
Lo destacado
2
💎 Mejorado1
En el menú «@», los modelos que no están en tu plan salen en gris con candado y te llevan a los planes en vez de no hacer nada.
🐛 Arreglado1
Marcar una herramienta en mantenimiento ahora se refleja en segundos, sin recargar la página (antes tardaba más de un minuto).
Al mencionar un modelo de IA dentro de un canal, ahora se aplican los mismos límites por plan que en el chat normal. Si mencionas un modelo que tu plan no incluye, te lo dice con claridad en vez de responderte igualmente.
Lo destacado
1
🐛 Arreglado1
Mencionar un modelo de IA en un canal respeta los límites por plan, igual que el chat: si no está en tu plan, se te avisa en vez de servírtelo.
Canales: avisos, preguntar al hilo, invitar por enlace y moderar
23 de julio de 2026
Los canales ahora te avisan cuando te mencionan o te escriben por privado, aunque tengas la app cerrada. Puedes preguntarle a la IA sobre todo lo hablado en un canal, invitar a canales privados con un enlace, y los administradores pueden expulsar miembros.
Lo destacado
4
✨ Nuevo4
Avisos (con la app cerrada incluida) cuando te mencionan en un canal o te mandan un mensaje directo. Respeta los canales silenciados.
Escribe «/preguntar ¿…?» en un canal y la IA te responde usando todo lo que se ha hablado, no solo lo último.
Invita a un canal privado con un enlace de un solo clic, con caducidad y usos configurables.
Los administradores de un canal ya pueden expulsar a un miembro, y cualquiera puede salirse de un canal.
Sitios cercanos de verdad, y la ubicación de Telegram arreglada
22 de julio de 2026
Los lugares cercanos ahora se ordenan por lo que tardas andando por la calle, no por la línea recta: el bar al otro lado del río deja de salir el primero. Y compartir tu ubicación por Telegram ya actualiza también la ciudad, en vez de dejar la anterior.
Lo destacado
4
✨ Nuevo2
Puedes compartir tu ubicación EN VIVO por Telegram y el asistente te sigue mientras te mueves.
Los sitios cercanos indican los metros y los minutos andando, y se ordenan por cercanía real por la calle.
💎 Mejorado1
Al buscar tu ciudad se envían menos decimales de tu posición al servicio de mapas.
🐛 Arreglado1
Compartir la ubicación por Telegram ya actualiza la ciudad: antes te decía que seguías en la ciudad anterior mientras buscaba en la nueva.
La tarjeta de música era una pieza enorme y siempre oscura que desentonaba con el resto del chat. Ahora es compacta, se adapta al tema que tengas puesto, se ve bien en claro y en oscuro, y en el móvil por fin caben el título entero y la barra de progreso.
Lo destacado
4
💎 Mejorado3
Tarjeta de música nueva: más pequeña y con el mismo aspecto que el resto de tarjetas del chat.
Se adapta al tema y al modo oscuro, en vez de ser siempre negra.
La lista de pistas marca la que suena y deja buscar por título o artista.
🐛 Arreglado1
En el móvil ya no se corta el título ni desaparece la barra de progreso; los botones tienen tamaño para el dedo.
El modo mantenimiento ahora sí cierra lo que marcas
22 de julio de 2026
Marcar una herramienta como «en mantenimiento» no hacía nada si el interruptor general estaba apagado, y la página de Aplicaciones no se cerraba nunca porque el mantenimiento apuntaba a una dirección antigua. Ahora lo que marcas queda cerrado de verdad, y quien lo configura también lo ve cerrado.
Lo destacado
4
✨ Nuevo1
Logros y Carpetas se pueden poner en mantenimiento por separado.
🐛 Arreglado3
Marcar una herramienta en mantenimiento ya la desactiva, sin tener que encender además el mantenimiento general.
La página de Aplicaciones ya se cierra al ponerla en mantenimiento: se controlaba una dirección que ya no se usaba.
Los administradores también ven cerradas las secciones y herramientas que marcan, en vez de que les funcionara todo y pareciera roto.
Al abrir un archivo adjunto ahora hay dos pestañas: «Previsualización», que enseña el archivo tal cual, y «Contenido», que enseña el texto que la IA ha extraído de verdad. Si alguna respuesta sobre un PDF te chirría, ahí ves al instante si el problema es que el documento se leyó mal.
Lo destacado
4
✨ Nuevo2
Nueva pestaña «Contenido» en el visor de archivos con el texto extraído del documento.
Arriba te dice el tamaño y cuántas líneas se extrajeron, y avisa de que el formato puede no coincidir con el original.
💎 Mejorado2
Los documentos largos se muestran recortados con un «Mostrar todo» que indica el total de caracteres.
Si el archivo aún se está procesando o no se pudo leer, te lo dice en claro en vez de dejar el panel vacío.
Adjunta un PDF y pídele las imágenes: saca las fotos y las gráficas que hay dentro del documento, te las enseña una a una en el chat para que las amplíes o las guardes, y si se lo pides te las analiza.
Lo destacado
5
✨ Nuevo2
Pide «sácame las imágenes de este PDF» y te muestra las fotos y gráficas incrustadas, con la página de la que sale cada una.
Si además pides que las analice, la IA las mira y te cuenta qué muestra cada una.
💎 Mejorado3
No te repite el mismo logo veinte veces ni te llena el chat de iconos: descarta los adornos y las imágenes repetidas.
Nueva herramienta «Imágenes de un PDF» en el menú, con su límite por plan configurable.
Las imágenes que saca de tus documentos quedan tan privadas como el documento: solo se ven con tu sesión iniciada.
Cuando elegías GarBotGPT-5.6-Sol, respondía otro modelo
22 de julio de 2026
Al activar las herramientas automáticas, cada mensaje de Sol era rechazado por el proveedor y lo contestaba en su lugar un modelo de reserva mucho más simple, mientras la pantalla seguía diciendo «Sol». De ahí las respuestas cortas, genéricas y que se saltaban tus indicaciones. Arreglado: ahora siempre responde el modelo que has elegido. También la búsqueda web que se ejecutaba dos veces y los logros que no se guardaban.
Lo destacado
8
🐛 Arreglado8
El modelo que eliges es el que responde: si el proveedor rechaza una función opcional, se renuncia a la función, nunca al modelo.
Sol vuelve a dar respuestas largas y con formato: recupera el ajuste de detalle que perdía al activar las herramientas automáticas.
La búsqueda web ya no se ejecuta dos veces en la misma pregunta: se acabaron los 15 segundos de más y las fuentes duplicadas.
Cuando la IA busca en internet, vuelve a citar las fuentes con [1] y a montar tablas comparativas.
Si una herramienta no está disponible, la respuesta ya no se convierte en una disculpa: te contesta igual y lo menciona en una línea.
Pegar un enlace para que lo analice ya no responde «no he encontrado resultados» con la página ya leída.
Pedir que recuerde u olvide algo ya no se confirma dos veces ni se contradice.
Tus logros vuelven a guardarse: no se había desbloqueado ni uno desde que existe la página, y los de Spotify ni siquiera aparecían.
Con algunos modelos, al adjuntar un PDF la respuesta era «por favor, sube el archivo» aunque el documento ya estaba leído. Arreglado. Y en administración puedes elegir cómo se extrae el texto de tus documentos: solo en tu servidor, solo con IA, o combinando ambos.
Lo destacado
3
✨ Nuevo1
Nuevo selector en Análisis de documentos con cuatro formas de extraer el texto, indicando en cada una su coste y si el documento sale o no de tu servidor.
🐛 Arreglado2
Adjuntar un documento y preguntar ya no devuelve «sube el archivo» con los modelos que deciden por su cuenta qué herramientas usar.
Guardar la configuración de análisis de documentos ya no falla en silencio perdiendo el resto de ajustes.
Si preguntas nada más subir un documento, ya no te contesta que no lo ve
22 de julio de 2026
Al adjuntar un archivo y preguntar de inmediato, a veces respondía que necesitaba que lo subieras: la pregunta salía antes de que el documento terminara de procesarse. Ahora espera a que esté listo, y si tarda demasiado te lo dice en claro sin cobrarte.
Lo destacado
3
💎 Mejorado1
El archivo muestra que se está procesando mientras se prepara, para que sepas cuándo puedes preguntar.
🐛 Arreglado2
Preguntar justo después de adjuntar un documento ya no da la respuesta de «necesito que subas el archivo».
Si el documento tarda más de la cuenta, te avisa de que aún se está procesando y no se te descuentan créditos.
La búsqueda en internet puede rastrear más a fondo
22 de julio de 2026
Los topes de la búsqueda web estaban agotados y no se podían subir. Ahora se puede pedir que abra más páginas a fondo y que lance más consultas por pregunta, para respuestas mejor documentadas.
Lo destacado
1
💎 Mejorado1
La búsqueda en internet admite ahora hasta 12 páginas leídas a fondo y 12 consultas por pregunta, frente a las 6 y 8 de antes.
Los documentos escaneados vuelven a leerse, y Spotify cabe en el móvil
22 de julio de 2026
Los PDFs escaneados y las imágenes con texto se leían mal o directamente se perdían sin avisar, según por dónde entraran. Ya se leen correctamente. Y la página de Spotify deja de salirse de la pantalla en el móvil.
Lo destacado
2
🐛 Arreglado2
Los PDFs escaneados y las imágenes con texto vuelven a leerse, también los que llegan por Telegram o desde unidades de red.
La página de Spotify ya no se sale de la pantalla en el móvil: sus tablas y gráficas se adaptan al ancho.
Un asesor que propone los límites de cada plan mirando tus números
22 de julio de 2026
En administración hay un botón nuevo que analiza lo que cuesta cada modelo y herramienta, lo que se usa de verdad y lo que paga cada plan, y propone unos límites razonados. Tú decides si los aplicas: nada se guarda solo.
Lo destacado
2
✨ Nuevo2
Nuevo asesor en Límites por plan: propone topes por plan razonando coste, uso real y margen, con el detalle de por qué.
La propuesta se puede volcar al formulario y deshacer antes de guardar: no se aplica nada sin que lo confirmes.
La barra de acciones de cada mensaje tenía demasiados iconos. Se han quitado tres que casi nadie usaba desde ahí: recordatorio, compartir como imagen y añadir al calendario. Las tres cosas se siguen pudiendo hacer pidiéndoselas a la IA.
Lo destacado
1
💎 Mejorado1
La barra de acciones de los mensajes queda más limpia: fuera «recuérdame esto», «compartir como imagen» y «añadir a calendario», en ordenador y en móvil.
Administración avisa cuando dos ajustes de plan se contradicen
22 de julio de 2026
El plan mínimo de un modelo y los bloqueos por plan se configuran en sitios distintos y podían chocar sin que nadie lo viera: elegías un modelo y luego no se usaba. Ahora el panel lo detecta, lo explica y deja resolverlo.
Lo destacado
2
✨ Nuevo1
Administración señala los choques entre el plan mínimo de un modelo y los bloqueos por plan, y permite limpiar los bloqueos que no hacen nada.
🐛 Arreglado1
Al elegir el modelo de análisis de imagen de un plan, ahora se avisa si ese modelo está bloqueado para ese plan y no se llegaría a usar.
La tabla de planes ahora dice la verdad, y se actualiza sola
22 de julio de 2026
La comparativa de precios mostraba datos que no coincidían con lo que aplica la app: modelos marcados como no disponibles que sí lo estaban, límites publicados como «sin límite» que sí existían y funciones anunciadas que no toca tu plan. Ahora todo sale de la configuración real y se refresca al recargar.
Lo destacado
3
💎 Mejorado1
Al cambiar un límite, la página de precios lo muestra al recargar en vez de tardar minutos en enterarse.
🐛 Arreglado2
La tabla comparativa de planes ya refleja los límites reales: se acabaron los «sin límite» y los «—» que no coincidían con la app.
Las ventajas de cada plan se calculan de tu configuración: si una función no entra en el plan, ya no aparece anunciada.
Cuando la IA consulta internet aparece un panel de actividad: qué está buscando, cuántas páginas ha leído y de qué sitios, con sus iconos. Antes todo ese trabajo ocurría a oscuras y solo veías «pensando».
Lo destacado
2
✨ Nuevo2
Nuevo panel de actividad al buscar en internet: las consultas que lanza, las páginas que abre y los sitios consultados con su icono.
El panel se queda guardado en la conversación, así que al volver a abrirla puedes ver de dónde salió cada respuesta.
El modelo que analiza tus imágenes ya se puede elegir por plan
22 de julio de 2026
Hasta ahora todas las cuentas analizaban las imágenes con el mismo modelo. Desde administración se puede asignar uno distinto a cada plan, en una pestaña nueva dentro de Modelos.
Lo destacado
1
✨ Nuevo1
Nueva pestaña «Análisis de imagen» dentro de Modelos, para elegir qué modelo analiza las imágenes en cada plan.
Los podcasts ya tienen límites por plan, configurables desde administración
22 de julio de 2026
La duración, el número de episodios al mes y las voces del podcast pasan a depender de tu plan, y se pueden ajustar desde el panel sin tocar código. Antes estaba fijado en el programa y solo se podía cambiar publicando una versión nueva.
Lo destacado
2
✨ Nuevo2
El podcast ahora tiene límites por plan: duración máxima, episodios al mes y número de voces.
Nueva sección en administración, dentro de Podcasts, para editar esos límites por plan igual que en Monetización.
Arreglado el editor rápido de modelos: marcar disponible ya funciona
21 de julio de 2026
Desde el menú de modelos se podía marcar un modelo como disponible o bloqueado, pero al pulsar se cerraba el menú y el cambio no llegaba a guardarse. Ya funciona, y el cambio se queda fijado en vez de volver atrás solo.
Lo destacado
2
🐛 Arreglado2
En el menú de modelos, marcar un modelo como disponible o bloqueado ya funciona en lugar de cerrar el menú sin guardar.
El cambio ya no vuelve al estado anterior unos segundos después de guardarlo.
Llegan dos temas con personalidad opuesta. Terminal convierte el chat en una consola: negro, verde fósforo, letra monoespaciada y cursor de bloque. Papel es el primer tema claro, con fondo hueso, titulares en serif y ni una sola sombra.
Lo destacado
2
✨ Nuevo2
Tema Terminal: fondo negro, verde fósforo, tipografía monoespaciada y un cursor de bloque parpadeante en el escritorio.
Tema Papel: el primero claro, con fondo hueso, textura sutil, titulares en serif y la jerarquía puesta en la tipografía y no en sombras.
El tema de Navidad estrena ilustraciones propias, y los temas se ven antes de aplicarlos
21 de julio de 2026
La bienvenida navideña deja los emojis sueltos por una escena dibujada a medida, las luces pasan a ser bombillas de verdad con su filamento y las estrellas brillan en lugar de parpadear. Además, cada tema muestra ahora una miniatura real de cómo quedará la app.
Lo destacado
4
💎 Mejorado4
La bienvenida de Navidad estrena una ilustración propia con abetos, en vez de tres emojis que además se veían distintos en cada dispositivo.
Las luces del borde son ahora bombillas con casquillo y filamento, y parpadean de forma irregular en lugar de todas a la vez.
Las estrellas y destellos brillan con luz propia, cada uno a su ritmo, en lugar de ser un emoji que se hinchaba.
Al elegir tema ves una miniatura de la app real con sus colores, no dos rectángulos de color: y ahora los colores coinciden con el tema.
El reno del tema de Navidad ya galopa con las patas en el suelo
21 de julio de 2026
En el tema de Navidad, el reno que cruza la pantalla tenía las cuatro patas apuntando hacia arriba. Ya corre como debe, con las pezuñas por debajo del cuerpo.
Lo destacado
1
🐛 Arreglado1
El reno del tema de Navidad ya no lleva las patas hacia arriba: galopa con las cuatro patas hacia el suelo.
Crear la playlist de Redescubre ya no se queda en un error
21 de julio de 2026
El botón para crear la playlist con tus canciones olvidadas fallaba con un aviso en inglés que no explicaba nada. Ahora, si Spotify tiene un problema pasajero, se reintenta solo, y si aun así falla te lo decimos en claro.
Lo destacado
2
🐛 Arreglado2
Crear la playlist desde Redescubre ya no falla al primer intento: se reintenta cuando Spotify da un error temporal.
Las carátulas de Redescubre se cargan bien también con el nuevo funcionamiento de Spotify.
El Wrapped estrena portada, fotos reales y se adapta al período
21 de julio de 2026
La experiencia Wrapped mejora en tres frentes: una pantalla de bienvenida con botón para empezar, las fotos de tus artistas y carátulas ya aparecen de verdad, y ahora refleja el período o el día que tengas elegido, igual que el resumen.
Lo destacado
3
✨ Nuevo1
El Wrapped abre con una pantalla de bienvenida y un botón para arrancar la experiencia cuando quieras.
💎 Mejorado1
El Wrapped usa el período que tengas seleccionado (incluido un día concreto), no solo todo tu historial.
🐛 Arreglado1
Ya se ven las fotos reales de tus artistas y las carátulas, en lugar de recuadros con una letra.
En Spotify ya puedes elegir un día concreto en el calendario
21 de julio de 2026
El selector de período de Spotify estrena calendario de días: elige un mes y aparece su calendario para escoger un día exacto y ver qué escuchaste ese día. Se mantiene el «Mes entero» y el resto de atajos (Hoy, 7 días, año…).
Lo destacado
1
✨ Nuevo1
En Spotify, al abrir el selector de período y elegir un mes, ahora sale su calendario para escoger un día concreto.
Tu Wrapped a pantalla completa, con todos tus años
21 de julio de 2026
Estrena una experiencia tipo historias en la página de Spotify: pulsas «Mi Wrapped» y recorres tu año en diapositivas animadas con tus artistas, canciones, tu hora favorita y —lo que Spotify no te da— todos tus años de historia y tu tiempo total de escucha.
Lo destacado
2
✨ Nuevo2
Nuevo botón «Mi Wrapped» en Spotify: una experiencia a pantalla completa con tus artistas, canciones y hábitos en diapositivas.
Incluye lo que Spotify no te enseña: todos tus años de historial y tu tiempo total de escucha, además de mini-juegos para adivinar tu nº1.
Arreglada la página de Spotify al entrar por primera vez
21 de julio de 2026
Un usuario que abría la página de Spotify sin historial todavía sincronizado se encontraba con una pantalla en blanco que se recargaba sola. Ya carga correctamente y muestra el estado inicial mientras llegan tus datos.
Lo destacado
1
🐛 Arreglado1
La página de Spotify ya no se queda en blanco la primera vez que entras, cuando aún no hay datos de escucha.
Aplicaciones: menú de opciones arreglado y fondo con más vida
21 de julio de 2026
El menú de las tres opciones («···») de cada aplicación conectada volvía a mostrarse recortado; ya sale completo. Y la página estrena un fondo ambiental con luz de color en movimiento suave detrás de todo.
Lo destacado
2
💎 Mejorado1
Nuevo fondo de la página con una aurora de color en movimiento lento y la cabecera en cristal esmerilado.
🐛 Arreglado1
El menú «···» de una aplicación conectada ya no se ve cortado: se despliega entero con Reconectar y Desconectar.
La página de Aplicaciones da un salto visual: una cabecera con tu progreso de conexiones, tarjetas que cobran el color de cada servicio, y detalles con movimiento. Más clara y con mejor acabado, sin cambiar cómo conectas cada app.
Lo destacado
3
💎 Mejorado3
Nueva cabecera con un anillo que muestra cuántas apps tienes conectadas y los logos de las activas.
Cada tarjeta se tiñe con el color de su marca, con brillo al pasar por encima y un punto en vivo cuando está conectada.
Pestañas con indicador deslizante y contadores, buscador integrado y entrada de las tarjetas con animación.
Cuando te quedas sin créditos, el aviso se queda en el chat
21 de julio de 2026
Al agotar los créditos, además del aviso emergente ahora queda una tarjeta en la conversación con acceso directo a recargar o subir de plan. Así no se pierde si cierras el popup, y tu conversación se conserva.
Lo destacado
1
💎 Mejorado1
Sin créditos: una tarjeta clara se queda en el chat con botones para ver planes o tu suscripción, aunque cierres el aviso emergente.
La página de Aplicaciones, más clara y fácil de recorrer
21 de julio de 2026
Rediseñamos Aplicaciones con un formato tipo conectores: tus integraciones conectadas arriba, un buscador para encontrarlas al vuelo y el resto ordenadas por categoría, cada una con su botón para conectar. Las mismas integraciones de siempre, mejor presentadas.
Lo destacado
2
💎 Mejorado2
Aplicaciones estrena diseño: pestañas "Conectores" y "Habilitadas", buscador y tus integraciones agrupadas por categoría.
Ves de un vistazo lo que ya tienes conectado en una fila arriba, y conectas cualquier otra con un solo botón.
💬 Slack en el chat: consulta tus canales y mensajes
21 de julio de 2026
Nueva integración con Slack. Conecta tu espacio de trabajo y pregúntale a la IA por tus canales, mensajes recientes o busca conversaciones, sin salir del chat. Es de solo lectura: la IA puede leer Slack, nunca escribir ni publicar nada.
Lo destacado
2
✨ Nuevo2
Conecta Slack desde Aplicaciones y consulta canales, mensajes y búsquedas desde el chat.
Solo lectura: la IA lee tu Slack pero nunca publica ni modifica nada.
🔒 Los modelos de pago se ven bloqueados desde el primer momento
21 de julio de 2026
Tres mejoras alrededor de los planes: los modelos que no incluye tu plan ya no aparecen disponibles un instante antes de bloquearse; cuando un modelo o función pide un plan superior verás una tarjeta clara con acceso a los planes, que se queda en el chat; y desde el panel de administración se puede configurar qué niveles de razonamiento tiene cada plan.
Lo destacado
3
✨ Nuevo2
Al usar un modelo o función de otro plan, una tarjeta elegante en el chat te lleva a los planes, en vez de un aviso que se esfuma.
Nuevo control en Monetización: qué niveles de razonamiento permite cada plan y a qué equivale su modo automático.
💎 Mejorado1
Los modelos de pago aparecen bloqueados desde el primer instante, sin el parpadeo de "disponible y luego no".
🌤️ La tarjeta del tiempo, rediseñada de arriba abajo
21 de julio de 2026
La tarjeta de meteorología estrena una versión mucho más viva: iconos animados según el tiempo, la temperatura que sube contando, el fondo que cambia con el día y la noche, una brújula del viento, la trayectoria del sol, y detalle al tocar cada hora o cada día. Con más datos reales que antes.
Lo destacado
4
✨ Nuevo4
Iconos animados por estado del cielo: sol, nubes, lluvia, tormenta, nieve y noche.
Toca una hora o un día y se despliega el detalle: viento, humedad, sensación y lluvia.
Barra de temperatura con degradado y brújula que apunta a la dirección real del viento.
Se ve bien en móvil y respeta la opción de reducir el movimiento del sistema.
Al entrar por primera vez, un recorrido corto te va señalando las funciones principales del chat: dónde escribir, cómo elegir el modelo y dónde están las herramientas. Y cuando subes de plan, un nuevo recorrido te muestra solo lo que acabas de desbloquear.
Lo destacado
3
✨ Nuevo3
Recorrido guiado de bienvenida que señala las funciones reales de tu plan.
Al subir a Pro o Max, un tour te enseña únicamente lo nuevo que has desbloqueado.
Solo muestra lo que tu plan incluye de verdad, sin prometer funciones que no tienes.
Al preguntar por el tiempo se activaban a la vez la herramienta meteorológica y la búsqueda web, así que pagabas 20 créditos por un dato que la herramienta del tiempo ya daba mejor y más rápido. Ahora, si se usa la herramienta del tiempo, la búsqueda web no salta sola.
Lo destacado
3
✨ Nuevo3
Preguntar el tiempo cuesta 5 créditos en vez de 20.
La respuesta llega antes: se deja de hacer una búsqueda web innecesaria.
Si activas tú la búsqueda web a mano, se respeta como siempre.
Ya puedes preguntar qué tiempo hace o qué tiempo va a hacer y recibir una tarjeta con la temperatura, la sensación térmica, el viento y la previsión de los próximos días. Funciona escribiendo la ciudad o, si has compartido tu ubicación, preguntando simplemente qué tiempo hace aquí.
Lo destacado
4
✨ Nuevo4
Pregunta el tiempo de cualquier ciudad y recibe una tarjeta con la previsión de 7 días.
Si tienes la ubicación activada, basta con preguntar qué tiempo hace sin decir dónde.
Funciona aunque no actives la herramienta: se detecta por lo que escribes.
Cuesta 5 créditos, la tarifa más baja de las herramientas.
Dos integraciones nuevas. Ya puedes preguntarle a la IA qué tienes mañana, buscar un hueco libre o crear una cita en tu Google Calendar. Y consultar tus repositorios de GitHub: issues, pull requests y buscar código, sin salir de la conversación.
Lo destacado
4
✨ Nuevo4
Google Calendar en el chat: consulta tu agenda, busca huecos libres y crea citas.
GitHub en el chat: repositorios, issues, pull requests y búsqueda de código.
GitHub es de solo lectura: la IA puede leer tu código, nunca modificarlo.
Si ya tenías Google conectado, verás un aviso para reconectar y activar el calendario.
Cuando el proveedor de IA fallaba a mitad de una respuesta, la respuesta cortada se mostraba como si estuviera completa. Ahora se marca como interrumpida y aparece el botón de continuar. Además, las respuestas son más rápidas: hemos quitado instrucciones internas que se enviaban aunque no hicieran falta.
Lo destacado
4
✨ Nuevo4
Una respuesta interrumpida se ve como interrumpida, con su botón de continuar.
Las respuestas tardan menos: se dejan de enviar instrucciones que no venían al caso.
Corregido un texto interno mal codificado que empeoraba las respuestas sobre tus documentos.
Entrenar modelos, clonar voces y ejecutar agentes ya respetan tu plan y tus créditos.
Cuando pidas un cálculo o un análisis, la IA puede escribirte el código Python en un panel con un botón de Ejecutar. Se ejecuta en tu propio navegador —tus datos no salen de tu ordenador— y verás el resultado y las gráficas al momento.
Lo destacado
4
✨ Nuevo4
Los paneles de código Python traen un botón para ejecutarlos y ver el resultado.
Las gráficas que genere el código aparecen debajo, sin salir del chat.
Todo ocurre en tu navegador: el código y tus datos no se envían a ningún servidor.
La primera ejecución tarda unos segundos en preparar Python; las siguientes son inmediatas.
🔒 Ejecución de código en pausa mientras la reconstruimos
20 de julio de 2026
Hemos desactivado temporalmente la ejecución de código Python. El aislamiento con el que estaba montada no era suficiente y preferimos apagarla antes que dejarla a medias. Volverá ejecutándose en tu propio navegador, que es más rápido y no expone nada.
Lo destacado
2
✨ Nuevo1
El resto de herramientas de análisis (documentos, PDF, Excel, imágenes) siguen funcionando igual.
🔒 Seguridad1
La ejecución de código queda desactivada temporalmente por seguridad.
👤 Cada invitado vuelve a tener su propio cupo de mensajes
20 de julio de 2026
A veces el sistema confundía a todos los invitados con un único visitante, porque leía la dirección del servidor en vez de la de quien entraba. Cuando pasaba, el cupo diario se agotaba entre todos y quien llegaba después se quedaba sin poder probar el chat.
Lo destacado
2
✨ Nuevo2
Los mensajes gratuitos de invitado se cuentan por visitante, no en un cupo compartido.
Se mantiene la protección contra quien intente falsear su dirección para saltarse el límite.
👁️ La vista previa del buscador ahora se ve como el chat de verdad
20 de julio de 2026
Al buscar un chat, la vista previa dibujaba una versión simplificada que se dejaba fuera casi todo: imágenes generadas, podcasts, tests, infografías, código con colores, fórmulas, fuentes y mapas. Ahora usa el mismo componente que el chat real, así que se ve igual.
Lo destacado
2
✨ Nuevo2
La vista previa del buscador muestra el contenido igual que en el chat: tarjetas, código, fórmulas, fuentes y mapas.
Ahora enseña los últimos mensajes de la conversación en vez de los primeros, que es lo que buscas.
El menú de modelos permite ahora configurar CADA plan por separado: si el modelo está disponible en Free, Pro o Max, y con cuántos mensajes al día en cada uno. Antes solo se podía elegir un plan mínimo. También se ha corregido que el botón de ocultar no dejaba volver a mostrar el modelo.
Lo destacado
4
✨ Nuevo4
Cada modelo se configura plan a plan: disponible o no, y con qué tope diario en cada uno.
Los cambios se reflejan solos en la tabla de precios de la web, que lee de la misma configuración.
Corregido: ocultar un modelo desde el menú no permitía volver a mostrarlo.
Al guardar un límite, la pantalla se actualiza al momento en vez de esperar a recargar.
El menú de modelos estrena el mismo editor rápido que ya tenía el menú de herramientas: arrastrar para reordenar, un ojo para ocultar y elegir el plan mínimo, sin ir al panel de administración. Solo lo ven los administradores.
Lo destacado
4
✨ Nuevo4
Los administradores pueden reordenar los modelos arrastrándolos dentro del propio menú del chat.
Ocultar un modelo y volver a mostrarlo desde ahí mismo, sin perderlo de vista.
Cambiar el plan mínimo de cada modelo (Free, Pro o Max) con un toque.
Está en el chat de ordenador y también en el móvil.
🧠 Los niveles de razonamiento altos pasan a costar lo que cuestan
20 de julio de 2026
Pensar más tiempo antes de responder consume bastantes más recursos de los que reflejaba el precio. Medimos el uso real y subimos el recargo de los niveles Medio, Alto y Extra alto para que el coste se corresponda con lo que de verdad gasta cada nivel. Los niveles Mínimo y Bajo apenas cambian.
Lo destacado
3
✨ Nuevo3
El recargo por nivel de razonamiento sube: Medio, Alto y Extra alto pasan a costar más créditos.
Los niveles Mínimo y Bajo se quedan prácticamente igual, así que el uso normal no se encarece.
Puedes ver el nivel elegido y su coste antes de enviar, como siempre.
🎬 Manual completo de generación de vídeo con IA en el blog
20 de julio de 2026
Nuevo artículo largo en el blog sobre cómo generar vídeo con IA desde el chat: qué hace cada uno de los tres motores, cómo escribir el prompt para que salga a la primera, qué se le da mal a esta tecnología hoy y qué hacer cuando algo falla.
Lo destacado
3
✨ Nuevo3
Nuevo artículo en el blog: "Generar vídeo con IA: el manual completo" (45 minutos de lectura).
Explica cuándo usar cada motor: Sora 2 para escenas con sonido, Synthesia para un avatar que lee tu guion y Runway para planos cinemáticos.
Incluye recetario de prompts por caso de uso, limitaciones reales de la IA de vídeo, resolución de problemas y glosario.
🧾 Las tarjetas de plan ya no prometen lo que no hay
20 de julio de 2026
Las tres tarjetas de precios listaban cosas que no existen: modelos que no están en el catálogo, una "prioridad en la cola" que nunca se implementó y un límite de 25 documentos inventado. Además presentaban como exclusivo de Max algo que también tiene Pro. Todo revisado contra el código.
Lo destacado
4
✨ Nuevo4
Las tarjetas de Free, Pro y Max listan solo funciones que existen de verdad, con sus límites.
Free ahora dice sus 200 créditos al mes, no solo los 500 de bienvenida.
La sección "tus créditos en cosas reales" calculaba con la búsqueda web a 12 créditos: prometía un 25% más de búsquedas de las que salen.
Fuera los últimos emojis de la página: los packs de créditos ya usan iconos.
🔢 Los créditos se leen igual en toda la página de precios
20 de julio de 2026
En la comparativa de planes, Pro mostraba "5000 créditos" y Max "15.000 créditos". Ahora todas las cifras llevan el mismo separador de miles y se comparan de un vistazo.
Lo destacado
1
✨ Nuevo1
Las cifras de créditos se muestran con el mismo formato en toda la página de precios.
📊 La tabla de precios ahora dice la verdad (y los límites de cada plan)
20 de julio de 2026
La comparativa de planes de la web llevaba tiempo desfasada: decía que Free no tenía intérprete de código ni integraciones (sí los tiene) y que conectar tu base de datos era solo de Max (también es de Pro). Además no publicaba ningún límite de uso. Ahora la tabla se dibuja sola desde la configuración real, así que siempre coincide con lo que aplica la app.
Lo destacado
5
✨ Nuevo5
La comparativa de planes muestra el límite de uso de CADA función en Free, Pro y Max.
Los costes en créditos ya no están escritos a mano: la búsqueda web ponía 12 créditos y son 15.
Cada página tiene su propio nombre en la pestaña del navegador (antes casi todas ponían solo "GarBotGPT").
La sección de Google Play luce el badge oficial y una foto real de la app en el móvil.
En el menú, "Estudio" pasa a llamarse "Sobre nosotros".
Cambios detallados5 · 2
Precios
3
Comparativa reorganizada en bloques: créditos, modelos, día a día, funciones avanzadas y trabajo.
Cada modelo aparece con su nombre real y su tope diario de mensajes.
Los costes en créditos se ven como una escalera de barato a caro, sin emojis.
Seguridad
2
Corregido el apartado de cifrado: decía "end-to-end" cuando lo que hay es cifrado en tránsito y en reposo.
La tabla de estado añade lo que todavía NO hay: verificación en dos pasos y equipos.
El historial de la app seguía juntando en una sola ficha todas las versiones publicadas el mismo día. Ahora cada versión aparece por separado, con su número y sus cambios.
Lo destacado
1
✨ Nuevo1
Cada versión publicada se ve por separado en el historial de la app y en el feed RSS.
🛡️ Límites de uso en las funciones de IA más costosas
20 de julio de 2026
Entrenar un modelo, clonar una voz y ejecutar agentes no tenían ningún límite de uso. Ahora tienen un tope por usuario, holgado para el uso normal, que evita abusos.
Lo destacado
1
✨ Nuevo1
Entrenar modelos, clonar voces y ejecutar agentes tienen ahora un límite de uso por usuario.
📋 El historial de versiones vuelve a mostrarlas todas
20 de julio de 2026
Cuando se publicaban varias versiones el mismo día, el historial las juntaba en una sola ficha y las demás parecían haber desaparecido. Ahora cada versión se ve por separado, con su número y sus cambios.
Lo destacado
1
✨ Nuevo1
Cada versión publicada tiene su propia ficha en el historial, aunque salgan varias el mismo día.
🧠 El nivel de razonamiento que eliges ya se respeta siempre
20 de julio de 2026
Si elegías Alto o Extra en un modelo, la respuesta salía igualmente en Medio en varios casos. Ahora el nivel que fijas se aplica de verdad, escribas desde donde escribas.
Lo destacado
3
✨ Nuevo3
Al regenerar una respuesta o crear una variante ya se usa el nivel de razonamiento que tengas puesto.
También se respeta al empezar una conversación desde la pantalla de bienvenida o al preguntar sobre un archivo.
Al regenerar con otro modelo se usa el nivel de ese modelo, no el del anterior.
Se ha corregido un fallo por el que el chat podía perder avisos del servidor: por eso a veces decía que un documento había tardado demasiado cuando en realidad ya estaba listo. También se puede detener una respuesta que sigue generándose en segundo plano.
Lo destacado
3
✨ Nuevo3
Ya no se pierden avisos del servidor: el documento listo, los pasos de la búsqueda web o el detalle de "pensando" llegan siempre.
Detener funciona aunque hayas cerrado el chat y vuelvas más tarde desde otro dispositivo.
Si el servicio de IA se queda mudo a mitad de una respuesta, ahora se marca como cortada en vez de darla por terminada.
Auditoría del sistema de IA: se han corregido varios casos en los que el uso no se contabilizaba bien. También se ha arreglado el fondo blanco que aparecía al pasar el ratón con un tema activo.
Lo destacado
4
✨ Nuevo4
El asistente de Telegram ya contabiliza todos los mensajes, no solo el primero.
Regenerar o editar una respuesta vuelve a contabilizarse, también a partir de la segunda vez.
La lectura en voz alta tiene ahora un límite de uso, para evitar abusos.
Al pasar el ratón por el menú o la cabecera con un tema activo ya no aparece un fondo blanco que rompía el tema.
🎃 Halloween con arte de verdad + Navidad arreglada en el móvil
16 de julio de 2026
El tema de Halloween deja atrás los emojis: murciélagos, fantasmas, calabazas y arañas ahora son ilustraciones propias que se mueven e iluminan. Se ha quitado el velo blanco que se quedaba pegado tras cada relámpago, y el tema de Navidad ya se ve bien en el móvil.
Lo destacado
6
✨ Nuevo5
Adiós a los emojis: murciélagos que baten las alas, fantasmas que ondulan, calabazas con la vela latiendo por dentro y arañas, todo dibujado a mano.
La sangre del borde superior ya está viva: los regueros rezuman y las gotas se hinchan, se desprenden y caen.
El cementerio ya no tapa el cuadro de escribir.
Los temas ahora también tiñen la página de inicio pública, no solo el chat.
Navidad en el móvil: la bienvenida y el contador ya caben en la pantalla, y los adornos han dejado de taparte el botón del menú lateral.
🐛 Arreglado1
Arreglado el relámpago de Halloween: dejaba un velo blanco encima de toda la pantalla para siempre. Ahora destella cuando va a sonar el trueno y desaparece.
👁️ Ver el menú como lo ve cada plan + reordenar en el móvil
16 de julio de 2026
El menú de herramientas ya se puede reordenar arrastrando también desde el móvil. Y desde el editor se puede ver el menú tal y como lo ve un usuario Free, Pro o Max, para comprobar los bloqueos antes de publicarlos.
Lo destacado
3
✨ Nuevo3
Nuevo "Ver como Free / Pro / Max": pinta el menú exactamente como lo ve ese plan, con sus candados, sus topes diarios y sin las herramientas ocultas.
Mientras miras no se activa nada: es una vista, no toca la configuración.
En el móvil ya se pueden reordenar las herramientas arrastrándolas por el asa, igual que en el ordenador.
🔒 Ocultar una herramienta ahora la desactiva de verdad
16 de julio de 2026
Al ocultar una herramienta del menú, hasta ahora seguía estando disponible por otros caminos. Ya no: ocultarla la retira de todo el producto. Además, el editor del menú es más seguro y más cómodo de usar.
Lo destacado
5
✨ Nuevo5
Ocultar una herramienta la retira de todas partes: del menú, del menú "@" y de las que la IA activaba por su cuenta.
Nuevo botón "Restaurar" para volver al menú original de un toque.
Al arrastrar cerca del borde, la lista se desplaza sola: ya se puede llevar una herramienta del final al principio.
Con una búsqueda activa no se puede reordenar: antes descolocaba las herramientas que la búsqueda no mostraba.
Si el guardado del menú falla, el cambio se deshace en pantalla en vez de aparentar que se guardó.
🖐️ El menú de herramientas ya se reordena arrastrando
16 de julio de 2026
Arrastrar herramientas para cambiarlas de sitio ya funciona: se agarran por el asa (⠿) y se sueltan donde quieras. Además ahora se puede reordenar en todos los bloques del menú, no solo en "Generar".
Lo destacado
4
✨ Nuevo3
Arrastra una herramienta por su asa (⠿) y suéltala sobre otra: la fila que arrastras se atenúa y la de destino se marca, para que veas dónde va a caer.
Cada herramienta se mueve dentro de su propio bloque, así que el menú no se descoloca.
El menú de edición es más compacto y el submenú "Más" más ancho: los nombres de las herramientas ya no se cortan.
💎 Mejorado1
Se puede reordenar en todos los bloques: lista rápida, Generar, Datos y archivos, Avanzado e Integraciones.
Arrastrar herramientas ya “agarra” bien y el submenú sale donde toca
16 de julio de 2026
En el editor inline del menú (solo admin): al arrastrar, los controles de la fila se comían el evento y el navegador creía que no se podía soltar (cursor de prohibido a ratos); ya no. Y el submenú de los 3 planes salía en una esquina por culpa de la animación del menú; ahora aparece junto al chip. El menú también es más ancho al editar.
Lo destacado
3
💎 Mejorado1
El menú de herramientas es aún más ancho al activar “Editar menú”.
🐛 Arreglado2
Admin: arrastrar herramientas “agarra” bien las demás filas (antes salía el cursor de prohibido a ratos); la fila de destino se resalta al pasar por encima.
El submenú de límites por plan ya aparece junto al chip y no en una esquina de la pantalla.
Vuelve el submenú de los 3 planes, ahora para los límites
16 de julio de 2026
En el editor inline del menú (solo admin), el bloque de límites de cada herramienta ahora abre el submenú con los 3 planes: ahí eliges el tope de usos por día de cada uno (vacío = sin límite) y puedes bloquear o desbloquear. El chip de Free/Pro/Max se queda igual.
Lo destacado
1
💎 Mejorado1
Admin: el bloque de límites abre un submenú con los 3 planes para elegir el tope de usos/día de cada uno; el chip resume los tres (p. ej. “/día 2·5·∞”).
Arreglado de verdad el arrastrar del menú + límites en bloque aparte
16 de julio de 2026
El arrastrar seguía saliendo con el cursor de “prohibido”: la fila del menú era un botón, y los navegadores no dejan arrastrar botones de forma fiable. Ahora, en modo edición, la fila pasa a ser un contenedor normal y el arrastre funciona. Además el chip de plan vuelve a ser los 3 botones Free/Pro/Max, el límite diario va en su propio bloque, y el menú se ensancha al editar para que quepa todo.
Lo destacado
3
💎 Mejorado2
El chip de plan vuelve a ser los 3 botones Free/Pro/Max, y el límite de usos/día va en un bloque aparte con una casilla por plan.
Al activar “Editar menú” el menú de herramientas se ensancha para que quepan todos los controles.
🐛 Arreglado1
Admin: arrastrar herramientas para reordenar ya funciona (la fila era un botón y el navegador no permitía arrastrarla).
Arreglado el arrastrar herramientas del menú (ya no sale “prohibido”)
16 de julio de 2026
En el editor inline del menú (solo admin), arrastrar para reordenar mostraba el cursor de prohibido y no dejaba soltar. Faltaba la señal de arrastre que pide el navegador; ya está. Ahora puedes reordenar arrastrando las herramientas de la lista rápida y del grupo “Generar”.
Lo destacado
1
🐛 Arreglado1
Admin: reordenar herramientas arrastrando ya funciona (antes salía el icono de “prohibido” y no soltaba). Activo en la lista rápida y en “Generar”.
Admins: límite diario por plan en el chip de cada herramienta
16 de julio de 2026
El chip de plan del editor inline (solo admin) ahora abre un submenú por herramienta donde eliges, para cada plan (Free/Pro/Max), si está disponible o bloqueada y su tope de usos por día (vacío = sin límite). Todo dentro del menú del chat.
Lo destacado
1
✨ Nuevo1
Admin: al pulsar el chip de plan de una herramienta se abre un submenú para fijar disponibilidad y límite diario por plan (Free/Pro/Max).
Admins: reordena (arrastrando) y oculta herramientas desde el propio menú
16 de julio de 2026
Ampliamos el editor inline del menú de herramientas (solo administradores): además del plan por herramienta, ahora puedes ocultar/mostrar cada una con el ojo, y en el grupo “Generar” arrastrarlas para reordenarlas — todo dentro del menú del chat, sin ir a administración. Los usuarios normales solo ven el menú resultante.
Lo destacado
1
✨ Nuevo1
Admin: en el modo edición del menú, oculta/muestra cada herramienta con el ojo y arrástralas para reordenar (grupo “Generar”).
Los administradores editan el plan de cada herramienta desde el propio menú
16 de julio de 2026
Nuevo (solo administradores): dentro del menú de herramientas del chat aparece un botón “Editar menú” que muestra en cada herramienta un chip Free/Pro/Max para elegir desde qué plan está disponible, sin ir al panel de administración. Los usuarios normales no ven nada de esto.
Lo destacado
1
✨ Nuevo1
Admin: edita desde qué plan está disponible cada herramienta con un chip Free/Pro/Max en el propio menú del chat (sin ir a administración).
Límites por plan bien aplicados y modo automático más justo
16 de julio de 2026
Arreglamos dos cosas del sistema de planes: una herramienta bloqueada en tu plan ya no funciona aunque la pidas por texto (antes se saltaba el bloqueo si no pulsabas su botón), y el modo automático ya no elige modelos por encima de tu plan (lo que provocaba el error intermitente “requiere Pro”, sobre todo al generar imágenes).
Lo destacado
4
💎 Mejorado1
El contador de créditos del encabezado ahora te lleva a tu página de suscripción.
🐛 Arreglado3
El menú de herramientas ya muestra el candado en TODAS las que tu plan bloquea (antes algunas, como Generar Quiz, salían disponibles aunque estuvieran bloqueadas).
Una herramienta bloqueada en tu plan ya no se activa aunque la pidas escribiéndola (antes el bloqueo solo contaba si pulsabas su botón).
El modo automático solo elige modelos que tu plan permite → se acabó el error intermitente “este modelo requiere el plan Pro” (se notaba al generar imágenes).
El botón de detener y borrar chats, más a prueba de fallos
16 de julio de 2026
Reforzamos el sistema nuevo de respuestas en segundo plano: el botón de detener es más fiable aunque la conexión con el servidor vaya lenta, y si borras un chat mientras responde ya no se sigue generando ni se te cobra por él. Además, una respuesta atascada del proveedor ya no puede dejar el servidor colgado.
Lo destacado
3
💎 Mejorado1
Si el proveedor de IA se queda “mudo”, la respuesta se corta sola tras 90s en vez de quedarse colgada.
🐛 Arreglado2
Detener una respuesta funciona de forma fiable aunque el servidor tarde en registrar la orden (antes, en respuestas largas, podía seguir y cobrarte).
Si borras un chat mientras la IA responde, se detiene y ya no se te cobra por esa respuesta.
Los cupones te confirman al momento si son válidos
16 de julio de 2026
Al escribir un código promocional en la página de precios, ahora ves al instante si es válido: un check verde y el descuento que aplica (o un aviso claro si no lo es o ya lo usaste). Antes no había ninguna señal de si se había cogido bien.
Lo destacado
1
💎 Mejorado1
Al escribir un cupón se valida al momento: check verde con el descuento si es válido; aviso claro si está caducado, agotado, ya usado o no existe.
La memoria ahora también te pregunta cuando editas un mensaje
16 de julio de 2026
Si editabas un mensaje pidiendo guardar algo en la memoria, no aparecía la ventana para confirmarlo (solo salía al enviar un mensaje nuevo). Ya aparece también al editar. Y ahora entiende que quieres guardar aunque escribas “guardalo” con alguna errata.
Lo destacado
2
💎 Mejorado1
Detecta que quieres guardar algo aunque escribas “guardalo/gurdalo” con alguna errata.
🐛 Arreglado1
La ventana para guardar en memoria aparece también al editar un mensaje (antes solo al enviar uno nuevo).
Si sales del chat, la respuesta ya no se pierde: sigue en segundo plano
16 de julio de 2026
Antes, si cerrabas la pestaña o salías mientras la IA respondía, se cortaba y perdías la respuesta. Ahora sigue generándose en el servidor y se guarda sola: al volver, está completa. El botón de detener (y la tecla Escape) siguen parándola de verdad al instante.
Lo destacado
2
✨ Nuevo1
Si cierras la pestaña o sales mientras la IA responde, la respuesta sigue generándose en el servidor y aparece completa al volver.
💎 Mejorado1
El botón de detener y la tecla Escape siguen parando la respuesta al instante (y dejan de gastar créditos), a diferencia de salir.
Arreglado de raíz el sistema de créditos (consumo y concesión)
16 de julio de 2026
Los créditos ni se descontaban al usar el chat ni se concedían (bienvenida, referidos, ajustes de admin). La causa real estaba en la base de datos, no en la app: una restricción del registro de movimientos había quedado mal y hacía que cada operación fallara en silencio. Ya está corregido: el saldo vuelve a bajar al consumir y a subir al conceder.
Lo destacado
6
✨ Nuevo1
Cupones: nuevo tipo de descuento al comprar packs de créditos (además de los de suscripción).
💎 Mejorado1
El cobro es más robusto: un coste con decimales ya no pierde el descuento y cualquier fallo deja rastro en el registro.
🐛 Arreglado4
El saldo de créditos vuelve a descontarse de verdad al usar el chat (antes se calculaba y mostraba, pero no bajaba del saldo).
Los créditos de bienvenida al crear cuenta vuelven a concederse (estaban rotos por el mismo fallo desde el 26 de junio).
Al otorgar créditos a un usuario desde administración ahora sí se aplican, y si algo falla te avisa (antes decía “hecho” sin darlos).
Vuelven a registrarse los movimientos en “Suscripción → Movimientos” (antes no se guardaba ninguno).
Arreglado el inicio de sesión con Google (ya no acaba en localhost)
16 de julio de 2026
Corregido un fallo por el que, al entrar con Google, a veces te redirigía a una página que no cargaba (localhost) en lugar de a la app. Ahora el inicio de sesión termina siempre en el dominio correcto.
Lo destacado
1
🐛 Arreglado1
Inicio de sesión con Google: siempre vuelve al dominio de la app (antes a veces acababa en localhost y no cargaba).
Corregimos un fallo por el que, a los usuarios normales, el consumo de créditos se calculaba y se mostraba pero no se descontaba del saldo. Ahora los créditos vuelven a descontarse correctamente al usar el chat (los administradores siguen exentos).
Lo destacado
1
🐛 Arreglado1
El consumo de créditos vuelve a descontarse del saldo en los usuarios normales (antes se mostraba pero no bajaba).
Contadores de herramientas al día y nº de fuentes de la búsqueda web configurable
16 de julio de 2026
Cuando la IA usa una herramienta por su cuenta (por ejemplo buscar en la web), el contador de “te quedan N de M” ahora se actualiza al momento. Y el número de fuentes que trae la búsqueda web ya no está fijado a 8: se puede subir desde el panel de administración.
Lo destacado
2
💎 Mejorado1
Nº de fuentes de la búsqueda web configurable desde admin (antes fijo en 8; ahora hasta 24).
🐛 Arreglado1
El contador diario de una herramienta se refresca también cuando la usa la propia IA (function calling), no solo al activarla a mano.
Si sales del chat mientras responde, ya no “se pierde” la respuesta
16 de julio de 2026
Cuando la conexión se corta mientras la IA está respondiendo (por ejemplo al salir de la app en el móvil, o en respuestas largas con búsqueda web), ya no salta el error de “vuelve a intentarlo”. La respuesta sigue generándose en el servidor y ahora aparece sola en cuanto está lista.
Lo destacado
1
🐛 Arreglado1
Corte de conexión durante la respuesta: aviso suave + la respuesta aparece sola al terminar (antes salía un falso error, sobre todo con búsqueda web).
En móvil, cuando escribes varias líneas el cuadro de texto pasa a ocupar todo el ancho y los botones se colocan debajo (como ChatGPT). Antes el texto quedaba apretado en una columna estrecha porque compartía la fila con los botones.
Lo destacado
1
🐛 Arreglado1
Cuadro de texto en móvil: al escribir varias líneas ocupa todo el ancho y los botones bajan a una segunda fila; se acabó el texto estrujado.
Cuadro de texto móvil: más legible, con modo oscuro y foco iluminado
16 de julio de 2026
El cristal del cuadro de mensaje en móvil ahora se lee mucho mejor: un velo más sólido evita que los colores del fondo lo tiñan, tiene por fin una versión pensada para el modo oscuro, y al escribir se ilumina con un halo del color del tema.
Lo destacado
2
💎 Mejorado2
Cuadro de texto en móvil más legible (velo real, sin que el fondo lo tiña) y con variante propia de modo oscuro.
Al enfocar el cuadro de texto, un halo suave con el color del tema (foco más claro).
Nuevos detalles en el cuadro de mensaje: sugerencias que van rotando cuando está vacío, un pequeño “lanzamiento” al enviar, el botón enviar↔detener con transición más suave y una vibración sutil al enviar (en móviles compatibles).
Lo destacado
2
✨ Nuevo1
Sugerencias rotativas en el cuadro de texto cuando está vacío (en los 7 idiomas).
💎 Mejorado1
Micro-“lanzamiento” al enviar, botón enviar↔detener con pop de transición y vibración sutil (haptic) al enviar/detener.
La campana de notificaciones ahora luce el mismo botón de cristal que el resto de la cabecera. Al abrir el menú de tres puntos, el resto de botones se desvanecen para que solo destaque el ⋯. Y dentro del menú, los iconos van en chips ordenados.
Lo destacado
2
💎 Mejorado2
Cabecera móvil: la campana lleva el mismo cristal que el toggle y el ⋯ (antes iba suelta).
Menú ⋯: al abrirlo, el resto de botones de la cabecera se ocultan y solo queda el ⋯; y los iconos del menú van en chips tintados.
El sidebar en móvil ahora “aparta” el chat (efecto pro)
16 de julio de 2026
Al abrir el menú lateral en móvil, el chat se aparta hacia atrás (se encoge, coge esquinas redondeadas y sombra), como en iOS/Telegram, y vuelve a su sitio siguiendo tu dedo al deslizar para cerrar. Además, el aura del cuadro de texto ahora fluye mientras se genera y se ilumina con el color del tema al escribir.
Lo destacado
2
✨ Nuevo1
Sidebar en móvil con efecto de profundidad: el chat se aparta al abrirlo y vuelve interactuando con el gesto de cerrar.
💎 Mejorado1
Cuadro de texto: el aura de generación ahora fluye suave y el borde se tiñe con el acento del tema al enfocar.
En móvil, al abrir el menú de tres puntos, el fondo se difumina; ahora el propio botón ⋯ (y el resto de la cabecera) se quedan nítidos y flotando por encima del desenfoque, en vez de esconderse detrás de él.
Lo destacado
1
🐛 Arreglado1
Menú ⋯ en móvil: el botón de tres puntos y la cabecera se mantienen visibles y nítidos sobre el fondo difuminado.
Rediseñamos la ventana para editar un mensaje: adiós al cristal violeta recargado; ahora es una tarjeta limpia y sólida, en azul (el color de tus mensajes), con un campo de texto de alto contraste y más fácil de leer y escribir.
Lo destacado
1
💎 Mejorado1
Editar mensaje: tarjeta limpia y sólida (sin el cristal recargado), en azul, con campo de alto contraste y ancho más contenido.
Retoques visuales: el modo conversación por voz en móvil gana asa de arrastre, brillo de cristal, un punto de estado con doble pulso y el texto que entra con más vida; y el "liquid glass" de los controles móviles luce más real (profundidad, reflejos iridiscentes y mejor legibilidad).
Lo destacado
2
💎 Mejorado2
Modo voz en móvil: asa de arrastre, reflejo de cristal, punto de estado con doble pulso y karaoke con entrada animada.
Liquid glass de los controles móviles: más profundidad, borde iridiscente sutil, caustics y mejor contraste del contenido.
Web al día: nuevas funciones en la landing y menú más limpio
16 de julio de 2026
Refrescamos la web pública: la portada y la página de Funciones muestran las novedades reales (Artifacts, visión en vivo compartiendo pantalla/cámara, estudio de podcast), los modelos van al día y los contadores son exactos. Además, "Novedades" pasa del menú al pie de página.
Lo destacado
2
💎 Mejorado2
Landing y Funciones actualizadas: Artifacts/Canvas, visión en vivo (pantalla y cámara) y estudio de podcast, con modelos al día (Opus 4.8, Sonnet 5, Gemini 3, GPT-5.5).
Menú de la web más limpio: "Novedades" se mueve al pie de página (sigue a un clic).
Reproduce tus podcasts con el texto en marcha, y el estudio pasa a Max
16 de julio de 2026
En "Tus podcasts" ahora puedes hacer clic en cualquier episodio y se abre en el reproductor completo, con el texto que se ilumina siguiendo la reproducción (como cuando lo generas). Además, el estudio de podcast pasa a ser exclusivo del plan Max.
Lo destacado
2
✨ Nuevo1
Historial de podcasts clicable: abre cualquier episodio en el reproductor con el guion que sigue al audio (karaoke), capítulos y fuentes.
💎 Mejorado1
El estudio de podcast pasa a ser exclusivo del plan Max (antes estaba en Pro). Tus podcasts anteriores siguen disponibles.
Vista iPhone en artifacts, cabecera más limpia y voces de podcast más naturales
16 de julio de 2026
La vista móvil de los artifacts ahora se ve dentro de un iPhone realista (Dynamic Island, botones y barra de gestos). La cabecera del panel se ha reorganizado en dos filas para que no quede amontonada. Y el podcast usa unas voces más expresivas y humanas por defecto.
Lo destacado
3
💎 Mejorado3
Vista móvil de artifacts con mockup de iPhone realista: Dynamic Island, botones laterales y barra de gestos.
Cabecera del panel de artifacts en dos filas (identidad arriba, controles abajo): más aire y sin elementos apretados.
Podcast: voces por defecto más naturales y expresivas (sage/ash/coral) con mejor entonación y pausas.
Mientras se genera un podcast, ahora ves en directo las búsquedas web que hace y las fuentes que va encontrando, para saber de dónde saca los datos antes de escribir el guion.
Lo destacado
1
✨ Nuevo1
Al generar un podcast se muestran en vivo las consultas web y las fuentes encontradas (con enlace), así sabes qué datos usa.
El guion de los podcasts ahora lo escribe un modelo bastante más capaz (GPT-5.5) en lugar del anterior, así que los diálogos son más ricos, naturales y precisos. Si por lo que sea fallara, cae automáticamente al modelo anterior para no quedarse sin podcast.
Lo destacado
1
💎 Mejorado1
El guion de los podcasts se genera con un modelo mucho mejor (GPT-5.5): diálogos más ricos, naturales y con datos más precisos.
Mejoras visuales en el panel de artifacts: marcos de móvil y tablet más realistas para la vista previa responsive, una animación de carga (skeleton) mientras se prepara la página, números de línea en la vista de código y una cabecera más cuidada.
Lo destacado
3
💎 Mejorado3
Vista previa responsive con marcos de móvil/tablet realistas (bisel, esquinas redondeadas y sombra).
Animación de carga (skeleton) mientras se prepara la vista previa, en vez de un panel en blanco.
La vista de código ahora tiene números de línea, y la cabecera del panel luce más pulida.
Las explicaciones de texto ya no se convierten en artifact
15 de julio de 2026
Corregido que una explicación larga y detallada (por ejemplo una biografía o un resumen) se generara como un artifact en vez de mostrarse normal en el chat. Los artifacts vuelven a ser solo para código, webs, apps o diagramas.
Lo destacado
1
🐛 Arreglado1
Una respuesta de texto larga (una explicación, biografía, resumen…) ya se muestra en el chat con su formato y tablas, en lugar de convertirse en un artifact.
El modelo Sol responde más completo y se arregla el "```html" en artifacts
15 de julio de 2026
Ajustado el modelo GarBotGPT-5.6-Sol para que responda con el mismo detalle y formato (tablas incluidas) que 5.5, en vez de respuestas demasiado escuetas. Y corregido que a veces un artifact mostrara "```html" arriba en lugar de la página.
Lo destacado
3
💎 Mejorado1
GarBotGPT-5.6-Sol vuelve a responder detallado y con tablas (se le pidió más nivel de detalle y se le quitó una instrucción que lo hacía demasiado escueto).
🐛 Arreglado2
Corregido que algún artifact mostrara "```html" al principio en vez de renderizar la página.
Editar un modelo en el panel de admin ya no borra ajustes sin querer: al abrir el editor se recargan los datos reales del servidor.
Las tarjetas de artifact del chat y la galería "Artifacts del xat" ahora muestran una miniatura real y en vivo de la página o SVG (en vez de un icono genérico), así reconoces cada uno de un vistazo.
Lo destacado
1
💎 Mejorado1
Las tarjetas de artifact HTML/SVG muestran una miniatura en vivo del contenido, tanto en el chat como en la galería de artifacts.
Compartir pantalla arreglado: ya ves lo que compartes y la IA lo ve de verdad
15 de julio de 2026
Corregido que al compartir la pantalla se quedara en negro y la IA hablara "de código" sin mirar. Ahora ves tu pantalla compartida (preview), la IA recibe de verdad lo que muestras y su respuesta ya no desaparece.
Lo destacado
2
🐛 Arreglado2
Compartir pantalla ya muestra lo que compartes (antes salía todo negro) y la IA ve de verdad la captura, así que responde sobre lo que enseñas (un vídeo, una web…), no "de código".
La respuesta de la IA en compartir pantalla ya no desaparece: se queda visible hasta la siguiente.
Respuestas un poco más rápidas y baratas, y Sol orquesta herramientas solo
15 de julio de 2026
Mejor aprovechamiento de la caché de contexto (respuestas ligeramente más rápidas y económicas al continuar una conversación) y el modelo tope GarBotGPT-5.6-Sol ahora decide por su cuenta cuándo buscar en la web o recordar cosas.
Lo destacado
2
💎 Mejorado2
Al continuar una conversación se reutiliza mejor la caché del contexto: algo más rápido y económico.
GarBotGPT-5.6-Sol orquesta herramientas de forma nativa (busca en la web, lee enlaces o guarda memoria cuando hace falta, encadenando pasos).
Los modelos GPT-5.6 recuerdan mucho más de la conversación
15 de julio de 2026
Configurada la ventana de contexto real de los modelos GPT-5.6 (más de un millón de tokens), así que recuerdan bastante más del historial. Con un tope de seguridad para que no se dispare el coste, y el modelo tope (Sol) estrena orquestación de herramientas más lista.
Lo destacado
2
💎 Mejorado2
Los modelos GPT-5.6 aprovechan su ventana de contexto real: recuerdan mucho más de la conversación sin perder el hilo (con un límite para no encarecer cada mensaje).
El modelo GarBotGPT-5.6-Sol activa el uso nativo de herramientas para orquestar mejor búsquedas, código y demás.
Cupones: confirmación con check verde y que no se pierden al recargar
15 de julio de 2026
Al canjear un código ahora ves un check verde de confirmación, y si es un descuento de suscripción queda guardado (con un botón para suscribirte) aunque recargues o cambies de página. En el panel de admin se puede ver quién ha canjeado cada cupón y ampliar sus usos.
Lo destacado
3
✨ Nuevo1
Admin: cada cupón muestra quién lo ha canjeado y permite ampliar (editar) su número máximo de usos.
💎 Mejorado1
Al aplicar un código aparece un check verde de confirmación (antes no daba señal de que se hubiera aplicado).
🐛 Arreglado1
Un cupón de descuento aplicado ya no se pierde al recargar o cambiar de página: queda guardado con un botón "Suscribirse" para usarlo.
Artifacts más potentes: botón "Arreglar error", más librerías y mejor diseño
15 de julio de 2026
Tres mejoras grandes en artifacts: si tu página o app da un error al ejecutarse, aparece un botón "Arreglar error" que se lo manda a la IA para que lo corrija sola; los artifacts React/Next pueden usar cualquier librería (y Tailwind) sin configurar nada; y por defecto salen más responsive, accesibles y con mejor diseño.
Lo destacado
3
✨ Nuevo1
Botón "Arreglar error": si el preview del artifact lanza un error, un clic manda el error y el código a la IA y te devuelve una versión corregida.
💎 Mejorado2
Artifacts React/Next: ahora puedes importar cualquier librería (lucide, framer-motion, recharts, three…) y usar Tailwind sin configurar nada; se cargan solas.
Los artifacts salen por defecto más responsive, accesibles y con mejor diseño (paleta, tipografía y detalles), sin tener que pedirlo.
Pedir "hazme un artifact" ahora genera uno de verdad
15 de julio de 2026
Corregido que pedir "hazme un artifact básico" (o de ejemplo) saliera como una nota o un texto que solo describía qué es un artifact. Ahora genera un artifact real y funcional con el modelo de programación correcto.
Lo destacado
1
🐛 Arreglado1
Pedir un "artifact básico/de ejemplo" ya crea un artifact real (una página HTML lista para ver y editar), no un texto que lo describe.
Artifacts otra vez fiables: "hazme una web" vuelve a salir bien
15 de julio de 2026
Arreglados varios fallos que hacían que pedir una web, landing o app saliera como código suelto, un documento o con el modelo equivocado. Ahora esas peticiones vuelven a generar un artifact con el modelo de programación de tu plan, y al llegar al límite el mensaje es limpio (sin código a medias).
Lo destacado
3
🐛 Arreglado3
Pedir "hazme una web/landing/app/página" vuelve a generar un artifact de verdad con el modelo de programación correcto (antes caía en un modelo genérico o salía código suelto).
Si el modelo separaba la web en HTML y CSS por un lado, ahora se juntan en un único artifact que se ve y edita bien.
Al alcanzar el límite diario de generación de código, la respuesta es un aviso claro y ya no aparece un artifact a medias ni bloques de código sueltos.
Códigos de descuento en la suscripción (baja el precio el tiempo que quieras)
15 de julio de 2026
Los cupones de descuento para la suscripción ahora funcionan de verdad y de forma automática: se puede bajar el precio un porcentaje solo el primer mes, durante varios meses o para siempre. Antes solo funcionaban de verdad los cupones de créditos.
Lo destacado
2
✨ Nuevo1
Cupones que bajan el precio de la suscripción: eliges el % y si dura solo el primer mes, varios meses o siempre.
🐛 Arreglado1
Los cupones de descuento ya no necesitan configuración manual en Stripe: se crean solos, así que funcionan al canjearlos en el pago.
En Telegram puedes pedir tu Spotify por periodo (hoy, ayer, este año…)
15 de julio de 2026
En el bot de Telegram, al pedir tus canciones o artistas más escuchados ahora puedes acotar el periodo igual que en la página de Spotify: hoy, ayer, últimos 7 días, este mes, este año o de siempre. Usa tu historial real de escucha, con días naturales.
Lo destacado
2
✨ Nuevo1
Telegram: "mis canciones más escuchadas hoy / ayer / esta semana / este mes / este año / de siempre" ahora filtra por ese periodo (igual que las pestañas de la web).
💎 Mejorado1
Si en el periodo elegido no escuchaste nada, el bot te lo dice claro en vez de mostrarte el top de siempre.
Spotify en Telegram arreglado y fotos de artista que no desaparecen
15 de julio de 2026
En Telegram, pedir tus canciones o artistas más escuchados vuelve a funcionar: ahora usa tu historial real de escucha en vez de depender de la API de Spotify (que a veces nos limita y devolvía "sin datos"). Y en la página de Spotify, las fotos de los artistas dejan de desaparecer cuando Spotify nos satura.
Lo destacado
2
🐛 Arreglado2
Telegram: "mis canciones/artistas más escuchados" y "lo último que escuché" vuelven a funcionar aunque Spotify esté saturado, usando tu historial real (antes decía "cuenta nueva o poca actividad").
Página de Spotify: las fotos de los artistas ya no desaparecen cuando Spotify nos limita; se usan las guardadas y, si falta alguna, la carátula del álbum.
Límite diario de generación de código según tu plan
15 de julio de 2026
La generación de código (artifacts) pasa a tener un tope diario según tu plan: Free 1, Pro 5 y Max 10 al día, contando tanto crear código nuevo como editarlo. Los administradores pueden ajustar estos números y no tienen límite.
Lo destacado
3
✨ Nuevo2
Nuevo límite diario de generación de código por plan: Free 1, Pro 5, Max 10 al día (cuenta crear y editar). Sube de plan para generar más.
Los administradores pueden ajustar el tope de cada plan desde Monetización → Límites por plan (y quedan sin límite ellos mismos).
💎 Mejorado1
Si llegas al límite, la IA te lo dice con amabilidad en vez de fallar, y no gasta la generación.
El historial de artifacts se ve completo y con mejor transición
15 de julio de 2026
Ahora ves todas las versiones de un artifact (incluidas tus ediciones a mano) tanto si lo abres desde la tarjeta del chat como desde el icono de artifacts. Si tu navegador tenía una copia antigua, se corrige solo. Y el cambio entre versiones tiene una animación mucho más cuidada.
Lo destacado
4
💎 Mejorado1
Nueva animación al pasar de una versión a otra: entra con dirección, un leve zoom y el número de versión hace un pequeño rebote.
🐛 Arreglado3
Abrir el artifact desde la tarjeta del chat ya muestra el historial de versiones (antes solo aparecía abriéndolo desde el icono de artifacts).
Tus ediciones manuales del artifact ya aparecen en el historial; se recupera la cadena completa de versiones aunque estén repartidas entre mensajes.
Si el navegador mostraba una versión antigua por caché, ahora se actualiza solo con la última guardada.
Al navegar entre versiones de un artifact, la etiqueta de versión ahora es coherente con el contador (v1, v2, v3…). Antes, en algunos casos dos versiones distintas salían las dos como "v2" y parecía que el contenido no cambiaba.
Lo destacado
1
🐛 Arreglado1
La etiqueta de versión del artifact ahora coincide con el navegador (1/2 → v1, 2/2 → v2…). Antes podían salir dos versiones con el mismo número y parecía que no cambiaba.
Cuando la IA genera código en un artifact, ahora ves en el panel con qué modelo se hizo. Y hemos actualizado los modelos que programan según tu plan para que cada uno reciba el mejor: los de código ya se aplican de verdad.
Lo destacado
2
✨ Nuevo1
El panel del artifact muestra el modelo con el que se programó (con nuestro nombre, p. ej. GarBotGPT-5.6-Terra).
💎 Mejorado1
Modelos de programación por plan actualizados: cada plan recibe su modelo de código, y ahora se aplica de verdad (antes algunos no se llegaban a usar).
Artifacts más pro: móvil/tablet, comparar versiones y restaurar
15 de julio de 2026
Las vistas previas de artifacts ahora se pueden ver como en móvil, tablet o escritorio. Puedes comparar una versión antigua con la actual (diff con colores) y restaurar una versión anterior con un clic. Y publicar a Vercel queda registrado y con un límite por hora.
Lo destacado
4
✨ Nuevo3
Preview responsive: mira tu artifact HTML/React como se vería en móvil, tablet o escritorio, con un marco de dispositivo.
Comparar versiones: al ver una versión anterior, un botón muestra el diff (qué cambió) frente a la actual, con verde y rojo.
Restaurar una versión anterior con un clic (se guarda como versión nueva, sin perder nada).
💎 Mejorado1
Publicar un artifact a Vercel ahora queda registrado y tiene un límite por hora, por seguridad.
Mientras se genera el vídeo, la tarjeta ahora parece un plató de cine: un marco oscuro con luces animadas, un anillo de progreso con el porcentaje en el centro, líneas de escaneo y un indicador de "grabando". Cuando termina, el vídeo sale con un acabado más cuidado.
Lo destacado
1
💎 Mejorado1
La tarjeta de generación de vídeo se ha rediseñado: anillo de progreso con el porcentaje, fondo con luces en movimiento y un aire cinematográfico mientras se genera.
El panel de admin de vídeo ahora muestra cuántos vídeos se han generado, los segundos totales, el coste estimado en dólares y los créditos consumidos, con desglose por proveedor y estado.
Lo destacado
1
✨ Nuevo1
Panel de admin de Vídeo: nº de vídeos, segundos, coste estimado en $ y créditos, en total y en los últimos 30 días.
El vídeo con IA, con progreso real y sin quedarse pillado
15 de julio de 2026
La tarjeta de generación de vídeo ahora aparece al instante y muestra el progreso real de la generación (como la de imágenes), en vez de un icono girando sin más. Y se acabó el bug de volver al chat y ver "generando" un vídeo que ya estaba hecho.
Lo destacado
2
💎 Mejorado1
La tarjeta de vídeo aparece nada más enviar y muestra el porcentaje real de la generación con una barra de progreso.
🐛 Arreglado1
Al cambiar de chat y volver, un vídeo ya generado se quedaba mostrando "generando" para siempre. Arreglado: ahora recuerda el resultado.
Fotos de artista arregladas, panel de vídeo y pantalla de actualización nueva
15 de julio de 2026
La foto de tu artista Nº1 salía en negro para algunos (como Michael Jackson): arreglado. El sistema de generación de vídeo ya se gestiona desde el panel de admin y puede usar Sora de OpenAI. Y la pantalla que ves mientras actualizamos la app es nueva, con mucho más detalle.
Lo destacado
3
✨ Nuevo1
Nuevo panel de admin para la generación de vídeo: elige proveedor (Sora de OpenAI, Synthesia, Runway), duración y formato, y ve qué claves están puestas.
💎 Mejorado1
La pantalla de "Actualizando GarBotGPT" que aparece durante las actualizaciones se ha rediseñado por completo, con animaciones y más vida.
🐛 Arreglado1
La foto del artista Nº1 del Wrapped salía en negro cuando sus canciones no estaban en el top de temas. Ahora se coge bien.
Ahora puedes anular un enlace compartido de un artifact cuando quieras (antes era para siempre). Y la herramienta de generación de vídeo puede usar Sora 2 de OpenAI: vídeo real con audio. Además, un arreglo de seguridad en la vista previa de gráficos SVG.
Lo destacado
3
✨ Nuevo2
Los enlaces públicos de artifacts ya se pueden revocar: botón "Revocar link" en el diálogo de compartir. Antes no había forma de darlos de baja.
La generación de vídeo puede usar ahora Sora 2 de OpenAI (vídeo real con audio, vertical u horizontal). Se activa desde el servidor.
🐛 Arreglado1
Seguridad: la vista previa de artifacts SVG ahora se aísla por completo, cerrando una vía por la que un SVG malicioso compartido podía ejecutar código.
Las escenas se veían vacías por abajo. Ahora tu artista Nº1 sale con foto (y los siguientes con su miniatura), la portada adelanta tu top-3, y los minutos llevan debajo tu artista y tu canción favoritos. Y en el ordenador la tarjeta ya no flota en negro: tiene un halo verde detrás.
Lo destacado
3
💎 Mejorado3
Tu artista Nº1 ahora sale con foto (la portada de su canción más escuchada), y del 2 al 5 con su miniatura.
La portada adelanta tu top-3 y los minutos muestran debajo tu artista y tu canción Nº1: se acabaron los huecos vacíos.
En el ordenador, la tarjeta del Wrapped tiene ahora un halo verde detrás, en vez de flotar sobre negro.
Dos escenas nuevas en el Wrapped, y el sonido arranca a la primera
15 de julio de 2026
El Wrapped estrena dos momentos: cuánto has escuchado comparado con el año pasado, y un "un día como hoy" con un tema que oías hace años. Además, en el iPhone la música ya suena al abrirlo, sin tener que darle a un segundo botón, y mientras se prepara el vídeo te decimos cuánto queda.
Lo destacado
4
✨ Nuevo2
Escena "vs el año pasado": cuánta música llevas comparado con el mismo periodo hace un año, con el porcentaje en grande.
Escena "un día como hoy": un tema que escuchabas tal día de un año pasado. La parte más nostálgica del Wrapped.
💎 Mejorado2
En iPhone la música del Wrapped ya suena al abrirlo, sin el segundo toque de "activar sonido".
Mientras se genera el vídeo, ahora te decimos los segundos que quedan, no solo el porcentaje.
El vídeo se quedaba corto. Ahora cada escena respira más: pasa de unos 22 a unos 34 segundos. Las animaciones no se aceleran ni se congelan — se reparten para llenar la nueva duración, con tiempo de sobra para leer tus datos, y la música cambia de canción escena a escena igual que antes.
Lo destacado
2
💎 Mejorado2
El Wrapped en movimiento dura más (de ~22 a ~34 segundos): cada escena se ve el tiempo suficiente para leerla con calma.
Las animaciones se adaptan a la nueva duración: ni van más rápido ni se quedan congeladas: se estiran para llenar la escena y luego reposan.
El Wrapped suena con música de verdad, y cambia en cada escena
15 de julio de 2026
Ahora el Wrapped en movimiento suena con canciones reales, y cada escena lleva una distinta: la intro con una, tus minutos con otra, tus artistas con otra… no la misma melodía de principio a fin. Se coge el mejor momento de cada tema (el estribillo) y la música viaja dentro del vídeo que compartes.
Lo destacado
4
✨ Nuevo2
El Wrapped suena con música real, no sintetizada, y va cambiando de canción en cada escena.
La música va incluida en el vídeo que guardas o compartes. Y si tu navegador no puede, el Wrapped sigue funcionando igual.
💎 Mejorado2
De cada canción se coge su parte más potente (el estribillo), no un trozo al azar del principio.
Las canciones se enlazan con una transición suave entre escena y escena, sin cortes secos.
Tu Wrapped ahora suena — con música hecha a tu medida
15 de julio de 2026
El Wrapped en movimiento ya no es mudo. Lleva música compuesta a partir de tus propios datos: tu hora punta elige la tonalidad y cuánto escuchas marca el ritmo. Tu Wrapped no suena como el de nadie, y suena siempre igual. Y el vídeo que compartes se lleva la música dentro.
Lo destacado
4
✨ Nuevo2
El Wrapped tiene música. Se compone en el momento con tus datos: la tonalidad sale de tu hora punta y el tempo de cuánta música escuchas.
El vídeo que guardas o compartes lleva la música incluida. Lo que oyes es exactamente lo que se sube a Instagram o WhatsApp.
💎 Mejorado2
La música va cuadrada con la animación: sube justo antes de que aparezcan tus minutos y se cierra al final. Botón de silencio si lo prefieres callado.
La página de Spotify pregunta bastante menos a Spotify, para no volver a quedarnos sin cuota (el corazón de "me gusta" se preguntaba cada 15 segundos… para la misma canción).
Cambios detallados2 · 1
Sobre la música
2
No son tus canciones, y no puede serlo: Spotify retiró los fragmentos de 30 segundos en noviembre de 2024, y sus condiciones prohíben meter su audio en un vídeo tuyo. Así que la música es nuestra, hecha para ti.
Si tu navegador no puede generarla o no puede grabarla, el vídeo sale igual, sin sonido. La música nunca te deja sin Wrapped.
Tus récords ya se ven, y el resumen semanal llega con tu Wrapped
15 de julio de 2026
La página de récords no funcionaba: calcular once años de música tardaba más de lo que la base de datos permitía, y encima te echaba la culpa a una actualización que sí estaba puesta. Y el correo semanal te mandaba una tabla gris teniendo el Wrapped bueno al lado.
Lo destacado
5
✨ Nuevo1
El resumen semanal por correo llega ahora con tu tarjeta Wrapped, la misma que compartes desde la web, y un botón para verla en movimiento.
💎 Mejorado1
Dejamos de agobiar a Spotify: se pregunta menos cuando no suena nada, y si nos frena, TODO el sistema se calla hasta que se le pase (antes seguíamos llamando y alargábamos el castigo).
🐛 Arreglado3
Tus récords ya se ven. No es que fallaran a veces: no funcionaron nunca — repasar tus 360.000 reproducciones tardaba más de lo permitido y se cancelaba solo.
Los minutos del correo semanal estaban mal contados (casi la mitad de menos) y no cuadraban con los de la web. Ahora salen los dos del mismo sitio.
Cuando Spotify nos limita, la página te lo dice y a qué hora volvemos, en vez de fingir que no estás escuchando nada.
Cambios detallados2 · 1
Spotify
2
El aviso de "necesita una actualización de la base de datos" era falso: la actualización estaba puesta y el fallo era otro. Ahora se dice lo que pasa de verdad.
El botón del correo abre directamente tu Wrapped animado, sin tener que buscarlo.
Hasta ahora, si querías que buscara en la web tenías que acordarte de darle al botón. Si no lo hacías, te contestaba de memoria — y a veces con datos viejos, sin decírtelo. Ahora se da cuenta ella: pregúntale por las noticias de hoy y busca, lee las páginas y te cita las fuentes. Sin tocar nada.
Lo destacado
4
✨ Nuevo1
Pregúntale algo que necesite información actual y buscará en internet ella sola, leerá las páginas que hagan falta y te dirá de dónde ha sacado cada dato.
💎 Mejorado2
Los botones de herramientas siguen exactamente igual: si marcas uno, mandas tú. La IA solo decide cuando tú no has decidido.
También puede acordarse de algo que le cuentes (o olvidarlo) sin que se lo pidas expresamente.
🐛 Arreglado1
Se acabó el consejo absurdo: te sugería "activa la búsqueda web" justo después de haber buscado en la web ella sola.
Cambios detallados3 · 1
Cómo se activa
3
Va modelo a modelo: hay que encenderlo en el modelo que quieras (de momento está en GarBotGPT-5.4-mini).
Se controla desde el panel de Modelos: qué puede hacer por su cuenta, cuántos pasos puede encadenar y si vale también para invitados.
Las herramientas que usa la IA por su cuenta cuestan lo mismo que si las activaras tú. Ni más, ni gratis.
Spotify solo te enseña el año en curso. Tú tienes once. Ahora puedes ver y compartir tu resumen de cualquier año — y en movimiento. De paso, tus minutos escuchados estaban mal contados: faltaba el 45%.
Lo destacado
8
✨ Nuevo3
Wrapped en movimiento: un vídeo vertical con tus datos que puedes subir tal cual a Instagram o mandar por WhatsApp. De cualquier año, no solo del actual.
Nueva página de récords: tu día y tu mes con más música, tu racha más larga, la primera vez que escuchaste a cada artista y qué canciones has olvidado.
Nueva página de logros con 24 retos de Spotify (rachas, maratones, madrugadas) y tu progreso hacia los que aún no tienes.
💎 Mejorado3
Los rankings van por TIEMPO, no por veces: una canción larga que oyes 10 veces pesa más que una corta que oyes 20. Es lo que de verdad escuchas.
El selector de periodo ya funciona en toda la página, no solo en el Resumen. Y se guarda en el enlace: puedes compartir tu 2019 directamente.
Nuevas gráficas: un mapa de tu semana hora a hora, la evolución con escala de verdad, y la comparación con el mismo periodo del año pasado.
🐛 Arreglado2
Tus minutos escuchados estaban mal: se descartaba casi la mitad. De 159.006 a 266.687 minutos en el histórico completo. Ahora cuadran con Spotify.
Telegram te cobraba dos veces cuando una respuesta tardaba mucho: el bot reintentaba y se descontaban los créditos otra vez.
Cambios detallados11 · 3
Spotify
5
Añadir canciones a una playlist y darle a "me gusta" estaban rotos: Spotify retiró esos endpoints en febrero y fallaban en silencio. Migrados.
La pestaña Descubre dependía de un servicio de Spotify que ya no existe y salía medio vacía. Ahora se construye con tu propio historial.
Se perdían reproducciones cuando la sincronización se retrasaba. Ahora se recupera lo que falte.
Pausar y reanudar una canción contaba como una reproducción nueva.
La página se recalculaba entera cada segundo mientras sonaba música (y calentaba el móvil).
Telegram
4
Los límites que se configuran ya se aplican también en Telegram (antes tenía su propio sistema y los ignoraba).
Una foto hacía que cualquier pregunta de los 8 minutos siguientes fuera 10 veces más cara, aunque no tuviera nada que ver.
Vídeos, stickers y GIFs ya no se quedan sin respuesta.
Corregir una errata en un mensaje ya no hace que el bot responda (y cobre) otra vez.
Rendimiento y seguridad
2
El chat abría unas 60 peticiones al arrancar y ahora abre 10. En 4G se nota entre 3 y 5 segundos.
Cerrados varios agujeros de seguridad, entre ellos un acceso de diagnóstico que se dejó abierto por error.
La voz dejaba de entenderte porque el asistente se oía a sí mismo. Solucionado el problema de fondo, y de paso puede crearte recordatorios y su cupo pasa a contarse en minutos, no en conversaciones.
Lo destacado
8
✨ Nuevo2
Recordatorios por voz: di "recuérdame mañana a las 9 llamar al fontanero" y te avisará. También puedes preguntarle cuáles tienes o cancelarlos.
Ves cuánto te queda: junto a cada herramienta y modelo con límite aparece lo que te resta hoy, y te avisa antes de pulsar en vez de fallar después.
💎 Mejorado2
La voz se mide en minutos al mes, no en conversaciones: preguntar la hora ya no te gastaba una entera. Free pasa de 1 minuto al mes a 10.
Los planes cunden mucho más: los créditos rinden más del triple, así que un mismo plan da bastantes más mensajes del modelo más potente.
🐛 Arreglado4
Modo voz: ya no responde al ruido ni contesta cuando no has dicho nada, tus mensajes salen en orden y siempre aparece la burbuja con lo que dijiste.
Modo voz: si hablas catalán con la app en castellano, ya no te transcribe frases inventadas. Ahora detecta el idioma en cada turno.
La IA no respondía en algunos dispositivos (sobre todo el móvil) porque quedaba seleccionado un modelo que ya no existe. Ya se corrige solo.
Spotify: la pestaña "Hoy" del resumen mostraba los datos de todo tu historial (21 horas de música en un día). Ya enseña solo el periodo elegido.
Cambios detallados13 · 3
Voz
5
La causa de fondo: el micrófono se amplificaba por software, y eso desactivaba la cancelación de eco del navegador. El asistente se oía a sí mismo por el altavoz y abría turnos fantasma.
Nueva "Isla Viva" en móvil: cambia de color según lo que ocurre (te escucho / respondiendo / buscando / error), con la respuesta en karaoke y botón de cortar siempre visible.
Ya puedes interrumpir al asistente hablando por encima.
Reconectar tras un corte de red ya no te gasta cupo.
Retiradas dos herramientas que nunca llegaron a funcionar (búsqueda en unidades de red y consulta a base de datos por voz).
Planes y límites
4
Los límites que se configuran se aplican ahora a todas las herramientas y desde cualquier sitio (chat, páginas propias y voz), no solo desde el chat.
Podcast, infografía, comparar modelos e imagen no respetaban los límites de plan si los usabas fuera del chat.
Si una generación falla por un problema nuestro, se te devuelve el uso.
Nuevo bloque "Tu uso de hoy" en Ajustes → Facturación.
Admin
4
El interruptor de facturación ya se aplica de verdad y al momento; el panel muestra su estado real y explica qué implica apagarlo.
Los selectores de herramientas y modelos muestran icono y nombre en vez del identificador interno.
Avisos de configuración contradictoria (algo bloqueado y a la vez con límite diario) y de modelos sin precio.
Los modelos nuevos del proveedor aparecen solos, sin sincronizar a mano.
La IA deja de guardar recuerdos por su cuenta: te pregunta antes y decides si valen para siempre o solo para ese chat. Además, el dictado por voz se rehace de cero y llega el tema de Navidad.
Lo destacado
9
✨ Nuevo5
Modo voz en móvil rehecho: una isla bajo la cabecera que cambia de color según lo que pasa, con lo que dices y lo que responde en vivo, y botón de cortar.
Memoria con permiso: cuando la IA quiere recordar algo te lo pregunta, y puedes editar el texto antes de guardarlo (antes lo guardaba en silencio).
Ámbito de cada recuerdo: eliges entre "Recordar siempre" o "Solo en este chat" con un toque en el propio aviso (antes todo iba al saco global).
Dictado por micrófono: en el ordenador el texto aparece dentro del propio campo; en el móvil el composer se vuelve una grabadora con deslizar para cancelar.
Tema de Navidad en toda la app: estrellas colgadas de un hilo que se mecen con el viento, luces en el composer y páginas del menú "Más" también festivas.
💎 Mejorado1
Spotify: eliges cualquier año y mes del historial desde un calendario, y los tops de artistas y canciones miran ya el periodo completo.
🐛 Arreglado3
Modo conversación por voz: transcribía mal, respondía al ruido y duplicaba tus mensajes porque el asistente se oía a sí mismo. Ya te escucha limpio.
Voz en plan Free: cada reconexión te gastaba una conversación del mes, así que un parpadeo de red te dejaba sin voz. Ahora se cuenta una por conversación.
Sin cuenta: al recargar la página perdías la conversación. Ahora tus chats de invitado siguen ahí (se guardan en tu dispositivo).
Cambios detallados21 · 6
Memoria
3
El panel de Memoria separa "Personales" y "De chats", con filtro (solo este chat / todos) y una etiqueta en cada recuerdo con su origen.
Ajustes → Personalización → Memoria estrena los interruptores "Memoria activada" y "Pedirme permiso antes de guardar", y se guardan en tu cuenta (antes la pausa era solo de ese dispositivo).
Si dices que no a una propuesta de recuerdo, no se te vuelve a preguntar por lo mismo.
Voz y dictado
5
La transcripción ya no se fuerza al idioma de la app: si hablabas catalán con la app en castellano, se inventaba frases.
Puedes cancelar el dictado (con la ✕ o con Esc) sin que se escriba nada, y te avisa si no te oye.
Los avisos del dictado salen en tu idioma (antes siempre en español).
El asistente ya no responde "no te he escuchado bien" cuando solo ha oído ruido, y contesta antes tras tus pausas.
El modo conversación por voz pide registrarse en vez de fallar con un error críptico.
Navidad
3
La caja donde escribes ya no sale blanca: está integrada con el composer granate, con cursor dorado y placeholder legible.
El composer estrena guirnalda de luces y el menú "+" (adjuntar, herramientas…) por fin tiene estilo navideño.
Trineo con reno cruzando el cielo, y estilo festivo también en el modal de voz, en los de compartir chat y en el chip de créditos.
Spotify
2
En el Resumen, la pestaña "Hoy" llegaba a decir 21 horas de música: las cifras grandes ignoraban el filtro y mostraban el total del historial.
Nuevo selector con calendario (año y mes concretos, u "Todo") para ver tu historial entero, no solo el último año.
Chat
3
El selector de modelo en modo automático ya pone solo "Auto" (antes mostraba al lado el último modelo elegido y parecía que se enviaba con ese).
Una herramienta en mantenimiento ya no desaparece: sale bloqueada con un candado y te explica el motivo al pasar por encima.
Se puede poner en mantenimiento cualquier página o herramienta, con duración y cuenta atrás.
Admin
5
Modelos y herramientas salen de un catálogo único: antes las listas estaban hardcodeadas y se desincronizaban (los modelos nuevos no aparecían en el tarifario de créditos y faltaban herramientas en los bloqueos por plan).
Los selectores muestran icono + nombre en vez del slug crudo, con buscador; lo que ya no existe se marca como "obsoleto" en vez de desaparecer.
Escanear gastos y Análisis financiero ya se pueden desactivar por modelo; OCR y Análisis de vídeo se apagan al ponerlos en mantenimiento.
Los modelos de voz (realtime y transcripción) se eligen de un desplegable con los que tu cuenta tiene de verdad, con precio y aviso si tu proyecto no tiene acceso. Añadidas las voces marin y cedar.
Los modelos nuevos de cada proveedor aparecen solos, sin sincronizarlos a mano.
Mejoras al selector de varias cuentas en el mismo dispositivo (aislamiento sin fugas, cuentas inactivas que se mantienen "vivas" solas, y una pantalla nueva para gestionarlas). Además, hemos empezado a traducir a los 7 idiomas muchas zonas que se quedaban en español aunque tuvieras otro idioma.
Lo destacado
11
✨ Nuevo5
♻️Las cuentas guardadas que no estás usando se REFRESCAN solas en segundo plano: así, cuando cambias a una que llevabas rato sin abrir, entra directa sin pedirte la contraseña (antes a veces había que reactivarla)
🌍Más app EN TU IDIOMA: muchos textos salían en español aunque tu idioma fuese inglés, francés, alemán, italiano o portugués. Ahora están en los 7 idiomas — el composer del chat, las burbujas de mensaje, la pantalla de bienvenida, la cabecera móvil, el editor de GPTs, la lista de canales y el modal de reactivar cuenta
🌍También pasan a respetar tu idioma las páginas de Programados y Calendario, la de cambiar contraseña, la pantalla de "página no encontrada" (404) y el aviso de recarga tras una actualización (antes salían siempre en español)
🏷️Las páginas "Letras" y "Analiza tu documento" ya muestran su propio nombre en la pestaña del navegador (antes salía "GarBotGPT" genérico)
💎 Mejorado2
🛠️Nueva pantalla "Gestionar cuentas" (aparece en el menú de tu perfil cuando tienes 2 o más): renombra cada cuenta con una etiqueta, ponle un color para distinguirlas de un vistazo, cambia a otra o quítala del dispositivo — con su última actividad a la vista
👥Gestión de cuentas MUCHO mejor: el modal "Gestionar cuentas" se ha rediseñado (tarjetas con avatar/color/última actividad, editar etiqueta, reactivar sesiones caducadas, quitar en 2 pasos, añadir cuenta ahí mismo) y AHORA también está en MÓVIL (antes solo en escritorio). El perfil duplicado de abajo del menú lateral se ha quitado (ya está arriba)
🐛 Arreglado2
🎧Spotify ARREGLADO: tras importar tu historial completo, el Resumen se quedaba a 0 (racha, top canciones/artistas, variedad, calendario) aunque los totales salían bien. Ya cuenta TODO tu historial importado en todas las estadísticas
🎙️Modo conversación por voz ARREGLADO: ya no duplica respuestas ni deja globos "…" colgados cuando no capta bien el audio. Y si tu plan Free ya gastó su conversación del mes, ahora te lo dice claramente (en tu idioma) en vez de abrir la llamada y cerrarla sola como si fuera un error
🔒 Seguridad2
🔒Al cambiar de cuenta ya NO se ve, ni por un instante, ningún chat o dato de la cuenta anterior: se borra también la copia guardada en el dispositivo (antes esa caché podía asomar tras recargar)
🌍Y MUCHO más traducido a los 7 idiomas: prácticamente TODA la app (ajustes, facturación, carpetas, sidebar, artefactos, archivos, canales, calendario, galería de imágenes, tarjetas de podcast/vídeo/investigación, modo en vivo…) y la WEB pública (landing, precios, contacto, seguridad, blog). La landing y las páginas públicas ahora salen en tu idioma (por tu preferencia o la del navegador)
🎙️ Modo voz que te oye mejor + tooltips propios + detalles
09 de julio de 2026
El modo conversación por voz ahora te capta aunque hables flojo o con el micro lejos, con un control nuevo de "Sensibilidad del micrófono". Los tooltips (la tarjetita que sale al pasar el ratón) son propios y más bonitos en TODA la app. Y varios arreglos útiles: abrir chats con el clic central del ratón, cambiar el objetivo de pago de AdSense de un clic, y herramientas por defecto de carpetas que ya se activan al abrir un chat de la carpeta.
Lo destacado
45
✨ Nuevo30
🎤NUEVA página "Letras" (en el menú Más): pega un link de una canción de Spotify o YouTube y te trae la LETRA y la TRADUCE al idioma que quieras (vista bilingüe: original + traducción). Para Spotify ahora busca la MISMA canción en YouTube y transcribe el audio (elige la versión correcta por DURACIÓN, evita directos/covers/remixes que sacaban la letra mal); para YouTube transcribe el propio vídeo o usa sus subtítulos. La letra sale bien estructurada en versos
⏳Letras: progreso en tiempo real al transcribir (Identificando → Buscando en YouTube → Descargando → Transcribiendo → Ordenando en versos → Traduciendo), con barra de avance
👑Las páginas "Analiza tu documento" y "Letras" pasan a ser exclusivas del plan Max (en el menú Más aparece un chip "Max" si tu plan no las incluye)
📰Nueva página pública de NOVEDADES en la web (garbotgpt.com/changelog), enlazada desde el menú y el pie — para ver las mejoras sin entrar en la app
🗂️Carpetas: añadidas Podcast, Escanear gastos y Análisis financiero a las herramientas por defecto (faltaban respecto al chat)
🎵Spotify: la pestaña activa y el periodo (Hoy/7/30/Año) ahora se RECUERDAN al recargar la página (antes volvía siempre a "30 días"). Nuevo periodo "Ayer", y "Hoy" pasa a ser el día natural (coincide con el Historial). Además, en Hoy/Ayer, Canciones y Artistas muestran TODAS las del día (antes se cortaba en 12, con "ver todas" en los rangos largos) y se refrescan igual que el Historial
🧾NUEVA página "Analiza tu documento" (en el menú Más): sube una FACTURA, NÓMINA o CONTRATO (PDF, DOCX o imagen) y la IA lo lee (el PDF entero, con sus casillas y campos), busca en internet las cifras oficiales vigentes (SMI, IVA, IRPF, convenios, cotizaciones) y te da un veredicto (correcto / con dudas / con errores) con datos extraídos, cálculos, comprobaciones, checklist, fuentes citadas y nivel de riesgo — todo en tu idioma. Puedes subir DOS documentos para cruzarlos (p. ej. contrato ↔ nómina). Orientativo, no sustituye a un profesional
💬"Analiza tu documento": ahora puedes CHATEAR con el documento después del análisis — pregúntale lo que quieras ("¿por qué el IRPF está mal?", "¿cuánto debería cobrar?") y responde en tiempo real usando el informe como contexto. La conversación se guarda con el análisis
⏰"Analiza tu documento": detecta VENCIMIENTOS y plazos (fin de periodo de prueba, vencimiento de factura, renovación de contrato, plazos de pago…) y con un clic creas un RECORDATORIO que te avisará (usa tu sistema de recordatorios de siempre)
📰La página pública de Novedades (garbotgpt.com/changelog) ahora toma los datos del MISMO changelog que la app (con las releases de GitHub incluidas) y muestra TODO el historial completo (no solo lo último), con sus detalles — una sola fuente, no hay que mantener dos
📊La página de AdSense estrena el mismo fondo "liquid glass" (burbujas suaves + tarjetas translúcidas) que "Analiza tu documento"
🎧Spotify: al tocar una canción ya NO te saca a la app de Spotify — ahora abre un menú con REPRODUCTOR integrado (suena aquí mismo, vista previa o completo si tienes Premium), además de "Reproducir" en tu Spotify, "A la cola" y "Abrir en Spotify". Y en "Descubre", tocar un ÁLBUM abre un modal con el álbum reproducible + "Abrir en Spotify"
🎤Spotify + LETRA EN DIRECTO: en la pestaña "Ahora", mientras suena una canción en tu Spotify, pulsa "Mostrar letra" y verás la LETRA de la canción y al lado su TRADUCCIÓN (en el idioma que elijas). Se actualiza sola al cambiar de canción. Reutiliza el buscador/transcriptor de la página "Letras"
🎼Letras: la transcripción del audio ahora SÍ sale ordenada en estrofas (antes se quedaba en un bloque plano de líneas); y las letras transcritas que tenías guardadas se reordenan solas al abrirlas (sin volver a transcribir)
🎤🎶 Letras KARAOKE SINCRONIZADO: si pegas un link de Spotify, ahora puedes REPRODUCIR la canción dentro de la propia página de Letras y la letra se va RESALTANDO al ritmo de la música, con la traducción bajo cada verso. Usa los tiempos de la transcripción + el reproductor de Spotify (con Premium suena la canción entera; sin Premium, la vista previa de 30 s)
📱Telegram — SEGUIMIENTO con foto: después de mandar una foto ya puedes preguntar cosas de seguimiento en TEXTO ("¿y con zapatillas blancas?", "¿cuánto sería con IVA?") SIN reenviarla; el bot recuerda la última foto unos minutos y responde sobre ella (sin gastar cuota de visión de más)
⌨️Input más estable: al escribir ya NO parpadea (se hacía grande/pequeño con cada letra en el punto justo de salto de línea) y el texto largo de 2 líneas ya no se solapa con los iconos de la derecha (tokens, voz…). El cuadro se expande y se queda estable hasta que envías o vacías
🧩Input: las herramientas activas (chips) aparecen ahora AL LADO del botón "+", en la misma fila de controles (estilo ChatGPT), en vez de en una fila propia encima del texto
📁Carpetas: las herramientas nuevas (Infografía, Flashcards, Reproductor de música) ya muestran su nombre y descripción en el selector (antes salían como tarjetas en blanco)
🔤Menú "@" del input AL DÍA: antes solo ofrecía 6 herramientas; ahora están TODAS (unidad de red, base de datos, infografía, podcast, presentación, YouTube, imagen a código, mapa mental, quiz, flashcards, App Builder, música, gastos, finanzas e integraciones), y cada una con su propio icono en vez del genérico
🎙️Modo voz: nuevo control de "Sensibilidad del micrófono" (icono de micro en la barra) — amplifica tu voz y afina la detección para que te transcriba aunque hables flojo o con el micro lejos. Además, por defecto ya es bastante más sensible que antes
💬Tooltips propios en TODA la app: la tarjetita que sale al pasar el ratón sobre un botón ahora es más bonita (glass oscuro, borde de luz, animación con muelle y un pequeño retardo natural) y funciona en toda la app, no solo en el chat; añadida también al botón "+" del input
🖱️Lista de chats: el CLIC CENTRAL del ratón (y Ctrl/Cmd+clic) ahora abre el chat en una PESTAÑA NUEVA de verdad — antes el navegador lo bloqueaba o no hacía nada
💰AdSense: el objetivo de pago (el número de la barra "Progreso hacia el pago") ahora se cambia ahí mismo con un clic, sin tener que activar la alerta de pago
📁Carpetas: las herramientas por defecto de una carpeta ahora también se activan al ABRIR directamente un chat de esa carpeta (antes solo al empezar un chat nuevo dentro de ella)
🧰Carpetas: se pueden dejar activas por defecto más herramientas que faltaban — Infografía, Flashcards y Reproductor de música (en Ajustes de carpeta → Herramientas)
📊AdSense más pro: las tarjetas de métricas (KPIs) y de cruce con tu tráfico estrenan look premium — acento de marca arriba, número más grande y elevación al pasar el ratón; hero más marcado
🔎Búsqueda web más económica: el motor de Google (SerpAPI) ahora SOLO se usa cuando buscas productos/precios; el resto de búsquedas usan los otros motores. Antes gastaba cuota en cada búsqueda
⏱️AdSense: el intervalo del "Resumen de ingresos" (15/30/45 minutos) ahora se guarda de verdad — antes, al recargar la página, volvía a 3 horas
🔔AdSense: la programación del resumen/alertas ahora también se ve en "Programados" y en el panel del Cron, junto al resto de tareas automáticas
💎 Mejorado7
💾Letras GUARDADAS: cada canción que transcribes se guarda en una lista ("Guardadas") — así no vuelves a gastar en transcribirla y puedes reabrirla al instante. También se guardan las traducciones por idioma. Puedes quitar las que no quieras o pulsar "Rehacer" para volver a transcribir una
📝Letras: la transcripción ahora sale MUCHO mejor estructurada en versos y estrofas (antes salía "corrida"): se reordena siempre con IA respetando las palabras exactas
⚡Chat MÁS RÁPIDO en arrancar a responder: quitamos trabajo innecesario antes de que la IA empiece a escribir — ya no se calcula un "embedding" (paso de búsqueda) en mensajes normales que no lo usan, y varias lecturas a la base de datos ahora van en paralelo. Menos espera hasta el primer token
🧠Memoria como en ChatGPT: cuando la IA guarda o actualiza un recuerdo, ahora sale un aviso "Memoria actualizada" — un toast al instante y una etiqueta visible en el mensaje (antes era un iconito diminuto)
💾"Analiza tu documento" MUCHO mejor: (1) cada análisis se GUARDA en "Mis análisis" y si vuelves a subir el mismo archivo NO se re-analiza (no gastas otra vez); (2) PROGRESO en tiempo real mientras analiza (Leyendo → Buscando cifras oficiales → Comprobando → Redactando); (3) export del informe a PDF bonito y a CSV (antes solo texto); y botón "Rehacer" para forzar un análisis nuevo. Nuevo diseño con fondo "liquid glass"
💶Coste visible en "Letras" y "Analiza tu documento": ahora ves el COSTE ESTIMADO de cada operación (en € y en créditos) y se cobran los créditos correspondientes. Lo que se sirve de la caché no gasta (0 €)
💸Letras más BARATO: la traducción y el ordenado en versos pasan a hacerse con un modelo en la nube de Ollama (gpt-oss 20B) — rápido, buena calidad y GRATIS (antes OpenAI de pago); OpenAI queda de respaldo. Así una letra baja de coste casi a 0 (solo la transcripción del audio usa OpenAI)
🐛 Arreglado5
🌐Arreglado: las páginas "Analiza tu documento" y "Letras" salían SIEMPRE en castellano aunque tu idioma fuese catalán (u otro); ahora respetan tu idioma en los 7 (es/ca/en/fr/de/it/pt)
🔔AdSense ARREGLADO: el resumen/alertas con intervalo de 15/30/45 minutos AHORA SÍ se envían (antes dependía de un cron de GitHub que en realidad solo se ejecutaba cada 2-3 horas; ahora se dispara desde el latido fiable del servidor cada minuto). Además, "Programados" y el panel de Cron muestran la ÚLTIMA EJECUCIÓN del resumen/informe
📱Carpetas: el modal de configuración se veía mal en MÓVIL — arreglado (cabecera, espaciados, botón de guardar con área segura y tarjetas de herramientas adaptadas a la pantalla)
📱Telegram — fotos ARREGLADO: al enviar un ÁLBUM (varias fotos) con una pregunta, el bot respondía con VARIAS burbujas (una por foto). Ahora agrupa el álbum y responde UNA sola vez analizando TODAS las fotos juntas. Y si preguntas algo concreto ("¿voy bien para salir?"), responde a ESO de forma breve en vez de soltarte una descripción larga de la imagen
🐛Arreglo importante: al abrir un chat en una PESTAÑA NUEVA (o al recargar), a veces salía vacío ("envía un mensaje") aunque el chat tuviera conversación, y había que refrescar. Ahora carga el historial a la primera
🔒 Seguridad3
🔒Carpetas: las herramientas por defecto del modal de configuración ahora respetan los BLOQUEOS por plan igual que el chat — las que tu plan no incluye salen con candado y llevan a planes (antes se podían activar sin límite)
📥Spotify: ya puedes IMPORTAR tu historial completo. Sube el ZIP del "Historial de reproducciones ampliado" que te envía Spotify (Cuenta → Privacidad) en la pestaña Historial y se añaden TODAS tus reproducciones de años a tus estadísticas (Artistas, Canciones, Resumen). No duplica si lo subes otra vez
🔒"Analiza tu documento": nuevo interruptor "Anonimizar datos personales" — oculta DNI, IBAN, emails y similares (con Presidio) ANTES de enviar el documento; y un aviso claro de privacidad. Tú decides qué mandas
Cambios detallados16 · 4
Chat e input
7
Arreglado: abrir un chat en una pestaña nueva ya no muestra "envía un mensaje" hasta refrescar — carga el historial a la primera
El chat tarda menos en empezar a responder: se evita un paso de búsqueda (embedding) en los mensajes que no lo necesitan y varias consultas van en paralelo
El cuadro de escribir ya no parpadea con cada letra ni se solapa con los iconos de la derecha: se expande y se mantiene estable
Las herramientas activas (chips) van ahora al lado del botón "+", en la misma fila de controles (estilo ChatGPT)
Menú "@" al día: incluye TODAS las herramientas (antes solo 6), cada una con su icono propio
Tooltips propios y más pulidos (glass, muelle, retardo natural) en toda la app, incluido el botón "+"
Abrir un chat con el clic central del ratón (o Ctrl/Cmd+clic) abre una nueva pestaña de verdad
Voz
2
Nuevo control de "Sensibilidad del micrófono": amplifica tu voz y afina la detección para micros flojos o lejanos
Por defecto ya es bastante más sensible que antes
Carpetas
2
Las herramientas por defecto se activan también al ABRIR directamente un chat de la carpeta (antes solo en un chat nuevo)
Añadidas Infografía, Flashcards y Reproductor de música al selector de herramientas por defecto
AdSense
5
El objetivo de pago se cambia con un clic en la propia barra de progreso
Las tarjetas de métricas (KPIs) y de cruce con el tráfico estrenan look premium
El intervalo del resumen de ingresos (15/30/45 min) ahora se guarda correctamente
La búsqueda web reserva Google/SerpAPI solo para productos, ahorrando cuota mensual
La programación del resumen/alertas se ve también en "Programados" y en el panel del Cron
🎛️ Modelo de IA por plan (búsqueda web e imágenes) + blog renovado
08 de julio de 2026
El administrador puede ahora elegir QUÉ modelo responde según tu plan de suscripción: en la búsqueda web (cuando el modelo va en Automático) y en la generación de imágenes. Además, el blog estrena filtro por categoría y buscador, con tarjetas nuevas.
Lo destacado
20
✨ Nuevo12
💬Telegram: cuando preguntas por datos de ACTUALIDAD (resultados deportivos, precios, noticias, el tiempo…), el bot ahora BUSCA EN LA WEB sí o sí antes de responder, en vez de contestar de memoria con datos viejos o inventados
🎙️Los mensajes que dictas por voz ahora se marcan con un icono de micrófono ("Audio") en su burbuja, para distinguir de un vistazo lo que escribiste de lo que dictaste
📱Spotify: el menú de pestañas ahora se ve bien en móvil (se desliza en horizontal en vez de amontonarse/cortarse)
🎧Spotify · pestaña Resumen renovada: nueva tarjeta DESTACADA con tus minutos del periodo (horas equivalentes, racha y hora punta de un vistazo) y podio de medallas en tus canciones y artistas más escuchados
🎧Spotify · pestaña "Ahora" INMERSIVA: la canción que suena se muestra a lo grande con la portada difuminada de fondo, carátula grande centrada, barra de progreso con arrastre y controles XL (botón de play verde con glow)
🔁Spotify: si repites una canción (p.ej. das "atrás" y la vuelves a escuchar entera), ahora SÍ cuenta como otra reproducción y suma su tiempo en Resumen y Top — antes las repeticiones seguidas se fusionaban en una sola
🔎El modelo que redacta la respuesta en modo Automático con búsqueda web ahora se puede asignar por plan (Free / Pro / Max) desde el panel de administración
🖼️La generación de imágenes también puede usar un modelo distinto según tu plan de suscripción (configurable en el panel de administración)
📰Blog renovado: filtro por categoría y buscador en vivo, tarjetas nuevas con color por tema y un resumen (artículos, categorías, tiempo de lectura)
✨Detalle: el anillo dorado del avatar de administrador es ahora más elegante y discreto (dorado metálico, sin el destello amarillo)
🧠Memoria más lista: distingue lo que es tuyo para SIEMPRE (nombre, ciudad, preferencias) de lo que es solo de un chat concreto, y deja de mezclarlo en tu memoria personal. Además, lo que guardas en un chat vuelve a usarse al retomar ESE chat
🧠Panel de memoria renovado: cola de "por revisar" para confirmar/descartar lo detectado, mover un recuerdo entre personal y de chat, ponerle categoría o caducidad, y ver de qué conversación salió cada dato (con enlace)
💎 Mejorado6
🧠Telegram: en esas preguntas de actualidad el bot usa además un modelo con RAZONAMIENTO (razona → busca → responde con lo encontrado); la charla normal sigue con el modelo rápido de siempre, así que no cuesta más ni va más lento en el día a día
🎨Spotify más bonito: tarjetas de estadística con acento y elevación, PODIO oro/plata/bronce en tus tops, barras de "minutos por día" con degradado, y mapa de horas/calendario que ahora se ven bien también en modo oscuro
🎨El panel de Imágenes ahora aplica DE VERDAD toda su config: la sección "Editar imagen" (su propio modelo/tamaño/clave), Azure OpenAI (api-version) y los motores AUTOMATIC1111, Replicate y ComfyUI — antes varios eran decorativos
👤Tu perfil (en Ajustes) tiene campos nuevos: cargo, empresa, teléfono y zona horaria (con botón para detectar la de tu dispositivo)
📚Mejor precisión al preguntar sobre tus documentos y carpetas: la IA ordena los fragmentos por relevancia real antes de responder y distingue mejor de qué documento sale cada dato
🧹Corrección: "elimina toda la memoria" ahora la borra DE VERDAD (antes la IA decía que la borraba pero los recuerdos reaparecían), y se evitan mejor los recuerdos casi-duplicados
🐛 Arreglado1
🖼️Spotify · tarjeta para compartir mejorada: se ARREGLA el recorte de la columna de artistas, ahora con carátulas en las canciones, medallas en el top de artistas, mejor uso del espacio y un fondo más vistoso
🔒 Seguridad1
💳Facturación más robusta y segura: los créditos ya no se pueden duplicar por reintentos de pago, y si un pago tuviera un fallo puntual el sistema lo reintenta solo (nunca te quedas "pagado sin créditos"); además se reforzaron los permisos internos de las operaciones de crédito
🔎 Búsqueda web más potente (citas clicables) y sin archivos duplicados
07 de julio de 2026
La búsqueda web da un salto de calidad tipo ChatGPT: ahora entra a fondo en las páginas más relevantes, lanza una ronda de seguimiento si falta información, extrae solo los fragmentos que de verdad responden a tu pregunta y consulta también medios locales en su idioma para sucesos de tu zona. Las citas [N] de las respuestas ahora son clicables: tocas el número y se abre la fuente. Además, si vuelves a subir un archivo que ya tenías, dejamos de guardar una copia repetida en "Mis archivos": lo reutilizamos al instante.
Lo destacado
14
✨ Nuevo9
👁️NUEVO: lee GRÁFICAS e INFOGRAFÍAS de las páginas con IA de visión y usa sus cifras en la respuesta (cuando preguntas por datos, estadísticas, porcentajes…)
🗺️NUEVO: cuando la búsqueda trae lugares/sitios, aparece un MAPA con ellos (con cómo llegar), como en "cerca de mí"
🔦NUEVO: los PASOS de la búsqueda (qué buscó, qué páginas abrió) se muestran EN VIVO arriba, mientras responde (estilo Perplexity), y quedan en una tarjeta desplegable
🗺️Para sucesos locales (un incendio, una noticia de tu comarca) también busca en medios de la zona en su idioma (catalán, euskera, gallego, valenciano) — donde suele haber más detalle
🔗Las citas [N] de las respuestas ahora son clicables: tocas el número y se abre directamente la fuente
🧹Las respuestas ya no repiten al final una lista de "Fuentes" en texto: las fuentes siguen abajo en su panel con su icono, más limpio
📊NUEVO: en el chat tienes un indicador de "Uso estimado de tokens" (toca el icono junto a enviar): ves tu entrada, el contexto, cuántos mensajes entran y el total, con un botón para COMPRIMIR la conversación y un interruptor de compactación automática
🏷️Detalle: en la pantalla de inicio la pestaña del navegador muestra solo "GarBotGPT" (antes ponía "Chat · GarBotGPT")
🗜️Corrección: al pulsar "Comprimir conversación" cuando ya no queda nada nuevo que resumir, ya no vuelve a comprimir en balde (evitaba gastar una llamada y desajustar el contador del resumen)
💎 Mejorado5
🔎Búsqueda web mucho más lista: entra a fondo en las mejores páginas, hace una segunda ronda si falta info y saca solo los fragmentos que responden a tu pregunta (no el relleno de la página)
⚡NUEVO: en el chip de "Web" puedes elegir búsqueda RÁPIDA o A FONDO con un toque (a fondo abre páginas y hace una ronda extra; rápida va al grano)
📎Si vuelves a subir un archivo idéntico a uno que ya tienes, ya NO se guarda una copia duplicada en "Mis archivos": se reutiliza el que ya está (y va más rápido)
⚡Rendimiento: el menú lateral aparece antes al abrir la app (precargamos su código en segundo plano) y abrir un chat es más instantáneo (precalentamos la navegación al pasar el ratón por encima)
🚀Rendimiento: la web pública (landing) carga muchísimo más rápido — ahora se sirve como HTML estático y casi sin JavaScript (antes se renderizaba entera en el navegador); solo la calculadora y el botón flotante llevan código
Cambios detallados18 · 3
Búsqueda web
12
Lectura a fondo de las 2-3 páginas más relevantes + una ronda de seguimiento automática si falta información
Extracción por fragmentos (passage retrieval): solo se usan los trozos de página que de verdad responden, no los primeros párrafos
Reordenado de fragmentos por relevancia con un segundo pase de la IA, y limpieza previa de la página (fuera menús de cookies, código y ruido)
Visión sobre gráficas/infografías: lee las imágenes con datos de las páginas y usa sus cifras (solo cuando la pregunta pide datos, para no encarecer)
Mapa de lugares: si Google devuelve un "local pack" de sitios con coordenadas, se pinta un mapa en el chat (con cómo llegar)
Toggle rápida ↔ a fondo en el chip de Web: elige velocidad o profundidad por pregunta
Tarjeta desplegable con los pasos reales de la búsqueda (consultas, páginas abiertas, ronda de seguimiento)
Motores adicionales Brave y Exa (se activan al añadir sus claves), además de Google y Tavily
Variante de búsqueda en la lengua local para lugares/sucesos de tu zona (más detalle en medios locales)
Cuando las fuentes se contradicen, la respuesta lo dice y explica cuál es más fiable, en vez de elegir una en silencio
Citas [N] clicables en el chat: abren la fuente al tocarlas
Se quitó la lista de "Fuentes" repetida en el texto (ya estaban abajo en su panel)
Archivos
1
Deduplicación de subidas por contenido: subir el mismo archivo dos veces ya no crea copias en "Mis archivos", se reutiliza el existente y la subida es instantánea
Uso de tokens y contexto
5
Nuevo indicador "Uso estimado de tokens" en el chat: entrada actual, contexto, nº de mensajes en contexto, total y % del contexto del modelo
Conteo de tokens EXACTO (tokenizador real, no una estimación aproximada) y % sobre la ventana REAL de cada modelo; muestra el coste estimado en CRÉDITOS (no en dólares)
Botón "Comprimir conversación": resume el historial antiguo para ahorrar contexto conservando la memoria
Interruptor de compactación automática por conversación (se guarda): decide si el historial se resume solo cuando crece
Aviso "se comprimirá pronto" y chip discreto "🗜️ conversación comprimida" cuando ocurre
📊 Analítica de tráfico completa, podcast rediseñado y arreglos importantes
06 de julio de 2026
El panel de "Tráfico" del administrador se completa con geolocalización por IP (países y ciudades, sin pedir permisos), engagement (cuánta gente entra y NO usa la IA), nuevos vs recurrentes, mapa de actividad por hora y un feed de visitas en directo. Las páginas de Podcast (crear y compartir por enlace) se rediseñaron para verse como el resto de la app. En Telegram, la IA ya sabe la hora real y tu ubicación. Y se arregló de raíz la página de error de Synology que a veces aparecía al volver tras unos días (y el 502 al entrar logueado).
Lo destacado
9
✨ Nuevo3
🎙️Los podcasts salen con más datos y cifras REALES: ahora también busca en la web cuando partes de un texto pegado, no solo cuando das un tema suelto
🖱️En el menú "Más" de la barra lateral ya puedes abrir cada sección en una pestaña nueva (clic central del ratón o Ctrl/Cmd+clic)
📲En Telegram, la IA ya conoce la HORA real y tu UBICACIÓN (para "hoy", "ahora", el tiempo o sitios cercanos)
💎 Mejorado2
🎙️Las páginas de Podcast (crear y compartir por enlace) se rediseñaron con el mismo estilo limpio que el chat, en claro y oscuro — antes desentonaban
🖼️Las infografías salen MUCHO mejores: más densas y visuales, con iconos y mini-gráficos de verdad (antes parecían una ficha plana). Ahora la IA planifica el contenido y luego lo diseña
🐛 Arreglado2
🎧Página de Spotify mucho mejor: se actualiza en TIEMPO REAL (sin recargar), "Hoy" cuenta bien por día natural, el historial se separa por días, aparecen también las canciones sueltas que antes faltaban y arreglado el error al dar a "Me gusta"
🩹Arreglada de raíz la página de error de Synology que a veces salía al volver a la web tras unos días (una copia vieja guardada por el navegador) y el error 502 al entrar con la sesión iniciada
🔒 Seguridad2
📊Panel de "Tráfico" completo (self-hosted, sin Google): geolocalización por IP (países con bandera y ciudades, sin permisos), quién entra y NO usa la IA, dispositivos/navegadores/SO, páginas de entrada y salida, mapa de actividad por hora, nuevos vs recurrentes y un feed de visitas EN DIRECTO
📰Novedades (changelog) mucho mejor: buscador, filtros por tipo (nuevo/arreglo/rendimiento/diseño/seguridad), aviso de "nuevo para ti" desde tu última visita, línea de tiempo, feed RSS y en tus 7 idiomas. Y el blog rediseñado, más editorial
Cambios detallados26 · 7
Tráfico (admin)
4
Geolocalización por IP (país y ciudad, con bandera) sin pedir permisos al visitante
Engagement: cuánta gente entra y NO llega a usar la IA
Nuevos vs recurrentes, mapa de actividad por hora y feed de visitas en directo
Dispositivos, navegadores, SO, páginas de entrada y salida, fuentes de tráfico
Estabilidad
3
Arreglada de raíz la página de error de Synology que salía al volver tras unos días (Service Worker viejo cacheado)
Arreglado el 502 al entrar con la sesión iniciada (buffer del proxy para la cookie de sesión)
El puerto HTTP redirige limpio a HTTPS (antes caía en el 404 de Synology)
Podcast
3
Página compartida por enlace rediseñada con el estilo de la app (claro y oscuro)
Página de creación (estudio) alineada al mismo estilo limpio
Busca en la web para añadir datos y cifras reales aunque partas de un texto pegado (antes solo con un tema); si no hay tema, deriva la búsqueda del propio texto
Novedades y Blog
4
Buscador + filtros por tipo + "nuevo para ti" + copiar enlace + salto por mes
Feed RSS, datos estructurados (SEO), línea de tiempo y sparkline de cadencia
Interfaz en 7 idiomas y bloque "Lo destacado" reordenado por tipo
Blog rediseñado a estilo editorial (artículo destacado + rejilla)
Spotify
7
Se actualiza en tiempo real mientras la página está abierta (antes había que recargar)
Ahora guardamos tu historial de escucha: "Hoy / 7 días / 30 días" cuentan TODAS tus reproducciones, sin el tope de 50 que expone Spotify
"Hoy" cuenta por día natural; antes usaba una ventana móvil de 24 h y salían cifras infladas
El historial se separa por días, con resumen de canciones y minutos de cada día
Aparecen también las canciones sueltas / sin álbum que antes no se mostraban
La canción que suena ahora se ve al instante en "Escuchado hace poco"
Arreglado el error al pulsar "Me gusta": avisa y ofrece reconectar Spotify si faltan permisos
Telegram y app
3
En Telegram la IA ya conoce la hora real y tu ubicación
Mockup de móvil de la landing ahora es un Samsung con bisel fino
Menú "Más" de la barra lateral: abrir en pestaña nueva con clic central o Ctrl/Cmd+clic
Infografías
2
Generación en dos pasos (la IA planifica el contenido y luego lo diseña) para infografías densas y visuales
Librería de iconos y gráficos de verdad, con reintento si el diseño sale pobre
Rediseño completo de las pantallas de inicio de sesión y registro: un fondo "aurora" animado (sin el vídeo pesado de antes, así cargan más rápido y no dependen de un servidor externo), un panel de marca a la izquierda en pantallas grandes y un formulario más limpio con iconos. Toda la funcionalidad es la misma (correo, Google, invitado, recuperar contraseña). Se guardó una copia del diseño anterior por si hiciera falta volver.
Lo destacado
6
✨ Nuevo3
✨Formulario más claro, con iconos y mejores estados de foco
↻ Si una respuesta se corta por longitud, aparece un botón "Continuar" para seguir justo donde se quedó
✨Escritura de las respuestas más fluida: el texto se revela a ritmo constante aunque el modelo lo mande a ráfagas
💎 Mejorado3
🎨Login y registro con un diseño nuevo (fondo aurora + panel de marca)
⚡Más rápidos y ligeros: se quitó el vídeo de fondo externo
🧠La IA entiende mejor lo que le pides: ahora sabe siempre la fecha y hora reales (para "hoy", "esta semana", "el año pasado"), pregunta cuando algo es ambiguo en vez de adivinar, y capta mensajes cortos que se apoyan en lo anterior ("hazlo también con el otro", "y en catalán")
🎬 Vídeo con avatar, editar imágenes, Spotify y más
02 de julio de 2026
Nuevo generador de vídeo con AVATAR: escribe un guion y la IA crea un vídeo con un presentador que lo lee. La edición de imágenes se completa: además de quitar el fondo y retocar, ahora también puedes ampliar y mejorar la resolución. Nueva página de Spotify en la barra lateral (reproduciendo ahora, tus artistas y canciones más escuchadas por periodo, historial y controles). Y cuando el servidor tiene problemas, un aviso claro te lo dice en todas las páginas (antes te mandaba al login sin explicación). Además: los accesos rápidos de inicio ahora activan de verdad la herramienta, y varios arreglos.
Lo destacado
9
✨ Nuevo5
🎬Generación de vídeo con avatar que lee tu guion
🖼️Editar imágenes: quitar fondo, retocar y ahora también ampliar/mejorar resolución
🎧Nueva página de Spotify: reproduciendo ahora, tus tops, historial y controles
🚦Aviso claro en toda la app cuando el servidor tiene problemas (y la página de estado sigue funcionando)
💡Sugerencias personalizadas también en móvil: en la pantalla de inicio aparecen como chips para retomar lo que estabas haciendo de un toque
💎 Mejorado2
🔎Los accesos rápidos de inicio ya activan la herramienta
🔎La búsqueda en tus documentos de proyecto ahora es HÍBRIDA (semántica + palabras clave): encuentra mucho mejor nombres, códigos, referencias y cifras exactas
🐛 Arreglado2
🩹Si tras una caída del servidor tu navegador se quedaba mostrando una página de error antigua, ahora se repara solo (sin tener que borrar nada)
🐛Arreglos: "Reportar un problema" envía de verdad, ya no aparecen líneas técnicas raras, y el chip de "Genera vídeo" aparece bien colocado en el chat y en la pantalla de inicio
La página de Novedades pasa a ser estática con caché (ISR de Next.js): antes se generaba en el servidor en cada visita (~1,5s) y ahora se sirve desde caché casi al instante, con todo el historial intacto. Además, quitado un logo duplicado que había aparecido en la cabecera.
Lo destacado
1
💎 Mejorado1
⚡La página de Novedades abre casi al instante (caché ISR)
La página de Novedades (changelog) ahora abre mucho más rápido (antes tardaba unos segundos). Añadido el logo de GarBotGPT en la cabecera como ancla de marca cuando la barra lateral está plegada. El menú "Más" de la barra lateral se abre y cierra con animación y las opciones entran escalonadas. Y en el móvil, el último mensaje ya no queda tapado por la barra de escribir.
Lo destacado
3
✨ Nuevo2
📱En el móvil, el último mensaje ya no queda oculto tras el cuadro de texto
🎬Menú "Más" de la barra lateral con animación de apertura/cierre
El menú "Más" de la barra lateral (Imágenes, Podcast, Programados) ahora se despliega dentro de la propia barra al pulsarlo, con iconos de color y jerarquía. Antes era un desplegable flotante que se cerraba al mover el cursor hacia las opciones.
Lo destacado
1
✨ Nuevo1
📂"Más" de la barra lateral: se despliega inline y ya no se cierra solo
Pequeñas mejoras visuales: el número de versión es ahora discreto (arriba a la derecha), el estado "En línea" se integra bajo el saludo en la pantalla de inicio, y los iconos del menú de herramientas tienen color por tipo para localizarlos más rápido (las utilidades se quedan en gris).
Lo destacado
2
✨ Nuevo2
✨Iconos del menú de herramientas con color por tipo
La página de novedades (changelog) ahora es pública: se puede consultar y compartir sin iniciar sesión. Además, en el ordenador el bloque de la pantalla de inicio baja un poco para quedar mejor centrado.
El menú de herramientas del ordenador es ahora un poco más bajo (filas más compactas) para que quepa mejor en pantalla, y "Generar Video" (próximamente) se ha movido al submenú "Más", junto al resto de herramientas de generación. "Archivos recientes" se mantiene igual que antes.
Lo destacado
1
✨ Nuevo1
🧰Menú de herramientas más compacto en el ordenador
Nueva opción "Reportar un problema" en el menú de tu cuenta: si algo no funciona como esperas (aunque no dé un error visible), cuéntanoslo y se envía con una captura de pantalla para que lo arreglemos rápido. Además, la app ahora detecta y registra por su cuenta más fallos internos (errores registrados y respuestas fallidas del servidor).
Lo destacado
2
✨ Nuevo1
🛟Opción "Reportar un problema" en el menú de tu cuenta (con captura de pantalla)
🐛 Arreglado1
🔎Mejor detección automática de errores para arreglarlos antes
🧰 Menú que no se corta + cambiar de modelo en el inicio
01 de julio de 2026
Dos arreglos: (1) en el ordenador, con muchas herramientas el menú se abría hacia arriba y la parte de arriba quedaba oculta detrás del navegador; ahora se ajusta a la pantalla y hace scroll interno ("Archivos recientes" se abre como panel al pulsarlo). (2) En la pantalla de inicio no se podía cambiar de modelo (se volvía siempre al modelo por defecto); ahora tu elección se respeta.
Lo destacado
2
✨ Nuevo2
🧰El menú de herramientas ya no se sale por arriba de la pantalla
🔧En la pantalla de inicio ya puedes cambiar de modelo (antes se quedaba en el por defecto)
Arreglado: en el móvil, al elegir un modelo de la lista no se aplicaba (se quedaba en "Auto"). Ahora elegir un modelo a mano sale de "Auto" y se aplica al instante (también en el ordenador).
Lo destacado
1
✨ Nuevo1
🔧Elegir un modelo a mano ya cambia de modelo de verdad (antes se quedaba en "Auto")
El menú de herramientas en el ordenador ahora se ajusta a la pantalla y hace scroll cuando hay muchas (antes se salía por arriba y no se veía entero). La herramienta de Llamada queda marcada como "Próximamente" mientras terminamos de configurarla.
Lo destacado
1
✨ Nuevo1
🧰El menú de herramientas ya no se corta por arriba en el ordenador
Nueva herramienta "Llamada": dale un número y un objetivo (reservar mesa, preguntar horario, dejar un recado…) y GarBotGPT hace la llamada por voz, la conversa por ti y te deja un resumen del resultado con la transcripción. Además, en Telegram: cuando busca en la web ahora te pone botones para abrir las webs consultadas, y muestra en vivo qué está haciendo mientras te responde.
Lo destacado
3
✨ Nuevo3
📞GarBotGPT llama a un número real y cumple el objetivo por ti (planes Pro/Max)
🗒️Al colgar, resumen del resultado + transcripción de la llamada
🔎Telegram: botones a las webs visitadas al buscar + estado en vivo mientras responde
Nueva herramienta "Finanzas personales": sube tu extracto bancario (PDF, CSV o foto) y GarBotGPT te muestra ingresos, gastos y balance, un desglose de gastos por categoría, dónde más gastas e insights útiles. Tus datos se procesan en la UE con anonimización de datos personales.
Lo destacado
1
✨ Nuevo1
💰Sube tu extracto → panel de gastos por categoría + insights
Nueva herramienta: activa "Recibos → gastos", sube fotos de tus tickets y GarBotGPT los lee y te arma una tabla de gastos (comercio, fecha, categoría e importe) con el total, que puedes exportar a CSV. Ideal para autónomos y gestorías.
Lo destacado
2
✨ Nuevo2
🧾Sube fotos de tickets → tabla de gastos automática
Cuando comparas varios modelos, ahora un "moderador" lee todas las respuestas y añade un VEREDICTO DEL CONSEJO: en qué coinciden, en qué discrepan y cuál es la mejor respuesta combinada. Comparar modelos se convierte en un consejo de IAs con conclusión.
Lo destacado
1
💎 Mejorado1
⚖️Al comparar modelos, un veredicto de consenso con la mejor respuesta
Nueva herramienta "Flashcards": genera tarjetas de estudio sobre cualquier tema o documento. Se muestran girables (toca para ver la respuesta) y puedes exportarlas a Anki con un clic para repasar con repetición espaciada.
Ya puedes clonar tu propia voz: graba (o sube) 20-60 segundos de audio y GarBotGPT crea una voz con la que puede hablar. Elígela en el generador de podcast como la voz de un presentador. (Requiere un plan de ElevenLabs que permita clonación.)
Lo destacado
1
✨ Nuevo1
🎙️Clona tu voz grabando una muestra y úsala en el podcast
✏️ Editar un mensaje respeta la herramienta activa (también en PC)
01 de julio de 2026
Al editar un mensaje con una herramienta activa (podcast, presentaciones, mapa mental, agente, etc.), ahora se aplica correctamente tanto en móvil como en el editor de escritorio. Antes, en el editor in-place del PC no se activaba.
Lo destacado
1
✨ Nuevo1
✏️Editar un mensaje aplica la herramienta activa en móvil y en PC
🎙️ Elige voces y duración del podcast + share con portada
01 de julio de 2026
Antes de generar un podcast en el chat, ahora aparece una tarjeta para elegir la duración (1/3/5 min), el número de voces y qué voz tiene cada presentador. Al compartir un podcast, el enlace ya muestra su título, una descripción y la portada creada por la IA (antes salía la vista genérica). Además: las capturas de la web se ven nítidas, y el menú «Más» del lateral se abre bien.
Lo destacado
4
✨ Nuevo3
🎛️Card para elegir voces y duración antes de generar el podcast
🔗Compartir un podcast muestra su portada y título (WhatsApp, etc.)
🎙️ Podcast en el chat más fino + menú «Más» en el lateral
01 de julio de 2026
Mejoras del podcast en el chat: la tarjeta ya no desaparece mientras se genera, y ahora la herramienta también funciona al EDITAR un mensaje (antes al editar se ignoraba). Nuevo menú «Más» en la barra lateral que agrupa Imágenes, Podcast y Programados para dejar más espacio a tus chats. Y menos interrupciones de la pantalla «Actualizando» en el móvil tras una actualización.
Lo destacado
4
✨ Nuevo3
🎙️La tarjeta de podcast se mantiene visible durante toda la generación
✏️Editar un mensaje ahora respeta la herramienta activa (podcast y otras)
📂Menú «Más» en el lateral (Imágenes · Podcast · Programados)
La herramienta "Podcast" ahora genera el episodio directamente en la conversación, sin salir a otra página. Actívala (o escribe "podcast" + el tema), elige la duración y verás el progreso en vivo hasta obtener una tarjeta con reproductor, descarga en MP3 y transcripción. El podcast también queda guardado en tu historial.
Lo destacado
3
✨ Nuevo3
🎙️Podcast generado en el propio chat, con progreso en vivo
▶️Tarjeta con reproductor, descarga MP3 y transcripción plegable
⌨️Se activa desde la herramienta o escribiendo "podcast" + el tema
Los títulos automáticos de las conversaciones vuelven a ser solo texto (sin el emoji al principio). Los chats ya existentes conservan su título actual.
🩹 Arreglado el cuadro de mensaje con herramientas activas
30 de junio de 2026
Corregido un fallo visual en el chat de escritorio: al tener herramientas activas, los chips se solapaban con el texto y el botón "+". Ahora los chips ocupan su propia fila, ordenados encima del cuadro de escribir.
Lo destacado
1
🐛 Arreglado1
🩹Los chips de herramientas ya no se mezclan con el cuadro de texto
Los chips de herramientas activas del chat se ven mejor: cada herramienta tiene su color, aparecen con una animación suave, al pasar el ratón te dicen qué hacen, y cuando hay muchas activas se agrupan en "+N más" para no llenar la pantalla.
Lo destacado
3
✨ Nuevo2
🔽"+N más" cuando hay muchas activas
💡Tooltip "qué hace" en cada chip
💎 Mejorado1
🎨Color propio por herramienta (antes todos azules)
Corregido: al activar la herramienta de infografía, su etiqueta no se veía bien en el cuadro de mensaje (salía solo el icono). Ahora se muestra correctamente.
Ya puedes generar infografías sin salir del chat: activa "Generar infografía" en el menú de herramientas (icono 📊) o simplemente pide "hazme una infografía de…" y se activa sola. La infografía aparece en la conversación y queda guardada en tu galería.
El menú "@" del chat ahora muestra los elementos agrupados por secciones (Herramientas, Carpetas, Prompts, Tus archivos, Conversaciones, Modelos) para encontrarlos más rápido.
El menú "@" del chat se completa: escribe "@" y, además de modelos, herramientas, carpetas y prompts, ya puedes adjuntar uno de tus archivos (@archivo) o traer el contexto de otra conversación tuya (@chat) sin copiar y pegar.
El menú "@" del chat crece: además de modelos y herramientas, ya puedes activar una carpeta de conocimiento (@carpeta) o insertar uno de tus prompts guardados (@prompt) escribiendo "@" y filtrando por nombre.
Lo destacado
2
✨ Nuevo1
🔖@prompt — inserta uno de tus prompts guardados
💎 Mejorado1
📁@carpeta — activa una carpeta de conocimiento al instante
Escribe "@" en el chat y aparece un menú rápido para cambiar de modelo o activar una herramienta (búsqueda web, imagen, documento, código…) sin salir del cuadro de texto. Navega con las flechas y pulsa Enter. Es el primer paso: pronto añadiremos @carpeta, @prompt, @archivo y @chat.
Lo destacado
1
💎 Mejorado1
⌨️Menú "@" para elegir modelo o herramienta al instante
Nueva herramienta para crear infografías con un tema: la IA diseña la infografía (con datos, gráficos e iconos) y la genera como imagen lista para descargar y compartir. La tienes en la página de Imágenes: pulsa "Infografía", escribe el tema y listo. Aparece en tu galería como una imagen más.
Lo destacado
2
✨ Nuevo2
📊Crea infografías desde un tema (texto real, no imagen borrosa de IA)
🖼️Aparecen en tu galería de imágenes para descargar y compartir
🎙️ Voces premium ElevenLabs también en los podcasts
30 de junio de 2026
Ya puedes elegir voces premium ElevenLabs (mucho más naturales) para cada locutor del podcast, además de las de OpenAI. Si se agota la cuota de ElevenLabs, el podcast sigue generándose con una voz OpenAI automáticamente.
Lo destacado
2
✨ Nuevo2
🎙️Voces ElevenLabs seleccionables por locutor en los podcasts
🔁Si ElevenLabs no está disponible, cae a OpenAI sin cortar la generación
🎙️ Voces premium (ElevenLabs) + contacto que sí funciona
30 de junio de 2026
Nuevas voces premium ElevenLabs (mucho más naturales) para escuchar las respuestas, seleccionables en Ajustes → Voz junto a las de OpenAI. Además, el formulario de contacto de la web ya envía de verdad, y la demo de la portada es más grande.
Lo destacado
3
✨ Nuevo3
🎙️Voces premium ElevenLabs para "leer en voz alta"
✉️El formulario de contacto ahora envía el mensaje de verdad
El panel de administración del cron gana control: ejecutar/pausar/reactivar una tarea desde el panel, reintentar una fallida, filtrar la actividad (todos/OK/fallos), ver el detalle completo de cada evento y cargar más historial.
Lo destacado
1
✨ Nuevo1
🛠️Acciones por tarea y reintento desde el panel del cron (admin)
Crea automatizaciones con un clic desde plantillas listas (resumen diario del sector, reporte semanal, vigilar competencia, resumen de correos) y gestiona todas a la vez con "Pausar todas" / "Activar todas".
La página de Programados gana control: ejecuta una automatización al instante con el botón ▶️, mira su historial de ejecuciones (cuándo corrió y si fue OK o falló), duplica una automatización con un clic y filtra entre todas / activas / pausadas.
Lo destacado
4
✨ Nuevo3
▶️"Ejecutar ahora" una automatización concreta
⧉ Duplicar automatización (nace en pausa)
🔎Filtro: todas · activas · pausadas
🐛 Arreglado1
🕓Historial de ejecuciones por automatización (OK/fallo)
🩹 Los límites de automatizaciones ya leen bien tu plan
30 de junio de 2026
Corregido: las automatizaciones detectaban a todo el mundo como plan Free (1/semana), incluso a usuarios Pro/Max y administradores. Ahora se respeta tu plan real: Pro/Max tienen sus cupos y los administradores no tienen límite.
Lo destacado
1
🐛 Arreglado1
🩹Pro/Max y administradores ya no se ven limitados como Free
Las automatizaciones ahora se ajustan a tu plan: en Free puedes tener 1 automatización que se ejecuta 1 vez por semana (el horario viene fijo); en Pro hasta 3 al mes y en Max hasta 5 al mes, con ejecuciones más frecuentes. Verás tu límite y cuánto te queda al crear una.
En la página de automatizaciones programadas, el botón de eliminar ya funciona: ahora aparece la confirmación y la tarea se borra correctamente (antes no pasaba nada al pulsarlo).
Lo destacado
1
✨ Nuevo1
🗑️El botón de eliminar de "Programados" vuelve a funcionar
Ya puedes lanzar encuestas en un canal: pulsa el botón "+" del cuadro de mensaje → Encuesta, escribe la pregunta y las opciones (permite respuesta única o varias). Los resultados se actualizan EN VIVO para todos a medida que votan, con barras y porcentajes.
Los mensajes de los canales ahora llegan al instante por una vía directa (con la de la base de datos como respaldo): se ven antes y siguen llegando aunque la sincronización tenga un mal momento. Además, los canales con mucho historial van más ligeros.
✏️ Edita, varía y comparte imágenes desde la galería
29 de junio de 2026
En la página de imágenes ahora puedes editar cualquier imagen por instrucción ("quita el fondo", "ponlo de noche", "estilo acuarela"), crear una variación nueva con un clic, y copiar su enlace para compartirla.
La galería carga al instante (con un índice propio, en vez de rebuscar en todos tus chats) y con scroll infinito. Ahora puedes GENERAR imágenes desde la propia galería, marcarlas como favoritas, copiar su prompt, borrarlas y ver con qué modelo y tamaño se crearon.
Lo destacado
3
✨ Nuevo2
✨Generar imágenes desde la galería
⭐Favoritas, copiar prompt, borrar y metadatos por imagen
Afinamos el detector de errores: ya no te muestra el aviso de "se ha detectado un error" cuando en realidad solo se canceló una petición en segundo plano (algo normal al navegar). Verás ese aviso solo cuando haya un problema de verdad.
Lo destacado
1
🐛 Arreglado1
🤫El aviso de error ya no salta por peticiones canceladas (falsos positivos)
🗂️ Saludar en una carpeta ya no arrastra todos los archivos
29 de junio de 2026
Si tienes una carpeta con conocimiento activo y escribes un simple "Hola", el asistente ya no carga el contenido de todos los archivos (que ralentizaba y ensuciaba la respuesta). La búsqueda en tus documentos solo se activa cuando tu mensaje realmente pregunta algo.
Lo destacado
1
💎 Mejorado1
🗂️Los saludos ya no disparan la búsqueda en los archivos de la carpeta → respuestas más rápidas y limpias
En la pantalla de inicio, el estado "En línea", tu nombre y tu foto ya no esperan a que se renueve la sesión: aparecen de inmediato. Antes, al volver tras un rato, podían tardar varios segundos en mostrarse porque se quedaban esperando a renovar el acceso.
Lo destacado
1
💎 Mejorado1
⚡Estado "En línea", saludo y avatar instantáneos al abrir
Al crear tu cuenta, un breve asistente de bienvenida te configura en segundos: eliges tu idioma, cómo prefieres las respuestas (conciso, equilibrado o detallado) y qué te gustaría hacer. Con eso, GarBotGPT queda adaptado a ti desde el primer mensaje. Puedes saltarlo cuando quieras.
Lo destacado
1
✨ Nuevo1
👋Mini-asistente de bienvenida: idioma + estilo de respuesta + intereses
En Ajustes → Seguridad ahora ves la lista de dispositivos donde tienes la cuenta abierta (navegador, sistema, IP y última actividad), con tu dispositivo actual marcado. Puedes cerrar cualquiera por separado o todas las demás de golpe sin cerrar el que estás usando.
Lo destacado
2
✨ Nuevo1
🖥️Lista de dispositivos/sesiones con cierre individual
Cuando la IA capta o actualiza algo de tu memoria en automático durante una respuesta, ahora aparece un chip 📌 al final del mensaje; al pasar el ratón ves exactamente qué recordó o qué corrigió. Transparencia total de lo que guarda sobre ti.
Lo destacado
1
✨ Nuevo1
📌Chip que muestra lo que la IA recordó/actualizó en cada respuesta
En Ajustes → Personalización, tu lista de recuerdos ahora tiene buscador, muestra cuándo se usó cada uno por última vez (o "sin usar"), y un botón "Limpiar sin usar" para borrar de golpe los que llevan 30+ días sin tocarse.
Lo destacado
2
✨ Nuevo2
🔎Buscador en tus recuerdos
🧹Ve cuándo se usó cada uno y limpia los que no usas
El panel de Ajustes pasa de ~18 pestañas a ~14, más fáciles de escanear: "Actividad" agrupa Racha/Estadísticas/Logros, "Archivos" incluye Almacenamiento, "Integraciones" incluye Webhooks y Ubicación pasa a Cuenta — todo accesible con una sub-barra dentro de cada sección. No se ha perdido ninguna pantalla.
Lo destacado
1
✨ Nuevo1
🗂️Menos pestañas en Ajustes, agrupadas con sub-secciones
🧹 Dile a la IA que olvide algo + memoria más proactiva
29 de junio de 2026
Ahora puedes pedirle que OLVIDE cosas de su memoria ("olvida lo de mi trabajo", "no recuerdes mi dirección"): lo borra y te lo confirma. Y usa lo que recuerda de ti de forma más proactiva: si algo viene a cuento (un proyecto a medias, una preferencia), lo tiene en cuenta o lo retoma sin que tengas que pedírselo.
Lo destacado
2
✨ Nuevo2
🧹«Olvida lo de…» → borra ese recuerdo y lo confirma
La memoria de la IA ahora capta automáticamente datos con más matiz que antes se le escapaban (no solo patrones fijos): a qué te dedicas, tus proyectos, cómo prefieres las respuestas… Y cuando algo cambia (te mudas, cambias de trabajo o de preferencia), actualiza el dato antiguo en vez de acumular información contradictoria.
Lo destacado
2
💎 Mejorado1
🧠Recuerda automáticamente más cosas (y mejores) de lo que le cuentas
🐛 Arreglado1
♻️Actualiza/corrige los datos antiguos cuando cambian (sin contradicciones)
Al escribir un mensaje largo, el cuadro de texto ya no muestra la barrita de scroll a la derecha que afeaba el input. Se sigue pudiendo desplazar igual, pero sin esa barra.
Lo destacado
1
✨ Nuevo1
🧹Sin barra de scroll en el cuadro de mensaje al ampliarse
💬 Canales: mensajes al instante + barra de formato
28 de junio de 2026
Los mensajes de los canales ahora aparecen al instante en cuanto llegan (sin esperar a recargar). Además, el cuadro de mensaje tiene una nueva barra de formato: negrita, cursiva, tachado, código, cita y enlace, con un toque.
Lo destacado
2
✨ Nuevo1
✍️Barra de formato (negrita, cursiva, código…) en el cuadro de mensaje
En el menú del móvil, «Idioma» ahora abre un selector con los 7 idiomas (Español, Català, English, Français, Deutsch, Italiano, Português) y sus banderas. Antes solo alternaba entre español y catalán, así que desde inglés, francés, alemán, italiano o portugués no se podía cambiar bien. Ya se elige cualquiera con un toque.
Lo destacado
1
✨ Nuevo1
🌍Selector de los 7 idiomas con banderas en el menú móvil
Ya puedes crear recordatorios que se repiten por intervalo: «recuérdame cada 3 horas beber agua», «cada 30 minutos…», «cada 2 días…». Antes solo entendía «cada día» o «cada lunes»; ahora también por intervalo, y funciona tanto en el chat como en Telegram.
En móvil: la cabecera del chat para invitados ya no se corta (quitamos los botones de acceso duplicados —ya están en la pantalla de inicio—) y el nombre del modelo se ve completo. Además, el cuadro de mensaje de los canales pierde el degradado oscuro que aparecía encima.
Lo destacado
2
✨ Nuevo2
📱Cabecera de invitado sin solaparse y modelo legible
Ya puedes buscar y enviar GIFs en los canales de equipo: pulsa el botón «+» del cuadro de mensaje → GIF, busca y elige uno. Se envía como un mensaje más.
💬 Canales: nombres en menciones y mensajes al instante
26 de junio de 2026
En los canales de equipo, al mencionar a la IA ahora se muestra su nombre (p. ej. @GarBotGPT-5.5) en lugar del identificador interno, y los mensajes vuelven a llegar al instante al resto del equipo.
En los canales de equipo, mencionar a un modelo con @ (por ejemplo @gpt-5-5) no siempre generaba respuesta. Ya está arreglado: al mencionar a la IA por su nombre, responde siempre.
🌍 El saludo y los avisos de inicio, también en tu idioma
26 de junio de 2026
Completamos la traducción de la pantalla de inicio: el saludo (buenos días/tardes), el encabezado «Sugerencias para ti», el texto del cuadro de mensaje y el aviso inferior ahora se muestran en tu idioma. Antes, si no usabas español o catalán, estos textos seguían saliendo en español porque venían de la configuración del panel (que solo tiene esos dos idiomas).
Lo destacado
1
✨ Nuevo1
🌍Saludo, «Sugerencias para ti» y cuadro de mensaje en tu idioma
La pantalla de bienvenida del chat (saludo, accesos rápidos, sugerencias y avisos) ahora está completamente traducida a los 7 idiomas. Antes, fuera de español y catalán, varios textos salían en español; ahora se muestran en inglés, francés, alemán, italiano o portugués según tu idioma.
Más fiabilidad: si el modelo elegido está caído o saturado, en vez de darte un error el chat reintenta automáticamente con un modelo de respaldo y te responde igualmente. Antes, un fallo del proveedor cortaba la respuesta.
Lo destacado
1
✨ Nuevo1
🛟Respuesta garantizada con modelo de respaldo si el principal falla
Al preguntar por tus archivos, ahora la IA reordena los fragmentos por relevancia real a tu pregunta (no solo por parecido) antes de responder, así cita y usa los pasajes más útiles. Mejor calidad y mejores citas en preguntas sobre documentos.
Lo destacado
1
💎 Mejorado1
📚Mejor selección de fragmentos al consultar tus documentos
Ahora puedes adjuntar archivos de hasta 100 MB en los chats (antes el tope eran 30 MB). El administrador puede ajustar ese límite desde Ajustes generales.
Ya no se cierra la sesión sola por un hipo puntual del servidor. Antes, si la validación de la sesión fallaba un instante (servidor cargado), se te degradaba a invitado o se te mandaba al login. Ahora, si ya tienes sesión, se mantiene y se reintenta sin echarte.
Lo destacado
1
🔒 Seguridad1
🔒La sesión ya no se cierra sola por fallos transitorios
🕵️ Detección y redacción de datos personales (PII)
26 de junio de 2026
Nueva capacidad de seguridad: el sistema puede detectar y ocultar datos personales (emails, teléfonos, tarjetas, IBAN, DNI/NIE…) en un texto, mediante un motor de privacidad propio alojado en el servidor. Base para funciones de cumplimiento/privacidad.
Lo destacado
1
✨ Nuevo1
🕵️Detección/redacción de datos personales en el servidor
🛡️ Más protegido frente a instrucciones ocultas en webs y documentos
26 de junio de 2026
Refuerzo de seguridad: el asistente ahora trata el contenido de páginas web, documentos, correos y resultados de herramientas como datos, no como órdenes. Así, un documento o web con instrucciones maliciosas escondidas (“ignora las instrucciones anteriores…”) ya no puede secuestrar la respuesta.
Lo destacado
1
✨ Nuevo1
🛡️Defensa frente a “prompt injection” en contenido externo
El resumen de contexto de las conversaciones largas ahora es acumulativo: integra lo nuevo sin perder lo de hace muchos mensajes. Antes, al pasar de cierto tamaño, el resumen se quedaba congelado y se perdía el contexto intermedio. Ahora el asistente mantiene el hilo aunque la conversación sea kilométrica.
Lo destacado
1
✨ Nuevo1
🧠Memoria de contexto continua en conversaciones largas
Mejora interna de rendimiento: en conversaciones largas el modelo reaprovecha el contexto ya enviado (caché de prompt), así empieza a responder antes y consume menos. No cambia nada en cómo lo usas.
⏰ Recordatorios y automatizaciones: hora correcta y más control
26 de junio de 2026
Arreglada la hora de los recordatorios (salía 2 horas por debajo). En las automatizaciones ya puedes elegir en qué chat ver el resultado (o crear uno nuevo). Y si reprogramas a futuro una tarea ya terminada, vuelve a ejecutarse (antes se quedaba como “completada” y no saltaba).
Lo destacado
3
✨ Nuevo3
⏰La hora del recordatorio ahora es la correcta
🗂️Eliges el chat de la automatización (o que cree uno)
♻️Reprogramar una tarea terminada vuelve a ejecutarla
🤖 Las automatizaciones ahora siempre acaban en un chat visible
26 de junio de 2026
Si creas una automatización (tarea programada) sin asignarle un chat, al ejecutarse se crea uno automáticamente con el resultado, y las siguientes ejecuciones reutilizan ese mismo chat. Antes el resultado solo llegaba por notificación/email y no se podía ver en ningún sitio. Además, la notificación abre directamente el chat de la automatización.
Lo destacado
2
✨ Nuevo2
🤖Las automatizaciones programadas crean/usan un chat para que veas el resultado
🔔La notificación abre el chat exacto de la automatización
🏠 El logo y “Nuevo chat” también dejan la dirección limpia
26 de junio de 2026
Al pulsar el logo, “Nuevo chat” o volver al chat desde otras pantallas, la dirección se queda limpia (sin “/chat” al final), igual que al entrar. Las conversaciones siguen mostrando su enlace propio.
Lo destacado
1
✨ Nuevo1
🏠“Nuevo chat” y el logo vuelven a la dirección limpia
🏠 La página de inicio ya no muestra “/chat” en la dirección
26 de junio de 2026
Al entrar en la app, la dirección se queda limpia (sin “/chat” al final). Al abrir una conversación concreta sí sigue mostrando su enlace, como hasta ahora.
El panel de razonamiento ahora permanece visible junto al mensaje cuando termina la respuesta (antes desaparecía o saltaba al final). Y se desactiva en los modelos mini/nano, donde no rendía bien.
Lo destacado
1
✨ Nuevo1
🧠El panel de razonamiento ahora se queda tras la respuesta
🧠 Razonamiento visible para todos, en español y renovado
26 de junio de 2026
El panel “Pensando…” que muestra el razonamiento del modelo en vivo (y se colapsa a “Pensó durante X s ▸”) ahora está disponible para todos en los modelos que razonan, sale más a menudo, con el razonamiento en español y un diseño renovado.
Lo destacado
2
✨ Nuevo1
🧠Panel de razonamiento para todos (modelos que piensan)
En los modelos que razonan, ahora ves un panel “Pensando…” que se rellena en vivo con el razonamiento del modelo y se colapsa a “Pensó durante X s” cuando empieza a responder.
Lo destacado
1
✨ Nuevo1
🧠Panel de razonamiento en vivo para los modelos que piensan
Desde cualquier respuesta puedes “ramificar”: se crea una copia de la conversación hasta ese punto para probar otro camino sin perder el hilo original.
Lo destacado
1
✨ Nuevo1
🌿Ramificar/bifurcar conversaciones desde un mensaje
Nuevo botón en las respuestas del chat para compartir el mensaje como una imagen bonita, lista para redes. Además, arreglado el enlace público de podcast, que pedía iniciar sesión.
Lo destacado
2
✨ Nuevo1
🖼️Compartir un mensaje del chat como imagen
🐛 Arreglado1
🔗Arreglado: el enlace público de podcast ya no pide cuenta
Ahora puedes compartir un podcast con un enlace (botón compartir en “Tus podcasts”). Quien lo abra puede escucharlo y ver el guion sin necesidad de cuenta.
Lo destacado
1
✨ Nuevo1
🔗Comparte tus podcasts con un enlace público (sin login para escuchar)
En las respuestas del chat hay un nuevo botón para crear un recordatorio con ese contenido (en 1 hora, esta tarde o mañana). Te llegará por el chat y por notificación, como cualquier recordatorio.
🎙️ Podcast: generación estable y en segundo plano de verdad
25 de junio de 2026
Tres mejoras: la generación ya no se corta por “conexión interrumpida” en episodios largos (conexión mantenida viva); si aun así se corta, el podcast sigue generándose y ahora aparece solo en “Tus podcasts” aunque tarde varios minutos (antes dejaba de buscarlo a los 40s); y el historial carga más rápido.
Lo destacado
3
✨ Nuevo2
🎙️La generación de podcast ya no se interrumpe en episodios largos
⏳Si se corta, el podcast aparece solo al terminar (aunque tarde minutos)
➕ Canales: composer con menú “+” y tarjeta de perfil renovada
25 de junio de 2026
El cuadro de escribir en los canales ahora es más limpio: los botones (adjuntar, emoji, mencionar, comandos) se agrupan en un único botón “+”. Además, la tarjeta de perfil que se abre al tocar un avatar es más grande y bonita.
Lo destacado
2
✨ Nuevo1
➕Botón “+” en el composer de canales con menú de opciones
El buscador de la lista de canales ahora también encuentra mensajes en todos tus canales, no solo nombres. Toca un resultado para ir directo a ese canal.
Ahora la respuesta de la IA se ve escribiéndose en directo para TODOS los miembros del canal (antes solo quien la pedía). Además puedes usar @everyone (o @here) para avisar a todo el canal de una vez.
Lo destacado
2
✨ Nuevo1
📣Menciona a todo el canal con @everyone / @here
💎 Mejorado1
⚡La respuesta de la IA se ve en vivo para todos los miembros
Nuevos comandos en los canales: escribe “/” para ver el menú y usa /resumen (resume la conversación), /tldr (resumen ultra breve) o /traducir. Además, la IA de los canales ahora decide mucho mejor cuándo buscar en internet (con un clasificador, no por palabras clave).
Lo destacado
2
✨ Nuevo1
🤖Comandos /resumen, /tldr y /traducir en los canales (menú con “/”)
💎 Mejorado1
🔎La IA de canales decide mejor cuándo buscar en internet
En los canales, enviar un mensaje ya no espera a que la IA responda: el mensaje sale al instante y la respuesta del modelo llega cuando está lista, con un indicador de “la IA está escribiendo…”.
Lo destacado
2
✨ Nuevo1
✍️Indicador “la IA está escribiendo…” mientras genera la respuesta
💎 Mejorado1
⚡Envío instantáneo en canales (la IA ya no bloquea el envío)
📱 Cabecera móvil limpia también en Apps e Imágenes
25 de junio de 2026
Corregido: en Apps e Imágenes (que internamente cuelgan del chat) la cabecera móvil seguía mostrando los controles de chat; ahora también ahí aparece solo el botón de menú.
Lo destacado
1
✨ Nuevo1
📱Cabecera móvil: solo el botón de menú también en Apps e Imágenes
El menú de selección de modelos estrena buscador también en ordenador y móvil (antes solo aparecía en una de las vistas), y los modelos disponibles en planes superiores se ven ahora con el mismo diseño de tarjeta que el resto, con su insignia de plan.
Lo destacado
2
✨ Nuevo1
🔎Buscador de modelos en el menú (PC y móvil)
🔒 Seguridad1
🔒Modelos de plan superior con diseño coherente e insignia
En móvil, páginas como Imágenes, Apps o Calendario ya no muestran el selector de modelo ni el botón de nuevo chat (que solo tienen sentido en el chat): ahora solo aparece el botón de menú, dejando la cabecera limpia.
Lo destacado
1
✨ Nuevo1
📱En móvil, fuera del chat la cabecera solo muestra el botón de menú
📬 Seguimiento de correos (admin): enviado/entregado/leído
25 de junio de 2026
El envío de correos desde el panel de administración ahora lleva seguimiento estilo WhatsApp: un check al enviarse, doble check al entregarse y doble check azul cuando el destinatario lo abre. En el historial verás cuántos se han leído.
Lo destacado
1
✨ Nuevo1
📬Doble check de correos (enviado/entregado/leído) en el panel de admin
El menú de selección de modelos estrena diseño: icono en tarjeta, el modelo activo resaltado con un acento violeta, descripción visible también en ordenador y unos pequeños iconos que muestran qué sabe hacer cada modelo (visión, web, imágenes, razonamiento…). Además, ahora al registrarte recibes un correo de bienvenida.
Lo destacado
2
✨ Nuevo2
✨Menú de modelos con iconos de capacidades, descripción y modelo activo resaltado
La sección de Aplicaciones se marca como Beta (está en construcción) con su distintivo en el menú. Microsoft 365 y GitHub pasan a "Próximamente" mientras terminamos de configurarlos, y se ha retirado monday CRM.
📅 Nueva sección "Programados" para tus recordatorios
25 de junio de 2026
En el menú lateral ahora tienes "Programados": una página dedicada y con un diseño cuidado donde ves tus recordatorios y automatizaciones activas, los puedes pausar, reanudar o eliminar, y crear nuevos. Además, el menú lateral está traducido a los 7 idiomas.
Lo destacado
2
✨ Nuevo2
📅Página "Programados" para gestionar tus recordatorios y automatizaciones
🧠 Arreglado el resaltado del selector de razonamiento
25 de junio de 2026
Corregido que al pasar el ratón por encima de un nivel de razonamiento se volviera casi blanco y no se leyera bien. Ahora se resalta en violeta con buen contraste.
Lo destacado
1
💎 Mejorado1
🧠Mejor contraste al pasar el ratón por los niveles de razonamiento
🧠 Selector de razonamiento rediseñado (con medidor de intensidad)
25 de junio de 2026
Nuevo diseño del selector de nivel de razonamiento: un control elegante con un medidor visual que muestra cuánto "piensa" cada nivel (las barras crecen de Auto a Extra), acento violeta en el nivel activo y la descripción integrada. Más bonito y claro, en móvil y en escritorio.
Lo destacado
1
💎 Mejorado1
🧠Selector de razonamiento con medidor de intensidad y diseño premium
El menú de nivel de razonamiento (dentro de cada modelo) ahora se muestra como una fila de botones compacta con la descripción del nivel elegido, en lugar de una lista larga que ocupaba media pantalla en el móvil.
Lo destacado
1
💎 Mejorado1
🧠Menú de razonamiento más compacto y rápido de usar en móvil
Tablas del chat rediseñadas por completo: tarjeta elegante con sombra suave, cabecera con un degradado violeta/índigo (sin mayúsculas duras), filas limpias con resaltado al pasar el ratón, números alineados a la derecha y la fila de Total con acento de color. Se ven mucho mejor y consistentes mientras se escriben y una vez generadas.
Lo destacado
1
💎 Mejorado1
✨Nuevo diseño de tablas: tarjeta premium con cabecera de color y fila de Total destacada
Rediseñadas las tablas del chat con un look más moderno (estilo ChatGPT): ocupan el ancho cómodo, cabeceras más legibles (sin mayúsculas duras), líneas limpias, números alineados a la derecha y la fila de Total resaltada. Se ven mejor tanto en ordenador como en móvil.
Lo destacado
1
💎 Mejorado1
📊Tablas del chat rediseñadas: más limpias, modernas y legibles
📊 Tablas en todos los modelos + búsqueda web que razona sola
25 de junio de 2026
Ahora todos los modelos (también los más ligeros) presentan los datos comparativos en tablas ordenadas. Y la búsqueda web automática ya no depende de palabras clave: un modelo entiende tu intención y decide solo si hace falta buscar en internet, así que deja de activarse cuando no toca (p. ej. al pedir tus propios datos) y se activa cuando de verdad necesitas información actual. Además, la página de Planes ya está en los 7 idiomas.
Lo destacado
2
✨ Nuevo2
📊Todos los modelos usan tablas para datos comparativos
🌐Búsqueda web automática que entiende tu intención (sin palabras clave)
Si la app detecta un error, aparece un aviso discreto que te ofrece enviárnoslo: adjunta automáticamente los datos del error y una captura de pantalla (solo se envía si pulsas "Enviar"). Así podemos encontrar y arreglar los fallos mucho más rápido. Disponible en los 7 idiomas.
Lo destacado
1
🐛 Arreglado1
🐞Aviso para reportar errores con captura de pantalla automática (solo al detectar un fallo real)
Las pantallas de inicio de sesión, registro, recuperar contraseña y acceso bloqueado ya están traducidas a los 7 idiomas (antes salían en español si tu idioma era inglés, francés, alemán, italiano o portugués). Además se han mejorado y completado las traducciones del resto de la app en esos idiomas.
Lo destacado
2
✨ Nuevo2
🌍Login, registro y recuperar contraseña traducidos a los 7 idiomas
✨Traducciones más completas en inglés, francés, alemán, italiano y portugués
Ajustes estrena una pestaña "Seguridad": cierra sesión en todos tus dispositivos, exporta todos tus datos (chats, memorias y perfil) en un archivo y elimina tu cuenta si quieres (RGPD). Además, un buscador arriba de Ajustes para encontrar cualquier opción al instante, y secciones reordenadas. Y en el menú de razonamiento, los niveles bloqueados te llevan a los planes al pulsarlos.
Lo destacado
2
✨ Nuevo1
🔎Buscador dentro de Ajustes para saltar a cualquier opción
🔒 Seguridad1
🔐Pestaña Seguridad: cerrar sesión en todos los dispositivos, exportar mis datos y eliminar cuenta (RGPD)
El menú de razonamiento ahora tiene 6 niveles: Auto, Mínimo, Bajo, Medio, Alto y Extra. "Mínimo" es lo más rápido (casi sin razonar) y "Extra" es el razonamiento máximo para preguntas muy exigentes. Si el modelo no soporta un nivel, se ajusta solo al más cercano sin perder la respuesta.
Lo destacado
1
💎 Mejorado1
🧠Nuevos niveles de razonamiento "Mínimo" (más rápido) y "Extra" (máximo)
La tarjeta de "Consumo de tokens" ahora indica el nivel de razonamiento que usó el modelo (Bajo/Medio/Alto), y el coste se calcula con ese nivel real: razonar más cuesta más, como debe ser.
Lo destacado
1
✨ Nuevo1
🧠La tarjeta de consumo muestra el nivel de razonamiento usado y ajusta el coste a ese nivel
En el menú de modelos, los modelos que razonan tienen ahora un menú desplegable para elegir el nivel: Auto, Bajo, Medio o Alto, cada uno con una breve descripción. Sube el nivel para preguntas difíciles (lógica, mates, análisis) y GarBotGPT pensará más a fondo; bájalo para respuestas más rápidas. Cada modelo recuerda tu elección. En escritorio y móvil.
Lo destacado
1
✨ Nuevo1
🧠Menú de nivel de razonamiento (Auto/Bajo/Medio/Alto) con descripciones, dentro de cada modelo
GarBotGPT ahora entiende mejor cuándo una pregunta necesita información actual: si no está claro por las palabras, un clasificador rápido analiza la pregunta y decide si buscar en internet (como hace ChatGPT). Así deja de fallar en casos raros y busca cuando hace falta.
Lo destacado
1
✨ Nuevo1
🧠Clasificador inteligente que decide si activar la búsqueda web
Ampliada la búsqueda web automática: ahora también se activa al preguntar por productos nuevos (p. ej. "los nuevos iPhone"), subidas/bajadas de precio, "cuánto costará", fechas de lanzamiento, rumores y filtraciones. Así GarBotGPT busca y te muestra las fuentes, en vez de decir que no tiene datos.
Lo destacado
1
✨ Nuevo1
🌐Búsqueda web automática en más preguntas (precios, productos nuevos, lanzamientos, rumores)
Arreglado que al abrir el menú de modelos por primera vez aparecieran algunos bloqueados (y hubiera que recargar). Ahora se muestran disponibles desde el principio y los bloqueos reales se aplican al instante.
Lo destacado
1
✨ Nuevo1
🔓El menú de modelos ya no muestra bloqueos falsos en la primera carga
Cuando preguntas algo que necesita información en tiempo real o reciente (noticias, el tiempo, precios actuales, resultados…), GarBotGPT ahora activa la búsqueda web automáticamente y te responde con datos actuales, en vez de decir "no tengo datos en tiempo real".
Lo destacado
1
✨ Nuevo1
🌐Búsqueda web automática cuando la pregunta necesita datos actuales
La página de inicio ya no se guarda en caché durante mucho tiempo (antes podía servirse una versión vieja días después). Es una de las causas de tener que limpiar la caché para que la web cargara bien.
Arreglado el fallo por el que la vista previa cambiaba de chat sola al mover el ratón. La ventana de búsqueda es más grande y está mejor centrada, y la vista previa de cada chat se ve mucho mejor (mensajes en tarjetas, mejor tipografía, documentos e imágenes).
Lo destacado
2
✨ Nuevo2
🔎La vista previa ya no salta de chat al mover el ratón
✨Búsqueda más grande, centrada y con vista previa mejorada
🔔 Tus notificaciones ya no se pierden al limpiar la caché
23 de junio de 2026
La preferencia de notificaciones del navegador ahora se guarda en tu cuenta (no solo en el navegador), así que se mantiene aunque limpies la caché o cambies de dispositivo. Se reactiva sola si el permiso del navegador sigue concedido.
Lo destacado
1
✨ Nuevo1
🔔La preferencia de notificaciones se guarda en tu cuenta
El botón Buscar del menú lateral ahora abre una búsqueda centrada solo en tus chats (con la vista previa), sin acciones ni herramientas. La búsqueda completa (con comandos, modelos y herramientas) sigue disponible con ⌘K.
Lo destacado
1
✨ Nuevo1
🔎Buscar del menú lateral muestra solo chats; ⌘K sigue siendo la búsqueda completa
🔎 Vista previa de búsqueda: documentos e imágenes web
23 de junio de 2026
La vista previa del chat en la búsqueda ahora muestra correctamente las tarjetas de documentos y presentaciones generados (Word/PDF/Excel/PowerPoint) y las imágenes de búsqueda web con su fuente, igual que en el chat.
Lo destacado
1
✨ Nuevo1
🔎La previa renderiza tarjetas de documento/presentación e imágenes web
🌐 Contenido del panel de Ajustes traducido (inglés)
23 de junio de 2026
Todo el contenido del panel de Ajustes (perfil, integraciones, voz, Spotify, estadísticas, apariencia…) ahora se muestra en inglés cuando tienes ese idioma; antes se quedaba en castellano. Los demás idiomas (francés, alemán, italiano, portugués) llegarán a continuación.
🔎 Buscar del menú lateral abre la búsqueda con vista previa
23 de junio de 2026
El botón Buscar del menú lateral ahora abre la búsqueda grande con vista previa del chat (antes solo mostraba un filtro). Además, la ventana de búsqueda es más ancha para ver mejor la vista previa.
Lo destacado
2
✨ Nuevo2
🔎El Buscar del menú lateral abre la búsqueda con preview
Las acciones rápidas de la pantalla de inicio (Modo Agente, Genera una imagen, Crea un podcast, Investigación profunda, Buscar en la web, Analiza un documento) ahora se traducen en todos los idiomas.
Lo destacado
1
💎 Mejorado1
🌐Acciones rápidas del inicio traducidas en los 7 idiomas
Las secciones y pestañas del panel de Ajustes (Tu cuenta, Personalización, Tu contenido, Apariencia y voz, Progreso, tamaño de texto…) ahora se traducen correctamente en todos los idiomas. Antes algunas se quedaban en castellano.
Lo destacado
1
✨ Nuevo1
🌐Pestañas y secciones de Ajustes traducidas en los 7 idiomas
🔎 Búsqueda con vista previa del chat (estilo Grok)
23 de junio de 2026
La búsqueda (⌘K) ahora muestra tus chats recientes y, al pasar el ratón por encima de cualquiera, una vista previa completa a la derecha con su contenido real: texto, código e imágenes generadas. Así encuentras el chat correcto sin tener que abrirlo.
Lo destacado
2
✨ Nuevo2
🔎Vista previa del chat al pasar el ratón en la búsqueda
El selector de idioma ahora es un menú desplegable elegante con banderas reales (antes en Windows salían como "ES"/"GB" porque el sistema no dibuja los emoji de bandera).
Lo destacado
1
✨ Nuevo1
🏳️Banderas SVG que se ven en todos los dispositivos + menú desplegable
🌍 Cuatro idiomas más: Francés, Alemán, Italiano y Portugués
23 de junio de 2026
GarBotGPT ya habla francés, alemán, italiano y portugués, además de inglés, español y catalán. Cámbialo en Ajustes → Apariencia, o déjalo que detecte el de tu navegador automáticamente.
Lo destacado
1
💎 Mejorado1
🇫🇷 🇩🇪 🇮🇹 🇵🇹 Interfaz disponible en francés, alemán, italiano y portugués
GarBotGPT ya está disponible en inglés, y al entrar por primera vez detecta el idioma de tu navegador automáticamente. Puedes cambiarlo cuando quieras en Ajustes → Apariencia. Pronto llegarán más idiomas (francés, alemán, italiano, portugués).
En el tema de Sant Joan el menú de herramientas se veía con el texto apagado y el fondo transparente (se colaban los fuegos artificiales detrás). Ahora el panel es opaco y el texto se lee bien. Solo afecta a este tema.
Lo destacado
1
✨ Nuevo1
🎆Menú de herramientas legible en el tema Sant Joan
La barra superior carga menos cosas de golpe (ventanas pesadas solo cuando se abren) y deja de hacer comprobaciones en segundo plano que no hacían falta si no usas Spotify. Resultado: arranque más rápido y menos consumo de batería/datos.
Lo destacado
2
✨ Nuevo1
🔋Menos comprobaciones en segundo plano (menos batería/datos)
🪄 Telegram: úsame en cualquier chat + "Abrir en la web"
23 de junio de 2026
Ahora puedes escribir "@GarBotGPT_bot tu pregunta" en CUALQUIER chat de Telegram y compartir la respuesta sin añadir el bot (modo inline). Y cada respuesta del bot incluye un botón "Abrir en la web" para seguir esa misma conversación en la app.
Lo destacado
2
✨ Nuevo2
🪄Modo inline: @GarBotGPT_bot … en cualquier chat de Telegram
🌐Botón "Abrir en la web" para continuar la conversación en la app
La auto-reparación de la versión anterior recargaba la página en la primera visita de TODOS los dispositivos, haciéndola lenta. Ahora solo recarga los dispositivos que de verdad tenían una copia antigua atascada; el resto carga directo y rápido.
🔄 La app se auto-repara (adiós a "borra la caché")
23 de junio de 2026
Si tu navegador tenía guardada una copia antigua o una página rota (por ejemplo la página de error que aparecía durante una actualización), la app ahora lo detecta y se refresca sola, una sola vez, sin que tengas que borrar nada ni reinstalar. Se aplica en todos los dispositivos automáticamente.
Lo destacado
1
✨ Nuevo1
🔄Auto-recuperación: limpia la copia obsoleta y recarga sola, sin intervención del usuario
💬 Telegram: pregunta por los comandos en lenguaje natural
23 de junio de 2026
En Telegram ahora puedes pedir "¿qué comandos hay?", "todos los comandos disponibles" o escribir /comandos y el bot te lista todo lo que puede hacer. Antes solo respondía al comando exacto /ayuda.
Lo destacado
1
✨ Nuevo1
💬«todos los comandos disponibles» (o /comandos) muestra la ayuda completa en Telegram
Al cumplirse un recordatorio (o cualquier tarea programada) ahora llega una notificación push de verdad al navegador/app, aunque la tengas cerrada. Antes solo aparecía si tenías la app abierta.
Lo destacado
1
✨ Nuevo1
🔔Aviso push real al saltar el recordatorio (con la app cerrada también)
⏰ Recordatorios más fiables (detección + aviso en el chat)
23 de junio de 2026
Mejorada la detección de "recuérdame/avísame/recordatorio" (ahora aguanta tildes y erratas como "recurdame" y frases tipo "vale, recuérdame…") para que el recordatorio se cree de verdad. Y al llegar la hora, el aviso aparece también en el propio chat (antes solo intentaba notificación/Telegram).
Lo destacado
2
✨ Nuevo1
💬El aviso del recordatorio llega también dentro del chat
🐛 Arreglado1
⏰Detección de recordatorios robusta a tildes y erratas
El borde de color que aparece mientras la IA responde ahora es fijo (antes giraba y, al ser el input ovalado, se veía una forma rara). Queda como un borde-gradiente limpio alrededor de la caja.
Lo destacado
1
✨ Nuevo1
✨Borde de generación estático y limpio en el input
✨ Input: animaciones más vivas (envío, voz y adjuntos)
23 de junio de 2026
Al enviar, la caja hace un leve "pulso". Al dictar por voz, el input se transforma con una onda animada y "Escuchando…". Y los archivos adjuntos entran con un rebote sutil.
La caja de escribir ahora muestra un borde de color animado mientras la IA está generando, y al arrastrar un archivo encima se resalta con "Suelta para adjuntar". Ambos efectos usan el color del tema activo.
Lo destacado
2
✨ Nuevo2
💫Borde animado (aura) mientras la IA responde
🧲Arrastrar y soltar archivos con resaltado en el input
El menú de herramientas del chat tiene ahora un buscador: escribe y filtra al instante todas las herramientas (también las avanzadas), sin tener que recorrer toda la lista.
Lo destacado
1
✨ Nuevo1
🔎Busca herramientas por nombre en el menú del composer
🧰 Herramientas del chat: nombres claros y con descripción
23 de junio de 2026
El menú de herramientas del chat ahora muestra una breve descripción al pasar el ratón (o mantener pulsado) sobre cada una, en PC y móvil. Y el nombre del generador de presentaciones es coherente en todas partes ("Generador de Presentación").
Lo destacado
2
✨ Nuevo2
💡Descripción de cada herramienta (tooltip) en PC y móvil
Rediseño visual del Generador de Presentación: portada más cuidada, cabecera limpia, viñetas con acento de color, contenido centrado, formas decorativas y diapositivas de dato/cita/sección más elegantes. Además, ya no aparecen los marcadores de fuente [5] ni se cuelan los parámetros del pedido como contenido.
Lo destacado
2
✨ Nuevo2
✨Diapositivas más elegantes (portada, viñetas con acento, formas, centrado)
🧹Fuera los "[5]" del texto y los bullets de parámetros del pedido
🪄 Generador de Presentación: se activa solo y usa datos reales
23 de junio de 2026
La herramienta pasa a llamarse "Generador de Presentación" y se activa sola al escribir palabras clave (presentación, diapositivas, PowerPoint, deck…), igual que la búsqueda web. Y si pides cifras o datos actuales, busca en la web para usar datos reales con fuentes.
Lo destacado
2
✨ Nuevo2
🪄Se activa solo al mencionar presentación/diapositivas/PowerPoint/deck
🌐Usa datos reales de la web (con fuentes) cuando pides cifras o actualidad
📊 Presentaciones mucho mejores: gráficas, diseños y temas
23 de junio de 2026
La herramienta de Presentación (PPT) ahora genera gráficas reales (barras, líneas, tarta), diapositivas con diseños variados (sección, dato grande, cita, gráfica) y elige un tema visual según el asunto (corporativo, oscuro, minimal o colorido).
Lo destacado
3
✨ Nuevo1
📊Gráficas reales en las diapositivas (barras/líneas/tarta)
💎 Mejorado2
🧱Diseños variados: sección, dato grande, cita y gráfica
Ahora puedes escribirle a la IA "recuérdame sacar la basura mañana a las 8" o "avísame el viernes de la reunión" y crea el recordatorio: te llegará un aviso (notificación, y también en el chat/Telegram) a esa hora.
Lo destacado
2
✨ Nuevo2
⏰Crea recordatorios hablando con la IA ("recuérdame…", "avísame…")
🔔Aviso por notificación, chat y Telegram a la hora indicada
La barra superior con el tema de Sant Joan ahora es transparente (igual que Navidad y Halloween): el contenido flota sobre el fondo festivo y desaparece la raya del borde.
Lo destacado
1
✨ Nuevo1
🔥Cabecera transparente en Sant Joan, sin ninguna raya
Cuando compartes un enlace de una sección (Podcast, Imágenes, Mis archivos, Canales, GPTs, Calendario…), la vista previa ahora muestra el nombre y el icono de esa página, no el genérico.
Lo destacado
1
✨ Nuevo1
🔗Vista previa de enlaces personalizada por página (nombre + icono)
La barra superior con el tema de Sant Joan ahora es de color sólido (sin transparencias que dejaban ver una raya de color en el borde). Ni azul ni rojo: oscuro cálido.
🛸 Sant Joan: show de drones 3D + petardos multicolor
22 de junio de 2026
Nuevo espectáculo de drones de luz en 3D (con profundidad y brillo real) que se ensamblan formando palabras de la verbena, ahora por DETRÁS del chat. Y los fuegos artificiales vuelven a ser de muchos colores.
Lo destacado
2
✨ Nuevo2
🛸Drones 3D realistas que escriben palabras, de fondo
El texto que escribes ahora se lee bien con el tema de Sant Joan, los fuegos artificiales son solo cálidos (sin líneas azules cruzando) y "Mis archivos" ya tiene su botón de Compartir por enlace.
Lo destacado
2
✨ Nuevo2
✍️Texto del mensaje legible con el tema de Sant Joan
🎙️ Podcast: historial + generación a prueba de cortes
22 de junio de 2026
Ahora todos tus podcasts se guardan en "Tus podcasts": puedes volver a escucharlos, descargarlos o borrarlos cuando quieras. Y si se corta la conexión (por ejemplo en el móvil al salir del navegador), la generación continúa en segundo plano y el podcast aparece igualmente en tu historial.
Lo destacado
2
✨ Nuevo2
📚Historial de podcasts: reproducir, descargar y borrar
📱La generación ya no se rompe al salir del navegador en el móvil
🎙️ Podcast: voces en español más naturales + botón Mejorar
22 de junio de 2026
Arreglado el problema por el que algunas voces del podcast "se volvían inglés raro" a mitad del episodio (se anclan al acento español y se evita el motor de respaldo con acento inglés). Y ahora puedes pulsar "Mejorar" para que la IA pula el tema antes de generar.
Lo destacado
2
✨ Nuevo2
🗣️Voces del podcast ancladas al acento español (adiós al "inglés raro")
✨Botón "Mejorar" para afinar el tema del episodio con IA
El tema de Sant Joan ahora tiene un espectáculo de drones de luz que se ensamblan formando palabras de la verbena y se dispersan. Además, su música suena en orden aleatorio sin repetir hasta acabar la lista.
Lo destacado
2
✨ Nuevo2
🛸Drones de luz que escriben palabras de la revetlla
🔀Música de Sant Joan aleatoria sin repetir la misma canción
En "Mis archivos" ahora puedes pulsar Compartir y obtener un enlace público: cualquier persona puede abrirlo para ver, reproducir o descargar el archivo sin necesidad de tener cuenta. Puedes dejar de compartir cuando quieras.
Lo destacado
2
✨ Nuevo2
🔗Enlace público por archivo: ver/reproducir/descargar sin iniciar sesión
El tema de Sant Joan ahora tiene su propia música de la revetlla (cançons de Sant Joan), con el botón flotante para activarla. Además, retocada la barra superior para que se vea limpia en los temas oscuros.
Lo destacado
1
✨ Nuevo1
🎵Música propia de Sant Joan (cançons de la revetlla)
Los fuegos artificiales del tema de Sant Joan ahora son realistas: cohetes que ascienden y estallan en partículas con estela, brillo y caída, como los de verdad.
Lo destacado
1
✨ Nuevo1
🎆Fuegos artificiales realistas (partículas, estelas y destellos) en Sant Joan
El tema de Sant Joan suma petardos: estallidos repartidos por la pantalla, además de la hoguera, las brasas y los fuegos artificiales. Más verbena que nunca.
Por la verbena de Sant Joan, la app se viste de fiesta: noche de verano azul profundo con hoguera, brasas que ascienden y fuegos artificiales. Se activa solo la noche del 23 al 24 de junio.
Lo destacado
1
✨ Nuevo1
🔥Tema “Sant Joan” con hoguera, brasas y fuegos — la noche del 23-24 de junio
🎙️ Podcast: arreglado el corte al final de cada voz
22 de junio de 2026
Corregido un fallo por el que el podcast cortaba el final de cada intervención y pasaba a la siguiente. Hemos cambiado cómo se monta el audio para que cada turno se oiga completo.
Lo destacado
1
✨ Nuevo1
🗣️Cada intervención se escucha completa (sin cortes al cambiar de voz)
🎙️ Podcast: voces sin saltos, duración real y más datos
22 de junio de 2026
Arreglado el podcast: ya no se saltan ni descuadran las voces (vuelven las voces fiables por defecto; Marin/Cedar quedan como experimentales), la duración que eliges (1/3/5 min) se respeta mucho mejor, y ahora busca en la web desde varios ángulos para que el episodio tenga más datos reales.
Lo destacado
3
✨ Nuevo2
🗣️Sin saltos de líneas en las voces
🌐Más búsqueda web → episodios con más datos reales
El menú de herramientas del cuadro de texto ahora tiene fondo blanco sólido en el móvil (antes era translúcido y se veía el contenido de detrás), así se lee mucho mejor.
Lo destacado
1
✨ Nuevo1
📱Menú de herramientas con fondo sólido en móvil (más legible)
Rediseñamos por completo la pantalla del Podcast con un aspecto de estudio de grabación (paneles elegantes, ecualizador animado y mejor contraste), y ahora se ve perfecta en el móvil.
🎙️ Podcast: elige las voces (Marin/Cedar) y sonido de estudio
22 de junio de 2026
Ahora puedes elegir la voz de cada presentador (incluidas las voces premium más naturales, Marin y Cedar) y el audio suena a estudio: volumen parejo entre intervenciones y voz más cálida y presente.
Lo destacado
2
✨ Nuevo2
🗣️Selector de voces por presentador (con las premium Marin y Cedar)
📏Audio nivelado (mismo volumen) y con sonido más profesional
🎙️ Podcast: progreso en vivo y transcripción “karaoke”
22 de junio de 2026
Al crear un podcast ahora ves el progreso real (escribiendo el guion, grabando voz 3/12, portada…), y al escucharlo se ilumina en tiempo real la intervención que se está hablando, siguiendo el audio.
Lo destacado
2
✨ Nuevo2
📊Progreso real durante la generación del podcast
✨La frase que suena se resalta en vivo mientras escuchas (karaoke)
🎙️ Podcast: arreglada la portada y mejoradas las voces
22 de junio de 2026
Ahora la portada del episodio aparece siempre (antes a veces no se generaba), y hemos mejorado la calidad y estabilidad de las voces (mayor calidad de audio y reintento si una voz falla).
🎙️ Podcast: audio más limpio y generación más rápida
22 de junio de 2026
Mejoramos el montaje del audio del podcast: las voces se unen sin saltos ni “clics” y con pausas naturales entre intervenciones. Además la generación es más rápida (la portada se crea a la vez que se graban las voces).
Lo destacado
2
✨ Nuevo1
🎚️Audio del podcast sin cortes ni saltos, con pausas naturales
💎 Mejorado1
⏱️Generación más rápida (portada y voces en paralelo)
Ahora al crear un podcast puedes elegir la duración (1, 3 o 5 min) y si quieres 2 o 3 tertulianos, y cada episodio viene con una portada generada por IA.
🎙️ Podcasts con datos reales y voces más naturales
22 de junio de 2026
El generador de podcasts ahora busca en la web para incluir datos reales y actuales sobre el tema (no solo lo que “sabe” el modelo), y las voces suenan bastante más naturales y con más personalidad.
Lo destacado
2
✨ Nuevo2
🌐El podcast investiga el tema en la web y usa hechos y cifras reales
🗣️Voces más naturales y expresivas (presentadora + experto)
El botón de Modo conversación (hablar por voz con GarBotGPT) estrena un icono más claro y reconocible (barras de audio), y ahora es el mismo en ordenador y en móvil.
Lo destacado
1
✨ Nuevo1
🎙️Icono de “barras de audio” para el Modo conversación, igual en PC y móvil
🔄 Actualizaciones más fiables (adiós a versiones viejas)
22 de junio de 2026
Hemos reforzado la detección de nuevas versiones: cuando publicamos una actualización, la app la detecta y se refresca de forma fiable, así no te quedas con una versión antigua en caché. Además, el panel de administración carga más rápido.
Lo destacado
1
✨ Nuevo1
🔄La app detecta y aplica las actualizaciones sin quedarse en versiones viejas
🧹 Arreglado: texto técnico colándose en respuestas
22 de junio de 2026
Corregido un fallo visual por el que, a veces, podía aparecer texto técnico interno (líneas tipo "data: {…}") al principio de una respuesta. Hemos reforzado el filtrado para que no se cuele ningún evento interno.
Lo destacado
1
✨ Nuevo1
🧹Las respuestas ya no muestran restos técnicos internos al inicio
Los accesos rápidos de la bienvenida ahora muestran de verdad lo que GarBotGPT puede hacer: Modo Agente, generar una imagen y crear un podcast, además de investigar, buscar en la web y analizar documentos. Y la pantalla de inicio carga un poco más rápido.
Lo destacado
2
💎 Mejorado2
🤖Atajos a Modo Agente, 🎨 generar imagen y 🎙️ crear podcast desde el inicio
🔔 Las notificaciones tienen su propia sección en Ajustes
22 de junio de 2026
Hemos sacado las notificaciones (sonido, navegador y push) a su propia sección "Notificaciones" dentro de Ajustes, para que las encuentres fácil en vez de tenerlas mezcladas con la apariencia.
Lo destacado
1
✨ Nuevo1
🔔Nueva sección "Notificaciones" en Ajustes (sonido · navegador · push)
Ahora puedes activar las notificaciones push: GarBotGPT te avisa aunque tengas la app cerrada (por ejemplo cuando termina una tarea o hay algo importante). Actívalas desde Ajustes → Notificaciones push.
Lo destacado
2
✨ Nuevo2
🔔Avisos push reales aunque la app esté cerrada (web y PWA)
Llega el Podcast: escribe un tema y GarBotGPT te genera un episodio a dos voces (con audio que puedes escuchar y descargar) más el guion. Lo tienes en el menú de herramientas (🎙️ Podcast). Además, cuando la IA responde usando tus documentos o conocimientos, ahora cita las fuentes de forma más fiable.
Lo destacado
2
✨ Nuevo2
🎙️Podcast a dos voces a partir de un tema (escúchalo y descárgalo)
📑Citas más fiables al responder desde tus documentos/conocimientos
El Modo Agente ahora se identifica con un icono de robot 🤖 (antes una varita, que se confundía con el botón de mejorar el prompt), tanto en el menú de herramientas como en el chip del cuadro de texto.
Lo destacado
1
✨ Nuevo1
🤖Icono de robot más representativo para el Modo Agente (PC y móvil)
🧠 Modo Agente: panel de expertos para decisiones difíciles
22 de junio de 2026
Ante una pregunta compleja o de decisión (“¿debería X o Y?”, “analiza pros y contras”, “dame una estrategia”), el Modo Agente puede convocar a un panel de 3 expertos (analista, crítico y estratega) que opinan a la vez, y luego te da una recomendación equilibrada con los tres puntos de vista.
Lo destacado
2
✨ Nuevo2
🧠Un “equipo” de 3 expertos delibera tu pregunta y el agente sintetiza
⚖️Verás análisis, riesgos y estrategia antes de la recomendación final
El Modo Agente puede ahora buscar archivos en tu Google Drive (solo lectura) y cruzarlo con tus correos, tu calendario y tus archivos subidos: una sola petición busca en toda tu información.
Lo destacado
2
✨ Nuevo2
📁El agente encuentra archivos en tu Drive (por nombre o contenido)
🔎Cruza Drive + Gmail + calendario + tus archivos en una sola petición
🤖 Modo Agente AUTÓNOMO: trabaja solo cuando tú le digas
22 de junio de 2026
Ahora puedes programar al agente para que trabaje solo: di algo como “cada mañana, como agente, investiga las novedades de X y mándame un resumen” y se ejecutará a su hora y te entregará el resultado (en el chat, por email o Telegram).
Lo destacado
2
✨ Nuevo2
⏰Programa al agente: “cada mañana, como agente, …” y trabaja solo
📬Te entrega el resultado a su hora (chat / email / Telegram)
🤖 El Modo Agente ya consulta tu Gmail y tu calendario
22 de junio de 2026
El Modo Agente puede ahora leer (solo lectura) tus correos de Gmail y tus próximos eventos del calendario cuando tu objetivo lo necesita: “resume mis últimos emails y agéndame lo importante”, “¿qué tengo esta semana?”.
Lo destacado
2
✨ Nuevo2
📧El agente lee tus correos recientes (Gmail) cuando lo necesita
🗓️El agente consulta tus próximos eventos del calendario
Si pides al Modo Agente un informe/documento (Word/PDF/Excel), ahora investiga y reúne la información y el sistema te genera el documento listo para descargar, todo de una.
Lo destacado
1
✨ Nuevo1
📄“Modo Agente: hazme un informe en PDF sobre X” → investiga y genera el documento
El Modo Agente puede ahora buscar en los documentos que has subido (tus PDFs, notas, etc.) como un paso más cuando tu objetivo se refiere a “mis documentos/apuntes”. Así responde con tu propia información.
Lo destacado
1
✨ Nuevo1
📚El agente busca en tus archivos subidos (RAG) cuando lo necesita
🤖 El Modo Agente ya redacta emails (y tú los envías con un clic)
22 de junio de 2026
Además de proponer eventos, el Modo Agente ahora puede redactar un email por ti: te muestra destinatario, asunto y cuerpo, y solo se envía por tu Gmail cuando pulsas “Enviar”. Nada sale sin tu confirmación.
Lo destacado
2
✨ Nuevo1
✉️El agente redacta el email y tú lo revisas y envías con un botón
🔒 Seguridad1
🔒Nunca se envía sin tu confirmación (requiere tu Gmail conectado)
🤖 El Modo Agente ya propone acciones: crear eventos (con tu OK)
22 de junio de 2026
El Modo Agente da el salto a “hacer cosas”: cuando tu objetivo implica agendar algo, te propone crear el evento en tu calendario con un botón de Confirmar (no hace nada sin tu visto bueno). Es el primer paso de las acciones del agente.
Lo destacado
2
✨ Nuevo1
🗓️El agente propone crear eventos en tu calendario; tú confirmas con un botón
🤖 Modo Agente más potente: ahora también investiga a fondo
22 de junio de 2026
El Modo Agente ya puede usar la “investigación a fondo” (multi-fuente) como un paso más cuando el objetivo es complejo, además de buscar en la web, lugares y productos. Elige las herramientas y se adapta a los resultados.
Lo destacado
1
✨ Nuevo1
🧪El agente puede investigar a fondo (multi-fuente) cuando hace falta
🤖 Modo Agente como interruptor en el menú de herramientas
22 de junio de 2026
Ahora tienes un interruptor “Modo Agente” en el menú de herramientas del chat: al activarlo, tu mensaje lo ejecuta el agente (planifica y encadena herramientas por ti). Antes ese botón estaba mal y activaba el intérprete de código.
Lo destacado
2
✨ Nuevo1
🤖Interruptor “Modo Agente” en herramientas (planifica y usa varias tools)
🐛 Arreglado1
🔧Corregido: el botón ya no activa por error el intérprete de código
Nuevo comando /recordatorios en el bot para ver tus recordatorios y completarlos (✅) o borrarlos (🗑️) con botones. Además, los recordatorios ahora se programan en TU hora local (antes podían salir desfasados).
Lo destacado
2
✨ Nuevo2
⏰/recordatorios en Telegram: ver, completar y borrar con botones
🕒Los recordatorios se programan en tu zona horaria (sin desfase)
En el bot de Telegram ahora puedes pedir “recuérdame llamar a Ana mañana a las 9” y te avisará solo a esa hora. Y si le hablas por voz, te contesta también con una nota de voz.
Lo destacado
2
✨ Nuevo2
⏰Recordatorios por Telegram: “recuérdame X mañana a las 9” → te avisa a su hora
🔊Si le mandas un audio, el bot te responde también con voz
A veces (sobre todo al volver de un mantenimiento) aparecía una pantalla de “Reconectando/Reintentando” que se quedaba clavada aunque el servicio ya funcionara. Ahora detecta al instante que el servidor ha vuelto y recarga sola, sin esperas.
Lo destacado
1
✨ Nuevo1
🔌La pantalla de reconexión vuelve sola en cuanto el servicio responde
Al usar “/agente”, ahora ves en vivo lo que está haciendo (Planificando → Ejecutando búsquedas → Comparando → Sintetizando…) mientras prepara la respuesta, en lugar de quedarte esperando sin saber qué pasa.
Lo destacado
1
✨ Nuevo1
🤖Estado en vivo del agente mientras trabaja (no solo al final)
Cuando usas “/agente”, aparece una tarjeta con el plan: cada paso, qué herramienta usó (búsqueda web, lugares, productos) y su resultado, para que veas exactamente cómo ha llegado a la respuesta.
Lo destacado
2
✨ Nuevo2
🤖Tarjeta de plan: pasos, herramienta de cada uno y estado (✓)
🔎Transparencia total de lo que hace el agente por ti
🤖 Modo Agente (beta): dale un objetivo y lo ejecuta
20 de junio de 2026
Nuevo modo experimental: escribe “/agente” seguido de un objetivo (p. ej. “/agente organiza una tarde de planes en Barcelona”) y el asistente planifica los pasos, ejecuta varias herramientas por ti (búsqueda web, lugares cercanos, productos) y te da el resultado ya sintetizado. Es la primera etapa; pronto tendrá botón propio y plan visible.
Lo destacado
2
✨ Nuevo2
🤖Escribe “/agente <objetivo>” y encadena varias herramientas solo
🧭Planifica los pasos y ejecuta búsqueda web, lugares y productos por ti
🖼️ El visor inmersivo también para tus fotos (y en móvil)
19 de junio de 2026
El nuevo visor a pantalla completa ahora también se abre con las fotos que subes tú (no solo con las imágenes generadas), tanto en escritorio como en móvil, con zoom por pellizco y doble toque.
Lo destacado
2
✨ Nuevo2
🖼️Tus fotos subidas se abren en el visor inmersivo (móvil y escritorio)
🔍Zoom con pellizco y doble toque también en fotos subidas
El botón para volver al final de la conversación estaba centrado y se plantaba encima del contenido (p. ej. sobre una imagen). Ahora va abajo a la derecha, sin tapar los mensajes.
Lo destacado
1
✨ Nuevo1
⬇️El botón de “ir al final” ya no se solapa con el contenido (ahora abajo a la derecha)
Al abrir una imagen ahora se ve en un visor inmersivo: fondo oscuro, la foto en grande sin marco, y controles flotantes y discretos (zoom, descargar, compartir, flechas para pasar). Toca fuera para cerrar. Mucho más limpio e integrado.
Lo destacado
3
✨ Nuevo3
🖼️Visor inmersivo: la foto protagoniza, sin la ventana con marco
🎛️Controles flotantes (zoom, descargar, compartir) y flechas para navegar
👆Toca fuera para cerrar; pellizca/doble toque para hacer zoom
🖼️ Arreglo: las fotos ya no parpadean al abrir el chat
19 de junio de 2026
Al cargar un chat, las imágenes que habías enviado salían un instante como una tarjeta gris con un clip y luego se convertían en la foto. Ahora se muestran como imagen desde el primer momento.
Lo destacado
1
💎 Mejorado1
🖼️Las fotos enviadas se ven al instante al abrir el chat (sin el “salto” a tarjeta con clip)
La búsqueda de productos ahora entiende lo que pides: filtra por precio ("menos de 300€") y por valoración ("bien valorados"), y ORDENA de verdad (del más barato o del mejor valorado) en vez de mostrar resultados al azar.
Lo destacado
3
✨ Nuevo3
💶Filtra por precio máximo ("menos de 300€")
⭐Filtra y ordena por valoración ("bien valorados")
🔽"Más baratos" ahora ordena por precio real (no al azar)
🖼️ Imágenes arriba del texto · 🔬 research más a fondo · 🛒 productos en Telegram
19 de junio de 2026
Tres mejoras: las imágenes que envías en el chat ahora aparecen ENCIMA de tu texto (como en otras apps de mensajería); la investigación profunda explora muchas más fuentes y ángulos (más sub-preguntas, más páginas y más rondas); y en Telegram, cuando preguntas por productos, te llegan tarjetas con foto, precio, tienda, valoración y botón para comprar.
Lo destacado
3
✨ Nuevo3
🖼️Las imágenes que subes salen encima de tu mensaje, no debajo
🔬Investigación profunda mucho más exhaustiva (más fuentes y rondas)
🛒Tarjetas de producto en Telegram (foto, precio, tienda y botón comprar)
Cuando es útil, la búsqueda web ahora puede incluir vídeos relacionados (de YouTube y similares) como enlaces dentro de la respuesta, además de las páginas y fuentes habituales.
Lo destacado
1
✨ Nuevo1
📺Vídeos relacionados enlazados en la respuesta cuando aportan
🔬 Investigación profunda iterativa (investiga de verdad)
19 de junio de 2026
La investigación profunda ya no se queda en una sola pasada: tras la primera búsqueda, detecta qué falta por responder o contrastar y lanza una segunda ronda de búsquedas dirigidas a esos huecos antes de redactar. El resultado es más completo y mejor verificado.
Lo destacado
2
✨ Nuevo2
🔁Segunda ronda automática que rellena los huecos detectados
✅Respuestas más completas y contrastadas en varias fuentes
La búsqueda web ahora convierte tu pregunta en las mejores consultas (palabras clave, y variante en inglés si es técnico) y combina los resultados, así encuentra más. Además cita las fuentes en línea con [1][2] y, si comparas opciones, te lo presenta en una tabla. La investigación profunda añade citas textuales, una sección de “dónde las fuentes no coinciden” y nivel de confianza.
Lo destacado
3
✨ Nuevo2
🔗Cita las fuentes en línea [1][2] y tabla comparativa al comparar
🔬Deep research: citas textuales + discrepancias entre fuentes + nivel de confianza
💎 Mejorado1
🔎Reformula tu pregunta en las mejores búsquedas (más recall)
La búsqueda web ahora consulta Google (además del buscador anterior) y combina los resultados de ambos, quitando duplicados. Así encuentra muchas más cosas para cualquier pregunta.
Lo destacado
2
✨ Nuevo1
🔎Busca en Google y combina con el otro buscador (más cobertura)
💎 Mejorado1
🧹Quita resultados duplicados y se queda con la mejor versión de cada fuente
🔎 Búsqueda web que busca de TODO (no solo noticias)
19 de junio de 2026
La búsqueda web ahora rastrea TODA la web para cualquier cosa —datos, productos, cómo-hacer, definiciones, comparativas, deportes, finanzas…— en vez de sesgarse a medios de noticias. Tampoco se limita a las últimas 24h salvo que pidas algo de “hoy”. Busca en más fuentes y, si encuentra pocos resultados, reintenta ampliando automáticamente.
Lo destacado
3
✨ Nuevo3
🌐Busca en toda la web para cualquier tema (no solo noticias)
🔎“El último/lo más reciente de…” ya encuentra resultados (no se limita a 24h)
🔁Si encuentra pocos resultados, reintenta solo ampliando la búsqueda
🖼️ Generación de imagen: tiempo real y botones Cancelar/Reintentar
19 de junio de 2026
La tarjeta de generación de imagen ahora muestra el tiempo transcurrido real (⏱️) en vez de un porcentaje inventado, te avisa con naturalidad si tarda más de lo normal, y añade botones para Cancelar mientras genera o Reintentar si falla — sin tener que reescribir el mensaje.
Lo destacado
3
✨ Nuevo3
⏱️Tiempo transcurrido real mientras se genera (no un % falso)
🟡Aviso natural “tardando más de lo normal” si se alarga
✖️Cancelar mientras genera · 🔄 Reintentar si falla, desde la propia tarjeta
🖼️ Arreglo: la imagen ya no da “error” cuando solo tarda más
19 de junio de 2026
Si una imagen tardaba bastante en generarse, a veces la tarjeta saltaba a “Generación detenida” aunque la imagen sí se terminaba creando (aparecía al recargar). Ahora esperamos mucho más y mostramos la imagen en cuanto está lista, sin falsos errores.
Lo destacado
2
✨ Nuevo1
⏳La tarjeta sigue en “generando” y muestra la imagen al terminar
🐛 Arreglado1
🖼️Sin falso “error/Generación detenida” cuando la imagen solo tarda más de lo normal
🖼️ Arreglo: la imagen ya no se pierde al cambiar de chat
19 de junio de 2026
Si tenías una imagen generándose en un chat y te ibas a otro (o generabas otra imagen en otro chat), la tarjeta de la primera desaparecía. Ahora cada chat conserva su propia generación: puedes moverte entre chats sin perder ninguna imagen.
Lo destacado
2
✨ Nuevo2
🖼️La generación de imagen ya no se pierde al cambiar de chat
↔️Cada conversación mantiene su propia tarjeta de imagen, sin pisarse
📍 “Cerca de mí” más rápido y con más tipos de sitio
19 de junio de 2026
La búsqueda de lugares cercanos va más rápida (guarda resultados recientes) y encuentra más cosas: ahora puedes pedir panaderías, gimnasios, parques, cines, peluquerías, veterinarios, correos, dentistas, bibliotecas, comisarías o puntos de carga. Además ajusta la distancia según el tipo de sitio y amplía la búsqueda si encuentra pocos.
Lo destacado
3
✨ Nuevo2
🆕Panaderías, gimnasios, parques, cines, peluquerías, veterinarios, correos y más
🎯Ajusta el radio por tipo de sitio y amplía si hay pocos resultados
💎 Mejorado1
⚡Más rápida y fiable (resultados recientes en caché)
El mapa de lugares cercanos ahora usa la MISMA ubicación con la que se buscaron los sitios, así las distancias y el “tú estás aquí” cuadran siempre. Además te muestra hace cuánto se guardó tu ubicación y un botón para actualizarla al instante; si es antigua, te avisamos.
Lo destacado
3
✨ Nuevo3
🎯Distancias y “tú estás aquí” coherentes con los resultados
🕒Verás hace cuánto se guardó tu ubicación, con botón “Actualizar”
⚠️Si tu ubicación es antigua, te avisamos al pedir sitios cercanos
El mapa de “sitios cerca de mí” da un salto: ahora puedes tocar un lugar en la lista y se resalta en el mapa (y al revés), cambiar entre vista de mapa y satélite, abrirlo a pantalla completa, ver el tiempo a pie de cada sitio y buscar/ordenar la lista. Los lugares más cercanos salen marcados en verde.
Lo destacado
4
✨ Nuevo4
📍Toca un lugar en la lista y se resalta en el mapa (sincronizado en ambos sentidos)
🛰️Cambia entre mapa y satélite, y ábrelo a pantalla completa
🚶Tiempo a pie y distancia de cada sitio; los 3 más cercanos en verde
🗺️ Sitios cerca de ti, ahora también en Telegram y en el mapa del móvil
19 de junio de 2026
Cuando preguntas por sitios cercanos (restaurantes, farmacias, cafeterías…), ahora los ves en un mapa con sus nombres. En Telegram puedes compartir tu ubicación y te envío los lugares como pines nativos con “Cómo llegar”. Y el mapa también aparece en el chat del móvil.
Lo destacado
3
✨ Nuevo3
📍En Telegram: comparte tu ubicación y pídeme “restaurantes cerca de mí”
🗺️Te mando los sitios como pines en el mapa de Telegram, con “Cómo llegar”
📱El mapa de lugares cercanos ya se ve también en el chat del móvil
Corregido el bucle de “Cargando memoria…” que se quedaba dando vueltas al abrir la pestaña Memoria de una carpeta. Y al generar una imagen, si tardaba un poco de más ya no verás un falso error: la app espera y te muestra la imagen cuando está lista (sin tener que recargar).
Lo destacado
2
✨ Nuevo1
🗂️La pestaña Memoria de las carpetas ya carga bien (sin bucle infinito)
🐛 Arreglado1
🎨La generación de imágenes ya no muestra error si tarda un poco; espera y la muestra sola
🤖 Tus GPTs: pantalla propia, logo con imagen y más herramientas
18 de junio de 2026
Al tocar uno de tus GPTs ahora se abre su propia pantalla (como las carpetas): su info, sus prompts de inicio y todos tus chats con ese GPT, en vez de un chat vacío. Puedes ponerle una imagen como logo (además de emojis) y elegir entre más herramientas. Tanto en GPTs como en carpetas solo se muestran los modelos y herramientas disponibles en tu plan.
Lo destacado
3
✨ Nuevo3
🤖Cada GPT tiene su pantalla: prompts de inicio y tus chats con él
🖼️Pon una imagen como logo de tu GPT (no solo emojis)
🧰Más herramientas y solo las de tu plan (también en carpetas)
Los emojis de la barra de reacciones ahora están "vivos": entran con un rebote y se mueven con un balanceo continuo, como en Telegram. Y el menú de acciones aparece con una animación de muelle más natural.
Lo destacado
2
✨ Nuevo2
✨Los emojis de reacción se mueven (rebote al salir + balanceo continuo)
🫧El menú de acciones entra con efecto muelle estilo Telegram
Al mantener pulsado un mensaje en el móvil aparece una barra de reacciones rápidas (👍 ❤️ 🔥 😂 🎉 👏) encima del menú, con animación al elegirla. La reacción se guarda y se muestra como una pequeña pastilla bajo el mensaje; vuelve a pulsarla para quitarla.
Lo destacado
2
✨ Nuevo1
✨La reacción se anima, se guarda y aparece bajo el mensaje
💎 Mejorado1
😍Barra de reacciones rápidas al mantener pulsado un mensaje
La página de estado (/status) ahora mide mejor: reintenta antes de marcar un servicio como caído (evita falsas alarmas por los reinicios de despliegue), el histórico de 90 días es correcto y mucho más ligero, detecta incidencias antes y puede avisar al equipo por email/Telegram cuando algo falla.
Lo destacado
3
✨ Nuevo2
🔁Reintenta antes de dar un servicio por caído (menos falsas alarmas)
🔔Avisos automáticos al equipo cuando se detecta una incidencia
💎 Mejorado1
📊Histórico de 90 días correcto y más rápido en /status
💨 Borrar mensajes con efecto de desintegración mejorado
18 de junio de 2026
Al borrar un mensaje, ahora se desintegra en polvo reproduciendo sus colores reales y respetando la forma de la burbuja, las partículas son finas con un leve brillo, y los mensajes de abajo suben deslizándose en lugar de dar un tirón. Si borras varios a la vez, todo el bloque se va a una.
Lo destacado
2
✨ Nuevo2
💨La burbuja se deshace en polvo con sus colores reales y su forma exacta
✨Partículas finas con brillo y los mensajes de abajo suben con suavidad
✨ Menú de mensajes (móvil) más pulido y búsqueda web mejorada
18 de junio de 2026
El menú que aparece al mantener pulsado tus mensajes en el móvil ahora se ve como cristal blanco nítido (antes salía gris), vibra suavemente al abrirse y separa la opción "Eliminar" para evitar toques accidentales. Además, las búsquedas en internet de Telegram ahora incluyen un resumen directo y más contenido de las primeras fuentes.
Lo destacado
3
✨ Nuevo2
✨Menú de tus mensajes en móvil: aspecto blanco nítido (ya no gris) + vibración al abrir
🔎Búsquedas en internet de Telegram con resumen directo y más detalle
🐛 Arreglado1
🗑️"Eliminar" separado del resto para evitar toques por error
🧠 Memoria de chats: guarda un resumen de la conversación
17 de junio de 2026
Nuevo comando /guardar (web y Telegram) que guarda un RESUMEN de la conversación en una categoría aparte, "memoria de chats", visible en Ajustes → Memoria (filtro "De chats"). Tus datos personales (nombre, gustos…) siguen yendo a tu memoria personal, separados.
Lo destacado
2
✨ Nuevo2
🧠/guardar guarda un resumen del chat en tu "memoria de chats" (web y Telegram)
🗂️Separada de tu memoria personal, visible en Ajustes → Memoria
Al abrir la app, tu avatar y nombre en la cabecera ahora se muestran de inmediato (desde una copia local) en lugar de esperar a la red, y se actualizan solos en segundo plano.
Lo destacado
1
💎 Mejorado1
⚡Avatar y nombre de la cabecera al instante al abrir la app
La pantalla que ves cuando hacemos mantenimiento es ahora mucho más cuidada: fondo que reacciona al movimiento, una consola de actividad en vivo, el logo flotando y, cuando el servicio vuelve, una pequeña celebración antes de recargar (en vez de un recargado seco).
Lo destacado
1
💎 Mejorado1
🛠️Mantenimiento: diseño renovado, actividad en vivo y celebración al volver
Mejoras internas en el motor del chat: respuestas algo más rápidas al empezar, reintento automático si el proveedor de IA falla de forma puntual (menos errores), y un control de tiempo de espera para que la app no se quede colgada si el modelo no responde. Además, en conversaciones largas el modelo conserva mejor el contexto reciente.
Lo destacado
2
💎 Mejorado2
⚡El chat arranca antes y reintenta solo si hay un fallo puntual del proveedor
🧠En chats largos se mantiene mejor el contexto reciente
El cristal de la cabecera del móvil ahora tiene un brillo que se mueve suavemente y reacciona al pulsar, se ve más definido sobre fondos claros y va más fluido al hacer scroll. Los menús de herramientas y de opciones del mensaje comparten el mismo acabado.
Lo destacado
2
✨ Nuevo1
💧La cabecera del móvil cobra vida con un brillo en movimiento y reacción al tocar
💎 Mejorado1
⚡Más fluido al desplazar y mejor definición del cristal
Al borrar un mensaje, ahora se deshace con una animación de partículas (como el efecto "polvo" de Telegram) en lugar de desaparecer de golpe. Funciona en móvil y escritorio, y respeta la preferencia de "reducir movimiento".
Lo destacado
1
✨ Nuevo1
✨Borrar un mensaje lo desintegra en partículas con un efecto muy cuidado
📱 Las acciones de cada respuesta ya caben en el móvil
17 de junio de 2026
En el móvil, los botones que hay bajo cada respuesta (copiar, leer en voz alta, regenerar, etc.) se salían de la pantalla y algunos no se veían. Ahora se reparten en varias filas y se ven todos.
Lo destacado
1
✨ Nuevo1
📱Todas las acciones de una respuesta son visibles en el móvil (ya no se cortan)
🔄 El aviso de actualización ya muestra la versión correcta
17 de junio de 2026
El aviso de "nueva versión" mostraba a veces un número antiguo. Ahora muestra siempre la versión real instalada. Internamente, los administradores pueden forzar una limpieza de caché para todos si hiciera falta.
Lo destacado
1
✨ Nuevo1
🔄El aviso de actualización muestra la versión real y actual
🛜 Arreglado "Sin conexión" en Safari tras mantenimiento
17 de junio de 2026
En Safari (web y app), después de un mantenimiento la app podía quedarse en "Sin conexión." o cargando para siempre aunque hubiera internet. Ya no: la app conserva una copia para arrancar y se recupera sola al volver la conexión.
Lo destacado
2
✨ Nuevo2
🛜Safari ya no se queda en "Sin conexión." tras un mantenimiento
🔄Si aparece un aviso de reconexión, ahora se recarga solo al volver la red
El botón de "Mejorar prompt" ahora es más grande y con un brillo animado. Arreglado que a veces costaba pulsarlo (quedaba debajo del texto) y que, al generar un prompt largo, el cuadro de escribir no crecía hacia arriba.
Lo destacado
3
💎 Mejorado2
🪄Botón "Mejorar prompt" más grande y con animación
↕️El cuadro de escribir crece al meter un prompt largo mejorado
🐛 Arreglado1
🖱️Arreglado el clic del botón cuando había texto en el cuadro
Hemos devuelto el botón de micrófono (dictado por voz) al cuadro de escribir, junto al nuevo botón de "Mejorar prompt". Y las estrellitas de las acciones del mensaje ahora tienen un pequeño brillo animado.
Lo destacado
2
✨ Nuevo2
🎤El botón de micrófono (dictar por voz) vuelve al cuadro de escribir
✨Las estrellas de las acciones del mensaje brillan con una animación sutil
Nuevo botón en el cuadro de escribir que mejora tu mensaje con IA antes de enviarlo (sustituye a los botones de dictado y manos libres). Además: al entrar a tu cuenta los chats ya aparecen sin tener que recargar, los botones del menú móvil ya no se quedan “sin responder”, y el aviso de ubicación deja de salir si ya diste permiso.
Lo destacado
4
✨ Nuevo2
✨Botón “Mejorar prompt”: reescribe tu mensaje con IA para que la respuesta sea mejor
💬Al iniciar sesión, tus chats se cargan directamente (ya no hay que refrescar)
🐛 Arreglado1
📱Arreglados los botones del menú móvil que a veces no respondían
🔒 Seguridad1
📍El aviso de ubicación no reaparece si ya concediste el permiso
En el móvil (sobre todo iPhone), el cuadro de escribir ya no se sube “al medio” de la pantalla al hacer scroll: solo se eleva cuando abres el teclado para escribir.
Lo destacado
1
✨ Nuevo1
📱El cuadro de escribir se queda abajo y solo sube con el teclado
🛠️ Arreglos: acceso, mantenimiento, conexión y chat
16 de junio de 2026
Varios arreglos importantes: la app abre de forma más fiable tras actualizar, al quitar el modo mantenimiento ya no se queda “pegado” por la caché, ya no aparece “Load failed” si sales mientras la IA responde, no se cuela texto interno de las herramientas en las respuestas, y al abrir un chat ya no parpadea vacío (muestra la carga).
Lo destacado
1
✨ Nuevo1
🛠️App más estable: acceso, salida del mantenimiento, conexión al responder y carga del chat
Más magia navideña: estrella de Belén brillante arriba, título que titila como una guirnalda, acebo en las esquinas, un árbol decorado con luces parpadeantes, el trineo de Papá Noel cruzando la pantalla de vez en cuando, detalles dorados en menús y avisos, y en diciembre nieva más fuerte según se acerca el 25.
Lo destacado
1
✨ Nuevo1
🌟Estrella de Belén, árbol con luces, trineo cruzando y nieve que arrecia en diciembre
El tema Navidad estrena chat festivo: tus mensajes en rojo y verde con borde dorado, la IA con gorro de Papá Noel y aura dorada. Y mientras suenan los villancicos, ahora también se oyen cascabeles de vez en cuando y algún "jo, jo, jo".
Lo destacado
1
✨ Nuevo1
🎄Mensajes festivos + IA con gorro de Papá Noel + cascabeles y "jo jo jo"
El tema Halloween ya tiene sonido: pulsa el botón de música y suena un ambiente tenebroso en bucle, con truenos ocasionales y alguna risa de bruja. Un solo botón lo activa o lo silencia.
Lo destacado
1
✨ Nuevo1
🔊Ambiente tenebroso + truenos y risa de bruja en el tema Halloween
Más locuras de Halloween: sangre que gotea desde arriba, luna de sangre la semana del 31, cuenta atrás para Halloween, telarañas que puedes romper haciendo clic y un aura morada en el avatar de la IA.
Lo destacado
1
✨ Nuevo1
🩸Sangre goteando, 🌑 luna de sangre, ⏳ cuenta atrás y telarañas que se rompen
Halloween da un salto: las burbujas del chat se visten de Halloween (calabaza y morado), telarañas vectoriales nítidas en las esquinas, un cementerio en silueta con calabazas iluminadas, niebla en movimiento, luna que respira, relámpagos azulados, ojos que parpadean en la oscuridad, murciélagos que aletean y tipografía terrorífica en los títulos.
Lo destacado
1
✨ Nuevo1
🎃Halloween mucho más inmersivo: chat tematizado, cementerio, niebla viva y más
Ahora el bot responde justo lo que pides: "qué estoy escuchando", "mis últimas canciones", "mi artista más escuchado" o "mi canción top" salen por separado, sin mezclarlo todo.
Lo destacado
1
✨ Nuevo1
🎧Pregúntale a Telegram cosas concretas de tu Spotify y responde solo eso
El tema Halloween estrena un look mucho más cuidado: fondo tenebroso con bruma y resplandores morado/calabaza, barra lateral y tarjetas con ambiente, caja de escribir embrujada y detalles por toda la app.
El bot de Telegram ya puede usar tu Spotify: pídele que te recomiende canciones, que te enseñe tus playlists o tus artistas más escuchados, o que te cree una playlist en tu cuenta. Aparece la tarjeta de Spotify con el enlace.
Lo destacado
1
✨ Nuevo1
🎧Pide música, tus playlists, tus estadísticas o crea playlists desde Telegram
Ya puedes entrar y crear tu cuenta con un solo toque usando Google, sin escribir email ni contraseña. Disponible en las pantallas de inicio de sesión y registro.
Lo destacado
1
✨ Nuevo1
🔓Botón "Continuar con Google" en inicio de sesión y registro
🔗 Conectar Google/Spotify/Microsoft ya funciona del todo
16 de junio de 2026
Al conectar una aplicación, Google (y Spotify, Microsoft, monday) daba un error de "acceso bloqueado". Arreglado: ahora la pantalla de permisos se abre y la conexión se completa correctamente.
Lo destacado
1
✨ Nuevo1
🔗Conectar integraciones ya no da "acceso bloqueado / solicitud no válida"
🖼️ Las fotos que envías por Telegram ya se ven en el chat web
15 de junio de 2026
Arreglado: cuando mandas una foto al bot de Telegram, ahora aparece como imagen en tu conversación de la app web (antes solo se guardaba el texto). Las imágenes que genera la IA ya se veían.
Lo destacado
1
✨ Nuevo1
🖼️Las fotos enviadas por Telegram se ven en el chat web
🔒 Modelos y herramientas bloqueados ya se ven en el menú
15 de junio de 2026
En el selector de modelos, los que requieren un plan superior salen en gris con el plan necesario (PRO/MAX) y al tocarlos te llevan a los planes. Igual para las herramientas bloqueadas por tu plan. Respeta lo configurado en el panel admin de Suscripciones.
Lo destacado
2
✨ Nuevo1
🛠️Herramientas bloqueadas por plan también marcadas
🔒 Seguridad1
🔒Modelos de pago en gris con el plan necesario en el menú
🛠️ Arreglado el "Página web no disponible" al abrir tras actualizar
15 de junio de 2026
Corregido el error ("página web no disponible" / net::ERR_FAILED) que aparecía al abrir la app o el acceso directo después de una actualización, sobre todo si llevabas tiempo sin abrirla. Era el service worker sirviendo una respuesta redirigida; ya no ocurre.
Lo destacado
1
✨ Nuevo1
✅La app abre bien siempre, también tras actualizar y estar días sin abrir
Los documentos PDF que genera la IA estrenan diseño profesional: banda de color de marca, títulos con jerarquía clara, TABLAS con cabecera de color y filas alternas (antes salían como texto), bloques de código y citas con estilo, y número de página al pie. Aplica en el chat, en los agentes y en Telegram.
Lo destacado
3
✨ Nuevo2
📊Tablas con cabecera de color y filas alternas (no texto plano)
🔢Número de página al pie de cada hoja
💎 Mejorado1
🎨Diseño profesional con color de marca y buena tipografía
Al cambiar de cuenta (o cerrar sesión y entrar con otra) ya no se cuelan datos de la cuenta anterior: se limpian las cachés en cada cambio, así que ves SIEMPRE los chats de la cuenta correcta. Además, arreglado el error "no se puede cambiar de cuenta" que salía al cambiar dos veces seguidas.
Lo destacado
3
💎 Mejorado1
🧹Cachés limpias en cada cambio o cierre de sesión
🐛 Arreglado1
✅Arreglado el error al cambiar de cuenta dos veces seguidas
🔒 Seguridad1
🔒Al cambiar de cuenta ya no aparecen chats de la otra cuenta
El bot de GarBotGPT en Telegram gana COMANDOS (/nuevo, /saldo, /imagen, /buscar, /ayuda), entiende los DOCUMENTOS que le mandas (PDF/Word/Excel: los lee y resume) y puede GENERARTE documentos (Word/PDF/Excel) y enviártelos como archivo.
🔄 Avisos de actualización más claros y automáticos
15 de junio de 2026
Cuando hay una versión nueva, el aviso ahora te muestra de un vistazo QUÉ ha cambiado, y la app se actualiza sola al volver a ella, sin que tengas que limpiar la caché. Así siempre verás la última versión sin que se quede "a medias".
Lo destacado
2
✨ Nuevo1
✨El aviso de "nueva versión" muestra las novedades
💎 Mejorado1
🔄Se actualiza solo al volver a la app, sin limpiar caché
Lo que hablas con GarBotGPT por Telegram aparece en tu chat web, y ahora también las IMÁGENES: las fotos que envías y las que la IA te genera se ven en la conversación de la app. Puedes mandarle audios por Telegram y los entiende. Además, si le preguntas tu propio nombre ("¿cómo me llamo?"), ya no te responde con el suyo.
Lo destacado
3
✨ Nuevo3
🖼️Las imágenes de Telegram (las tuyas y las generadas) se ven en el chat web
🎙️Mándale audios por Telegram: los entiende y te responde
🙂Si preguntas "¿cómo me llamo?", responde con TU nombre, no con el suyo
El asistente de GarBotGPT en Telegram ahora te responde con formato claro (negritas, listas y bloques de código bien ordenados), puede BUSCAR EN LA WEB cuando necesita información actual y GENERAR IMÁGENES a partir de tu descripción. Además entiende mejor las fotos que le envías.
Nuevo modo MANOS LIBRES en el cuadro de escribir (botón 🔁): hablas, se envía solo, la IA te responde y te lee la respuesta en voz alta, y vuelve a abrir el micro para que sigas la conversación sin tocar nada. Además, el modo voz ahora se RECUPERA SOLO si se cae la conexión (antes había que cerrarlo y volver a abrirlo).
Lo destacado
3
✨ Nuevo3
🙌Manos libres: conversación hablada en bucle, sin tocar la pantalla
🔊Te lee las respuestas y reabre el micro para tu siguiente turno
📡El modo voz se reconecta solo si se corta la conexión
Al dictar con el micrófono en el cuadro de escribir, ahora el texto va apareciendo en tiempo real según hablas (antes tenías que esperar a soltar el micro). Al terminar, se ajusta automáticamente a la transcripción de máxima calidad. Si tu dispositivo no soporta el modo en vivo, sigue funcionando como antes.
Lo destacado
3
✨ Nuevo2
🎯Al soltar el micro, se afina al texto final de máxima calidad
🛟Si algo falla, el dictado sigue funcionando como siempre
🎓 Modo práctica de idiomas en la conversación por voz
11 de junio de 2026
Nuevo botón 🎓 en el modo voz: actívalo y GarBotGPT se convierte en tu tutor de conversación. Habla contigo de forma natural en el idioma que tú uses (o el que quieras practicar) y corrige amablemente tus errores de gramática, vocabulario y pronunciación, animándote a seguir hablando. Puedes activarlo y desactivarlo en mitad de la conversación.
Lo destacado
3
✨ Nuevo2
🎓Botón de práctica de idiomas en el modo voz
🔁Se activa/desactiva en vivo, sin cortar la conversación
🐛 Arreglado1
🗣️Conversa contigo en cualquier idioma y te corrige con cariño
🎙️ Voz: dictado en cualquier idioma + lectura instantánea
11 de junio de 2026
Mejoras en la voz: el dictado por micrófono ahora detecta el idioma automáticamente (funciona en cualquier idioma, no solo español/catalán) y transcribe mejor tus términos usando el contexto del chat. Y al volver a darle a 🔊 en un mensaje, ahora suena al instante (sin regenerar el audio).
Lo destacado
3
✨ Nuevo1
🌍El dictado detecta el idioma solo (cualquier idioma)
💎 Mejorado2
🎯Transcribe mejor tus nombres/términos del chat actual
🧑💻 El modelo de código se elige solo según tu plan
11 de junio de 2026
Cuando pides generar código, la app usa automáticamente el mejor modelo de programación de tu plan (sin tener que elegirlo a mano). Cuanto más alto el plan, mejor el modelo de código.
Lo destacado
1
✨ Nuevo1
🧑💻El modelo para programar se asigna automáticamente según tu plan
Nuevo selector "Modelo de código" en el chat: elige con qué modelo de IA quieres generar el código, entre los disponibles para tu plan. Si no lo tocas, la app elige el mejor automáticamente como siempre.
Lo destacado
2
✨ Nuevo2
🧑💻Botón "Modelo de código" para escoger el modelo al programar
🪜Cada plan tiene sus modelos de código (más opciones en planes superiores)
La vista previa de una página web ahora aparece en el panel en cuanto empieza a generarse el código (antes tardaba un rato en abrirse) y se va construyendo en tiempo real.
Lo destacado
1
💎 Mejorado1
⚡La vista previa se abre al instante y se construye en tiempo real
Arreglado que, con Spotify activo, en cualquier pregunta te aparecía siempre arriba la lista de "Tus playlists" aunque preguntaras otra cosa. Ahora las playlists solo salen si las pides; si preguntas qué escuchas, tus estadísticas o crear una lista, te muestra solo eso.
Lo destacado
1
✨ Nuevo1
🎧La lista de playlists solo aparece cuando la pides, no en cada mensaje
Arreglado del todo el chat borrado que reaparecía unos segundos en la lista (y obligaba a refrescar la página). Al borrar, el chat se queda fuera de la lista de forma estable, sin resucitar por recargas en segundo plano.
Lo destacado
1
💎 Mejorado1
🗑️Un chat borrado ya no vuelve a aparecer ni un instante
Mejorada la vista previa en directo de páginas web: antes se quedaba en blanco casi todo el rato mientras se generaba el código y parpadeaba. Ahora se va construyendo de forma suave y por pasos, mostrando la página tal y como va quedando.
Lo destacado
1
✨ Nuevo1
🔴La web se ve construirse suave mientras se genera (sin parpadeos ni pantallazos en blanco)
🖼️ Vista previa en vivo + arreglos del Canvas y del móvil
10 de junio de 2026
Tres mejoras: (1) la vista previa de páginas web (HTML) ahora se va construyendo EN VIVO mientras se escribe el código, no solo al final; (2) arreglada la vista previa de Next.js/React que salía en blanco cuando el código usaba librerías (iconos, animaciones…); (3) en móvil, si sales de la app mientras la IA responde y vuelves, ya no se pierde la respuesta ni sale un error: se recupera al volver.
Lo destacado
3
✨ Nuevo2
🔴La vista previa de webs HTML se construye en vivo mientras se genera
📱Salir y volver a la app durante una respuesta ya no la pierde
🐛 Arreglado1
▲ Arreglada la vista previa de Next.js/React que salía en blanco
Tres mejoras para móvil: (1) arreglado que al cerrar el teclado el campo de escribir se quedaba medio subido — ahora vuelve a su sitio; (2) en "Mis archivos" ya puedes abrir un archivo tocando toda su tarjeta (antes solo el icono del ojo); (3) la vista previa de archivos ahora es a pantalla completa en el móvil, mucho más cómoda.
Lo destacado
3
✨ Nuevo3
⌨️El campo de escribir vuelve a su sitio al cerrar el teclado en móvil
📂Abre un archivo tocando su tarjeta entera, no solo el ojo
🖼️Vista previa de archivos a pantalla completa en el móvil
🗑️ Arreglado: un chat borrado reaparecía un instante
10 de junio de 2026
Al eliminar un chat, a veces volvía a aparecer un momento en la lista antes de desaparecer del todo. Era una carrera entre el borrado instantáneo y la sincronización en segundo plano. Ahora el chat borrado ya no reaparece.
Lo destacado
1
✨ Nuevo1
🗑️Eliminar un chat ya no lo hace parpadear de vuelta en la lista
🔎 Abre el chat de donde GarBotGPT sacó el contexto
10 de junio de 2026
Cuando una respuesta usa algo que hablasteis en otra conversación, aparece un indicador 🔎. Ahora puedes pulsarlo para abrir directamente ese chat anterior y ver el contexto completo de donde salió la información.
Lo destacado
1
✨ Nuevo1
🔎El indicador de "contexto de chats anteriores" ahora es clicable y te lleva a la conversación de origen
Nueva acción en el buscador (⌘K): "Crear un podcast de este chat". GarBotGPT transforma la conversación en un diálogo ameno entre dos presentadores (Leo y Mara) y lo reproduce en voz alta con dos voces distintas, resaltando la frase que suena. Ideal para escuchar un resumen mientras haces otra cosa.
Lo destacado
2
✨ Nuevo2
🎙️Escucha tus chats como un podcast conversacional a dos voces
▶️Reproducción línea a línea con play/pausa, estilo NotebookLM
Nueva acción en el buscador (⌘K o la lupa): "Organizar mis chats en carpetas". GarBotGPT mira tus conversaciones sueltas, las agrupa por tema y crea carpetas automáticamente (p. ej. "Recetas", "Trabajo", "Viaje a Japón"). Solo agrupa lo que está claramente relacionado y siempre puedes mover los chats a mano.
Lo destacado
2
✨ Nuevo2
🗂️Agrupa tus chats sueltos en carpetas por tema, automáticamente
✨Desde el buscador (⌘K) → "Organizar mis chats en carpetas"
Ahora puedes pedir cosas como "hazme un juego de la serpiente" o "una calculadora" y GarBotGPT te genera algo jugable de verdad en el panel del Canvas: se ejecuta ahí mismo y puedes interactuar con teclado, ratón o táctil.
Lo destacado
1
✨ Nuevo1
🕹️Juegos y mini-apps interactivos que se juegan dentro del Canvas
🧠 Memoria automática: GarBotGPT recuerda lo importante de ti
10 de junio de 2026
Ahora, cuando cuentas un dato estable sobre ti (tu nombre, dónde vives, el idioma en que prefieres que te responda, si eres vegetariano/alérgico, tu profesión u objetivo…), GarBotGPT lo recuerda automáticamente para personalizar tus respuestas — sin que tengas que pedirlo. Todo lo que recuerda lo puedes ver, editar o borrar en "Lo que sé de ti" (y pausar la memoria por chat).
Lo destacado
2
✨ Nuevo2
🧠Guarda solo datos personales claros y duraderos, en silencio
🎛️Tú mandas: ve, edita o borra lo recordado en el panel de Memoria, y pausa por chat
🧠 GarBotGPT recuerda mejor lo que hablasteis en otros chats
10 de junio de 2026
Antes, para que retomara algo de otra conversación tenías que decirlo explícitamente ("¿recuerdas lo que hablamos…?"). Ahora, en cualquier mensaje con sustancia, busca por su cuenta si hay algo muy relacionado en tus chats anteriores y lo tiene en cuenta — solo cuando encaja de verdad, para no meter ruido.
Lo destacado
2
✨ Nuevo2
🧠Recuerda contexto de chats anteriores sin que se lo pidas explícitamente
🎯Solo lo usa cuando es muy relevante (umbral alto), para no mezclar temas
▲ Vista previa de componentes Next.js en el Canvas
10 de junio de 2026
El Canvas ya previsualiza componentes y páginas de Next.js (con "use client", next/link, next/image y Tailwind). Se muestran como React de cliente, así que la parte visual se ve al instante. (La lógica de servidor no se ejecuta en la vista previa.)
Lo destacado
2
💎 Mejorado2
▲ Previsualiza componentes Next.js directamente en el panel del Canvas
🎨Soporta Tailwind, next/link y next/image en la vista previa
🛠️ Mejoras al pedir cambios en webs/código (Canvas)
10 de junio de 2026
Dos arreglos del Canvas: (1) cuando pides un cambio sobre una web, código o documento que ya te generó, ahora lo EDITA partiendo de lo que había (creando una versión nueva) en vez de rehacerlo entero desde cero; (2) al editar un mensaje que genera un Canvas, ahora se abre el panel correctamente (antes a veces no aparecía).
Lo destacado
2
✨ Nuevo1
🪟Editar un mensaje con Canvas ya abre el panel como debe
💎 Mejorado1
✏️Pedir un cambio mejora el código existente en vez de empezar de cero
Cuando GarBotGPT genera un documento, código, HTML o diagrama en el panel lateral (Canvas), ahora puedes EDITARLO tú directamente: pulsa el botón de editar (✏️), cambia lo que quieras y guarda. Cada cambio se guarda como una versión nueva, así que siempre puedes volver atrás con el historial.
Lo destacado
2
✨ Nuevo2
✏️Edita a mano el contenido del Canvas (documentos, código, HTML, SVG, diagramas)
🕒Cada edición crea una versión nueva: puedes navegar el historial y volver atrás
🧠 Busca en tus chats por significado, no solo por palabras
10 de junio de 2026
El buscador (⌘K / la lupa) ahora también encuentra conversaciones por su SIGNIFICADO, no solo por las palabras exactas. Puedes preguntar cosas como "¿qué decidimos sobre X?" y te muestra los chats donde hablasteis de eso aunque no usaras esas mismas palabras. Los resultados por significado salen marcados con 🧠.
Lo destacado
2
✨ Nuevo2
🧠El buscador entiende lo que quieres decir y encuentra chats por significado, no solo por coincidencia exacta
🔎Sigue funcionando la búsqueda por palabra clave de siempre; los resultados "inteligentes" se añaden marcados con 🧠
Algunos usuarios no podían entrar desde el móvil (salía "usuario o contraseña incorrectos") porque el teclado añadía una mayúscula al principio o un espacio al final del correo. Ahora el correo se corrige solo (en minúsculas y sin espacios) y el inicio de sesión funciona bien en el móvil.
Lo destacado
1
🐛 Arreglado1
🔐Inicio de sesión arreglado en el móvil (el correo ya no falla por mayúsculas o espacios)
Cuando ves un anuncio recompensado para ganar créditos, el saldo se actualiza AL MOMENTO (antes había que recargar la página) y aparece un "+X" con los créditos ganados.
Lo destacado
1
💎 Mejorado1
🎁El saldo sube al instante tras ver el anuncio, con un "+X" de lo ganado
Arreglado: al subir una foto, los usuarios sin plan Max veían el error "este modelo requiere un plan superior" porque el análisis forzaba un modelo premium. Ahora cada plan usa un modelo de visión compatible con su plan, así que el análisis de imágenes funciona para todos. Los usuarios Max siguen con el mejor modelo.
Lo destacado
1
🐛 Arreglado1
🖼️El análisis de fotos ya funciona en todos los planes (antes daba error sin Max)
Nuevo ajuste de privacidad: "Compartir mi música (Spotify)". Por defecto está DESACTIVADO, así que tu canción no aparece en tu perfil de los canales hasta que tú lo actives en Ajustes → Actividad. Tú siempre ves la tuya.
Lo destacado
1
🔒 Seguridad1
🔒"Escuchando ahora" en tu perfil ahora es opt-in: solo se comparte si tú lo activas
🎧 Perfil de canal renovado + "escuchando ahora" en Spotify
09 de junio de 2026
Al tocar a un usuario en un canal, su perfil estrena un diseño más bonito (cabecera con degradado y avatar más grande) y, si tiene Spotify conectado, muestra EN DIRECTO la canción que está escuchando, con portada y un ecualizador animado. Se actualiza solo mientras tienes el perfil abierto.
Lo destacado
2
💎 Mejorado2
🎧En los perfiles de canal se ve, en directo, la canción que escucha esa persona en Spotify
✨Perfil de usuario rediseñado (cabecera con degradado, más claro y bonito)
⚡ Contorno de voz optimizado (fluido en más móviles)
09 de junio de 2026
El contorno del modo de voz iba a tirones en móviles de gama media/baja. Se ha optimizado el rendimiento (se quitó el ciclo de color que más cargaba la GPU y se aligeraron las capas) y, en equipos más flojos, ahora se muestra una versión ligera del contorno. Se ve igual de bonito pero va suave.
Lo destacado
1
💎 Mejorado1
⚡Contorno de voz mucho más fluido en móviles de gama media/baja
El menú lateral (la barra de navegación) daba tirones al abrirse en el móvil: el contenido se cargaba justo en el momento de la animación. Ahora se precarga por detrás y la animación espera a estar lista, así que abre suave.
El contorno del modo de voz (GarBotGPT-Voz) en el móvil sube de nivel: ahora cicla de color, tiene dos franjas de luz que lo recorren en sentidos opuestos, brillos de esquina más amplios y reacciona con más fuerza a tu voz (se engorda y se ilumina al hablar).
Lo destacado
1
✨ Nuevo1
✨Contorno con ciclo de color, doble cometa de luz y más reacción a tu voz
🗣️ Voz: transcripción en tu idioma (adiós al "you")
09 de junio de 2026
El modo de voz (GarBotGPT-Voz) ahora transcribe fijando tu idioma (español/catalán) en vez de adivinarlo. Antes, con audio flojo, soltaba un "you" en inglés y a veces no transcribía nada; ahora entiende y escribe lo que dices mucho mejor y de forma más constante.
Lo destacado
1
✨ Nuevo1
🗣️Transcripción fijada a tu idioma → mucho más fiable y sin el "you"
🎙️ Voz: arreglado el eco que hacía que "no te escuchara"
09 de junio de 2026
En el modo de voz (GarBotGPT-Voz) el efecto visual de las ondas estaba "robando" el micrófono y desactivaba la cancelación de eco: la voz del asistente se colaba por el altavoz y el modelo respondía "no te he escuchado bien" o transcribía cosas raras. Ahora el efecto visual usa una copia del audio y la cancelación de eco se mantiene, así que se te entiende mucho mejor. Además, el botón de silenciar vuelve a verse bien claro junto al de colgar.
Lo destacado
2
✨ Nuevo1
🔇Botón de silenciar bien visible junto al de colgar
🐛 Arreglado1
🎙️Arreglado el eco que hacía que el asistente "no te escuchara bien"
Arreglado un problema por el que la app se podía quedar "atascada" en una versión antigua guardada en el móvil: a veces no veías las últimas mejoras aunque ya estuvieran publicadas. Ahora la app coge siempre la versión más reciente, y el aviso de "Nueva versión disponible" se aplica al momento al tocarlo.
Lo destacado
1
💎 Mejorado1
⚡La app coge siempre la última versión (sin quedarse en una vieja guardada)
🪄 Contorno de voz mejorado + botones flotantes (móvil)
09 de junio de 2026
En el móvil, el contorno de voz (GarBotGPT-Voz) estrena un efecto mucho más vivo: dos líneas que giran en sentidos opuestos creando ondas, una franja de luz que recorre el borde, brillos en las esquinas y un latido que reacciona a tu voz. Sin tarjeta ni capa sobre el chat, y con los botones de silenciar y colgar flotando bien visibles encima del cuadro de escribir. Además, ya no aparecen transcripciones falsas tipo "you" cuando hay silencio o ruido.
Lo destacado
3
✨ Nuevo3
🌊Contorno con ondas, cometa de luz y brillos en las esquinas que reaccionan a tu voz
🎛️Botones de silenciar y colgar flotando bien visibles (sin tapar el chat)
🗣️Se ocultan las transcripciones falsas ("you"…) cuando hay silencio o ruido
En el chat por voz (GarBotGPT-Voz) ya puedes controlar Spotify hablando: "pon música de…", "siguiente canción", "pausa", "reanuda". Y la tarjeta de voz estrena un acabado tipo cristal líquido (translúcido, con brillos) con el logo nuevo.
Lo destacado
2
✨ Nuevo2
🎵Controla Spotify por voz ("pon música de…", "siguiente", "pausa")
Mejoras en el modo de voz (GarBotGPT-Voz): el botón de silenciar ahora corta de verdad al instante, tus mensajes hablados se guardan y siguen ahí al recargar, y la tarjeta de voz estrena un diseño claro con el logo nuevo. Además ya no ofrece consultar la base de datos de la empresa ni documentos internos.
Lo destacado
1
✨ Nuevo1
🎙️Silencio fiable, mensajes que se guardan y tarjeta clara con logo nuevo
Varias mejoras de robustez en el chat: el botón de enviar ya no se queda bloqueado al terminar la IA, las respuestas no se pierden aunque el servidor tenga un hipo al guardar, y las actualizaciones en tiempo real (mensajes nuevos, chats compartidos) son más fiables. En resumen: el chat va más fino y con menos rarezas.
Lo destacado
1
✨ Nuevo1
🛡️Menos cuelgues y rarezas al enviar y recibir mensajes
📱 Móvil: el campo de escribir ya no salta al tocarlo
09 de junio de 2026
En el móvil, al tocar el campo de mensaje para escribir, la pantalla daba un salto raro hacia arriba (por cómo se bloqueaba el scroll). Lo hemos corregido: ahora al abrir el teclado todo se mantiene en su sitio y el campo queda justo encima del teclado.
Lo destacado
1
✨ Nuevo1
📱El campo de escribir ya no salta hacia arriba al tocarlo en el móvil
✏️ Renombrar chats: al instante y siempre se guarda
09 de junio de 2026
Renombrar un chat ahora es inmediato (antes el nuevo nombre tardaba 1-2 segundos en aparecer) y se guarda siempre, también en los chats dentro de carpetas (antes a veces volvían al nombre antiguo al recargar). Lo mismo aplica a anclar, marcar favorito y mover a carpeta.
Lo destacado
1
💎 Mejorado1
✏️Renombrar es instantáneo y persiste siempre (incluidos chats de carpetas)
En algunos chats, al enviar un mensaje la conversación daba "parpadeos" raros (la respuesta aparecía y desaparecía un instante) mientras la IA respondía. Era por recargas internas en bucle. Lo hemos frenado: ahora el chat se mantiene estable y fluido durante todo el proceso del mensaje.
Lo destacado
1
✨ Nuevo1
✨Sin parpadeos ni saltos al enviar mensajes y mientras responde la IA
✅ El botón de enviar se libera en cuanto la IA termina
09 de junio de 2026
Antes, tras responder la IA, el botón de enviar seguía en rojo (parar) y no podías escribir el siguiente mensaje hasta pasados varios segundos, mientras el servidor terminaba tareas en segundo plano. Ahora, en cuanto la IA acaba de escribir, el botón vuelve a estar disponible al instante (manteniendo la respuesta visible), para que puedas continuar la conversación sin esperas.
Lo destacado
1
💎 Mejorado1
✅El botón de enviar se libera al instante al terminar la IA (ya no se queda en rojo)
Corregido un bucle interno que recargaba los mensajes del chat decenas de veces por segundo en segundo plano, saturando el navegador y el servidor — era la causa de que enviar mensajes y ver las respuestas fuera tan lento. Ahora los mensajes solo se recargan cuando cambian de verdad, así que el chat va notablemente más ligero y rápido.
Lo destacado
1
✨ Nuevo1
🚀Eliminado un bucle que recargaba mensajes sin parar y ralentizaba todo el chat
Mejorada la velocidad al enviar: ahora tu mensaje (la burbuja) aparece de inmediato en lugar de tardar, porque ya no esperamos a validar la sesión contra el servidor en cada envío. Además se ha eliminado un reenvío en segundo plano que fallaba y ralentizaba el estado de la IA mientras responde.
Lo destacado
2
✨ Nuevo1
🧹Eliminado un reenvío en vivo que fallaba y ralentizaba la respuesta
💎 Mejorado1
⚡Tu burbuja de mensaje aparece al instante al enviar (sin esperas)
🛠️ Arreglado el error al enviar el segundo mensaje
09 de junio de 2026
Solucionado un fallo que, cuando la conexión en tiempo real del chat se cortaba, hacía que la app intentara recargar los mensajes una y otra vez sin parar — saturaba la conexión y provocaba el error “Failed to fetch” al enviar mensajes. Ahora, si la conexión en vivo falla, se reintenta de forma espaciada y controlada, sin bloquear el envío.
Lo destacado
1
✨ Nuevo1
🛠️El chat ya no se queda en bucle ni da “Failed to fetch” si se corta la conexión en vivo
📜 Subir para leer mensajes ya no “rebota” al fondo
08 de junio de 2026
Arreglado: dentro de un chat, al estar abajo del todo e intentar subir para releer mensajes anteriores, la vista rebotaba y te devolvía abajo mientras la IA respondía. Ahora, en cuanto subes, se respeta tu posición; solo vuelve a seguir la respuesta automáticamente cuando regresas al final o envías un mensaje nuevo.
Lo destacado
1
✨ Nuevo1
📜Al subir en un chat ya no te devuelve al fondo (se respeta tu scroll)
📱 La pantalla de inicio ya no se mueve en el móvil
08 de junio de 2026
Arreglado el molesto desplazamiento (scroll) de la pantalla de inicio del chat en el móvil: la página se quedaba un poco suelta y se movía hacia arriba y abajo. Ahora queda fija y estable, con el cuadro de escritura siempre en su sitio.
Lo destacado
1
✨ Nuevo1
📱La pantalla de inicio del chat ya no se desplaza en el móvil
Completada la traducción al catalán de toda la aplicación: ahora, si eliges catalán en los ajustes de idioma, verás en catalán el chat, los canales, los ajustes, la facturación y los planes, tus archivos e imágenes, las carpetas y proyectos, la pantalla de mantenimiento, el inicio de sesión y registro, la página de estado y mucho más. Antes muchos textos seguían apareciendo en castellano aunque tuvieras el catalán activado.
Lo destacado
2
✨ Nuevo2
🌍Toda la app se muestra en catalán al elegirlo en los ajustes de idioma
🈳Traducidos los textos que antes seguían en castellano (ajustes, planes, archivos, login, estado…)
Arreglado el fallo por el que la IA no respondía en los canales al invocarla con @ (por ejemplo "@GarBotGPT-5.5 hola"). La respuesta se generaba de una forma que el servidor no llegaba a ejecutar; ahora se genera correctamente y responde siempre, con cualquier modelo.
Lo destacado
1
✨ Nuevo1
🤖La IA de los canales vuelve a responder al mencionarla con @
Arreglado: al tocar una "Sugerencia para ti" de la pantalla de inicio, ahora abre un chat nuevo y envía el mensaje automáticamente (antes te llevaba al chat pero no hacía nada). Además, en las carpetas puedes activar por defecto más herramientas (presentaciones, resumir YouTube, mapa mental, quiz, imagen→código, App Builder).
Lo destacado
2
✨ Nuevo1
🗂️Más herramientas configurables por defecto en cada carpeta
💎 Mejorado1
✅Las sugerencias de inicio ahora envían el mensaje al instante
Nueva función en el ordenador: comparte tu pantalla y habla con GarBotGPT en directo. La IA ve lo que muestras (código, documentos, errores, webs…) y te ayuda por voz, en tiempo real. La tienes en el menú de herramientas (➕) del cuadro de escritura, como "Compartir pantalla".
Lo destacado
2
✨ Nuevo2
🖥️Comparte tu pantalla y habla con la IA en directo (escritorio)
🎙️La IA ve tu pantalla y responde por voz mientras trabajas
⌨️ Atajos, créditos a la vista y pegar como archivo
08 de junio de 2026
Pulsa Shift + ? para ver todos los atajos de teclado. En el ordenador, tus créditos se muestran ahora en la cabecera y se actualizan al instante. Y si pegas un texto muy largo en el cuadro de escritura, te ofrecemos adjuntarlo como archivo en vez de llenar el mensaje.
Lo destacado
3
✨ Nuevo2
⌨️Shift + ? muestra todos los atajos de teclado
📎Pegar un texto muy largo ofrece adjuntarlo como archivo
💎 Mejorado1
✨Créditos visibles en la cabecera (se actualizan al instante)
🔎 Buscar dentro del chat + fechas y mensajes plegables
08 de junio de 2026
En el ordenador, pulsa Ctrl+F para buscar dentro de la conversación actual: salta entre coincidencias y resalta el mensaje. Además, ahora hay separadores de fecha ("Hoy", "Ayer", "12 de junio") entre los mensajes, y los mensajes muy largos también se pliegan en el ordenador con "Mostrar más".
Lo destacado
3
✨ Nuevo3
🔎Ctrl+F: buscar dentro del chat y saltar entre resultados
🗓️Separadores de fecha entre los mensajes
📖Mensajes muy largos plegables también en el ordenador
En la app, la pantalla de inicio (splash) ahora se mantiene mientras la app carga y desaparece justo cuando está lista, en vez de dejar un parpadeo en blanco. Apertura más limpia y fiable.
Lo destacado
1
✨ Nuevo1
🚀Apertura de la app más fluida, sin parpadeo en blanco
Ahora puedes tocar cualquier imagen dentro de una respuesta para verla ampliada (con zoom), no solo las imágenes generadas. Y en el móvil, los mensajes muy largos se pliegan con un botón "Mostrar más / Mostrar menos" para que la conversación sea más cómoda de leer.
Lo destacado
2
✨ Nuevo2
🖼️Toca una imagen del chat para ampliarla con zoom
📖Mensajes largos plegables en móvil ("Mostrar más / menos")
Al abrir el selector de modelos en el móvil, ahora salta directo al modelo que tienes activo (sin buscarlo en la lista) y cada modelo muestra una breve descripción de para qué sirve, para elegir más fácil.
Lo destacado
2
✨ Nuevo2
🎯Se desplaza automáticamente hasta tu modelo activo al abrir
En los canales, ahora puedes mantener pulsado un mensaje en el móvil para abrir un menú rápido: reaccionar con un emoji, responder en hilo, fijar, copiar el texto o el enlace, y editar o eliminar si es tuyo. Además, los mensajes seguidos de la misma persona se agrupan para una conversación más limpia y compacta, con la hora discreta.
Lo destacado
3
✨ Nuevo2
👇Mantén pulsado un mensaje (móvil) para reaccionar y más acciones
🧹Mensajes seguidos del mismo autor agrupados (más limpio y compacto)
En la app, el botón "Atrás" de Android ahora cierra primero lo que tengas abierto (menú lateral, ventanas, modales) o vuelve atrás, y solo minimiza la app cuando no hay nada que cerrar (se acabó salir sin querer). Además puedes abrir el menú lateral deslizando desde el borde izquierdo de la pantalla.
Lo destacado
2
✨ Nuevo2
👈Botón "Atrás" de Android: cierra menús/ventanas o vuelve atrás (no sale sin querer)
➡️Abrir el menú lateral deslizando desde el borde izquierdo
🔄 Aviso de actualización + menos movimiento si lo prefieres
05 de junio de 2026
Cuando publicamos una versión nueva, ahora verás un aviso "Nueva versión disponible — Actualizar" para coger los últimos cambios sin quedarte con una versión cacheada antigua. Además, si tienes activado "reducir movimiento" en tu móvil, la app respeta esa preferencia y reduce las animaciones.
Lo destacado
2
✨ Nuevo1
🧩Se respeta "reducir movimiento" del sistema (accesibilidad/batería)
💎 Mejorado1
🔄Aviso "Actualizar" cuando hay una versión nueva (adiós a la caché vieja)
⬇️ Aviso de mensajes nuevos al estar scrolleado arriba
05 de junio de 2026
Cuando estás leyendo más arriba en un chat y llegan respuestas nuevas, el botón de "ir al final" muestra ahora cuántos mensajes nuevos hay, para que no te pierdas nada.
Lo destacado
1
✨ Nuevo1
⬇️El botón "ir al final" indica los mensajes nuevos llegados
🔗 Enlaces dentro de la app + copiar código con vibración
05 de junio de 2026
En la app, los enlaces externos de los mensajes ahora se abren en un navegador integrado (con botón para volver a GarBotGPT) en vez de salir a otro navegador. Y al copiar un bloque de código notas una pequeña vibración de confirmación.
Lo destacado
2
✨ Nuevo2
🔗Los enlaces se abren dentro de la app (navegador integrado)
El menú "···" del móvil ahora está organizado en secciones (App · Más · Cuenta), con iconos de color, tus créditos restantes y CTA para mejorar de plan, atajos a Imágenes y Canales, cambio de idioma rápido, compartir la app y, por fin, "Cerrar sesión". Además, "Novedades" avisa con un punto cuando hay versión nueva.
Lo destacado
3
✨ Nuevo3
👤Menú de usuario por secciones con "Cerrar sesión", créditos y cambio de idioma
🔗Atajos a Imágenes/Canales y "Compartir GarBotGPT" desde el menú
⚡ Canales en tiempo real (de verdad) + modo voz centrado
05 de junio de 2026
Arreglado a fondo el tiempo real de Canales: el servidor de realtime estaba en un bucle de error que impedía entregar los mensajes nuevos. Ya funciona, y además añadimos una red de seguridad para que los mensajes aparezcan sin tener que recargar nunca. La tarjeta del modo voz en directo ahora queda centrada y se ve más viva (anillo que late al escuchar/hablar).
Lo destacado
2
✨ Nuevo1
🎙️Modo voz en directo centrado y con anillo reactivo al escuchar/hablar
💎 Mejorado1
⚡Canales: los mensajes nuevos aparecen al instante (sin recargar)
📱 Inicio móvil: accesos en cuadrícula + prompts sugeridos
05 de junio de 2026
Los accesos rápidos vuelven a verse como tarjetas en cuadrícula (más limpias y compactas que el carrusel anterior) y, debajo, añadimos "Prueba a preguntar" con ejemplos para arrancar una conversación de un toque y aprovechar el espacio.
Lo destacado
2
✨ Nuevo1
💡Prompts sugeridos en móvil para empezar de un toque
💎 Mejorado1
📱Accesos rápidos en cuadrícula compacta (adiós al carrusel)
En el móvil, la pantalla de inicio ocupa menos: el saludo y el logo son más compactos y los accesos rápidos pasan a ser un carrusel de chips (se deslizan en una sola fila, con efecto cristal). Al tocar un acceso (imagen, documento, quiz…) se activa y se abre el teclado con una pista de qué escribir. Y el comando "/spotify" ahora es uno solo (antes ocupaba mucho en el menú).
Lo destacado
3
✨ Nuevo2
⌨️Al tocar un acceso, se enfoca el cuadro con una pista de qué escribir
🎧"/spotify" unificado en un solo comando (ocupa menos en el menú)
💎 Mejorado1
📱Inicio móvil más compacto (saludo/logo) y accesos rápidos en carrusel de chips (cristal)
🫧 Canales: cuadro de mensaje con Liquid Glass + emojis arreglados
05 de junio de 2026
El cuadro de escribir en Canales estrena en móvil el mismo efecto "Liquid Glass" del chat (cristal con brillo), más bonito e integrado. Y el selector de emojis ya funciona bien: se abre junto al botón, se cierra al tocar fuera y los emojis se ven correctamente.
Lo destacado
2
✨ Nuevo1
🫧Cuadro de mensaje de Canales con efecto Liquid Glass en móvil
🐛 Arreglado1
😀Selector de emojis arreglado (se abre bien y los emojis se ven)
⚡ Canales abren al instante + arreglados los avatares
05 de junio de 2026
Los chats de Canales ahora abren al instante: recordamos los últimos mensajes de cada canal y se muestran de inmediato mientras se actualizan en segundo plano (antes salía la pantalla en blanco esperando a la base de datos). Además, los avatares de los usuarios se muestran de forma fiable: aparece la inicial al momento y la foto encima cuando carga, sin imágenes rotas.
Lo destacado
2
✨ Nuevo1
🖼️Avatares de usuario más fiables: nunca se ven rotos (inicial + foto al cargar)
💎 Mejorado1
⚡Los canales abren al instante (mensajes recordados + refresco en segundo plano)
💬 Nuevo cuadro de mensaje en Canales (flotante y con emojis)
05 de junio de 2026
Hemos rediseñado el cuadro para escribir en los Canales: ahora es flotante y moderno (tipo burbuja con cristal), centrado y más cómodo. Incluye un botón de emojis con selector rápido y un botón de @ para mencionar a personas o modelos, además de una vista de adjuntos más clara.
Lo destacado
3
✨ Nuevo2
💬Cuadro de mensaje de Canales flotante y moderno (glass, centrado)
🎧 Comandos rápidos de Spotify (/) + Canales cargan más rápido
05 de junio de 2026
Nuevo: escribe "/" en el cuadro de mensaje y verás un menú con comandos rápidos de Spotify (reproducir, pausar, siguiente, qué suena, crear playlist, buscar…); al elegir uno se activa Spotify y se prepara el mensaje. Además, los Canales (comunidad y chats privados) ahora abren más rápido al optimizar las consultas de carga de mensajes.
Lo destacado
2
✨ Nuevo1
🎧Comandos "/" de Spotify: reproducir, pausar, siguiente, playlist, buscar, qué suena y más (escribe /spotify para verlos)
💎 Mejorado1
⚡Canales y chats privados: la carga de mensajes es más rápida
⚡ Canales en tiempo real + barra de estado bien en la app
05 de junio de 2026
Arreglado: en Canales (comunidad y chats privados) los mensajes nuevos ahora llegan al instante, sin tener que recargar la página. Además, en la app, la barra de estado del móvil (hora/batería) ya no se ve como una franja negra fea: ahora va del color del tema y queda integrada.
Lo destacado
2
✨ Nuevo1
📱App: la barra de estado ya no sale negra; combina con el color de la app
💎 Mejorado1
⚡Canales y chats privados: los mensajes nuevos aparecen en tiempo real (sin recargar)
📎 Adjuntos más claros y herramientas activas a la vista
05 de junio de 2026
Los archivos que adjuntas ahora muestran su estado mucho mejor: barra de progreso mientras suben y, si falla la subida, un aviso para reintentar tocando el archivo (antes desaparecían). Además, las herramientas activas (Buscar en web, Deep Research, etc.) aparecen como chips visibles bajo el cuadro de escribir, y puedes desactivar cada una con un toque.
Lo destacado
2
✨ Nuevo2
📎Adjuntos: barra de progreso al subir y opción de reintentar si falla (sin perder el archivo)
🧰Herramientas activas visibles como chips bajo el input; cada una se quita con un toque
Al abrir la web, el selector de modelos ya no muestra la ruedecita de carga: aparece de inmediato con el último modelo y la lista guardados, y se actualiza en segundo plano sin que tengas que esperar.
Lo destacado
1
💎 Mejorado1
⚡El menú de modelos carga al instante (sin spinner) y se refresca en silencio
📱 App más limpia: sin barra inferior y cabecera bien colocada
05 de junio de 2026
Hemos quitado la barra de navegación inferior del móvil para ganar espacio: ahora navegas desde el menú lateral. Además, la cabecera, el menú y todas las páginas ya no quedan tapadas por la barra de estado del móvil (hora/batería). Y el icono de la app deja de verse con dos "G".
Lo destacado
3
✨ Nuevo2
📱Quitada la barra inferior en el móvil → más espacio; navega desde el menú lateral
🔝La cabecera y todas las páginas ya no quedan debajo de la barra de estado del sistema
🐛 Arreglado1
🅖 Arreglado el icono de la app (ya no salen dos "G")
📱 Arreglado: el cuadro de escribir tapaba los accesos rápidos (app)
05 de junio de 2026
En la app, el cuadro de "Escribe un mensaje…" se solapaba con el último acceso rápido (p. ej. "Análisis Excel/CSV"). Ahora el espacio inferior reserva exactamente el alto del cuadro + la barra de navegación + el área segura del móvil, así nada queda tapado. Es la misma web que en PC; no hay estilos distintos entre web y app.
Lo destacado
1
💎 Mejorado1
📱El cuadro de escribir ya no tapa los accesos rápidos en el móvil
Nueva forma de conseguir créditos gratis en la app: ver un anuncio recompensado de AdMob da 250 créditos (máximo 5 al día). El botón aparece cuando te quedan pocos/cero créditos y en Ajustes → Facturación. Los créditos los acredita el servidor (anti-fraude, con tope diario). Solo en la app; en la web no aplica.
La app Android muestra ahora un banner de AdMob en la parte inferior (encima de la barra de navegación). Solo en la app nativa; en la web se sigue usando AdSense. El composer se ajusta para no quedar tapado por el banner.
Lo destacado
2
✨ Nuevo2
📢Banner de AdMob inferior en la app nativa
📐El cuadro de escribir se reajusta para no quedar tapado por el anuncio
🐛 El cuadro de escribir ya no tapa los accesos rápidos (de verdad)
04 de junio de 2026
Arreglado de raíz el solape del input sobre la última tarjeta de accesos rápidos en la pantalla de inicio. La causa era que había dos cuadros de escribir montados (uno para escritorio, otro para móvil) y el que estaba oculto corrompía el cálculo del espacio — un fallo intermitente que se veía bien en unos dispositivos y mal en otros. Ahora solo el cuadro visible ajusta el espacio.
Lo destacado
2
✨ Nuevo1
🎯Corregida la causa real (carrera entre dos composers por una variable CSS)
🐛 Arreglado1
🐛El input ya no tapa "Análisis Excel/CSV" ni la última fila de accesos
📱 Arreglos de la app móvil (barra de estado, input y offline)
04 de junio de 2026
Tres arreglos en la app: (1) el contenido ya no queda debajo de la barra de estado/notificaciones (se respeta el área segura del móvil); (2) el cuadro de escribir ya no tapa la última fila de accesos rápidos en la pantalla de inicio; (3) al abrir la app con red lenta ya no salta a la página "sin conexión" — espera más a la red y, si hace falta, muestra el chat desde la caché en vez del aviso de offline.
Lo destacado
3
✨ Nuevo1
📐El contenido respeta la barra de estado/notch (viewport-fit cover)
💎 Mejorado2
⌨️El input ya no tapa los accesos rápidos en el inicio
🌐Menos "sin conexión": más tiempo de espera y fallback al chat cacheado
Las carpetas tienen muchos más iconos visuales para elegir (lectura, favoritos, casa, fotos, música, código, web, estudios, agenda, finanzas, equipo, inspiración, logros, viajes, compras, diseño, mensajes…) y dos colores nuevos (fucsia y pizarra). Aparecen al crear o editar una carpeta.
Lo destacado
3
✨ Nuevo2
🌈2 colores de acento nuevos (fucsia y pizarra)
✨Disponibles al crear y al editar carpetas, con su color
Al adjuntar muchas imágenes al chat (p.ej. 25) para analizarlas, antes daba error: se descargaban una a una (lento) y se enviaban todas juntas, superando el límite de tamaño del modelo. Ahora se descargan en paralelo (más rápido) y se incluyen tantas como caben dentro del límite; si no caben todas, el asistente te avisa y te pide enviar el resto en otro mensaje.
Lo destacado
3
✨ Nuevo1
💬El asistente avisa si no caben todas y pide el resto en otro mensaje
💎 Mejorado1
⚡Descarga de imágenes en paralelo (antes en serie → muy lento con muchas)
🐛 Arreglado1
🛡️Límite de tamaño total para no superar el máximo del modelo (evita el error)
Las carpetas del menú lateral ahora se guardan en caché en el navegador (localStorage), igual que las conversaciones. Al recargar la página aparecen al instante en vez de esperar a la consulta al servidor. Se actualiza sola en segundo plano y se descarta el caché si cambias de cuenta.
Lo destacado
3
✨ Nuevo1
🔄Refresco en segundo plano y sincronización entre dispositivos intactos
💎 Mejorado2
⚡Carpetas visibles al instante al recargar (caché en localStorage)
🔐El caché se descarta si la sesión es de otra cuenta
✏️ Editor móvil más grande + cron de estado arreglado
04 de junio de 2026
Al editar un mensaje en móvil, el cuadro de texto ahora es más alto y cómodo (antes se veía muy pequeño) y deja más espacio para mensajes largos. Además se arregló el aviso de fallo del cron de comprobaciones de estado (era un secreto desincronizado, no un fallo de la app).
Lo destacado
3
✨ Nuevo3
✏️Cuadro de edición en móvil más alto y cómodo de leer/escribir
📏Más espacio para mensajes largos al editar (antes se quedaba pequeño)
🔁Cron de status checks operativo (secreto CRON_SECRET re-sincronizado)
✏️ Editar mensajes en móvil estilo ChatGPT + bloqueo de modelos
04 de junio de 2026
En móvil (web), al pulsar "Editar" en un mensaje su texto baja al cuadro de escribir y aparece un chip "Editar" arriba (como en la app de ChatGPT); al enviar se guarda la edición y se regenera la respuesta. En escritorio se mantiene el editor en cristal líquido. Además, el bloqueo de modelos según tu plan (badge PRO + ir a planes) ahora también se aplica en el selector de modelos del móvil, igual que en escritorio.
Lo destacado
4
✨ Nuevo3
✏️Editar en móvil: el mensaje va al input + chip "Editar" (estilo ChatGPT)
🔄Reutiliza el guardado y la regeneración existentes (no rompe el chat normal)
🏷️Badge "PRO" y acceso a planes al tocar un modelo bloqueado en móvil
🔒 Seguridad1
🔒Modelos premium bloqueados por plan también en el selector de móvil
El editor de mensajes se ha rediseñado con el estilo cristal líquido (Liquid Glass, tipo iOS 26): tarjeta translúcida con reflejos que siguen al cursor en PC, campo de texto en "pozo" de cristal, botones glossy con el violeta de la marca y teclas de atajo de cristal. Mucho más moderno y coherente con el resto de la app. Light y oscuro.
Lo destacado
4
✨ Nuevo4
🫧Tarjeta de cristal translúcido con rim especular y sheen superior
🖱️Reflejo de luz que sigue al cursor del ratón (en PC)
🟣Botón "Guardar" glossy violeta + teclas de atajo de cristal
La burbuja para editar un mensaje se ha rediseñado por completo: ahora tiene modo oscuro real (antes se veía blanca y rota con tema oscuro en PC), el cuadro de texto crece solo según escribes, botones con el acento violeta de la marca, atajos de teclado visibles y un botón "Restaurar" para volver al texto original.
Lo destacado
4
✨ Nuevo4
🌙Modo oscuro real (antes aparecía un panel blanco roto en PC)
📐El cuadro de texto crece automáticamente con el contenido
↩️Botón "Restaurar" para volver al texto original de un toque
⌨️Atajos visibles (Ctrl+Enter enviar · Esc cancelar) y acento violeta
El menú lateral en móvil ahora entra deslizándose desde la izquierda, se puede cerrar arrastrándolo con el dedo hacia la izquierda y respeta el notch/barra de estado del teléfono. También se cierra con la tecla Escape y es más accesible para lectores de pantalla.
Lo destacado
4
✨ Nuevo3
👆Cierra el menú deslizándolo con el dedo hacia la izquierda
✨Animación de entrada lateral suave (en vez de aparición brusca)
📐Respeta el notch y la barra de estado (safe-area) en móvil
💎 Mejorado1
⌨️Se cierra con Escape y mejora la accesibilidad (role=dialog)
📱 Input móvil bien colocado + input navideño completo
03 de junio de 2026
Dos arreglos: (1) en la app móvil el cuadro de escribir salía demasiado arriba (se contaba dos veces el margen inferior del sistema); ahora queda justo encima de la barra inferior. (2) Con el tema Navidad, el cuadro de escribir es completamente festivo: fondo nevado, borde degradado, botón + en rojo, botón de enviar en verde abeto y placeholder navideño.
Lo destacado
2
✨ Nuevo2
📱El input ya no flota a media pantalla en la app móvil
🔧 Canales: chats privados y fotos arreglados + header navideño
03 de junio de 2026
Tres arreglos: (1) al pulsar un usuario en Canales ya se crea/abre el chat privado (faltaba aplicar una parte de la base de datos); (2) las imágenes y archivos enviados en Canales ya se ven (antes daban error porque se generaba un enlace público sobre un almacén privado → ahora enlace firmado); (3) en el tema Navidad se quita la "barra roja" del encabezado, que ahora se funde con el fondo festivo.
Lo destacado
3
✨ Nuevo3
💬Canales: abrir chat privado al pulsar un usuario ya funciona
🖼️Canales: las fotos/archivos enviados ya se muestran (enlace firmado)
Más espíritu navideño (solo con el tema Navidad activo): las conversaciones del menú lateral lucen un acento rojo→verde y un copito de nieve, y la caja para escribir se vuelve muy navideña, con borde degradado, una guirnalda de lucecitas parpadeantes y un arbolito. No afecta a los demás temas.
Lo destacado
3
✨ Nuevo3
🎄Cards de chat con acento festivo + copito de nieve (tema Navidad)
✨Input con borde rojo→verde, guirnalda de luces y arbolito
🌙Respeta "reducir movimiento" (las luces no parpadean si lo tienes activado)
Al entrar en el chat (sobre todo en móvil) la app tardaba en cargar porque el servidor validaba tu sesión DOS veces seguidas contra la base de datos del NAS: una en el middleware y otra en la propia página de chat. Hemos quitado la segunda (ahora se lee la sesión ya validada, sin volver a llamar al servidor), así que la página de chat carga aproximadamente el doble de rápido.
Lo destacado
3
💎 Mejorado2
⚡Entrada al chat ~2x más rápida (una validación de sesión menos por carga)
📱Mejora especialmente notable en móvil vía web
🔒 Seguridad1
🔒Sigue siendo seguro: el middleware ya valida la sesión en cada petición
🧾 Colecciones de conocimiento: ahora extrae datos, no solo lista
03 de junio de 2026
Las COLECCIONES de conocimiento (p. ej. una carpeta con tus nóminas) usaban una ruta distinta que solo daba al modelo un inventario de nombres + fragmentos parciales, por eso "dame mis nóminas" devolvía la lista de archivos pero no los importes. Ahora esa ruta también inyecta el texto real de cada documento (completo en los cortos) y se le indica que, al listar documentos con datos (nóminas, facturas…), incluya los datos clave (periodo, líquido) y calcule totales en vez de limitarse a los nombres.
Lo destacado
4
✨ Nuevo3
🧾Las colecciones inyectan el contenido real de cada documento (no solo el inventario)
🧮"dame mis nóminas" ahora puede dar periodo + líquido y sumar totales
📄Texto completo para documentos cortos; presupuesto de contexto para no pasarse
🐛 Arreglado1
🐞Arreglada la causa real: la ruta de colección no usaba el texto persistido
📄 Documentos cortos: el modelo ve el texto completo
03 de junio de 2026
Antes, al consultar tus archivos, el asistente solo veía fragmentos y un extracto recortado del documento. Ahora los documentos cortos (nóminas, facturas, recibos, contratos de pocas páginas) se le pasan ENTEROS al modelo, así que no se le escapa ningún dato. Los documentos largos siguen con fragmentos relevantes pero el extracto se ha ampliado de 6.000 a 14.000 caracteres. El texto completo ya estaba guardado; solo cambia cuánto se le entrega al modelo.
Lo destacado
4
✨ Nuevo4
📄Documentos cortos (≤ ~12.000 caracteres) → contenido COMPLETO al modelo, siempre
🔎Documentos largos → extracto ampliado de 6.000 a 14.000 caracteres + fragmentos
🧾Ideal para nóminas/facturas: ya no se pierde ningún importe ni dato
⚙️Sin re-indexar nada: el texto completo ya estaba almacenado
🧠 Conocimiento de carpeta: entiende mejor lo que pides
03 de junio de 2026
El conocimiento de carpeta ahora pasa por un modelo intermedio que "comprende" tu pregunta antes de buscar: la expande con los términos y campos que tendría el documento (p. ej. al pedir "mis nóminas" añade salario, devengado, líquido, IRPF, periodo…), de modo que encuentra el fragmento correcto aunque uses otras palabras. Además, cuando preguntas por datos de los documentos, el asistente extrae los valores concretos y los calcula (p. ej. el líquido) en vez de limitarse a listar los archivos.
Lo destacado
4
✨ Nuevo2
🧠Comprensión/expansión de la consulta (HyDE) también en carpetas, no solo en unidad de red
🧮Extrae importes y calcula (líquido = devengado − deducciones) en vez de solo listar archivos
💎 Mejorado2
🔎Mejor recuperación aunque uses palabras distintas a las del documento
⚡Cacheado por consulta y con timeout de 4s para no frenar la respuesta
La página de mantenimiento se ha rehecho para que entre prácticamente en una sola pantalla, sin scroll. En escritorio pasa a un diseño de dos columnas (a la izquierda el logo con el anillo de progreso y la cuenta atrás; a la derecha el estado de los sistemas, el progreso y el aviso por email), centrado verticalmente y mucho más denso y pulido.
Lo destacado
4
✨ Nuevo3
🎯Anillo de progreso con % más compacto y elegante
📊Estado de sistemas y progreso de la operación condensados
✉️"Avísame cuando vuelva" integrado de forma compacta
💎 Mejorado1
🖥️Diseño de 2 columnas centrado verticalmente → casi sin scroll
Al cambiar de una conversación a otra ya no aparece la pantalla de "cargando" con el esqueleto que hacía que pareciera lento. Ahora, si ya habías abierto ese chat en la sesión, sus mensajes se muestran al instante desde una caché en memoria y se actualizan en segundo plano. El esqueleto de carga solo se ve la primera vez que abres un chat.
Lo destacado
3
✨ Nuevo2
🔄Los mensajes se revalidan en segundo plano (siempre actualizados)
💀El esqueleto de carga solo aparece la primera vez que abres un chat
💎 Mejorado1
⚡Volver a un chat ya visto: aparece al instante, sin esqueleto de carga
El chat arranca antes: la configuración de modelos (que el servidor consultaba hasta 3 veces por mensaje contra la base de datos del NAS) ahora se sirve de una caché en memoria con auto-invalidación cuando un admin edita modelos, quitando varias idas y vueltas en el camino crítico antes de la respuesta de la IA. Y la página de mantenimiento se ha rehecho de cero: anillo de progreso circular con porcentaje en vivo, auroras en movimiento, estrellas fugaces y un panel de "estado de los sistemas" estilo status-page.
Lo destacado
4
💎 Mejorado4
⚡Resolución de modelos cacheada → menos consultas al NAS antes de responder
🔄La caché se invalida sola al editar modelos en el panel admin
🛠️Página de mantenimiento rediseñada: anillo de progreso + % en vivo
🌌Auroras animadas, estrellas fugaces y panel de estado de sistemas
Ahora, sin conexión, sigues viendo tus conversaciones recientes en vez de una pantalla en blanco. La lista de chats se guarda en el dispositivo (IndexedDB) y se pinta al instante, y los mensajes de los chats que abriste se sirven desde una caché del Service Worker (se actualizan solos al volver la conexión). Un aviso claro indica que estás en "modo solo lectura" y el envío se desactiva hasta reconectar. Sin afectar al chat normal/compartido/en vivo.
Lo destacado
4
✨ Nuevo1
🔌Aviso "sin conexión — solo lectura" + envío bloqueado hasta reconectar
💎 Mejorado2
📋La lista de conversaciones se guarda y se ve al instante sin conexión
💬Los mensajes ya vistos se sirven desde caché offline (stale-while-revalidate)
🎄 Navidad aún más rico + selector legible + música aleatoria
03 de junio de 2026
Arreglado el selector de modelo en temas oscuros (el panel salía casi blanco e ilegible; ahora usa la superficie del tema). Navidad gana muchos más detalles: bolas colgando, destellos dorados, nieve acumulada abajo, barra lateral con degradado y borde dorado, y una pantalla de bienvenida con marco festivo iluminado. Además, los villancicos ahora suenan en orden ALEATORIO: al refrescar la página empieza otra canción.
Lo destacado
4
✨ Nuevo4
🛠️Selector de modelo legible en temas oscuros (panel opaco del tema)
🎄Navidad: bolas colgando, destellos, nieve acumulada y bienvenida con marco
🎚️Barra lateral navideña con degradado y borde dorado
🔀Villancicos en orden aleatorio (otra canción al refrescar)
🎨 Tema en el área de chat + festivos optimizados para móvil
02 de junio de 2026
Arreglado: el tema ahora también recolorea el ÁREA DE CONVERSACIÓN del chat (antes se quedaba en blanco aunque el resto estuviera tematizado). Y los efectos festivos (nieve, murciélagos, adornos) van mucho más fluidos en móvil sin tocar la versión de PC: la nieve usa menos copos, sin desenfoque, a 30 fps y resolución 1x, y se reducen los elementos animados. En ordenador se mantiene todo al máximo detalle.
Lo destacado
4
✨ Nuevo2
📱Nieve mucho más ligera en móvil (menos copos, sin blur, 30 fps, DPR 1)
🖥️La versión de PC se mantiene igual (máximo detalle)
💎 Mejorado2
🎨El tema cubre también el área de mensajes del chat (ya no se queda blanco)
⚡Menos adornos animados en móvil → scroll y chat fluidos
🎄 Temas: chat arreglado, Halloween top y bienvenida navideña
02 de junio de 2026
El tema activo ahora se aplica en TODA la web desde el primer instante (el chat incluido), resuelto en el servidor en vez de depender de una carga en cliente con caché — y cubre también el fondo del chat. El tema Halloween se ha mejorado muchísimo (bruma morada, luna con resplandor, más murciélagos, fantasmas, telarañas y calabazas que brillan). En Navidad, la música de villancicos arranca sola al abrir (en la primera interacción) y la pantalla de bienvenida es completamente festiva: "¡Feliz Navidad!" con cuenta atrás y adornos.
Lo destacado
4
✨ Nuevo3
🛠️El tema se aplica en el chat y en toda la app (resuelto en servidor)
🎵La música navideña arranca automáticamente al abrir
🎄Pantalla de bienvenida festiva exclusiva del tema Navidad (con cuenta atrás)
💎 Mejorado1
🎃Halloween mejorado: luna, niebla, fantasmas, telarañas y calabazas con brillo
El sistema de temas vuelve a la vida. En Admin → Temas hay un editor real: eliges los colores (fondo, texto, barra lateral, bordes, acento, primario…) con vista previa al instante, le pones nombre y lo aplicas a todos los usuarios. Antes solo había 2 temas fijos y los nuevos no aplicaban nada; ahora un tema recolorea de verdad las superficies globales —incluida ya la barra lateral completa— sin romper el aspecto por defecto. Seguiremos ampliando la cobertura (cabecera, chat, botones) en próximas tandas.
Lo destacado
4
✨ Nuevo4
🎛️Editor de temas en Admin con selectores de color y vista previa en vivo
🌍El tema se aplica a TODOS los usuarios (guardado en servidor)
🧱Fondo, texto y barra lateral completa ya cambian con el tema
❄️Efecto de nieve activable por tema + preset de Navidad
Lavado de cara a las tarjetas de Spotify con un look premium estilo Spotify. La de "resumen de escucha" estrena tema oscuro, podio de tu Top-3 con carátulas y barras animadas, y —lo más pedido— un selector de periodo dentro de la propia tarjeta (1 mes / 6 meses / Siempre) que recarga al instante. La tarjeta de "playlist propuesta" pasa también a oscuro premium a juego, y la de "sonando ahora" gana un fondo de carátula difuminada.
Lo destacado
4
✨ Nuevo2
🎚️Selector 1 mes / 6 meses / Siempre en la tarjeta de stats (recarga en vivo)
💿"Sonando ahora" con fondo de carátula difuminada
💎 Mejorado2
🏆Podio visual de tu Top-3 (artistas o canciones) con carátulas
🎨Tarjetas de stats y de playlist propuesta con tema oscuro premium a juego
La tarjeta de "playlist propuesta" pasa de lista fija a editor de verdad. Ahora puedes: buscar y añadir canciones desde la propia tarjeta (mini-buscador), reordenarlas arrastrando y reemplazar cualquiera, editar el nombre y la descripción antes de crearla, y ver la duración total. Además, si pides "una playlist de 1 hora" (o "media hora", "90 min") ajusta el número de temas a esa duración real.
Lo destacado
4
✨ Nuevo4
🔎Añadir canciones buscando dentro de la tarjeta + reemplazar una concreta
↕️Reordenar las canciones arrastrando (drag & drop)
✏️Editar nombre y descripción antes de crear + duración total visible
⏱️"Playlist de 1 hora / 30 min" → ajusta los temas a la duración pedida
Pregúntale por tus hábitos en Spotify y te los enseña con una tarjeta visual: "¿cuáles son mis artistas más escuchados?", "mis canciones favoritas de este mes", "qué he escuchado esta semana". Detecta el periodo automáticamente (últimas 4 semanas / 6 meses / desde siempre) y muestra un ranking con gráfica de barras, carátulas, tus géneros dominantes y el historial reciente con "hace X". Solo lo ve tu cuenta y siempre con tu Spotify conectado.
Lo destacado
3
✨ Nuevo3
🏆Top de artistas y canciones por periodo (4 semanas / 6 meses / siempre)
📊Tarjeta con gráfica de barras, carátulas y géneros dominantes
🕒"¿Qué he escuchado?": historial reciente con hace cuánto sonó cada tema
Ahora puedes compartir tus GPTs y usar los de la comunidad. Al crear/editar un GPT eliges su visibilidad (privado, equipo o público). En la barra lateral, junto a "Mis GPTs", hay un botón 🌍 para explorar los GPTs públicos: buscas, ves quién los hizo y los usas con un clic (sin ver su prompt). Es el siguiente paso del plan pro; faltan el agente multi-paso y la API pública.
Lo destacado
3
✨ Nuevo2
🌍Explora y usa GPTs públicos de la comunidad (buscador incluido)
🔓Comparte los tuyos: visibilidad privado / equipo / público al editar
🔒 Seguridad1
🔒Al usar un GPT público no se expone su system prompt
Ahora puedes pedir gráficas y la IA las dibuja de verdad: "hazme un gráfico de barras con estas ventas", "una tarta con el reparto"… Se generan como un panel interactivo (artifact) con Chart.js — barras, líneas, tarta, dona, área, radar… con tus datos (o de ejemplo si no los das) y se pueden ver/editar/descargar en el panel lateral. Primer paso del plan "pro": le siguen análisis de CSV/Excel con gráficas, TTS/podcast, marketplace de GPTs, agente multi-paso y API pública.
Lo destacado
2
✨ Nuevo2
📊Pide una gráfica y sale interactiva (barras/líneas/tarta/dona/área/radar)
🎛️Se abre en el panel lateral: ver, editar y descargar
Word (.docx) ahora se genera desde HTML (html-to-docx): la IA puede inyectar HTML/CSS para documentos más currados, como en el PDF (en Word la fidelidad de CSS es algo menor, pero la estructura y el estilo básico se respetan). Si falla, cae al generador clásico. PowerPoint (.pptx) recibe un pulido en la plantilla (línea de pie + marca). El arreglo de robustez (timeout, fallback a .md, card que no se queda colgada) ya aplicaba a docx y pptx por igual.
Lo destacado
3
✨ Nuevo2
📄Word (.docx) estilizado desde HTML — la IA puede inyectar HTML/CSS
📊PowerPoint con plantilla algo más pulida
🐛 Arreglado1
🛟Robustez (timeout + fallback .md + card sin colgarse) en PDF/DOCX/PPTX
🐛 Documentos: arreglado el "Generando… 92%" atascado
01 de junio de 2026
Diagnóstico con logs reales: la tarjeta de generación de documento se quedaba en "Generando… 92%" porque la función del chat tenía un límite de 60 s y, al escribir un documento largo + el build, se agotaba el tiempo (la función moría sin avisar de que el archivo estaba listo). Arreglado: el límite del chat sube a 300 s, el conversor tiene un timeout más corto con fallback a .md, y si por lo que sea el stream acaba sin completar, la tarjeta pasa a "error" en vez de quedarse colgada para siempre.
Lo destacado
3
✨ Nuevo2
⏱️Límite de tiempo del chat 60s → 300s (la generación de documentos largos ya no muere por timeout)
🧱Conversor con timeout 15s + fallback a .md
🐛 Arreglado1
🛟La tarjeta nunca se queda colgada en 92%: si el stream acaba sin terminar, pasa a error
Arreglo definitivo del fallo por el que la generación de documento devolvía el texto (a veces con HTML literal) en el chat en vez de la tarjeta del archivo. Causa: sin el motor Gotenberg, la IA metía HTML que el conversor no sabe renderizar y la construcción del archivo se colgaba/fallaba. Ahora: (1) sin Gotenberg, se le pide a la IA Markdown limpio (sin HTML); (2) el conversor tiene timeout y cae a .md si se atasca, así SIEMPRE sale un archivo; (3) si aun así no hay archivo, el chat muestra un aviso de "no se pudo generar, reintenta" en vez de volcar el texto crudo.
Lo destacado
3
✨ Nuevo2
🧱Sin Gotenberg: la IA usa Markdown limpio (PDF/DOCX/PPTX nítidos)
⏱️Timeout en el conversor + fallback a .md → siempre se entrega un archivo
🐛 Arreglado1
🐛Si falla la generación, ya no se vuelca el documento como texto en el chat
📶 Resiliencia con mala conexión (ya no pantalla en blanco)
01 de junio de 2026
Con conexión lenta la web se quedaba en blanco porque esperaba a que cargara la página sin límite. Ahora el Service Worker da un máximo de ~3,5 s a la red: si tarda, sirve la app cacheada al instante y sigue actualizando por detrás, así no ves una pantalla en blanco. Si estás totalmente sin conexión, aparece una página "Sin conexión" decente (con reintento automático al volver la red) en vez de un error en blanco. Y se muestra una banda "Sin conexión — reconectando…" para que sepas qué pasa. (Chatear con la IA sigue necesitando conexión.)
Lo destacado
3
✨ Nuevo2
🛜Página "Sin conexión" con reintento automático al recuperar la red
🔔Banda "Sin conexión — reconectando…" cuando se pierde la red
💎 Mejorado1
📶Carga con timeout: con red lenta sirve la app cacheada en vez de quedarse en blanco
🐛 Documentos: no vuelca texto + PDF con HTML (Gotenberg)
01 de junio de 2026
Dos cosas en generación de documentos. (1) Arreglado el fallo por el que, al pedir mejorar un documento, el conversor a veces fallaba con el contenido y el documento se volcaba como un muro de texto en el chat (pasaba igual con PDF/DOCX/PPTX): ahora si el conversor del formato falla, se entrega el contenido como archivo .md descargable; SIEMPRE recibes un archivo. (2) Nuevo motor de PDF estilizado: si se configura Gotenberg (Chromium self-hosted), los PDF se renderizan desde HTML/CSS, así la IA puede inyectar HTML para diseños mucho más currados. Si no está configurado, se usa el generador anterior (markdown).
Lo destacado
3
✨ Nuevo1
🛟Fallback automático a .md descargable (PDF/DOCX/PPTX)
💎 Mejorado1
🎨PDF estilizado con HTML/CSS vía Gotenberg (cuando se configura el motor)
🐛 Arreglado1
🐛La generación de documentos ya no vuelca el texto en el chat si falla el conversor
Al compartir ai.garbotgpt.com (WhatsApp, Telegram, redes) el logo salía pixelado porque no había imagen Open Graph y se usaba un icono pequeño. Ahora se define og:image con el logo en 512×512 y URL absoluta (metadataBase), así el preview sale nítido.
Lo destacado
2
✨ Nuevo2
🖼️Open Graph/Twitter con el logo en 512×512 → preview nítido al compartir
🔗metadataBase con URL absoluta para que las redes carguen la imagen
Mejoras de rendimiento del frontend que NO tocan el chat ni la velocidad de respuesta de la IA: tree-shaking agresivo de iconos (bundle más pequeño), carga diferida de varios modales del header, banners no críticos (mantenimiento/estado) montados tras el primer pintado, avatares secundarios con carga lazy, y prefetch del chat desde el login para que al entrar ya esté en caché. El service worker ya cacheaba los estáticos para recargas casi instantáneas.
Lo destacado
3
✨ Nuevo1
🪟Modales del header y banners no críticos cargados de forma diferida
💎 Mejorado2
⚡Bundle más pequeño (optimizePackageImports) → hidratación más rápida
🔮Prefetch de /chat desde el login (entrada más rápida)
Revertido el ocultado de invitados: las cuentas de invitado (anónimas de "Probar sin cuenta") vuelven a aparecer en la lista de usuarios del admin. Ahora cada usuario incluye una marca is_guest para poder distinguir a los invitados de los registrados.
Lo destacado
2
✨ Nuevo2
👥Los usuarios no registrados (invitados) vuelven a salir en Admin → Usuarios
🏷️Cada usuario indica is_guest (invitado o registrado)
✉️ Envío de correos mejorado (vista previa, plantillas, variables)
01 de junio de 2026
El envío de correos del admin (Admin → Correos) da un salto. (1) Vista previa en vivo: ves el correo tal como llegará, con la plantilla de marca, mientras lo escribes. (2) Plantillas rápidas: novedad, oferta, bienvenida y reactivación, que rellenan asunto, mensaje y botón con un clic. (3) Más variables de personalización: {{name}}, {{email}}, {{credits}} y {{plan}}, insertables con un clic y resueltas por destinatario (también al enviar a direcciones manuales si son usuarios registrados).
Lo destacado
3
✨ Nuevo2
👁️Vista previa en vivo del correo (plantilla de marca + datos de ejemplo)
🔤Variables {{name}}, {{email}}, {{credits}}, {{plan}} insertables y por destinatario
Al cancelar la suscripción, antes de irte te proponemos alternativas: bajar a un plan más barato (con prorrateo automático) o, si está configurada, una oferta de retención con descuento. Si aun así cancelas, mantienes el acceso hasta el final del periodo ya pagado, y puedes reactivar con un clic mientras tanto. Todo desde Ajustes → Suscripción, sin salir de la app.
Lo destacado
3
✨ Nuevo3
🤝Al cancelar: opción de bajar de plan (prorrateado) o aceptar un descuento de retención
↩️Reactivar la suscripción con un clic si te arrepientes antes de que termine el periodo
🔧La oferta de retención se activa con la variable STRIPE_RETENTION_COUPON_ID (+ STRIPE_RETENTION_LABEL)
🪄 Editar imágenes generadas + gpt-image-2 + fix pago Google Play
01 de junio de 2026
Ahora puedes editar la imagen que acaba de generar la IA sin re-adjuntarla, igual que ChatGPT: genera una imagen y luego pide "ahora ponle un sombrero", "quítale el fondo", "cámbiala de color"… y se edita el último resultado, encadenando tantos retoques como quieras. Pasamos al nuevo modelo insignia gpt-image-2 (mejor edición localizada, texto y fotorrealismo) tanto para generar como para editar; en gpt-image-1 seguimos usando input_fidelity alto. Además, arreglado el error "invalid state" al comprar desde la app de Google Play (Payment Request): ahora se evita abrir dos pagos a la vez, se valida el producto antes y los errores se muestran claros.
Lo destacado
3
✨ Nuevo2
🪄Edita la imagen generada por la IA dentro del chat e itera sobre el resultado ("ahora ponle…")
✨Nuevo modelo gpt-image-2 por defecto (generación y edición)
🐛 Arreglado1
🛒Fix "invalid state" en Google Play Billing: guard de re-entrada + validación de producto + mensajes claros
Nueva campana en la cabecera (web y móvil) con tu centro de notificaciones: ahí aparecen las novedades de la app y los mensajes que te enviamos, con un contador de no leídas. Cada anuncio puede llevar un botón de acción (p.ej. "Probar ahora"). Desde Admin → Anuncios puedes publicar novedades con título, mensaje, tipo, botón con enlace, programación (mostrar desde / ocultar a partir de) y segmentación por plan (todos / Free / Pro / Max). Requiere la migración 131 (tabla notification_reads + nuevos campos en admin_notifications).
Lo destacado
3
✨ Nuevo3
🔔Campana con centro de notificaciones y badge de no leídas (web + móvil)
📣Admin → Anuncios: novedades con CTA, programación y audiencia por plan
✅Marcar leído / descartar por usuario (tabla notification_reads, sin condiciones de carrera)
Ya puedes editar tus fotos con lenguaje natural. Adjunta una imagen, activa "generar imagen" (o simplemente pide "quita el fondo", "cámbialo de color", "edita esta foto"…) y GarBotGPT la retoca y te devuelve el resultado, en vez de crear una imagen nueva desde cero. Usa el modelo gpt-image-1 (edición por instrucción, sin máscara) reutilizando la misma configuración de imagen del panel de admin.
Lo destacado
3
✨ Nuevo3
🖼️Edita una imagen adjunta describiendo el cambio ("quita el fondo", "cámbialo de color")
🪄Se activa solo al detectar una instrucción de edición con una imagen adjunta
⚙️Reutiliza la config de imagen del admin (clave/URL); fuerza gpt-image-1 porque es el único que edita por instrucción
En Ajustes → Apariencia puedes elegir el tamaño del texto de la interfaz (pequeño, mediano o grande) y se aplica a toda la app, recordándolo entre sesiones. El selector de idioma (Español/Català) ya estaba ahí.
Lo destacado
1
✨ Nuevo1
🔤Tamaño de texto: pequeño / mediano / grande (recordado)
En Ajustes → Suscripción ahora ves tu consumo de créditos por día (gráfico de los últimos 14 días), además del desglose por modelo y por herramienta que ya había. Así controlas mejor en qué y cuándo gastas.
Lo destacado
1
✨ Nuevo1
📊Gráfico de consumo de créditos por día (últimos 14 días)
🛍️ Productos en Deep Research + editor de modelos más claro
30 de mayo de 2026
Dos cosas. 1) La investigación profunda (Deep Research) ahora también muestra fichas de producto con precio, tienda y enlace cuando la pregunta es de compra, igual que la búsqueda web. 2) El modal de edición de modelos del panel admin se ha ordenado y mejorado visualmente: pestañas con icono y una cabecera por pestaña con su descripción, para encontrar cada ajuste de un vistazo.
Lo destacado
2
✨ Nuevo2
🛍️Fichas de producto también en Deep Research
✨Editor de modelos con pestañas con icono y cabecera descriptiva por sección
🔧 Estado accesible en mantenimiento + más herramientas por modelo
30 de mayo de 2026
Dos cosas. 1) La página de Estado (/status) sigue accesible aunque el modo mantenimiento esté activo, y ahora refleja el mantenimiento en curso (aviso destacado y estado global "En mantenimiento"). 2) El editor de modelos del panel admin lista más herramientas configurables por modelo: presentaciones, App Builder, Imagen→Código, mapa mental, quiz, resumir YouTube y reproductor de música; al desactivarlas dejan de aparecer en el menú del chat para ese modelo.
Lo destacado
2
✨ Nuevo2
🟢/status accesible durante el mantenimiento y muestra el estado real
🧪 Panel de modelos: límites, precios reales, alias y test comparado
30 de mayo de 2026
Segunda fase del editor de modelos. Ahora se aplican de verdad: el límite de mensajes/día por modelo, los precios por millón de tokens (in/out) en el cálculo del coste real, y el alias de slug (un modelo puede enrutar a otro, útil al deprecar sin romper conversaciones). Además, "Probar" admite un prompt personalizado y comparar dos modelos lado a lado.
Lo destacado
4
✨ Nuevo4
📅Límite de mensajes/día por modelo aplicado en el chat
💲Precios por 1M tokens usados para el coste real
🔀Alias de slug: enruta un modelo a otro (deprecar sin romper)
🧪"Probar" con prompt propio y comparativa de 2 modelos
🛠️ Panel de modelos: arreglos + plan mínimo y precios
30 de mayo de 2026
Mejoras en el editor de modelos del panel admin. Arreglos: los errores al guardar ya se muestran (antes fallaban en silencio), validación de temperatura (0–2) y max tokens (>0), confirmación al eliminar (con aviso de impacto) y eliminación segura (soft-delete: las conversaciones que usen el modelo siguen funcionando). Se ha quitado la pestaña "Acceso" por roles, que no tenía efecto real. Nuevo: cada modelo tiene "Plan mínimo" (free/pro/max) configurable desde el panel — ya no hace falta tocar código para reservar un modelo a Pro o Max; precios por millón de tokens (in/out); límite de mensajes diarios por modelo; alias de slug; y editor de metadatos JSON del proveedor.
Lo destacado
4
✨ Nuevo4
🛠️Errores de guardado visibles + validación (temperatura, max tokens)
🗑️Eliminar con confirmación y sin romper conversaciones (soft-delete)
⭐"Plan mínimo" por modelo (free/pro/max) configurable sin tocar código
💲Precios por 1M tokens, límite diario, alias y metadatos por modelo
GarBotGPT ahora responde en el mismo idioma en que le escribes (antes el mensaje base decía "responde siempre en español salvo que pidan otro idioma"). Si escribes en catalán, inglés u otro idioma, te responderá en ese idioma de forma natural.
Lo destacado
1
✨ Nuevo1
🌍Responde automáticamente en el idioma en que le escribes
Ajustado el mensaje de identidad base que reciben todos los modelos: ahora simplemente es "GarBotGPT, un asistente de IA", sin el añadido "(Gestion Inteligente con IA)" ni la etiqueta "empresarial". Cambio interno de marca/identidad; no afecta a las capacidades.
Lo destacado
1
✨ Nuevo1
🏷️El asistente se identifica como GarBotGPT (sin "GIA" ni "empresarial")
Arreglado el problema de que en la cámara en vivo hablabas y no respondía nadie. La causa: se pedían dos accesos a la cámara y al micrófono por separado y, sobre todo en móvil (iOS), el micrófono se quedaba mudo, así que tu voz no llegaba a la IA. Ahora se usa un único acceso conjunto de cámara + micrófono que se comparte con la sesión de voz. Además se reduce el tamaño del fotograma que se envía para no saturar la conexión.
Lo destacado
2
✨ Nuevo1
🎙️Un solo acceso cámara+micro (compartido): la voz ya llega a la IA
🐛 Arreglado1
📱Arreglado sobre todo en móvil (iOS no permite dos capturas a la vez)
La cámara en vivo pasa a ser una conversación por voz en tiempo real: al abrirla se activan cámara y micrófono y hablas con normalidad; en cuanto empiezas a hablar, captura el fotograma del momento y la IA te responde por voz sobre lo que ve, en directo y sin pulsar nada. Es una función exclusiva del plan Max: en free y pro aparece con candado y enlace a planes.
Lo destacado
3
✨ Nuevo3
🎙️Habla en directo con la cámara: responde por voz sobre lo que ve
🤖Micrófono automático al abrir; sin pulsar botones
La cámara en vivo ahora es un asistente continuo: la cámara se queda abierta y puedes preguntarle lo que quieras sobre lo que está grabando, una y otra vez, sin salir. La respuesta aparece dentro de la propia cámara y se lee en voz alta (puedes silenciarla con el botón de altavoz). Pregunta por voz o texto; cada pregunta analiza el fotograma actual.
Lo destacado
3
✨ Nuevo3
🎥La cámara sigue en directo: pregunta tantas veces como quieras
🔊La respuesta se muestra y se lee en voz alta sin salir de la cámara
🎙️Pregunta por voz o texto sobre lo que ve en cada momento
Arreglada la cámara en vivo en móvil: ahora ocupa toda la pantalla (antes salía en una franja pequeña) y los toques en la barra de pregunta ya no se cuelan a la barra de navegación inferior. Era porque el overlay quedaba atrapado dentro del cuadro de escritura; ahora se renderiza por encima de todo.
Nueva función: apunta con la cámara del móvil y pregunta a la IA sobre lo que ves. Desde el menú "+" del chat → "Cámara en vivo" se abre la cámara a pantalla completa; escribes o dictas tu pregunta por voz, pulsas "Preguntar" y la IA analiza el fotograma y responde en el chat. Puedes cambiar entre cámara trasera y frontal. Funciona sobre el mismo motor de visión que las fotos adjuntas.
Lo destacado
3
✨ Nuevo3
📷Apunta con la cámara y pregunta sobre lo que ves
🎙️Pregunta por voz (se transcribe) o por texto
🔄Cambio de cámara trasera/frontal a pantalla completa
Dos mejoras del "retomar conversaciones anteriores". 1) Indicador de transparencia: cuando una respuesta usa contexto de chats anteriores, aparece un icono con el número de chats (al pasar el ratón ves de cuáles y de cuándo). 2) Botón en Ajustes → Personalización para indexar de golpe TODO tu histórico, así la búsqueda por significado funciona al instante sin esperar a que se construya con el uso.
Lo destacado
3
✨ Nuevo2
🔎Icono "contexto de N chats anteriores" en las respuestas que lo usan
🗂️La indexación cubre todo el histórico (no solo lo reciente)
💎 Mejorado1
⚡Botón "Indexar mis conversaciones" en Ajustes → Personalización
Ahora puedes pedir en un chat nuevo "¿recuerdas lo que hablamos sobre X?" o "retomemos aquello de…" y la IA busca por significado en tus conversaciones anteriores y trae los fragmentos relevantes para continuar. Solo se activa cuando tu mensaje pide recordar/retomar algo (no ralentiza los chats normales), busca únicamente en TUS chats no borrados (no en la conversación actual) y el índice se va construyendo a medida que lo usas. Nota: si borras un chat, deja de ser recuperable.
Lo destacado
3
✨ Nuevo3
🔎"¿Recuerdas lo que hablamos…?" recupera contexto de chats anteriores
🎯Se activa solo al pedir recordar/retomar (sin penalizar chats normales)
🔐Solo en tus chats no borrados; nunca en la conversación actual
La memoria deja de quedarse solo con "los 50 recuerdos más recientes". Ahora, cuando tienes muchos recuerdos guardados, el sistema recupera los MÁS RELEVANTES a lo que estás preguntando (búsqueda por significado, no por fecha) y los combina con los más recientes. Así un dato importante de hace meses vuelve a influir cuando viene al caso, y escala a cientos de recuerdos. Si tienes pocos recuerdos no cambia nada (ni añade latencia). Importante: esto recupera lo que guardaste como MEMORIA; no recupera conversaciones borradas ni mensajes que nunca se guardaron.
Lo destacado
3
✨ Nuevo2
🧠Recupera los recuerdos relevantes por significado, no solo los recientes
📈Escala a cientos de recuerdos sin perder los antiguos importantes
💎 Mejorado1
⚡Sin coste extra si tienes pocos recuerdos (se activa al superar 50)
Pulido del sistema de memoria. 1) Ya no se duplica el guardado: cuando pides explícitamente "guarda esto en memoria", se encarga una sola vía (que confirma de forma natural) en vez de mostrar además un diálogo aparte. 2) Lo que se captura estando dentro de una carpeta se guarda en esa carpeta, no en la memoria global. 3) Arreglado un texto interno mal codificado ("Cómo responder") que se colaba en las instrucciones del modelo. 4) El indicador "recuerdos usados" ahora también cuenta los de la carpeta.
Lo destacado
3
✨ Nuevo3
🔁Sin guardado duplicado al pedir "recuerda esto"
📁Lo capturado en una carpeta se guarda en la carpeta
🔢"Recuerdos usados" cuenta también los de la carpeta
🛍️ Arreglos de búsqueda de productos + límites por usuario
29 de mayo de 2026
Tres cosas. 1) Bug: en las búsquedas de productos se colaba una línea técnica "data: {shopping_products…}" encima de la respuesta (era un evento interno del stream que no se filtraba); ya no aparece. 2) Repetir la misma búsqueda mostraba siempre los mismos productos: ahora barajamos un conjunto más amplio de resultados para que cada búsqueda varíe. 3) Admin: desde "Créditos y suscripción" de cada usuario ya se pueden subir/bajar los topes diarios (imágenes, documentos, presentaciones, App Builder, mensajes de 5.5) y desbloquear modelos/herramientas premium para una persona concreta.
Lo destacado
3
✨ Nuevo3
🧹Ya no se cuela el "data: {shopping_products…}" encima de las respuestas de productos
🔀Las búsquedas de productos varían al repetirlas (no siempre los mismos)
🎛️Admin: límites por usuario (subir/bajar topes y desbloquear premium)
Cierra el sistema de planes. 1) Gating visual: en el selector de modelos, GarBotGPT-5.5 y 5.4 aparecen con etiqueta PRO para usuarios gratis; en el menú de herramientas, Deep Research, Comparar modelos e Imagen→código muestran candado. Al pulsar cualquiera te llevamos a /pricing, sin errores 403 sorpresa. 2) El plan Pro estrena topes diarios: imágenes 15/día, documentos 15/día, presentaciones 15/día, y el modelo GarBotGPT-5.5 limitado a 75 mensajes/día. Admins y suscriptores Max no tienen límites.
🤖 Búsqueda más lista + límites diarios del plan gratis
29 de mayo de 2026
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.
Lo destacado
3
✨ Nuevo2
🤖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
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.
Lo destacado
2
🔒 Seguridad2
🔒GarBotGPT-5.5 y 5.4 solo para planes de pago
🔒Deep Research e Imagen→código desactivados en el plan gratis
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.
Lo destacado
3
✨ Nuevo3
📊Tabla comparativa Gratis vs Pro vs Max mucho más clara
🎟️Iconos propios para los packs de 5.000 y 15.000 créditos
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.
Lo destacado
3
✨ Nuevo1
🧹Sin "Imágenes relacionadas" en búsquedas de producto
💎 Mejorado2
⚡Las fichas de producto aparecen durante la respuesta (no al final)
🎨Fichas rediseñadas (imagen con zoom, valoración, precio destacado, botón)
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).
Lo destacado
2
✨ Nuevo2
🧹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
🛒 Comprar va directo a la tienda + "Mi selección para ti"
29 de mayo de 2026
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.
Lo destacado
2
✨ Nuevo2
🛒"Comprar" lleva directo a la tienda del producto (no a Google)
⭐Sección "Mi selección para ti" con recomendación personalizada
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.)
Lo destacado
2
✨ Nuevo2
🛍️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
🔗 Tarjetas de enlace (vista previa al pasar el ratón)
29 de mayo de 2026
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é.
Lo destacado
2
✨ Nuevo1
🔗Vista previa de enlaces al pasar el ratón (favicon + título + descripción)
🔒 Seguridad1
🛡️Endpoint de metadatos con caché y protección anti-SSRF
🔗 Fix: enlaces de compra en la búsqueda de productos
29 de mayo de 2026
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.
Lo destacado
2
✨ Nuevo2
🔗Enlaces de compra ya funcionan (URL codificada, sin romperse por espacios)
🛍️El enlace se muestra como botón "Comprar", no como URL larga
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.
Lo destacado
1
✨ Nuevo1
🔄El estilo/tono se guarda en la cuenta y se sincroniza entre dispositivos
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.
Lo destacado
3
✨ Nuevo2
🗓️Planes anuales con −17% (2 meses gratis): Pro 80 €/año, Max 200 €/año
🔀Selector Mensual / Anual en la página de planes
💎 Mejorado1
💎Créditos entregados cada mes, aunque el cobro sea anual
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.
Lo destacado
3
✨ Nuevo2
🛍️Detecta consultas de compra y busca productos reales (Google Shopping)
🏷️Resultados con precio, tienda, valoración y enlace (fichas, no listado de tiendas)
🔒 Seguridad1
🔒Fallback seguro: sin clave, la búsqueda web sigue igual
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.
Lo destacado
3
✨ Nuevo2
🧩Instrucciones + Memoria unificadas en la pestaña Personalización
✅El estilo afecta de verdad a las respuestas (se inyecta en el prompt)
💎 Mejorado1
🎨Estilo y tono: Cálido, Entusiasta, Títulos/listas, Emoji (Menos/Predeterminado/Más)
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.
Lo destacado
2
✨ Nuevo2
🗄️Nueva pestaña Almacenamiento con uso total y desglose
🖼️Separa imágenes y archivos (número y tamaño de cada uno)
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.
Lo destacado
3
✨ Nuevo2
💜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
💎 Mejorado1
🎨Color por plan: Max (violeta), Pro (azul), Plus (verde)
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.
Lo destacado
4
✨ Nuevo4
🧠"Guarda en memoria" / "guarda todo" ahora guarda de verdad (antes se inventaba)
📁Dentro de una carpeta, la memoria se guarda en esa carpeta
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.
Lo destacado
2
✨ Nuevo2
🔧Escribir en un chat antiguo lo sube a "Hoy" en la barra lateral
🗂️Orden por última actividad correcto en todos los casos
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.
Lo destacado
3
✨ Nuevo3
🧪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)
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.
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.
Lo destacado
4
✨ Nuevo4
🧾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
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.
Lo destacado
4
✨ Nuevo3
🎴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
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.
Lo destacado
4
✨ Nuevo4
💬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)
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*").
Lo destacado
6
✨ Nuevo4
⚙️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*)
💎 Mejorado1
🎨Barra lateral: radios, tipografía y sombras unificados
🐛 Arreglado1
🐛Fix: menú contextual del chat ya no sale cortado (se ven todas las opciones)
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.
Lo destacado
5
✨ Nuevo1
🚪Invitados entran a /chat sin pantalla de carga
💎 Mejorado2
⚡Arranque del chat en 1 sola consulta a BD (antes varias) → menos latencia
🗂️Caché de ajustes (imagen/visión) durante 30s
🐛 Arreglado1
🐛Fix: el límite mensual de tokens ahora se aplica de verdad
🔒 Seguridad1
🔒guest_usage con RLS — no se puede saltar el límite por IP
🔧 Fix deploy: consolidación de rutas API de ubicación
28 de mayo de 2026
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.
Lo destacado
3
✨ Nuevo3
✅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).
Lo destacado
5
✨ Nuevo5
🗺️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
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).
🛰️ Permiso ubicación TWA Android + header móvil mucho más rápido
28 de mayo de 2026
(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.
Lo destacado
4
✨ Nuevo3
🛰️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)
💎 Mejorado1
⚡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).
Lo destacado
6
✨ Nuevo5
✨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
✅ Bug REAL del tema: Tailwind v4 seguía el modo oscuro del sistema
28 de mayo de 2026
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.
Lo destacado
3
✨ Nuevo2
🎯@custom-variant dark — Tailwind ya solo reacciona a la clase, NO al sistema
🌐meta color-scheme="light dark" — controla auto-styling de UA
💎 Mejorado1
🎨:root color-scheme:light — scrollbars/inputs nunca oscuros por sistema
⚡ Reset forzado del tema: todos a claro en el próximo load
28 de mayo de 2026
v9.5.44 cambió el default a claro pero no afecta a usuarios que ya tenían "dark" guardado (la mayoría, porque antes auto-detectaba del sistema). Ahora añadido un flag de migración (geia-theme-migrated-v3): en el primer load post-v9.5.45 se ignora cualquier preferencia previa y se fuerza claro. La migración se marca con localStorage flag → solo pasa UNA vez por dispositivo. Tras este reset, si el user vuelve a Ajustes y elige oscuro explícitamente, se respeta y no se vuelve a resetear.
Lo destacado
3
✨ Nuevo3
🔁Reset one-shot: todos a light en su próximo abrir la app
🚩Flag geia-theme-migrated-v3 evita re-resetear
👤Tras el reset, la elección manual del user prevalece
☀️ App siempre en claro por defecto (ya no sigue el modo oscuro del Android)
28 de mayo de 2026
Antes la app respetaba el modo oscuro del sistema operativo (prefers-color-scheme: dark) cuando el usuario no había elegido tema. Resultado: si tu Android está en oscuro, la app también, aunque quisieras claro. Cambio: default a CLARO siempre. Si quieres dark, lo activas explícitamente desde Ajustes → Apariencia. La cookie + localStorage se setean al "light" en cuanto cargues por primera vez, así no volverá a evaluar el sistema. Para los usuarios que ya tenían dark elegido y guardado, su preferencia se respeta — solo afecta a primera carga sin preferencia.
Lo destacado
3
✨ Nuevo3
☀️Default = light (no más auto-oscuro porque tu Android sea dark)
🎨 Tema sincronizado: la app Android respeta tu modo claro/oscuro elegido
28 de mayo de 2026
Bug: en la app Android (TWA) el usuario veía siempre tema oscuro aunque tuviera "claro" elegido en el navegador. Causa: el tema se guardaba SOLO en localStorage, que la TWA no hereda del Chrome del sistema → al abrirse caía a `prefers-color-scheme` (Android en dark = app en dark). Fix triple: (1) guardamos también en cookie geia-theme (TWA sí comparte cookies vía Digital Asset Links). (2) Inline script en <head> con strategy=beforeInteractive aplica el tema ANTES del primer pintado leyendo cookie → localStorage → sistema (en ese orden de prioridad). Adiós flash de tema incorrecto. (3) Persistimos en profiles.settings_json.theme via /api/user/theme; al iniciar sesión un nuevo ServerThemeSync component sincroniza con el servidor → el tema viaja entre dispositivos del mismo usuario.
Lo destacado
4
✨ Nuevo3
🍪Cookie geia-theme además de localStorage (TWA Android comparte cookies)
☁️/api/user/theme guarda en profiles.settings_json (cross-device)
🔄ServerThemeSync sincroniza al login y en TOKEN_REFRESHED
💎 Mejorado1
⚡Script inline en <head> aplica tema antes del primer pintado
🎯 Calidad de respuesta sobre documentos: 11 bugs arreglados
28 de mayo de 2026
Atacados los 11 bugs reales que afectaban a la calidad de la respuesta cuando preguntas algo del documento. Antes la IA podía decir "no encuentro esa información" aunque el dato estuviera en el PDF. (1) Extracto en contexto subido de 1800→6000 chars + indicador si trunca. (2) En modo búsqueda específica, contexto estructurado de 4→10 docs (antes elegía mal cuál inyectar entre muchos archivos). (3) Fallback raw chunks ya NO trae solo la portada: busca por keyword y distribuye por archivo desde la mitad del PDF. (4) Threshold similarity 0.58→0.45 (más permisivo, menos falsos negativos en preguntas en español). (5) RPC hybrid migrada a config "spanish" con stemming + peso keyword subido a 0.3 (migración 119 aplicada al NAS). (6) Regex fallback del clasificador con ~25 verbos nuevos (explica/analiza/detalla/cuenta/saca/etc). (7) Re-extract gate subido de 16k→100k chars. (8) looksLikeMashedTabular detecta también separación por múltiples espacios. (9) colGap mínimo absoluto 8→12pt para tickets/recibos estrechos. (10) Tesseract OCR sobre PDFs ahora renderiza páginas a PNG antes de pasárselas (antes crasheaba con "PDF reading is not supported"). (11) Prompt de visión exhaustivo: ahora le exigimos listar UNA A UNA cada línea de tabla (antes a veces resumía).
Lo destacado
7
✨ Nuevo7
📜Extracto en contexto: 1800→6000 chars (datos del final del PDF dejan de perderse)
🎯Modo búsqueda: 4→10 docs con contexto completo
🔍Raw fallback con búsqueda keyword + distribución por archivo
🇪🇸 RPC hybrid en español + threshold 0.58→0.45
🧠Clasificador intent: +25 verbos en regex fallback
👁️Visión: prompt exige listar cada línea individual
🔍 Tercer pase audit móvil: 1 bug real + tooltips de sidebar
28 de mayo de 2026
Tercer pase de audit móvil. El agente reportó 15 issues pero al verificar uno por uno la mayoría eran falsos positivos (números de línea inventados o el responsive ya estaba). Bug REAL arreglado: la última fila de "Accesos rápidos" en WelcomeScreen quedaba parcialmente tapada por el composer en algunos móviles porque el fallback CSS era 192px pero el composer real mide ~240-260px (mic + paperclip + tools). Subido el fallback a 240px y el margen extra a 16/48px. Como pulido: añadidos atributos title en truncates de SidebarSleek (nombres de carpeta y nombre/email del perfil) — long-press en móvil ahora muestra el texto completo.
🩹 Micro-fixes móvil: tooltips en truncates + type=button en chips
28 de mayo de 2026
Pase de pulido sobre los 12 micro-bugs del audit anterior. Añadidos atributos title en spans truncados de MobileHeader (modelo, email, nombre, Spotify track/artist, conversación) y WelcomeScreen (project context, quick action labels) — ahora con long-press aparece tooltip nativo con el texto completo. Añadido type="button" a 19 chips de cierre de tools (×) dentro de ChatInput para garantizar que NO submitean el formulario por accidente cuando estás dentro de un form.
Lo destacado
3
✨ Nuevo2
🏷️Tooltips en truncates: usuario puede ver email/modelo/título completos con long-press
🔘19 botones × de tools chip: type="button" → no envían el chat sin querer
🔒 Seguridad1
✨Sin cambios de funcionalidad, solo accesibilidad y seguridad de forms
📊 Google Analytics unificado (G-1XXL8PDYBB) + tracking ampliado
28 de mayo de 2026
Había DOS Google Analytics IDs conflictivos en el código: G-59TNFB7ZJY (layout.tsx) y G-HJ8GEPD9NE (AnalyticsTracker). El segundo devolvía 404 en la consola del navegador → los page_views se enviaban a un property inexistente y se perdían. Unificado a G-1XXL8PDYBB (el ID nuevo que pediste). Helper centralizado src/lib/analytics.ts con track(), setAnalyticsUser() y constantes Events para evitar typos de nombre. Tracking añadido: user_id automático al cargar (con tipo guest/registered), session_start synthetic en primer load, pricing_viewed en /pricing y /landing/pricing, register_view, login_view, model_changed (con from/to). El tracking existente de chat_message_sent en ChatInput y WelcomeScreen sigue funcionando (alias trackEvent retro-compatible).
Lo destacado
4
✨ Nuevo4
📍GA ID unificado a G-1XXL8PDYBB
👤user_id automático tras login con user_type (guest/registered)
Audit de código de los componentes móviles (sin Playwright ni emulador, solo lectura). 6 bugs reales encontrados y arreglados: (1) Touch targets de MobileBottomNav eran ~26px de alto cuando Apple recomienda 44px mínimo → py-1 → py-2.5. (2) El @media móvil de v9.5.37 ponía transition-duration:120ms a TODO sin excluir animations, rompiendo la entrada bonita de SettingsModal y similares. Ahora solo afecta transitions, no @keyframes. (3) "Registrarte gratis · 500 créditos" se cortaba en iPhone SE (320px): label corto en <sm, completo en sm+, con "· 500 créditos" solo en md+. (4) UploadProgressWidget tenía w=340 + right-4 → se salía del viewport en pantallas <360px. Bajado a w=320. (5) LocationPrompt y LowCreditsBanner competían a z-40: el de ubicación sube a z-[45] para tener prioridad. (6) backdrop-blur móvil bajaba a 8px y los toasts con texto encima de contenido variado perdían legibilidad. Subido a 12px (suficiente para legibilidad sin matar el FPS).
📱 Mejoras móvil: banner ubicación encima del input, recordar modelo, menos lag, ajustes agrupados
28 de mayo de 2026
Cinco arreglos de UX móvil reportados: (1) El banner "Comparte tu ubicación" se solapaba con el composer del chat — ahora se posiciona POR ENCIMA del composer + nav (usa --chat-bottom-space) y respeta el keyboard offset. Contraste mejorado en dark mode. (2) El modelo seleccionado no se persistía: cambiabas a GPT-5.5 y al recargar volvía a 5.2. Ahora se guarda en localStorage:geia:last-model y se restaura. (3) Animaciones laggy en móviles low-end: en viewports <768px reducimos transition-duration a 120ms y backdrop-blur a 8px (antes 24px+). Respeta prefers-reduced-motion global. (4) Pantalla Ajustes en móvil: antes lista plana de 15+ items, ahora agrupada en 5 secciones (Tu cuenta · Personalización IA · Tu contenido · Apariencia y voz · Progreso) con iconos 44px (antes 36px) y texto 16px (antes 15px). (5) Indirecto del fix 1: el banner ya no se solapa con texto del composer, contraste de azul más fuerte.
Lo destacado
4
✨ Nuevo3
🗺️Banner ubicación móvil: encima del composer, no encima
💾Modelo seleccionado persistido (localStorage)
📋Ajustes móvil: 5 secciones con iconos grandes en vez de lista plana
💎 Mejorado1
⚡Móvil: transitions 120ms + backdrop-blur 8px → menos lag
💳 Admin billing: plan asigna créditos + planes temporales + más opciones
28 de mayo de 2026
Bug arreglado: cuando el admin asignaba un plan a un usuario (ej. "Pro"), solo se actualizaba la columna plan sin otorgarle los créditos correspondientes. El usuario quedaba con plan Pro pero 0 créditos. Ahora al asignar plan se calculan automáticamente los créditos del producto, se otorgan vía grant_credits (queda en ledger) y se setean monthly_credit_grant y status=active. Nuevas opciones añadidas al modal: (1) Planes temporales con N días configurables (1-3650). (2) Renovar +N días sin tocar el plan (extiende caducidad). (3) Resetear cuota mensual (re-otorga créditos del plan ahora mismo). (4) Quitar plan con checkbox "mantener créditos". (5) Notas internas del admin (cap 1000 chars) sobre el usuario. (6) Indicador visible de días restantes y badge "temporal". (7) Validación: si seleccionas un credit_pack en vez de subscription, devuelve error claro.
Lo destacado
6
✨ Nuevo5
⏰Planes temporales con N días configurables
📅Renovar +N días sin cambiar el plan
🔄Resetear cuota mensual (re-grant ahora)
🗑️Quitar plan con opción "mantener créditos"
📝Notas internas del admin sobre el usuario
🐛 Arreglado1
🐛FIX: asignar plan ahora otorga sus créditos automáticamente
🐛 Auditoría del sistema de análisis de docs: 4 bugs arreglados
28 de mayo de 2026
Auditoría completa del pipeline de análisis de documentos. Encontrados y arreglados 4 bugs (uno reportado era falso positivo): (1) Admin guardar config era DELETE→INSERT no atómico → ventana de 1-2s con config vacía si el INSERT fallaba. Ahora INSERT primero, DELETE viejos después. (2) Coords extractor usaba gap=15pt absoluto → en PDFs anchos las columnas con gap pequeño colapsaban. Ahora gap relativo al ancho de página (1.2%). (3) Vision en Vercel usaba useSystemFonts:true asumiendo fuentes del SO → en serverless no existen y el render salía en bloques grises. Ahora useSystemFonts solo en local, en Vercel usa las standard_fonts de pdfjs (Foxit, ~1.2MB bundladas). (4) Regex fallback del clasificador de intent perdía vocabulario común de nóminas/facturas/gastos. Ampliado con ganado/cobrado/percibido/devengado/líquido/deducciones/anual/mensual/etc. Reindex admin ya respetaba config (falso positivo del audit).
Lo destacado
4
✨ Nuevo3
📐Coords gap: relativo al ancho (1.2%) en vez de 15pt fijo
🖼️Vision Vercel: standard_fonts del paquete (no system fonts)
🔤Intent regex: +30 palabras de vocabulario financiero/RRHH
📝 Docx/PDF generados sin <artifact> rotos + botones login/registro para invitados
28 de mayo de 2026
Dos cosas. (1) Cuando pedías "genérame un documento Word/PDF" la IA envolvía el contenido en <artifact type="markdown">…</artifact>, y el conversor markdown→docx no sabía stripear esas etiquetas → el archivo descargado contenía las etiquetas literales y se veía roto. Ahora cuando hay generación de documento activa: NO se añade el bloque de instrucciones de artifacts al prompt, en su lugar se le dice al modelo "devuelve markdown puro empezando por H1", y como red de seguridad el normalizador strippea cualquier <artifact>/[[ARTIFACT:id]] que cuele. (2) La pantalla de bienvenida no tenía CTA visible para que un invitado pasara a usuario real — solo veía el chat. Ahora arriba aparece una pill discreta: "Estás de invitado · [Iniciar sesión] [Registrarte gratis · 500 créditos]".
Lo destacado
3
✨ Nuevo1
🎯Welcome de invitados: pill con CTA "Iniciar sesión" + "Registrarte gratis"
🔧 Fix pdfjs en Vercel: extractor de coordenadas vuelve a funcionar en producción
28 de mayo de 2026
En local funcionaba todo, pero en Vercel los logs mostraban dos errores en cada ingest de PDF: "Cannot find module ./pdf.worker.js" (coords) y "The path argument must be of type string. Received type number" (vision). Causa: pdfjs-dist usa require() dinámico para cargar el worker, los cmaps y las standard fonts; Next/Turbopack solo bundlea lo que detecta importado estáticamente. Resultado: en serverless el worker no existía, pdfjs fallaba, los PDFs se ingestaban solo con Tika (texto mashed) y las nóminas volvían a aparecer "No detallado". Fix: resolver workerSrc en runtime con require.resolve() y forzar outputFileTracingIncludes para que Vercel bundle pdf.worker.js + cmaps + standard_fonts con las rutas /api/files/** y /api/chat/**.
⚙️ Admin → Análisis de Documentos: nuevos controles para coords, visión, classifier y caps
28 de mayo de 2026
Hasta ahora las features añadidas en v9.5.26-31 (extractor por coordenadas, fallback con visión multimodal, clasificador LLM de intent y los caps de archivos en contexto) vivían en env vars o hardcoded en el código. Ahora todas son editables desde Admin → Análisis de Documentos. Nuevas secciones: "Extracción avanzada de PDFs" (toggle coords + toggle visión + modelo + máx páginas) y "Inteligencia del contexto en chat" (toggle classifier + modelo + 4 caps editables). Migración 118 añade 10 columnas nuevas a doc_analysis_config con defaults seguros.
🧠 Adiós a las palabras clave: clasificador LLM decide qué contexto incluir
28 de mayo de 2026
Antes (v9.5.30): un regex con palabras clave ("todas/total/suma/cada/nóminas…") decidía si la IA recibía contexto de TODOS los archivos o solo unos pocos. Funcionaba el 80% del tiempo — pero frases como "explícame los gastos del año pasado" no matcheaban y la IA terminaba viendo solo 4 de 17. Reemplazado por un clasificador con gpt-4o-mini que entiende intención semántica: lee la pregunta, ve los nombres de los archivos y decide TODOS o ALGUNOS. Reglas rápidas: 1-4 archivos → siempre TODOS (gratis, sin llamada); 5+ archivos → clasificador. Si el clasificador falla (timeout, red, etc.), fallback al regex antiguo. Latencia añadida: ~300-700ms, compensada al correr en paralelo con el embedding del mensaje.
Lo destacado
4
✨ Nuevo3
🤖Clasificador con gpt-4o-mini reemplaza al regex de keywords
🛡️Fallback automático a regex si el clasificador falla
📂Aplica tanto a adjuntos directos como a carpetas
💎 Mejorado1
⚡1-4 archivos: siempre todos en contexto (sin llamada extra)
📎 Adjuntos en chat: ahora la IA ve TODOS los archivos (antes solo 7)
28 de mayo de 2026
Al subir 17 nóminas a un chat y pedir "dame todas y suma cuánto he ganado", la IA solo veía 7 archivos. La causa: límites fijos en el flow de adjuntos (8 chunks, 4 documentos estructurados) — pensados para "analiza este PDF" no para agregación masiva. La detección de intent ("todas/total/suma/cada/cuánto/nóminas/facturas") ya existía para el flow de carpetas; ahora también se aplica a los adjuntos directos del chat. Cuando detecta intent de agregación: sube a 16-40 chunks y hasta 25 documentos con contexto estructurado completo. Además inserta una instrucción imperativa al modelo para que calcule y responda con el listado por documento sin pedir confirmación.
✨ Multi-cuenta: modal inline para reactivar sin salir de la página
28 de mayo de 2026
Antes (v9.5.28): si los tokens guardados de una cuenta estaban muertos server-side (colateral del bug viejo del logout global), te redirigía a /auth/login con email pre-rellenado. Funcionaba pero rompía el flow. Ahora aparece un modal pequeño centrado pidiendo solo la contraseña, sin salir de donde estés. Tecleas → reactivas → la cuenta vuelve viva al selector. Cero navegación. Pensado para las cuentas afectadas por el bug viejo: una vez reactivadas, los siguientes cambios entre cuentas son INSTANTÁNEOS (sin modal, sin login).
Lo destacado
3
✨ Nuevo3
🪟Modal inline "Reactivar cuenta" con email locked + contraseña
🔁Tras reactivar, los próximos switches son directos sin modal
🗑️Botón "Olvidar esta cuenta" si ya no quieres usarla
🔄 Multi-cuenta: re-login automático cuando una cuenta caducó
28 de mayo de 2026
El fix de v9.5.25 (logout local en vez de global) evita que NUEVOS logouts maten los tokens, pero las cuentas guardadas en localStorage cuyos tokens YA fueron revocados (por el bug anterior) siguen dando 401 al intentar cambiar. Solución: cuando el switch falla con 401, en vez de quedarse el toast genérico "sesión caducada", redirigimos automáticamente al login con el email pre-rellenado y un banner ámbar explicando la situación. Un solo click (escribir contraseña) y la cuenta vuelve a estar viva en el selector. También arreglado un bug previo: cuando entrabas a /auth/login?add=1 con sesión activa, te redirigía a /chat sin dejarte ver el formulario.
Lo destacado
3
✨ Nuevo3
🎯Switch fallido (401) → auto-redirect a login con email + banner explicativo
🛡️/auth/login?add=1 ya no auto-redirige aunque haya sesión activa
✨Tras el re-login, la cuenta vuelve al selector sin pasos extra
🎨 Landing actualizada con precios reales, packs y novedades
28 de mayo de 2026
La landing /landing/pricing decía "Beta gratis, sin precios todavía" — completamente obsoleto desde que tenemos planes y packs en vivo con Stripe. Reescrita: muestra Free (500 créditos), Pro €8 (5K cr/mes), Max €20 (15K cr/mes) y los 4 packs de créditos (5K €6, 15K €15, 60K €50, 130K €100). Añadido bloque transparente de qué cuesta cada acción (chat 3-8 cr, búsqueda web 12 cr, imagen 180 cr, deep research 200 cr, vídeo 1.200 cr). Sección de app móvil con CTA a Google Play y a iOS PWA. FAQ con preguntas reales. La home también actualizada con sección "Lo nuevo" (multi-cuenta, app móvil, créditos, ubicación) y teaser de precios antes del CTA final.
Lo destacado
5
✨ Nuevo5
💰/landing/pricing: Free + Pro €8 + Max €20 + 4 packs con precios reales
📊Bloque "cómo se gastan los créditos" con coste por acción
📱Sección app móvil con CTAs a Google Play y iOS PWA
🆕Home con sección "Lo nuevo" (multi-cuenta, créditos, app, ubicación)
❓FAQ con dudas reales sobre caducidad, cancelación, referidos, pago
📄 Carpetas con PDFs leídos correctamente (nóminas, facturas, tablas)
28 de mayo de 2026
Hasta ahora pdf2json devolvía el texto de los PDFs tabulares MASHED — las columnas se pegaban entre sí ("5,76260,00" en vez de "5,76 | 260,00"). La IA solo lograba extraer datos de algunos meses por azar; los demás aparecían como "No detallado en extracto". Nuevo extractor que usa coordenadas X/Y de pdfjs.getTextContent y reconstruye las columnas por posición. Gratis, instantáneo, determinístico. Re-procesados los 17 PDFs de Nominas GESEM: 15/17 ahora tienen tablas detectadas. Visión (gpt-4o-mini) queda como fallback para PDFs escaneados puros.
Lo destacado
4
✨ Nuevo3
📊Extractor de coordenadas: reconstruye tablas por posición X/Y (pdfjs.getTextContent)
👁️Visión multimodal (gpt-4o-mini) como fallback para PDFs escaneados
🔁Script scripts/reextract-with-vision.ts para re-procesar carpetas existentes
🐛 Arreglado1
🩹OCR de tesseract envuelto en try/catch (antes mataba el ingest)
🔐 Multi-cuenta REALMENTE arreglado + permisos de ubicación en Android
28 de mayo de 2026
Causa raíz definitiva del 401 en cambio de cuenta: el botón "Cerrar sesión" usaba el scope global por defecto, que revoca TODOS los refresh tokens del usuario en GoTrue. Así que al cerrar sesión en A y luego intentar volver a A desde el selector multi-cuenta, el token guardado ya no servía. Cambiado a scope:"local" en ambos sitios (Header y Sidebar). Comprobado en los logs del auth: cada "logout" del usuario borraba sus tokens server-side, dejando el switch imposible. Adicionalmente, añadidos permisos ACCESS_FINE/COARSE_LOCATION al manifest Android y nueva AAB (versionCode 5, versionName 9.5.25) para Google Play.
Lo destacado
3
✨ Nuevo1
🎯Logout ahora es local (scope:"local"): los refresh tokens del usuario sobreviven → multi-cuenta vuelve a funcionar
🐛 Arreglado1
🪵Logs en /api/auth/switch-account para diagnosticar futuros fallos
🔒 Seguridad1
📱Android TWA: permisos de ubicación añadidos + nueva AAB (v9.5.25 / code 5)
🩹 Avatar visible en Header/Welcome + sidebar sin flicker
28 de mayo de 2026
Las nuevas URLs de avatar (supabase.garbotgpt.com) estaban bloqueadas por Next/Image porque el dominio no estaba en la whitelist — por eso Sidebar las mostraba bien pero Header y Welcome no. Añadido a la config. Además, al navegar entre /chat y /carpetas las carpetas del sidebar parpadeaban (la sidebar se remontaba); ahora hay caché y aparecen al instante.
Lo destacado
2
✨ Nuevo1
🖼️Avatares se muestran en Header y Welcome (faltaba el host en next.config)
💎 Mejorado1
⚡Carpetas y nombre de usuario del sidebar instantáneos al navegar (sin flicker)
🔧 Multi-cuenta estable + avatar limpio + visor más rico
28 de mayo de 2026
Causa raíz del "Auth session missing" identificada: GoTrue tenía el reuse interval de refresh token en 10 s, así que los tokens guardados se invalidaban casi de inmediato — lo subimos a 24 h. Limpiamos también las URLs de avatar antiguas que apuntaban al Supabase Cloud descatalogado, y el banner de ubicación pasa a toast flotante abajo. El visor de chats del admin ahora muestra una tarjeta del usuario con avatar, rol, créditos y plan.
⚡ Mensajes admin en tiempo real + iconos en /pricing
28 de mayo de 2026
Cuando un admin envía un mensaje (banner/popup) a un usuario, ahora le aparece al INSTANTE sin necesidad de recargar la página. Además los packs 60k y 130k tienen iconos dedicados en la página de planes, destacados como "Mejor relación".
Lo destacado
2
💎 Mejorado2
⚡Banners/popups en tiempo real (Supabase Realtime)
🎨Iconos animados de los packs 60k/130k en /pricing
Cambios detallados2 · 1
Infraestructura
2
Migración 117: política RLS SELECT sobre banners + publicación realtime.
BannerDisplay se suscribe a postgres_changes y refetcha al cambiar.
🔁 Todos los ids con guion bajo (el de Play sí los admite)
28 de mayo de 2026
Play tiene dos campos: el "ID de producto" (el que llega al backend al comprar, admite _) y el "ID de opción de compra" (interno, requiere -). Solo este último necesita guiones, así que ponemos TODOS los ids de catálogo con guion bajo y dejamos en el "ID de opción" el de guion.
Lo destacado
1
✨ Nuevo1
🔁BD vuelve a usar credits_60k / credits_130k (con guion bajo)
🔁 Solo los packs nuevos (60k/130k) usan id con guion
28 de mayo de 2026
Los packs antiguos (5k, 15k) y las suscripciones (Pro/Max) vuelven a sus ids originales con guion bajo (nunca van a Play, no había razón para cambiarlos). Solo los packs nuevos (60k, 130k) usan kebab-case porque son los que se crean en Google Play, que no admite guion bajo.
Lo destacado
2
✨ Nuevo2
🔁IDs en BD: credits_5k, credits_15k, pro_monthly, max_monthly (como antes)
✅Solo nuevos: credits-60k, credits-130k (con guion, válidos en Play)
🩹 3 fixes: ids Play, avatar header y aviso saldo bajo
28 de mayo de 2026
Renombrados los ids de los packs y planes a kebab-case (con guiones) para que sean válidos en Google Play. La foto de perfil ahora se actualiza al instante en el header tras subirla en Ajustes. El aviso de saldo bajo se mueve a un toast flotante abajo a la derecha (antes tapaba el header).
Lo destacado
3
✨ Nuevo1
💬Aviso de saldo bajo: toast flotante abajo (ya no tapa el header)
💎 Mejorado1
🖼️Avatar del header se refresca al instante tras cambiar la foto
🐛 Arreglado1
🩹IDs de packs/planes en kebab-case (credits-5k, pro-monthly…) válidos en Play
Cambios detallados2 · 1
Infraestructura
2
Migración 114: rename de ids con _ → - en billing_products y user_entitlements.plan.
Evento geia-profile-updated para sincronizar avatar/nombre entre Settings y Header/Sidebar.
📍 Ubicación opcional + visor de chats con estadísticas
28 de mayo de 2026
Nuevo banner para compartir tu ubicación (consentido); a partir de ahí GarBotGPT puede darte el tiempo, la hora local o sugerencias cerca de ti. Además, el visor de chats del admin muestra ahora una barra de estadísticas (mensajes, tokens, créditos, modelos, tiempo total) y un buscador para filtrar conversaciones.
Lo destacado
3
✨ Nuevo3
📍Compartir ubicación → contexto local en las respuestas (tiempo, hora, etc.)
📊Estadísticas en el visor de chats (msgs, tokens, créditos, modelos)
El borrado de usuarios desde admin (uno o varios) tardaba mucho. Optimizado: evitamos un round-trip redundante a la BD por usuario y el borrado masivo ahora corre en paralelo (5 a la vez en vez de uno a uno). Borrar 10 usuarios pasa de ~10× a ~2×.
Lo destacado
2
✨ Nuevo1
🧹Endpoint usa solo auth.admin.deleteUser (cascadea, menos consultas)
Cambiamos el cliente Supabase del navegador a singleton para que TODOS los eventos de rotación de token lleguen a un único listener — antes los tokens guardados quedaban obsoletos en silencio. Si el cambio aún así falla, ahora te llevamos directo al login con el email pre-rellenado para que vuelvas a entrar con 1 clic.
Lo destacado
2
✨ Nuevo2
🔧Cliente Supabase singleton (los tokens guardados se mantienen frescos)
↪️Si una cuenta caducó, te lleva al login con su email puesto
💰 Ajuste de costes en créditos (modelos, herramientas y artifacts)
28 de mayo de 2026
Subimos los costes en créditos de las funciones más caras para reflejar mejor lo que cuestan en realidad. Las más afectadas: generar imágenes, vídeo, deep research y artifacts (webs/apps HTML). Los mensajes normales suben muy poco.
Añadidos dos packs grandes con descuento progresivo: 60.000 créditos por 50€ y 130.000 créditos por 100€. Aparecen en la página de planes junto a los packs existentes.
Lo destacado
2
💎 Mejorado2
💎Pack 60.000 créditos · 50€ (≈44% más créditos/€ que el pack pequeño)
💎Pack 130.000 créditos · 100€ (≈56% más créditos/€)
La foto de perfil no se aplicaba al subirla: el bucket "avatars" no tenía políticas RLS, así que la subida fallaba en silencio. Añadidas las políticas (cada usuario puede subir solo a su carpeta) y mejorado el mensaje de error si algo va mal.
Lo destacado
2
✨ Nuevo1
⚠️Mensaje claro si la subida falla (tipo no válido, tamaño, etc.)
El cambio de cuenta ya no falla con "Auth session missing!": ahora el intercambio de tokens se hace en el servidor, que valida el refresh_token contra GoTrue y escribe las cookies de sesión correctamente. Si falla, la sesión actual queda intacta.
Lo destacado
2
✨ Nuevo1
🛟Si los tokens caducaron, la sesión actual NO se rompe
🐛 Arreglado1
🔧Cambio de cuenta robusto vía endpoint server-side
📦 Artifacts compactos en el chat + ajuste de costes
27 de mayo de 2026
Cuando la IA genera HTML/código en un artifact, la burbuja del chat ya no muestra el código entero ocupando media pantalla: solo aparece la tarjeta compacta y al pulsarla se abre el panel lateral con el preview/código. Además se ha subido un poco el consumo de créditos para reflejar mejor el coste real de la IA, hay un recargo cuando se genera un artifact, y el bonus de bienvenida pasa de 1000 a 500.
Lo destacado
3
✨ Nuevo2
📦Burbuja compacta cuando hay artifact (sin código volcado)
🎁Bono de bienvenida: 500 créditos (antes 1000)
💎 Mejorado1
💎Coste por mensaje un poco mayor (≈1,5–2×) y recargo por artifact
🔧 Multi-cuenta: arreglado el error al cambiar entre cuentas
27 de mayo de 2026
Fix del bug "Auth session missing!" al cambiar de cuenta (que además dejaba sin sesión también a la cuenta activa). Ahora los tokens guardados se mantienen actualizados con cada refresh y, si el cambio falla, la sesión actual se restaura.
Lo destacado
2
✨ Nuevo2
🔧Cambio entre cuentas estable (sin "Auth session missing!")
🛟Si el cambio falla, la sesión actual se restaura automáticamente
La gestión de varias cuentas (añadir cuenta + cambiar entre ellas) que ya estaba en el menú de escritorio ahora está también en el menú de usuario de la barra lateral móvil.
Lo destacado
1
✨ Nuevo1
📱"Añadir cuenta" + cambio entre cuentas en el menú del sidebar móvil
🪵 Admin: audit log con borrado + nueva tab "Log errores"
27 de mayo de 2026
Ahora puedes borrar entradas del audit log (una por una, las de más de 30 días o todas), y hay una nueva pestaña "Log errores" al lado donde aparecen los errores del programa (con su origen, mensaje, contexto y stack), también borrables.
Lo destacado
2
✨ Nuevo1
🗑️Borrado de entradas del audit log (uno / antiguos / todos)
🐛 Arreglado1
🐛Nueva pestaña "Log errores" con los errores del servidor y borrado
Cambios detallados2 · 1
Infraestructura
2
Tabla error_logs + helper logError() + endpoint /api/admin/error-logs.
Captura inicial en webhook Stripe y cron de auto-recarga.
🛠️ Admin: visor de chats en página + créditos en tab Usuarios
27 de mayo de 2026
El visor de chats de un usuario ahora se abre en una pestaña nueva con un layout tipo chat real (sidebar de conversaciones a la izquierda, mensajes a la derecha en burbujas), en modo solo lectura. Además, el botón "Créditos y suscripción" está disponible también desde la tab Usuarios (antes solo en Roles y Permisos).
Lo destacado
2
✨ Nuevo2
🪟Visor de chats como página nueva con look de chat real (sin input)
💳Botón "Créditos y suscripción" añadido en la tab Usuarios
👥 Multi-cuenta: cambia entre cuentas desde el menú
27 de mayo de 2026
Ahora puedes tener varias cuentas guardadas en el navegador y cambiar entre ellas desde el menú de usuario (arriba a la derecha): nuevo botón "Añadir cuenta" y, cuando hay más de una, una lista para elegir con un toque, sin cerrar sesión cada vez.
Eliminamos una consulta redundante a la base de datos antes de cada respuesta (reutilizamos el perfil que ya se había leído), reduciendo un poco el tiempo hasta que la IA empieza a responder.
Lo destacado
1
💎 Mejorado1
⚡Una consulta menos a la base de datos por mensaje
📧 Avisos por email: renovación, pago fallido y saldo bajo
27 de mayo de 2026
Ahora recibes un email cuando tu suscripción se renueva (con los créditos añadidos), cuando falla un pago (para que actualices la tarjeta y no pierdas el acceso) y cuando te queda poco saldo. Complementa los avisos dentro de la app.
Lo destacado
3
✨ Nuevo2
📧Email al renovar la suscripción (créditos añadidos)
⚠️Email si falla el pago, con enlace para actualizar la tarjeta
💎 Mejorado1
💎Email de saldo bajo (una vez al mes)
Cambios detallados1 · 1
Facturación
1
Helper SMTP (nodemailer) + emails en el webhook de Stripe y en el cron de facturación.
Nueva opción (opt-in) en "Mi suscripción": cuando tu saldo baja de 50 créditos, compramos automáticamente un pack de 5.000 con tu tarjeta guardada, para que nunca te quedes sin servicio. Lo activas y desactivas tú cuando quieras.
Lo destacado
2
✨ Nuevo1
🔁Auto-recarga (opt-in): compra 5.000 créditos al bajar de 50
🔒 Seguridad1
🔒Desactivable en cualquier momento; requiere tarjeta guardada
Cambios detallados1 · 1
Facturación
1
Ajuste en /api/billing/auto-topup + cobro off-session en /api/billing/auto-topup/run (cron cada 15 min).
Nuevo sistema de invitaciones: comparte tu enlace desde "Mi suscripción" y ganas 500 créditos por cada amigo que se registre (y ellos 200). Además, al crear una cuenta nueva recibes 1000 créditos de bienvenida, y a los invitados se les ofrece registrarse tras probar el chat.
Lo destacado
3
✨ Nuevo3
🎁Enlace de invitación: +500 para ti, +200 para tu amigo
✨1000 créditos de bienvenida al crear cuenta
👋A los invitados se les ofrece registrarse tras 3 mensajes
Cambios detallados2 · 1
Crecimiento
2
Tabla referrals + código por usuario; concesión en /api/auth/post-signup (idempotente).
Enlace ?ref=CODE en el registro; tarjeta de invitación en /suscripcion.
Ahora puedes descargar tus facturas y recibos directamente desde "Mi suscripción" (PDF de Stripe). Y en el panel de administración, cada usuario tiene un botón para reembolsar su último pago en Stripe, con la opción de descontar los créditos otorgados.
Lo destacado
2
✨ Nuevo2
🧾Facturas/recibos descargables en /suscripcion
↩️Reembolso del último pago desde la ficha del usuario (admin)
Cambios detallados2 · 1
Facturación
2
Endpoint /api/billing/invoices (lista facturas del cliente en Stripe).
Reembolso admin vía /api/admin/users/[id]/billing (refund + ajuste de créditos).
📈 Gráficas de AdSense táctiles + logo vectorial actualizado
27 de mayo de 2026
En la página de Google AdSense ahora puedes tocar (o clicar) cualquier barra de la gráfica para ver su dato exacto — antes solo aparecía al pasar el ratón por encima, así que en el móvil no se veía. Además se actualizó el logo en formato vectorial (SVG), que se había quedado con el diseño antiguo.
Lo destacado
2
✨ Nuevo1
📈Barras de la gráfica de AdSense clicables/táctiles con lectura del dato
🏷️ Facturación: importes netos con descuentos aplicados
27 de mayo de 2026
El panel de facturación ahora muestra el ingreso real con los códigos de descuento ya aplicados: el MRR se calcula con lo que de verdad se cobra en cada suscripción (no el precio de lista) y se añaden los ingresos netos del mes y totales. Se conserva el precio de lista a modo de comparación.
Lo destacado
2
✨ Nuevo2
🏷️MRR neto con descuentos (antes mostraba el precio de lista)
💶Ingresos netos del mes y totales realmente cobrados
Cambios detallados1 · 1
Panel de administración
1
admin_billing_overview() usa amount_paid de las facturas de Stripe (neto) y amount_total de los packs.
🔍 Visor de chats admin: buscador, exportar y editados
27 de mayo de 2026
El visor de conversaciones del panel de administración ahora tiene un buscador para filtrar mensajes dentro de la conversación, botones para exportar el chat a Markdown o PDF, y un distintivo "editado" en los mensajes que se han modificado.
Nueva sección "Facturación" en el panel de administración: ingreso recurrente estimado, créditos en circulación, suscripciones activas, pagos con problemas (past_due), suscripciones que vencen en 7 días, eventos de webhook recientes y consumo de créditos por día, usuario, modelo y herramienta.
Lo destacado
3
✨ Nuevo3
📊Nueva pestaña "Facturación" con MRR, créditos y estados de suscripción
⚠️Pagos con problema y suscripciones por vencer a la vista
💎 Aviso de saldo bajo y mensaje claro al quedarte sin créditos
27 de mayo de 2026
Cuando te quedan pocos créditos (menos de 50) aparece un aviso discreto con acceso directo a recargar o subir de plan. Y si te quedas sin créditos, en vez de un error seco verás una ventana clara que te explica las opciones; tu conversación se conserva.
Lo destacado
2
✨ Nuevo1
🔔Aviso de saldo bajo (menos de 50 créditos) con botón para conseguir más
🐛 Arreglado1
💎Ventana "sin créditos" con recarga / subir de plan en lugar de un error
📣 Enviar un mensaje (banner/popup) a un usuario concreto
27 de mayo de 2026
Desde el panel de administración, en la lista de usuarios, ahora hay un botón para enviar un mensaje a un usuario concreto: se le muestra como popup o banner (a tu elección) la próxima vez que entre. Puedes elegir el tipo, si lo puede cerrar y añadir un botón con enlace.
Lo destacado
2
✨ Nuevo2
📣Botón "Enviar mensaje" por usuario en la gestión de usuarios
🎯El mensaje (popup o banner) solo lo ve ese usuario
Cambios detallados2 · 1
Panel de administración
2
banners.target_user_id: un banner puede dirigirse a un usuario (NULL = global).
Modal de composición: título, mensaje, formato (popup/banner/ambos), tipo, botón opcional y si es cerrable.
El visor de conversaciones de un usuario (panel de administración) ahora muestra mucho más: miniaturas de las imágenes adjuntas, los archivos adjuntos con nombre y tamaño, qué herramientas usó la IA en cada respuesta, las fuentes consultadas (RAG/web) y un pie con modelo, créditos consumidos, tokens y tiempo de respuesta.
Lo destacado
3
✨ Nuevo3
🧰Etiquetas de herramientas usadas en cada respuesta
🖼️Miniaturas de imágenes y adjuntos con nombre/tamaño
🔗Fuentes consultadas + pie con modelo, créditos, tokens y tiempo
Cambios detallados1 · 1
Panel de administración
1
El endpoint de mensajes devuelve meta resumido, fuentes recortadas y miniaturas firmadas.
Cada visita sin sesión creaba un usuario invitado que en su mayoría nunca llegaba a escribir, acumulando cuentas vacías. Ahora se evita crear duplicados cuando la sesión aún no se ha propagado y un proceso periódico elimina automáticamente los invitados sin ninguna conversación.
Lo destacado
2
✨ Nuevo2
🧹Limpieza automática (cada hora) de invitados sin conversaciones ni mensajes
🚫Se evita crear un segundo invitado mientras la sesión todavía no propaga
Cambios detallados2 · 1
Infraestructura
2
Función cleanup_anonymous_guests + endpoint /api/maintenance/guest-cleanup (cron NAS o admin).
GuestBootstrap: bloqueo anti-duplicados de 30s al iniciar sesión anónima.
🗑️ Admin: borrado masivo de usuarios + saldo de créditos en la fila
27 de mayo de 2026
En la gestión de usuarios del panel de administración ahora puedes seleccionar varios usuarios (o todos) y eliminarlos de una vez, con confirmación. Además, cada fila muestra directamente el saldo de créditos del usuario sin tener que abrir su modal.
Lo destacado
2
✨ Nuevo1
☑️Selección múltiple de usuarios y borrado masivo con confirmación
💎 Mejorado1
⚡Saldo de créditos visible en cada fila de la lista de usuarios
Cambios detallados3 · 1
Panel de administración
3
Casillas de selección por usuario y "seleccionar todos" en la cabecera.
Barra de acción para eliminar los usuarios seleccionados de golpe.
Nueva columna "Créditos" con el saldo actual de cada usuario.
🛠️ Admin: gestionar créditos y suscripción por usuario
27 de mayo de 2026
En el panel de administración, cada usuario tiene un nuevo botón "Créditos y suscripción": ver su saldo, añadir/quitar/fijar créditos y cambiar su plan, estado de suscripción y créditos mensuales. Todo queda registrado en el historial de créditos.
Lo destacado
2
✨ Nuevo2
💳Ver y ajustar créditos de cualquier usuario (añadir / quitar / fijar)
🔁Cambiar plan, estado de suscripción y créditos/mes desde el admin
Cambios detallados2 · 1
Panel de administración
2
Nuevo modal "Créditos y suscripción" por usuario en la gestión de usuarios.
Endpoint admin /api/admin/users/[id]/billing (protegido); cambios auditados en credit_ledger.
💎 El chat muestra el coste en créditos de cada respuesta
27 de mayo de 2026
Cada respuesta de la IA muestra ahora cuántos créditos ha consumido (un pequeño distintivo bajo el mensaje). Además se ajustó el consumo: cada mensaje cuesta más que antes y usar herramientas (búsqueda web, imágenes, deep research, documentos, código…) añade un recargo según la herramienta.
Lo destacado
2
✨ Nuevo1
⚙️Consumo por mensaje más realista + recargo por herramienta activa
💎 Mejorado1
💎Distintivo "N créditos" bajo cada respuesta de la IA
💳 Página de "Mi suscripción" + acceso desde el menú
27 de mayo de 2026
Nueva página dedicada (/suscripcion) para gestionar tu plan: saldo de créditos, consumo del mes, estado, renovación y botones para comprar más o gestionar/cancelar la suscripción. Accesible desde el menú de usuario (escritorio) y el menú de acciones (móvil).
Lo destacado
2
✨ Nuevo2
💳Nueva página /suscripcion para gestionar plan, créditos y facturación
🔗Acceso directo "Suscripción" en el menú de usuario (escritorio) y de acciones (móvil)
💳 Suscripción por uso (créditos) + pestaña "Suscripción" en Ajustes
27 de mayo de 2026
Nuevo sistema de planes y créditos. Hay una página de planes (/pricing) con suscripciones Pro/Max y recargas de créditos (pago con Stripe), y una nueva pestaña "Suscripción" en Ajustes donde ves tu saldo de créditos, lo consumido este mes, tu plan y la fecha de renovación, con accesos para comprar más o gestionar la suscripción.
Lo destacado
3
✨ Nuevo3
💳Página /pricing con planes Pro/Max y packs de créditos (Stripe)
🧾Nueva pestaña "Suscripción" en Ajustes: saldo, consumo del mes, plan y renovación
🔄Gestionar/cancelar suscripción desde el portal de Stripe
Cambios detallados3 · 1
Suscripción y créditos
3
Créditos que se consumen según el modelo usado; suscripción mensual con créditos incluidos + recargas opcionales.
Pestaña "Suscripción" en Ajustes con saldo, consumo del periodo, estado y fecha de renovación.
El cobro real se activa con un interruptor del servidor; mientras tanto el chat funciona igual.
Seguía viéndose poco transparente porque se apilaban varias capas de brillo blanco (velo + sheen). Ahora el velo es mínimo (~0.08), menos desenfoque (13px) y las capas de brillo muy reducidas: el input se ve mucho más transparente, como cristal de verdad.
Lo destacado
2
✨ Nuevo2
🫧Velo mínimo (~0.08) y capas de brillo blanco muy reducidas → mucho más transparente
El velo blanco hacía que el input se viera grisáceo. Lo bajé bastante (de ~0.34 a ~0.2) y subí el desenfoque a 24px: ahora es más transparente y se ve más cristal/menos gris, sin que vuelva el tinte azul de las burbujas de detrás.
Lo destacado
2
✨ Nuevo2
🫧Velo blanco ~0.2 (antes ~0.34) → menos gris, más transparente
🌫️Blur 24px mantiene el fondo difuminado y sin tinte
Ajuste fino del cristal del input móvil: más transparente (velo blanco de ~0.5 a ~0.34) pero manteniendo el desenfoque alto (22px) y la saturación baja (1.28) para que el color de las burbujas de detrás siga difuminado y no vuelva el tinte azul.
Lo destacado
2
✨ Nuevo2
🫧Más transparente (velo ~0.34) sin recuperar el tinte azul
🌫️Blur 22px + saturación 1.28 mantienen el fondo difuminado
🩹 Input móvil: arreglado el tinte azul (legibilidad)
27 de mayo de 2026
En el iPhone el input se volvía un pegote azul-morado: al ser demasiado transparente, las burbujas de mensaje azules de detrás se colaban y la saturación alta las convertía en un degradado azul. Ahora lleva un velo blanco real (~0.5), saturación moderada y más desenfoque, así que el color de detrás ya no tiñe el cuadro y el texto se lee bien. Mantiene el bisel, el anillo de borde y el brillo especular (carácter de cristal).
Lo destacado
3
✨ Nuevo3
🚫Adiós al tinte azul: velo blanco ~0.5 + saturación 1.3 + blur 18px
👁️Mucho más legible sobre burbujas de color
🔷Conserva bisel/anillo/especular para el look de cristal
Cambios detallados1 · 1
Interfaz móvil
1
Se quitó la dispersión cromática cian/ámbar que sumaba al tinte azul; sheen y franja inferior atenuados para evitar manchas.
🫧 Input móvil: cristal grueso con lente y especular (iPhone)
27 de mayo de 2026
Segunda iteración del liquid glass del input móvil, llevando la aproximación CSS al máximo para iPhone (Safari no permite la refracción real). Ahora el cuadro de escribir parece cristal grueso: borde biselado (luz arriba, sombra abajo), anillo de borde tipo lente, dispersión cromática sutil (cian/ámbar) como el efecto de Apple, y un reflejo especular más nítido en la esquina superior. Solo afecta al input del móvil.
Lo destacado
3
✨ Nuevo3
🔷Borde biselado tipo lente (luz arriba / sombra abajo) → look de cristal grueso
🌈Dispersión cromática sutil (cian/ámbar) en los cantos, como Apple
✨Reflejo especular más nítido en la esquina superior + raya de borde
Cambios detallados1 · 1
Interfaz móvil
1
Nota: Safari/iOS no soporta refracción real (backdrop-filter con filtro SVG); esta es la mejor aproximación CSS posible en iPhone, sin doblar el fondo.
Cambio de prueba en el cuadro de escribir del móvil: en vez del cristal esmerilado lechoso de antes, ahora usa un cristal mucho más transparente al estilo de Apple (menos desenfoque, deja ver el fondo, más saturación y un borde superior brillante). Solo afecta al input del móvil; el escritorio no cambia. Nota: la refracción de bordes (que dobla el fondo) es exclusiva de Chrome/Android; en iPhone se ve esta versión CSS transparente.
Lo destacado
3
✨ Nuevo3
🫧Input móvil más transparente y con brillo especular (look Apple), menos efecto plástico
📱Solo cambia el composer del móvil; el de escritorio queda igual
🛟Fallback opaco si el navegador no soporta desenfoque
Cambios detallados2 · 1
Interfaz móvil
2
Receta liquid glass en .mobile-chatgpt-composer: blur bajo (7px), fondo translúcido (~0.1–0.2), saturación 1.9 y rim especular superior.
La refracción de bordes vía filtro SVG es Chrome/Chromium-only; en iOS/Safari se aplica la versión CSS transparente.
📊 AdSense: modelo más barato, variación en las cards y panel propio /adsense
27 de mayo de 2026
Mejoras de Google AdSense. (1) Las consultas de AdSense en el chat ahora usan el modelo barato (GarBotGPT-5-Mini) en vez del 5.5: solo resume datos ya calculados, así que es más rápido y económico. (2) Las tarjetas de AdSense muestran SIEMPRE la variación vs el periodo anterior (flecha + %), no solo en "hoy vs ayer". (3) Nueva página dedicada /adsense con selector de cuenta, rango y métricas, KPIs con variación y una gráfica diaria — sin pasar por el chat. Accesible desde el menú lateral.
Lo destacado
4
✨ Nuevo3
📈Variación vs periodo anterior siempre visible en las cards (flecha + %)
🗂️Nueva página /adsense: cuenta + rango + métricas + gráfica diaria
🔗Acceso a AdSense desde el menú lateral (escritorio y móvil)
💎 Mejorado1
💸AdSense en el chat usa GarBotGPT-5-Mini (más barato y rápido) en vez de 5.5
Cambios detallados4 · 1
Google AdSense
4
El modelo se fuerza a gpt-5-mini SOLO cuando AdSense es la herramienta activa (anula AutoRoute en ese caso).
Modo resumen: se consulta también el periodo anterior comparable y se calcula la variación por métrica.
Página /adsense con KPIs (con variación) y gráfica diaria SVG por métrica; avisa si falta conectar/reautorizar Google.
Nuevo endpoint /api/google/adsense/report (totales + serie diaria).
📂 Arreglado: cálculos/listados sobre una carpeta (p.ej. sumar nóminas)
27 de mayo de 2026
Cuando seleccionabas una carpeta con varios documentos y pedías algo tipo "dime todas mis nóminas y el total del salario neto", la IA listaba los archivos pero se quedaba preguntando qué hacer en vez de calcular. El motivo: solo recibía un fragmento de unos pocos documentos (no de todos) y un contexto demasiado blando. Ahora, en consultas de cálculo/listado sobre una carpeta, la IA recibe el contenido real de TODOS los documentos de la carpeta y la instrucción de calcular y responder directamente.
Lo destacado
3
✨ Nuevo3
📂En cálculos/listados sobre una carpeta, la IA lee el contenido de TODOS los documentos (no solo unos pocos)
🧮Instrucción imperativa: calcula y responde con el listado por documento y el total, sin pedir confirmación
🔎Más cobertura de búsqueda (match_count adaptado al nº de documentos de la carpeta)
Cambios detallados3 · 1
Carpetas / Conocimiento
3
Detección de intención de agregación (total, suma, todas, cada, listado, importes, netos…) sobre la carpeta.
En esas consultas se inyecta el extracto real de cada documento (no solo el resumen de secciones/tablas) y se cubren todos los archivos (hasta 25).
match_count del RAG de carpeta adaptado al número de documentos; las consultas normales mantienen el comportamiento anterior.
🛠️ Nueva página /cron para gestionar el cron del servidor
27 de mayo de 2026
Hay una página nueva en /cron (solo administradores) para gestionar el cron del servidor que ejecuta las tareas/automatizaciones programadas. Muestra si el cron está vivo (latido), cuándo fue la última ejecución, las próximas tareas y agentes, y la actividad reciente. Permite activarlo/desactivarlo, fijar cada cuánto procesa, y ejecutarlo al instante con "Ejecutar ahora". Tienes un acceso directo desde Ajustes → Tareas.
Lo destacado
4
✨ Nuevo3
🩺Salud del cron en vivo (latido) y resumen de la última ejecución
⏯️Activar/desactivar el cron y fijar el intervalo de proceso desde la web
📅Próximas tareas, agentes activos y actividad reciente en una sola vista
💎 Mejorado1
⚡Botón "Ejecutar ahora" para lanzar el scheduler al instante
Cambios detallados4 · 1
Cron / Servidor
4
Nueva página /cron (admin) con estado, control e historial del scheduler.
El scheduler registra un latido en cada llamada del cron del NAS; la página lo lee para mostrar si está activo.
Config en BD (migración 103 cron_state): activado/desactivado e intervalo de proceso, respetados por el scheduler.
Endpoints /api/cron (GET estado, PATCH config, POST ejecutar-ahora) protegidos por administrador.
🤖 Automatizaciones más fiables + cristal en la barra y el menú móvil
27 de mayo de 2026
Mejoras en las automatizaciones (tareas programadas) y un par de retoques visuales en móvil. Ahora puedes crear una automatización directamente desde Ajustes (antes solo nacían desde el chat); si una automatización falla, se reintenta automáticamente y, si aun así no sale, te avisa en el chat (y por email si lo tienes activado). También se arregló un fallo que impedía pausar tareas. En móvil, la barra inferior y el menú lateral ahora tienen efecto de cristal esmerilado real.
Lo destacado
4
✨ Nuevo3
➕Crear automatizaciones desde Ajustes → Tareas (botón "Nueva")
🔁Reintentos automáticos (hasta 3) y aviso al usuario si una tarea falla
🪟Cristal esmerilado real en la barra inferior y el menú lateral del móvil
🐛 Arreglado1
⏸️Arreglado: pausar una tarea ya no da error
Cambios detallados6 · 2
Automatizaciones / Tareas
4
Nuevo formulario para crear automatizaciones desde la pestaña de Ajustes (recurrencia, acción, herramientas, prompt e indicaciones).
El scheduler reintenta las tareas fallidas con backoff y, al agotar los intentos, avisa por chat y/o email y deja de reintentar (recurrentes saltan a la próxima ocurrencia).
Migración 102: el estado "paused" ahora es válido en BD (antes el CHECK lo rechazaba y pausar fallaba).
Endpoint interno del worker del scheduler protegido con CRON_SECRET.
Interfaz móvil
2
Barra de navegación inferior con cristal esmerilado (blur + translúcido + rim-light) en vez del fondo plano.
Menú lateral con backdrop-blur real; ambos con respaldo opaco si el navegador no soporta backdrop-filter.
🖼️ Miniatura real de las imágenes en "Mis archivos"
27 de mayo de 2026
En la página "Mis archivos", las imágenes ahora muestran una miniatura real (la propia foto recortada) en vez del icono genérico de imagen. Si por lo que sea la miniatura no carga, se vuelve a mostrar el icono coloreado de siempre. El resto de tipos (PDF, hojas de cálculo, etc.) siguen con su icono.
Lo destacado
3
✨ Nuevo3
🖼️Las imágenes se ven como miniatura real (object-cover) en la lista de "Mis archivos"
↩️Si la miniatura falla, cae automáticamente al icono coloreado
🪶Carga diferida (lazy) para no ralentizar la lista
Cambios detallados2 · 1
Mis archivos
2
Nuevo componente de miniatura: para imágenes usa la vista inline del archivo; para el resto, el icono por tipo.
Carga perezosa de las miniaturas (loading="lazy") y recorte object-cover con borde sutil.
📎 Arreglado: el chip "[Adjunto N]" ya no te devuelve al chat (PWA)
27 de mayo de 2026
El chip "[Adjunto N]" de las respuestas no abría el documento: en la app instalada (PWA) al pulsarlo te mandaba otra vez al chat. La causa era que el saneador de enlaces de Markdown vaciaba nuestro enlace interno, dejando un enlace vacío que la PWA interpretaba como "ir al inicio". Ahora el chip abre el adjunto correctamente.
Lo destacado
2
✨ Nuevo1
📎El chip "[Adjunto N]" vuelve a abrir el documento real (antes te devolvía al chat en la PWA)
🔒 Seguridad1
🔒Se preserva nuestro enlace interno de adjuntos sin abrir la puerta a esquemas no seguros
Cambios detallados2 · 1
Respuestas (citas de adjuntos)
2
Se conserva el esquema interno "geia-att:" al renderizar Markdown (antes lo eliminaba el saneador por defecto).
El chip evita que el clic se propague y abra navegación accidental.
La página "Mis archivos" ahora se ve y se usa mucho mejor en el móvil: cada archivo muestra su estado con una etiqueta compacta y los botones de acción (ver, descargar, indexar, renombrar, borrar) pasan a una fila inferior con buen tamaño para el dedo, en vez de amontonarse junto al nombre. La barra superior también se compacta (el botón "Volver" deja solo el icono) para que quepa todo.
Lo destacado
3
✨ Nuevo3
📱Filas de archivo en 2 niveles en móvil: nombre+estado arriba, acciones abajo (toques cómodos)
🏷️Etiqueta de estado compacta visible también en móvil
↔️Barra superior compacta (icono "Volver", menos relleno) para que entre todo
Cambios detallados3 · 1
Mis archivos (responsive)
3
En móvil las acciones de cada archivo van en una fila inferior con separador, con iconos más grandes para el dedo.
Badge de estado (Indexado/En cola/Fallido/Sin indexar) ahora también visible en móvil, en versión compacta.
Barra superior y contenido con menos relleno lateral en pantallas pequeñas; "Volver al chat" queda como icono.
📎 "Archivos recientes" estilo ChatGPT, "[Adjunto N]" clicable, tablas más bonitas y menú del sidebar arreglado
26 de mayo de 2026
Varias mejoras de interfaz. (1) "Archivos recientes" ya no abre una ventana centrada encima: en escritorio se despliega a un lado al pasar el ratón (como ChatGPT) y en el móvil sube como hoja inferior. (2) Los marcadores "[Adjunto 1]", "[Adjuntos 2 y 3]" de las respuestas ahora son chips clicables que abren el documento de verdad. (3) Las tablas se ven más limpias. (4) El menú de tres puntos de un chat ya no se corta: ahora hace scroll dentro de sí mismo y se ven todas las opciones.
Lo destacado
4
✨ Nuevo4
📎"Archivos recientes": flyout lateral en escritorio (hover) y bottom sheet en móvil
🔗"[Adjunto N]" ahora es un chip clicable que abre el adjunto real
📊Tablas más limpias y con más aire
🧩El menú ⋯ de un chat ya no se corta (scroll interno, se ven todas las opciones)
Cambios detallados6 · 3
Selector de archivos recientes
3
Escritorio: panel que se despliega a la derecha del menú al pasar el ratón (ya no una ventana centrada que tapaba todo).
Móvil: hoja inferior (bottom sheet) optimizada para el dedo.
Las imágenes muestran miniatura; los documentos, su icono por tipo.
Citas y tablas
2
"[Adjunto N]" / "[Adjuntos N y M]" se convierten en chips clicables (abren el archivo); se quitan los "[Carpeta/Conocimiento/Fuente N]" redundantes.
Tablas: cabecera con degradado, más padding y números monetarios a la derecha; fila "Total" resaltada.
Menú del sidebar
1
El menú ⋯ de un chat (y el de carpeta) ahora tiene scroll interno y altura máxima: ya no se sale de pantalla ni hay que desplazar la lista de chats.
⚙️ Indexación más robusta: worker de respaldo, tablas sin partir y auto-indexado de adjuntos
26 de mayo de 2026
Tres mejoras internas del análisis de documentos. (1) Un worker en segundo plano (cada 5 min) completa la indexación de archivos que se quedaron a medias (p. ej. si cerraste la pestaña). (2) Al trocear documentos para la IA, las tablas no se parten: las filas de una tabla se mantienen juntas para no separar una cifra de su concepto. (3) Cuando la IA lee un adjunto que aún no estaba indexado, lo deja en cola para indexarlo de fondo, así la próxima consulta es más rápida.
Lo destacado
3
✨ Nuevo2
⚙️Worker de ingesta cada 5 min: termina lo que quedó a medias (sin perder indexaciones)
📊Las tablas no se parten al trocear el documento (cifras junto a su concepto)
💎 Mejorado1
⚡Los adjuntos leídos al vuelo se indexan en segundo plano para la próxima vez
Cambios detallados4 · 3
Worker de ingesta (#17)
2
Nuevo endpoint /api/files/ingest-worker (protegido por CRON_SECRET) que procesa archivos atascados en estado "en cola".
Cron en el NAS cada 5 minutos; cierra el hueco de la ingesta dirigida por el cliente si el navegador se cierra.
Chunking consciente de tablas (#19)
1
Detección de bloques de tabla (filas con columnas y números); si caben, se indexan como un bloque entero en vez de partirse.
Auto-indexado de adjuntos (#16)
1
Si la IA extrae un adjunto no indexado al vuelo, lo marca para que el worker lo indexe en segundo plano.
📊 Tablas sin hueco a la derecha + 🖼️ miniaturas en "Archivos recientes"
26 de mayo de 2026
Dos pulidos visuales. (1) Las tablas ya no dejan un espacio en blanco a la derecha: la caja se ajusta al ancho del contenido. (2) En el selector "Archivos recientes" del chat, las imágenes muestran una miniatura real en vez de un icono genérico.
Lo destacado
2
✨ Nuevo2
📊Tablas: la caja se ajusta al contenido (adiós al hueco blanco a la derecha)
🖼️"Archivos recientes": miniaturas reales para las imágenes
Cambios detallados2 · 2
Tablas
1
La tabla deja de estirarse a todo el ancho; el contenedor abraza el contenido (con scroll si es muy ancha).
Archivos recientes
1
Las imágenes se firman en lote y se muestran como miniatura; los documentos mantienen su icono por tipo.
🖼️ Arreglada la vista previa rota de imágenes en el chat
26 de mayo de 2026
Cuando enviabas una imagen, a veces la miniatura en el mensaje salía rota (icono de imagen rota + nombre de archivo). Ahora la miniatura se auto-repara: si la URL falla, recarga la imagen desde el servidor, así que siempre se ve.
Lo destacado
1
✨ Nuevo1
🖼️La imagen enviada ya no se ve rota: se recarga desde el servidor si la URL falla
Cambios detallados1 · 1
Vista previa de adjuntos
1
Las miniaturas de imagen del mensaje usan un componente con auto-reparación: ante un error de carga (URL firmada caída o blob revocado) recargan desde /api/files/<id>/download.
🔎 Búsqueda híbrida (significado + palabras clave) en tus documentos
26 de mayo de 2026
Mejora de calidad al consultar tus archivos. Hasta ahora la IA buscaba en tus documentos solo por "significado" (vectores), que a veces falla con números, importes, nombres propios o términos exactos como "total" o "IVA". Ahora combina ese significado con una búsqueda por palabras clave (igual que ya hacía con las unidades de red): así recupera el fragmento correcto aunque el término exacto no "puntúe" bien por significado. Aplica a adjuntos del chat, archivos de carpeta y bases de conocimiento.
Lo destacado
3
✨ Nuevo2
🔎Recuperación híbrida vector + palabras clave en archivos de usuario
📚Aplica a adjuntos, carpetas y colecciones de conocimiento
💎 Mejorado1
🔢Mejor con números, importes, nombres propios y términos exactos ("total", "IVA"...)
Cambios detallados3 · 1
Recuperación de documentos (RAG)
3
Migración 101: nuevas funciones match_user_file_chunks_hybrid y match_file_chunks_by_ids_hybrid (vector 0.8 + keyword 0.2 con ts_rank).
Incluye fragmentos que coinciden por palabra clave aunque su similitud semántica no llegue al umbral.
Si una búsqueda falla, sigue cayendo a fragmentos directos / extracción inline (sin romper la respuesta).
⚡ Arreglada la lentitud al adjuntar imágenes en el chat
26 de mayo de 2026
Regresión corregida: al adjuntar una imagen en el chat, la miniatura se quedaba girando mucho tiempo. La causa: tras subir, se esperaba a "indexar" el archivo, y para las imágenes eso lanzaba un OCR que tardaba varios segundos. Ahora la miniatura aparece en cuanto se sube, la indexación va en segundo plano, y las imágenes ya no pasan por OCR al adjuntarlas (se adjuntan para que el modelo las vea, no para buscarlas).
Lo destacado
3
✨ Nuevo2
🚫Las imágenes del chat ya no lanzan OCR al adjuntarse (eran para visión, no para RAG)
🗂️Los documentos siguen indexándose, pero en segundo plano (sin bloquear)
💎 Mejorado1
⚡La imagen adjunta aparece al instante (ya no espera a la indexación)
Cambios detallados3 · 1
Subida de adjuntos
3
El adjunto se marca como listo en cuanto termina la subida; la indexación RAG ya no bloquea la miniatura.
Se omite la indexación/OCR de imágenes adjuntadas en el chat (innecesaria para visión).
Aplicado tanto en el chat normal como en la pantalla de bienvenida.
📊 Tablas mucho mejores + 🐛 el modelo ya no cambia al editar un mensaje con archivo
26 de mayo de 2026
Dos arreglos visibles. (1) Las tablas que genera la IA ahora se ven como una hoja de cálculo de verdad: cabecera marcada, separadores de columna, números alineados a la derecha automáticamente y la fila de "Total" resaltada. (2) Bug corregido: al editar un mensaje que llevaba un PDF/documento y reenviarlo, el modelo cambiaba (p. ej. de GarBotGPT-5.5 a uno inferior) y a veces dejaba de leer el archivo; ahora se reenvía siempre el adjunto del propio mensaje, así que mantiene el modelo y sigue analizando el documento.
Lo destacado
2
✨ Nuevo1
📊Tablas estilo hoja de cálculo: números a la derecha, fila Total resaltada, separadores
🐛 Arreglado1
🐛Editar un mensaje con PDF ya no cambia el modelo ni pierde el archivo
Cambios detallados5 · 2
Tablas en las respuestas
3
Cabecera más marcada, separadores de columna y zebra; bordes y radios más limpios.
Detección automática de celdas numéricas/monetarias → alineadas a la derecha con cifras tabulares.
La fila de "Total"/"Subtotal" se resalta (negrita + borde superior).
Editar/regenerar con adjunto
2
Al editar y reenviar un mensaje con PDF/documento se reenvía SIEMPRE su adjunto (antes solo si había una herramienta activa).
Esto evita que el enrutado automático bajara de modelo al no "ver" el adjunto, y que el documento dejara de analizarse.
🔁 "Reindexar pendientes" en Mis archivos + chequeo de salud de la BD
26 de mayo de 2026
Mejoras de mantenimiento de archivos. En "Mis archivos" aparece un botón "Reindexar pendientes" que indexa de golpe todos los archivos que están "Sin indexar" o "Fallidos" (con progreso en vivo), ideal para poner al día tus documentos antiguos para que la IA pueda leerlos. Además se ha añadido una herramienta interna de chequeo de la base de datos que verifica que existen todas las funciones, tablas y columnas críticas y avisa si falta algo, para evitar fallos como el que tuvimos.
Lo destacado
3
✨ Nuevo3
🔁Botón "Reindexar pendientes (N)" en Mis archivos: indexa en lote los "Sin indexar"/"Fallidos"
📊Progreso en vivo "Indexando X/N" y concurrencia controlada
🩺Chequeo de salud de la BD para detectar drift (funciones/tablas/columnas que falten)
Cambios detallados3 · 2
Mis archivos
1
Nuevo botón que reindexa todos los archivos pendientes (sin indexar o fallidos) con concurrencia limitada (3) y contador de progreso.
Fiabilidad de la base de datos
2
Nuevo chequeo interno (skill db-check) que verifica que la BD de producción tiene todas las RPC/tablas/columnas que la app necesita y avisa de lo que falte.
Verificado hoy: 0 objetos faltantes (la BD quedó en sintonía con las migraciones tras los arreglos recientes).
🐛 LA causa final: faltaban las funciones de búsqueda en la base de datos
26 de mayo de 2026
Resuelto del todo el problema de leer documentos. Los logs revelaron el error real: las funciones de búsqueda RAG (match_user_file_chunks y compañía) NO existían en la base de datos de producción (error PGRST202), así que cualquier intento de recuperar el contenido fallaba. Se han (re)creado las 4 funciones. Además, ahora un fallo de esas funciones ya NO interrumpe la lectura: la IA recurre a la extracción directa del documento (Tika), que sí funciona.
Lo destacado
3
✨ Nuevo2
🛠️(Re)creadas las funciones de búsqueda RAG que faltaban en la BD (match_user_file_chunks, etc.)
✅Verificado: Tika extrae bien (p. ej. 8108 caracteres); ya hay con qué responder
🐛 Arreglado1
🧯Un fallo de búsqueda ya no aborta la lectura: la IA usa la extracción directa del documento
Cambios detallados3 · 1
Arreglo crítico de RAG
3
Migración 100: recrea match_file_chunks, match_user_file_chunks, match_file_chunks_by_ids y match_network_chunks_by_file_ids (faltaban en producción → PGRST202).
El chat ya no lanza excepción si una RPC de búsqueda falla; continúa a chunks crudos y a extracción inline (Tika), que es lo que de verdad lee el PDF en la primera consulta.
Recarga del schema cache de PostgREST tras crear las funciones.
🧹 Modal "Archivos recientes" más compacto + auditoría del análisis de documentos
26 de mayo de 2026
El modal de "Archivos recientes" salía demasiado grande y descolocado; ahora es compacto, centrado y por encima del menú. Además se ha auditado a fondo el sistema de análisis de documentos: el motor de extracción (Tika 3.2.3 + pdf2json de respaldo), embeddings text-embedding-3-large, OCR (spa+eng+cat) y el panel admin de configuración están operativos. Se ha versionado en migraciones la tabla de configuración (doc_analysis_config) que existía solo en producción.
Lo destacado
3
✨ Nuevo3
🧹Modal "Archivos recientes" compacto y bien posicionado (antes muy grande)
🔎Auditoría: extracción (Tika + pdf2json), embeddings y OCR verificados y operativos
🗃️Versionada la tabla doc_analysis_config (faltaba en migraciones)
Cambios detallados3 · 2
Archivos recientes (UI)
1
Modal más estrecho (max-w-md), más bajo y con filas compactas; z-index por encima del menú de herramientas.
Análisis de documentos (auditoría)
2
Migración 099: versiona doc_analysis_config (motor de extracción, Tika, embeddings, OCR, chunking, análisis LLM) que solo existía creada a mano en producción.
Verificado en producción: Tika 3.2.3 responde OK; config aplicada (motor hybrid, embeddings text-embedding-3-large@1536, OCR spa+eng+cat, LLM gpt-4o).
🐛 LA causa real: los archivos subidos no se indexaban (la IA no podía leerlos)
26 de mayo de 2026
Por fin la raíz del problema con los PDF: las subidas se guardaban SIN analizar (sin indexar para RAG), así que la IA no tenía el contenido de los documentos —solo la lista de nombres—. En "Mis archivos" cada subida forzaba "no analizar", y por defecto la indexación automática estaba apagada. Ahora los archivos se analizan/indexan al subir por defecto (con un interruptor "Analizar al subir" por si quieres solo guardar), y se ha añadido un botón para indexar/reindexar manualmente cualquier archivo, incluidos los que están "Sin indexar".
Lo destacado
4
✨ Nuevo3
✅Los archivos se indexan al subir por defecto → la IA ya puede leer su contenido
🔁Nuevo botón para indexar/reindexar cualquier archivo (también los "Sin indexar")
🎛️Interruptor "Analizar al subir" por si solo quieres almacenar sin análisis
🐛 Arreglado1
🧹Arreglado: "Mis archivos" subía SIEMPRE sin analizar (de ahí los "Sin indexar")
Cambios detallados4 · 1
Indexación de archivos
4
Auto-indexado al subir ON por defecto (antes requería una variable de entorno que no estaba puesta → nada se indexaba).
La indexación la dirige el cliente con una petición dedicada a /api/files/ingest (fiable en Vercel; el auto-ingest del servidor era "fire-and-forget" y podía morir).
"Mis archivos": la subida deja de forzar "sin análisis"; nuevo interruptor "Analizar al subir" (por defecto activado).
Botón de indexar/reindexar disponible en archivos "Sin indexar", "Fallidos" e "Indexados" (antes solo en fallidos).
🐛 Arreglado a fondo el análisis de documentos (carpetas, conocimiento y proyectos)
26 de mayo de 2026
Continuación del arreglo anterior. El mismo fallo (la lectura del contenido de los documentos dependía de un paso de búsqueda que a veces fallaba) afectaba también a las carpetas con archivos, a las bases de conocimiento y a los proyectos: la IA veía la lista de archivos pero no su contenido, así que decía cosas como "no tengo los importes, solo veo los metadatos". Ahora, cuando ese paso falla, la IA lee igualmente el contenido real de cada documento (los primeros fragmentos de cada archivo), así que puede analizar nóminas, presupuestos, etc. aunque la búsqueda semántica no esté disponible.
Lo destacado
3
✨ Nuevo3
📂La IA ya lee el contenido de los archivos de una carpeta (no solo la lista de nombres)
📚Igual para bases de conocimiento (p. ej. la colección de nóminas) y proyectos
🧮Puede calcular totales / analizar varios documentos aunque la búsqueda semántica falle
Cambios detallados4 · 1
Análisis de documentos (robustez)
4
El contenido de carpeta, conocimiento y proyecto ya no se omite si falla/!no se genera el embedding.
Nuevo fallback común: cuando no hay coincidencias semánticas, se inyectan los primeros fragmentos de CADA archivo (clave para colecciones grandes como 16 nóminas).
La búsqueda semántica se sigue priorizando cuando está disponible; el fallback solo entra si no devuelve nada.
Cubre los 4 caminos: adjuntos del mensaje, archivos de carpeta, colecciones de conocimiento y archivos de proyecto.
🐛 Arreglado: la IA pedía el PDF aunque ya estaba adjunto + 📎 Archivos recientes
26 de mayo de 2026
Bug importante corregido: al adjuntar un PDF (u otro documento) y pedir analizarlo, a veces la IA respondía "envíame el archivo" aunque ya estaba en el chat. La causa: la lectura del contenido del documento estaba ligada por error a la generación del vector de búsqueda (embedding); si ese paso fallaba, el modelo no recibía nada del adjunto. Ahora la extracción del texto del documento funciona siempre, con o sin embedding. Además, nueva opción "Archivos recientes" en el menú de herramientas para adjuntar un archivo que ya subiste, sin volver a subirlo (estilo ChatGPT).
Lo destacado
3
✨ Nuevo1
📎Nuevo "Archivos recientes" en herramientas: adjunta un archivo ya subido sin re-subirlo
🐛 Arreglado2
🐛La IA ya no pide el archivo cuando el PDF/documento ya está adjunto
📄La extracción del contenido del documento ya no depende del embedding (más robusta)
Cambios detallados6 · 2
Arreglo de adjuntos
3
La inyección del contenido de los adjuntos al modelo ya no se salta si falla/no se genera el embedding.
La búsqueda semántica (con embedding) sigue priorizándose cuando está disponible; sin ella, se cae a chunks directos y a extracción inline del documento.
Si aún no hay texto extraíble, el modelo recibe el aviso de "archivo en proceso" en vez de pedir que lo reenvíes.
Archivos recientes
3
Nueva entrada "Archivos recientes" en el menú de herramientas del chat.
Lista tus archivos ya subidos y, al elegir uno, lo adjunta al mensaje reutilizando el archivo (sin volver a subirlo).
Evita duplicados y respeta el modelo con visión para imágenes.
✨ Carga de chats rediseñada (logo animado + skeleton)
26 de mayo de 2026
Las pantallas de carga del chat ahora son mucho más cuidadas. Al abrir, restaurar o preparar un chat aparece un loader con el logo, un anillo girando y un halo suave (con soporte claro/oscuro); y mientras se descargan los mensajes se muestra un "esqueleto" de burbujas con efecto shimmer en vez del spinner pequeño. Además se ha eliminado la antigua pantalla de bienvenida (splash) que ya no se usaba.
Lo destacado
3
✨ Nuevo3
✨Loader de marca al abrir/restaurar un chat (logo + anillo + halo, claro/oscuro)
💀Skeleton de mensajes con shimmer mientras cargan (antes un spinner pequeño)
🧹Eliminada la pantalla splash muerta (y su número de versión desactualizado)
Cambios detallados4 · 1
Carga de chats
4
Nuevo componente ChatLoading: pantalla de carga con logo animado, anillo y halo; respeta "reduce motion".
Esqueleto de burbujas (usuario/asistente) con efecto shimmer mientras se descargan los mensajes.
Unificado en los estados "Cargando chat", "Restaurando chat" y "Preparando nuevo chat".
Eliminado el componente SplashScreen huérfano (no se montaba y mostraba una versión antigua).
⌘K Paleta de comandos, slash de herramientas, prompts guardados y arrastrar chats a carpetas
26 de mayo de 2026
Tanda grande de productividad en escritorio. (1) ⌘K (o Ctrl+K) abre una paleta de comandos: busca en chats y lanza acciones (nuevo chat, ajustes), cambia de modelo, activa herramientas o salta a una carpeta. (2) Escribiendo "/" en el chat puedes activar herramientas: /imagen, /buscar, /tabla, /documento, /investigar. (3) Nuevos "Prompts guardados" (Ajustes → Prompts): plantillas reutilizables que aparecen como tus propios slash. (4) En el panel lateral puedes arrastrar un chat a una carpeta y seleccionar varios chats para archivar/borrar/mover de golpe.
Lo destacado
4
✨ Nuevo2
🔖Prompts guardados: plantillas reutilizables usables como /tu-atajo
🗂️Arrastra un chat a una carpeta; multiselección con archivar/borrar/mover en bloque
💎 Mejorado2
⌘K abre una paleta de comandos (acciones, modelos, herramientas, carpetas y búsqueda)
⚡Slash que activan herramientas: /imagen, /buscar, /tabla, /documento, /investigar
Cambios detallados12 · 4
Paleta de comandos (⌘K)
3
Sustituye al buscador anterior: incluye la búsqueda en chats y añade acciones rápidas.
Acciones: nuevo chat, abrir ajustes; cambiar a cualquier modelo; activar herramientas (web, imagen, investigación, documento, hoja de cálculo); ir a una carpeta.
Filtro al escribir y navegación por teclado (↑↓, ⏎, Esc). Funciona con Ctrl+K y ⌘K (Mac).
Slash commands de herramientas
3
/imagen, /buscar, /tabla, /documento, /investigar activan la herramienta correspondiente.
Si el modelo actual no admite esa herramienta, avisa en vez de activarla.
Conviven con los slash de plantilla existentes (/summarize, /translate, /code, etc.).
Prompts guardados
3
Nueva pestaña Ajustes → Prompts para crear plantillas (nombre, atajo y texto).
Se usan en el chat escribiendo "/" + su atajo; el texto se inserta para editarlo antes de enviar.
Se guardan en tu cuenta (disponibles entre dispositivos).
Organización de chats (escritorio)
3
Arrastra un chat del panel lateral y suéltalo sobre una carpeta para moverlo.
Multiselección: "Seleccionar" en el menú del chat activa casillas; barra superior para archivar, eliminar o mover a carpeta en bloque.
No afecta a la lista normal: la ordenación y apertura de chats siguen igual.
📌 Reordenar tus chats anclados arrastrando (móvil)
26 de mayo de 2026
En el móvil, al filtrar por "Anclados" ahora puedes arrastrar (con el asa ≡) para poner tus chats favoritos en el orden que quieras; el orden se guarda. La lista normal de chats no cambia: se sigue ordenando por actividad reciente, el orden manual solo afecta a los anclados.
Lo destacado
3
✨ Nuevo3
📌Arrastra ≡ para reordenar los chats anclados (vista "Anclados" en móvil)
💾El orden manual se guarda y se mantiene entre dispositivos
✅La lista normal de chats no se toca (sigue por actividad reciente)
Cambios detallados3 · 1
Reordenar anclados
3
Nueva columna pin_order en la base de datos para guardar el orden de los anclados.
En el filtro "Anclados" del móvil, lista plana con asa de arrastre (pointer/táctil) para reordenar.
El nuevo orden se aplica solo entre chats anclados; los no anclados siguen por updated_at.
🖼️ Visor de imágenes con zoom táctil y "Guardar en Fotos" + 🎙️ notas de voz
26 de mayo de 2026
Dos mejoras pensadas para el móvil. (1) Al abrir una imagen (generada o adjunta) ahora puedes hacer zoom con dos dedos (pinch) y moverla con el dedo, y hay un botón "Guardar/Compartir" que en el móvil abre la opción nativa de guardar la imagen en Fotos. (2) Nueva "Nota de voz" en el menú de herramientas: graba un audio, lo adjunta a tu mensaje y además lo transcribe a texto editable para que lo revises antes de enviar.
Lo destacado
4
✨ Nuevo4
🖼️Zoom con dos dedos (pinch) y arrastre en el visor de imágenes
💾Botón "Guardar/Compartir": en móvil guarda la imagen en Fotos (Web Share)
🎙️Nota de voz: graba audio, lo adjunta y transcribe el texto al input
⏱️Barra de grabación con cronómetro, parar y cancelar (tope 2 min)
Cambios detallados7 · 2
Visor de imágenes
3
Pinch-zoom táctil (dos dedos) y arrastre con un dedo cuando hay zoom, además del zoom con rueda/botones en escritorio.
Botón Guardar/Compartir: usa Web Share con el archivo (en móvil ofrece "Guardar imagen"/"Guardar en Fotos") y degrada a descarga si no está disponible.
Aplica tanto a imágenes generadas por IA como a imágenes adjuntas.
Notas de voz
4
Nueva opción "Nota de voz" en el menú de herramientas del chat.
Graba con el micrófono (barra con cronómetro, parar y cancelar; tope de 2 minutos).
Al parar, adjunta el audio al mensaje y transcribe el texto al campo de escritura para editarlo antes de enviar.
Es distinta del dictado por voz: la nota CONSERVA el audio además del texto.
📸 Cámara en móvil + memoria global editable en Ajustes
26 de mayo de 2026
Dos novedades. (1) Nuevo botón "Hacer foto" en el menú de herramientas del chat: en el móvil abre directamente la cámara del dispositivo y adjunta la foto a tu mensaje (con compresión y subida directa, igual que cualquier imagen). (2) La pestaña "Memoria" de Ajustes pasa a ser un perfil global: ahora ves y editas TODAS las cosas que GIA sabe de ti entre conversaciones (antes solo las globales), con filtro Todas/Globales/De conversaciones, etiqueta de tipo, de dónde se capturó cada recuerdo y edición del texto.
Lo destacado
4
✨ Nuevo4
📸Botón "Hacer foto": abre la cámara del móvil y adjunta la imagen al chat
🧠Pestaña Memoria global: ver y editar todo lo que GIA recuerda de ti, no solo lo global
🔎Filtro Todas / Globales / De conversaciones + etiqueta de tipo y origen del recuerdo
✏️Edición inline del texto de cada recuerdo (además de activar/desactivar y borrar)
Cambios detallados9 · 2
Cámara (móvil)
4
Nuevo "Hacer foto" en el menú de herramientas (móvil y escritorio).
En móvil abre la cámara trasera; en escritorio degrada a selector de archivo.
La foto se adjunta reutilizando el flujo existente (compresión + subida firmada directa a Storage).
Si el modelo no admite imágenes, avisa igual que al adjuntar una imagen normal.
Memoria global (Ajustes)
5
La pestaña Memoria lista ahora TODAS tus memorias (todos los ámbitos), no solo las globales.
Filtro Todas / Globales / De conversaciones y etiqueta de ámbito (Global, Conversación, Proyecto).
Muestra "Capturado en: <nombre del chat>" cuando se conoce el origen.
Edición del texto del recuerdo en línea (botón lápiz), además de activar/desactivar y eliminar.
⚡ Agentes más potentes: pasos en paralelo, varios agentes a la vez, email del resultado y elegir modelo
26 de mayo de 2026
Mejora grande de los agentes. Ahora los pasos de búsqueda/lectura se ejecutan en paralelo (más rápido), las ejecuciones programadas también crean un chat con el resultado (antes solo quedaba en el Historial), puedes pedir que te llegue el resultado por email, elegir el modelo del agente (gpt-4o-mini o gpt-4o) y los agentes pueden dar más pasos (hasta 12). En las ejecuciones programadas, varios agentes corren a la vez.
Lo destacado
5
✨ Nuevo3
🗓️Las ejecuciones programadas también crean y guardan un chat con el resultado
✉️Opción de recibir el resultado del agente por email
🤹En la programación, varios agentes se ejecutan a la vez
💎 Mejorado2
⚡Los pasos de un agente (buscar/leer URLs) se ejecutan en paralelo: más rápido
🧠Elegir el modelo del agente (gpt-4o-mini rápido / gpt-4o más capaz) y más pasos (12)
Cambios detallados8 · 4
Velocidad (pasos en paralelo)
2
Los pasos de herramienta (búsqueda web, leer URLs, consulta a BD) ya no se hacen uno detrás de otro: se lanzan en paralelo y luego se resume todo junto.
El planificador puede usar hasta 12 pasos (antes 10) para tareas más complejas.
Ejecuciones programadas
2
Cada ejecución programada crea un chat nuevo con el resultado (igual que al pulsar "Ejecutar"), no solo una entrada en el Historial.
En cada pasada del programador, los agentes pendientes se ejecutan en paralelo en vez de en fila.
Email del resultado
2
Nueva opción al crear/editar un agente: "Enviarme el resultado por email".
El email se manda solo a tu propia cuenta (la conectada en Integraciones), nunca a terceros.
Modelo configurable
2
Puedes elegir el modelo del agente: gpt-4o-mini (rápido y barato) o gpt-4o (más capaz).
Afecta tanto a la planificación como al resumen final del agente.
🧹 Respuesta del agente más limpia + nueva herramienta "Leer URLs"
22 de mayo de 2026
Cuando un agente abre un chat con su resultado, ahora muestra solo la respuesta (antes se colaba la "traza interna" con los pasos como texto suelto, que quedaba feo; esa traza sigue disponible en el Historial). Además, al crear un agente puedes activar la herramienta "Leer URLs" para que descargue y lea páginas concretas (no solo buscar). Se ha quitado del agente la opción "Intérprete de código", que no funciona en este entorno.
Lo destacado
3
✨ Nuevo3
🧹La respuesta del agente en el chat ya no incluye la traza interna (queda en Historial)
🤖 Ejecutar un agente abre un chat con el resultado + panel de agentes unificado
22 de mayo de 2026
Dos arreglos en los agentes. (1) Al pulsar "Ejecutar" en un agente, ahora se crea un chat nuevo automáticamente con el resultado y se abre, en vez de dejarlo solo en el Historial: así ves la respuesta como una conversación normal. Además se avisa de que la ejecución puede tardar ~30s (el agente busca en web y razona). (2) Había dos paneles de agentes distintos y al refrescar saltabas de uno a otro; ahora hay uno solo (el del panel de administración). El agente ya funcionaba —el problema era que tardaba y no mostraba bien el resultado.
Lo destacado
3
✨ Nuevo3
🤖"Ejecutar" crea y abre un chat nuevo con el resultado del agente
⏳Aviso de que la ejecución tarda ~30s (antes parecía colgado)
🧹Un único panel de agentes (se elimina el duplicado y el salto al refrescar)
Cambios detallados5 · 2
Ejecución de agentes
3
Al ejecutar un agente se crea una conversación nueva (título = nombre del agente) con tu mensaje y la respuesta, y se abre automáticamente.
Si la creación del chat fallara, la ejecución igualmente se completa y queda en el Historial.
Indicador "Ejecutando… (~30s)" mientras trabaja.
Panel de agentes
2
Eliminada la página suelta /admin/agents que duplicaba la pestaña del panel y causaba un cambio de UI al refrescar.
Ahora /admin/agents siempre carga la pestaña de Agentes del panel de administración.
🩹 Arreglado el indicador de agente activo en el composer
22 de mayo de 2026
Al activar la herramienta "Agentes", el indicador del agente seleccionado se mostraba descolocado y sin estilo (texto suelto debajo del cuadro de escribir), porque reutilizaba el hueco del indicador de "herramientas activas". Ahora aparece como una etiqueta morada propia ("🤖 Nombre", con ✕ para quitarlo) justo encima del input, con el aviso de que tu mensaje lo ejecutará ese agente.
Lo destacado
2
✨ Nuevo1
✕ Quitar el agente o tocar el nombre para cambiarlo
🐛 Arreglado1
🩹El agente activo se ve como etiqueta limpia encima del input (ya no descolocado)
🤖 Agentes desde el chat: elígelos, créalos y ejecútalos
22 de mayo de 2026
Ahora puedes usar tus agentes directamente desde el composer. En el menú de herramientas hay una entrada nueva "Agentes": abre un panel donde ves tus agentes, eliges uno (queda activo, con un indicador junto al cuadro de escribir) y al enviar un mensaje lo ejecuta ESE agente —con su plan y herramientas— en vez del modelo normal; el resultado aparece como respuesta. Desde el mismo panel puedes crear un agente nuevo (nombre, objetivo y herramientas). Además, el agente ahora tiene en cuenta el mensaje que escribes (antes solo ejecutaba su objetivo fijo). Y de paso: el botón del menú que decía "Modo agente" en realidad era el intérprete de código —lo hemos renombrado a "Intérprete de código" para que deje de confundir.
Lo destacado
4
✨ Nuevo4
🤖Nueva entrada "Agentes" en el composer: elegir, crear y ejecutar agentes
🏷️Indicador de agente activo junto al input (y opción de quitarlo)
💬El agente tiene en cuenta tu mensaje, no solo su objetivo fijo
🧹Renombrado "Modo agente" → "Intérprete de código" (estaba mal etiquetado)
Cambios detallados7 · 3
Usar agentes desde el chat
3
Menú de herramientas → "Agentes" abre un panel con tus agentes activos.
Al elegir uno queda activo: lo ves en un chip junto al composer y, al enviar, ese agente ejecuta tu mensaje (no el modelo).
Botón para "dejar de usar el agente" y volver al chat normal.
Crear agentes
2
Desde el mismo panel: nombre, objetivo en lenguaje natural y herramientas (Búsqueda Web / Base de Datos).
Se crean como "manual"; puedes ponerles horario desde el panel de administración de agentes.
Motor
2
El ejecutor ahora recibe tu mensaje como contexto del planificador (antes ignoraba lo que escribías).
Sin cambios en seguridad: el agente solo lee tus datos (db_query SELECT con lista blanca) y no escribe nada.
⌨️ Arreglado el "Tab" del autocompletado y quitado en móvil
22 de mayo de 2026
La sugerencia gris del autocompletado (con el botón "Tab") a veces se pintaba encima del texto de ejemplo del input cuando estaba vacío, viéndose superpuesta y confusa. Ahora solo aparece cuando ya has escrito algo. Además, en móvil se desactiva por completo: sin teclado físico, el atajo "Tab" no aporta y solo molestaba.
Lo destacado
2
✨ Nuevo2
⌨️El autocompletado solo se muestra con texto escrito (ya no se solapa con el placeholder)
📱Desactivado en móvil (no tiene sentido sin tecla Tab)
Cambios detallados3 · 1
Autocompletado (ghost text + Tab)
3
Ya no se renderiza el texto fantasma cuando el input está vacío (era lo que se superponía al placeholder).
Solo se muestra con contenido real y en una sola línea (no en mensajes multilínea).
En móvil se desactiva tanto la generación de sugerencias como su overlay.
🪄 Las herramientas se activan solas según lo que escribes
22 de mayo de 2026
Extendemos el auto-activado a más herramientas: si escribes una intención clara, se enciende sola la herramienta correcta (y lo ves, con un aviso). "Genérame una imagen / dibuja…" activa Generar Imagen; "haz una presentación / unas diapositivas" activa Presentación; "redáctame un documento / informe" activa Generar Documento. Se suma a la búsqueda web (enlaces y "busca en internet"). Los textos están acotados para no dispararse por error, y si lo apagas a mano no se reactiva.
Lo destacado
4
✨ Nuevo4
🖼️"genérame una imagen / dibuja…" → activa Generar Imagen
📊"haz una presentación / diapositivas…" → activa Presentación (en el chat)
📄"redáctame un documento / informe…" → activa Generar Documento
🤝Visible (aviso) y respetuoso: si lo apagas a mano, no se reactiva
Cambios detallados10 · 3
Detección de intención
4
Generar Imagen: se activa con "genérame/crea/haz/dibuja/pinta una imagen, foto, ilustración, dibujo, logo, póster…" (y equivalentes en inglés: generate/draw/create image/picture).
Presentación: se activa con "genera/haz/prepara una presentación, diapositivas, slides, PowerPoint, ppt, keynote…" (solo en el chat; la pantalla de inicio no gestiona presentaciones).
Generar Documento: se activa con "genera/haz/redacta/escribe/prepara un documento, informe, reporte, Word, PDF, carta, memo, ensayo, artículo…".
Búsqueda web (de v9.4.47/48): pegar un enlace o escribir "busca en internet / búsqueda web / cerca web / search the web".
Cómo se comporta
4
Solo se activa en la transición (cuando aparece el disparador), no en cada tecla.
Si desactivas la herramienta a mano, no se vuelve a activar para ese mismo texto.
Si borras la frase/enlace y la habíamos activado nosotros, se apaga sola.
Respeta permisos del modelo, ajustes de chat compartido y límites de invitado.
Anti-falsos-positivos
2
El verbo de crear debe ir pegado al sustantivo: "busca el documento X" o "tengo una foto" NO disparan nada.
Cada herramienta tiene su propio patrón; "genera un documento" no enciende imagen ni presentación.
🔗 Pega un enlace (o di "busca en internet") y la búsqueda web se activa sola
22 de mayo de 2026
Cuando escribes o pegas un enlace en el chat —o escribes una intención explícita como "busca en internet" o "búsqueda web"— la herramienta de búsqueda web se activa automáticamente (y lo ves: aparece en las herramientas activas, con un aviso). Como la búsqueda ahora también LEE las URLs (v9.4.47), basta con pegar el enlace y pedir "analízalo" — sin acordarte de encender nada. Si prefieres desactivarla, la apagas a mano y no se vuelve a activar; y si borras el disparador, se apaga sola si la habíamos encendido nosotros.
Lo destacado
4
✨ Nuevo4
🔗Detecta enlaces en el input y activa la búsqueda web automáticamente (visible)
🗣️También se activa con frases como "busca en internet" / "búsqueda web"
🤝Respeta tu decisión: si la apagas a mano, no se reactiva
🔗 La búsqueda web ahora LEE los enlaces que le pegas
22 de mayo de 2026
Antes, con "Cerca Web" activo, si pegabas un enlace y pedías "analiza esta página", el sistema solo buscaba por palabras clave: si la página no estaba indexada (un sitio nuevo o propio), la IA no recibía su contenido y respondía que no lo tenía. Ahora, cuando tu mensaje contiene una o varias URLs, se descarga y lee el contenido REAL de esas páginas (usando navegador headless cuando hacen falta para páginas con JavaScript) y se le pasa a la IA para que lo analice de verdad.
Lo destacado
3
✨ Nuevo2
🔗Lee directamente las URLs que pegas (hasta 3), no solo busca por palabras clave
🧩Funciona incluso con páginas nuevas/propias no indexadas y con páginas que requieren JS
🔒 Seguridad1
🛡️Mantiene la protección anti-SSRF (solo URLs públicas)
🧠 Captura de memoria más lista (con ayuda de un modelo)
22 de mayo de 2026
La detección automática de datos para recordar ya no depende solo de patrones de texto. Si los patrones rápidos no detectan nada, un modelo pequeño analiza el mensaje y decide si hay un dato personal duradero que valga la pena recordar (en cualquier idioma), redactándolo en tercera persona. Sigue pidiéndote confirmación antes de guardar nada. Para acotar el coste, el modelo solo se consulta cuando los patrones no encuentran nada y el mensaje tiene cierta longitud.
Lo destacado
3
✨ Nuevo3
🧠Captura con LLM como respaldo del regex (multiidioma, menos casos perdidos)
✋Sigue requiriendo tu confirmación antes de guardar
💸Coste acotado: el modelo solo se usa cuando el regex no detecta nada
🔄 Las carpetas también se sincronizan entre dispositivos
22 de mayo de 2026
Completamos la sincronización en tiempo real entre dispositivos. Ahora, al crear, renombrar, marcar como favorita o borrar una CARPETA en un dispositivo, el cambio aparece al instante en el sidebar de tus otros dispositivos (antes había que refrescar). Los chats, los fijados, el archivado y los mensajes del chat que tengas abierto ya se sincronizaban.
Lo destacado
1
✨ Nuevo1
🗂️Carpetas (crear/renombrar/favorita/borrar) sincronizadas en tiempo real entre dispositivos
Optimización de la ruta del chat: dos consultas a la base de datos que antes se hacían en serie antes de empezar a responder (el GPT activo de la conversación y los recuerdos del usuario) ahora se piden en paralelo junto a las demás. Menos idas y vueltas a la base de datos = el modelo empieza a escribir un poco antes en cada mensaje. Sin cambios de comportamiento.
Lo destacado
2
✨ Nuevo1
🛡️Sin tocar el historial ni los caminos de chat compartido/regenerar
💎 Mejorado1
⚡active_gpt_id y memorias del usuario se cargan en paralelo (−2 consultas en serie)
🧠 Memoria mejorada + sincronización del sidebar entre dispositivos
22 de mayo de 2026
Mejoras en el sistema de memoria y dos arreglos. Memoria: ahora puedes EDITAR cada recuerdo desde el panel; cada recuerdo muestra su fecha y de qué chat se capturó; un indicador en cada respuesta enseña qué recuerdos influyeron; y puedes PAUSAR la memoria en un chat concreto. Arreglos: al crear, renombrar o borrar un chat en un dispositivo, ahora aparece al instante en el sidebar de tus otros dispositivos (antes había que refrescar); y el botón para desactivar la herramienta de YouTube desde el composer ahora funciona (era la única que no se desactivaba).
Lo destacado
4
✨ Nuevo3
✏️Editar recuerdos en el panel, con fecha y chat de origen
🧠Indicador de "recuerdos usados" en cada respuesta + pausar memoria por chat
🔄El sidebar se sincroniza entre dispositivos al crear/renombrar/borrar chats
🐛 Arreglado1
🛠️Arreglado el botón de desactivar la herramienta de YouTube
🧩 Pulido: quiz a medida, indicador de escritura más robusto y mejor captura de memoria
22 de mayo de 2026
Tres arreglos menores detectados en la auditoría. (1) El generador de quiz ahora respeta el número de preguntas que pides ("quiz de 5 preguntas"); antes siempre creaba 10. (2) El indicador de "escribiendo…" ya no genera errores 500 esporádicos ante un fallo transitorio de base de datos: al ser una función decorativa, ahora degrada en silencio. (3) La captura automática de memorias reconoce más casos (ubicación, idioma preferido, dieta/alergias, más profesiones) y filtra ruido (deja de guardar frases triviales como "me gusta esto").
Lo destacado
3
✨ Nuevo3
🎯El quiz respeta el nº de preguntas pedido (1–20, por defecto 10)
🔇Indicador de "escribiendo" degrada en silencio en vez de dar 500
🧠Captura de memoria con más categorías (ubicación/idioma/dieta) y menos ruido
🧠 Memoria: un único sistema, sin duplicados ni tablas muertas
22 de mayo de 2026
El sistema de memoria tenía dos caminos divergentes: el chat inyectaba las memorias por separado (sin deduplicar y sin tope) mientras existía un consolidador más completo que no usaba nadie, además de varias tablas creadas y nunca conectadas. Ahora hay un solo camino: las memorias de usuario y de proyecto se fusionan en un bloque deduplicado, ordenado por especificidad y con tope de inyección, y se han eliminado las piezas muertas. Las memorias de carpeta/colaboración no cambian.
Lo destacado
3
✨ Nuevo1
🧠Memorias de usuario+proyecto consolidadas en un solo bloque (dedup + orden por especificidad)
💎 Mejorado2
⚡Tope de inyección (máx. 50): el prompt ya no crece sin freno al acumular memorias
🧹Eliminadas tablas/endpoint/UI muertos del subsistema (categorías, relaciones, log de accesos, settings)
⚡ Rendimiento: menos latencia en el chat, navegación y carga de imágenes
22 de mayo de 2026
Optimizaciones de la auditoría (P1–P5). (P1) El chat leía el perfil del usuario varias veces antes de responder; ahora se lee una sola vez y se reutiliza → una ida menos a la base de datos por mensaje. (P2) El middleware consultaba el perfil (rol/suspensión) en CADA petición; ahora se cachea unos segundos por instancia → menos latencia en toda la navegación. (P3/P4) Añadidos índices en la base de datos que faltaban (claves foráneas de canales/incidentes y la tabla de actividad). (P5) Las miniaturas de un mensaje con varias imágenes se firman en UNA sola llamada en vez de una por imagen. Sin cambios de comportamiento.
Lo destacado
3
✨ Nuevo2
🗂️Índices BD añadidos (FKs de canales/incidentes + tabla de actividad)
🖼️Firma de imágenes en lote (una llamada por mensaje, no por imagen)
💎 Mejorado1
⚡Perfil del usuario leído una sola vez por mensaje (−1 consulta) + caché de rol en el middleware
🛡️ Auditoría: corregidos los errores y agujeros de seguridad detectados
22 de mayo de 2026
Tras una auditoría a fondo del proyecto, se han corregido todos los errores encontrados (de crítico a bajo). Seguridad: (CRÍTICO) un usuario ya no puede sobrescribir mensajes de otra conversación al "regenerar" (se valida que el mensaje pertenece a la conversación); (ALTO) ya no se pueden adjuntar archivos a proyectos ajenos (se exige rol de editor); (ALTO) el resumen de chat vuelve a funcionar para participantes de chats compartidos; las consultas SQL del asistente bloquean sentencias apiladas y comentarios; y se limita el tamaño del mensaje. Robustez: las fotos de chats compartidos vuelven a verse (firma vía servidor con permiso verificado); borrar una conversación es ahora atómico; el contador de vistas de enlaces compartidos es atómico; el listado de chats ya no carga toda la tabla de participantes; y se evita el solapamiento al enviar mensajes en cola.
Lo destacado
4
✨ Nuevo3
🛡️CRÍTICO: cerrado IDOR de "regenerar" (no se pueden reescribir mensajes ajenos)
🧱SQL del asistente endurecido (sin sentencias apiladas/comentarios) + límite de tamaño de entrada
🖼️Fotos de chats compartidos visibles de nuevo; borrado y contador de vistas atómicos
🔒 Seguridad1
🔒ALTO: adjuntar a un proyecto exige rol de editor; resumen de chats compartidos restaurado
🩹 Arreglado "Conversation not found": el mensaje ya no se pierde si el chat activo no existe
22 de mayo de 2026
Si al abrir la app se restauraba un chat "último activo" que ya no existía (un chat borrado, o una sesión de invitado anterior), al escribir y enviar el mensaje fallaba con "Conversation not found" y no había respuesta de la IA (reutilizaba ese id muerto sin crear la conversación). Ahora, si /api/chat responde 404, la app crea la conversación con ese id y reintenta el envío una vez automáticamente, así el mensaje llega y la IA responde. Detectado probando la app en el navegador.
Lo destacado
2
✨ Nuevo1
🤖La IA responde aunque el "último chat" restaurado fuera obsoleto
🐛 Arreglado1
🩹Enviar en un chat cuyo id ya no existe ya no falla: se crea y reintenta solo
🐞 Posible arreglo del error React #185 al enviar (solo en producción)
22 de mayo de 2026
En producción, al enviar un mensaje, la consola mostraba el error React #185 ("Maximum update depth": un bucle de re-render que React corta solo, no fatal, pero ensuciaba la consola). Solo ocurría en producción (no en desarrollo), lo que apunta al React Compiler. Se ha aplicado la puerta de escape oficial ("use no memo") al componente del cuadro de escritura (ChatInput) para que el compilador no lo transforme y vuelva al comportamiento estándar de React. El resto de la app mantiene las optimizaciones del compilador. Pendiente de confirmar en producción.
Lo destacado
2
✨ Nuevo1
🐞ChatInput excluido del React Compiler ("use no memo") para cortar el bucle de #185
💎 Mejorado1
⚙️El resto de la app conserva las optimizaciones del compilador
🔊 Leer en voz alta por mensaje · ⌨️ atajos de teclado · 🔁 regenerar con otro modelo
22 de mayo de 2026
Tres mejoras de productividad. (1) Cada respuesta del asistente tiene ahora un botón 🔊 para leerla en voz alta (y pararla); solo suena un mensaje a la vez. (2) Atajos de teclado: Ctrl/Cmd+J abre un chat nuevo, "/" enfoca el cuadro de escritura, Esc detiene la respuesta en curso, y Ctrl/Cmd+M abre el selector de modelo. (3) En cualquier respuesta puedes pulsar el "▾" junto a Regenerar para "Regenerar con otro modelo": rehace esa respuesta con el modelo que elijas sin tener que reescribir el mensaje (y respeta exactamente ese modelo, sin AutoModel).
Lo destacado
3
✨ Nuevo3
🔊Botón de leer en voz alta en cada respuesta de la IA
🌐 El idioma se guarda en tu cuenta y se sincroniza entre dispositivos
22 de mayo de 2026
Antes el idioma (Català/Castellano) se guardaba solo en el navegador (localStorage), así que al entrar desde otro PC salía en castellano aunque tú lo tuvieras en catalán. Ahora se guarda en tu cuenta (en la base de datos): al iniciar sesión en cualquier dispositivo se aplica tu idioma, y al cambiarlo se actualiza para todos. La preferencia que ya tenías en este equipo se migra automáticamente la primera vez. El navegador sigue usándose como caché para el primer pintado.
Lo destacado
3
✨ Nuevo3
🌐Idioma guardado en la cuenta (profiles.language), no solo en el navegador
🔄Sincroniza entre dispositivos al iniciar sesión
⤴️Migra automáticamente tu idioma actual la primera vez
✨ Welcome más bonita (Quiz + cards rediseñadas) y subida de imágenes más rápida
22 de mayo de 2026
Tres cosas. (1) En las acciones rápidas de la pantalla de bienvenida, "Unidad de red" se sustituye por "Quiz" (el generador interactivo). (2) Las cards de esas acciones se han rediseñado: icono con color propio por herramienta, estado activo con acento y punto indicador, hover con elevación y subtítulo (Activado / Tocar para activar). (3) Las imágenes ahora se comprimen/redimensionan en el navegador ANTES de subirse (máx ~1600px, JPEG): una foto de móvil de 3-4 MB pasa a ~300-700 KB, así la subida es mucho más rápida y la visión más ágil. Si la compresión no es posible (formato raro), se sube el original.
Lo destacado
3
💎 Mejorado3
✨Cards de la welcome rediseñadas (color por herramienta, activo con acento, hover elevado)
🎯"Quiz" reemplaza a "Unidad de red" en las acciones rápidas de la welcome
⚡Imágenes comprimidas en el cliente antes de subir → subida mucho más rápida
🆚 Comparador de modelos: respuestas lado a lado + consumo de cada modelo
22 de mayo de 2026
La comparativa multi-modelo ya no muestra las respuestas apiladas una debajo de otra. Ahora salen en COLUMNAS, a la misma altura (2 modelos lado a lado; con 3-4 se desliza en horizontal). Cada columna lleva su cabecera con el nombre del modelo y, abajo, su CONSUMO: tokens (entrada→salida = total) y latencia. La información estaba ya guardada pero no se mostraba; ahora se ve por cada modelo. (Las comparativas antiguas siguen viéndose en el formato anterior.)
Lo destacado
3
✨ Nuevo2
🆚Respuestas de los modelos en columnas a la misma altura (no apiladas)
↔️Con 3-4 modelos, las columnas se deslizan en horizontal
💎 Mejorado1
📊Consumo por modelo: tokens (entrada/salida/total) + latencia
🎯 Quiz interactivo: responde pregunta a pregunta y ve tu nota al final
22 de mayo de 2026
El Generador de Quiz ya no muestra un bloque de texto con respuestas colapsables (que además salían como etiquetas <details> sin renderizar). Ahora es una tarjeta INTERACTIVA: cada pregunta con sus opciones seleccionables, botón Siguiente/Anterior y barra de progreso; al terminar ves tu nota (aciertos/total y %), qué preguntas fallaste, tu respuesta y la correcta con su explicación, y un botón para reintentar. Internamente el modelo genera el quiz en un formato estructurado que la app pinta como componente.
Lo destacado
3
✨ Nuevo2
🎯Quiz como tarjeta interactiva: elige opción → Siguiente → resultados
🔁Botón "Reintentar"; ya no aparecen etiquetas <details> sin formato
🐛 Arreglado1
📊Al final: nota, aciertos/fallos, tu respuesta vs la correcta + explicación
🧹 Arreglado el "data: {...}" raro que salía en las respuestas con imagen
22 de mayo de 2026
Al analizar imágenes (con OCR) aparecía una línea técnica fea encima de la respuesta: data: {"type":"tool_timeline_event",...}. Era un evento interno del stream que no se filtraba bien cuando quedaba pegado al texto. Ahora se elimina aunque no esté en su propia línea, y además el contenido FINAL del mensaje del asistente se limpia de estos eventos al pintarlo (no solo durante el streaming), sin afectar a artifacts ni código.
Lo destacado
2
✨ Nuevo1
🧹Ya no se cuela el "data: {tool_timeline_event…}" encima de las respuestas
🐛 Arreglado1
🛡️Limpieza robusta: pilla el evento aunque venga pegado al texto, y también en el mensaje ya guardado
⚡ Menos latencia: lecturas de BD en paralelo al preparar la respuesta
22 de mayo de 2026
Primer paso (conservador) para reducir el tiempo que tarda el chat en arrancar la respuesta. Antes de llamar al modelo se hacían varias consultas a la base de datos de forma secuencial; ahora se lanzan en paralelo las que son independientes: el perfil del usuario junto con sus memorias, y (en proyectos) los datos del proyecto junto con las memorias del proyecto. La sección de carpetas ya iba en paralelo. Cada par ahorra una ida y vuelta a la BD (~50-150 ms con la BD en el NAS). Sin cambios de comportamiento.
Lo destacado
3
✨ Nuevo1
✅Cambio conservador en la ruta crítica del chat: misma lógica, menos esperas
💎 Mejorado2
⚡Perfil + memorias del usuario se cargan en paralelo (antes secuencial)
⚡En proyectos: datos del proyecto + memorias del proyecto en paralelo
🏷️ La insignia muestra el modelo REAL que respondió + modelo de visión configurable
22 de mayo de 2026
Dos mejoras. (1) Hasta ahora la insignia del mensaje mostraba el modelo que TENÍAS seleccionado, aunque el servidor lo cambiara (AutoModel o el forzado de visión a 5.5). Ahora el servidor avisa por el stream del modelo realmente usado y la insignia lo refleja al instante, sin esperar a recargar. (2) El modelo que analiza las imágenes ya no está fijo en el código: hay un ajuste nuevo en el panel admin (Modelos → "Modelo para análisis de imagen") con un desplegable de los modelos con visión; si no se configura, se usa GarBotGPT-5.5 por defecto.
Lo destacado
3
✨ Nuevo3
🏷️La insignia del mensaje refleja el modelo que de verdad respondió (no el seleccionado)
⚙️Panel admin: elige el modelo para análisis de imagen (desplegable de modelos con visión)
🔁Por defecto sigue siendo GarBotGPT-5.5 si no se configura nada
🖼️ Fotos sin tarjeta (solo la imagen) + análisis de imagen siempre con GarBotGPT-5.5
22 de mayo de 2026
Dos ajustes pedidos. (1) Las imágenes en el chat se muestran ahora SOLO como la foto: se quitó la tarjeta azul con borde, el nombre del archivo, el tamaño y el icono; además ya no se recorta (se conserva la imagen entera, no cuadrada forzada). Sigue siendo pulsable para abrir la vista grande. (2) El análisis de imagen ya no lo hace el modelo Mini: cuando hay una foto adjunta, el servidor fuerza GarBotGPT-5.5 (el mejor en visión), por encima del AutoModel y del modelo seleccionado. Si por permisos 5.5 no estuviera disponible para ese usuario, se cae al AutoModel/modelo normal.
Lo destacado
2
✨ Nuevo2
🖼️Las fotos del chat se ven solo como imagen (sin tarjeta, sin borde, sin recortar)
🧠Con foto adjunta se usa SIEMPRE GarBotGPT-5.5 para analizarla (no el Mini)
🖼️ Las fotos vuelven a verse en el chat (miniaturas) y en cuadrícula compacta
22 de mayo de 2026
Dos arreglos para los adjuntos de imagen en el chat. (1) Las fotos no se veían: salía una tarjeta con icono de clip en vez de la miniatura. Causa: el bucket privado user-files tenía RLS activado pero SIN políticas, así que el navegador no podía firmar la URL de tus propias imágenes (todo denegado por defecto); solo el servidor, con clave de servicio, podía. Se han añadido las políticas estándar para que cada usuario acceda a SUS archivos (carpeta = su id), de forma segura: un usuario no puede ver los de otro. (2) Las imágenes se apilaban a lo ancho (220px) una debajo de otra, obligando a hacer scroll; ahora se muestran como miniaturas cuadradas compactas que se colocan varias por fila. Los archivos no-imagen (PDF, hojas, docs) mantienen su tarjeta.
Lo destacado
3
✨ Nuevo2
🖼️Las fotos del chat se ven de nuevo como miniatura (no el icono de clip)
🧱Imágenes en cuadrícula compacta (varias por fila) en vez de apiladas → menos scroll
🔒 Seguridad1
🔐Políticas RLS del bucket user-files: cada quien ve solo SUS archivos (seguro)
🖼️ Arreglado: editar un mensaje con fotos ya no pide volver a subirlas
22 de mayo de 2026
Al editar (o regenerar) un mensaje que tenía imágenes, el modelo se quedaba sin ellas y pedía que las subieras otra vez. La causa: al reenviar la petición, los adjuntos solo se incluían si había una herramienta de documentos activa (unidad de red, hoja de cálculo, generación de documentos, intérprete de código o RAG estricto); las imágenes, que usan visión y no dependen de ninguna herramienta, se descartaban. Ahora las imágenes se reenvían SIEMPRE al editar/regenerar, así la visión sigue funcionando. Los adjuntos no-imagen (documentos/hojas) mantienen su condición anterior.
Lo destacado
2
✨ Nuevo2
🖼️Editar/regenerar un mensaje con fotos conserva las imágenes (visión sigue activa)
🔧Las imágenes se reenvían siempre; los documentos/hojas siguen ligados a su herramienta
💬 Chats independientes: varias conversaciones respondiendo a la vez
22 de mayo de 2026
Antes el estado de "respondiendo" era único y global: si un chat estaba generando respuesta y te ibas a otro, el segundo se bloqueaba (tu mensaje quedaba en cola). Ahora el streaming es POR conversación: cada chat tiene su propio buffer, su propio indicador y su propio botón de detener. Puedes lanzar una respuesta en un chat, cambiarte a otro y escribir/enviar allí inmediatamente, mientras el primero sigue respondiendo en segundo plano; al volver, ves su texto en vivo. Un mensaje encolado siempre se envía a SU conversación de origen aunque hayas cambiado de chat. Los campos que ve la UI siguen reflejando el chat que estás mirando, así que el resto de la app (indicadores, sugerencias, voz, artifacts) no cambia. Si borras un chat que estaba respondiendo, su stream se aborta limpiamente.
Lo destacado
4
✨ Nuevo4
💬Streaming POR conversación: ya no se bloquea enviar en otro chat mientras uno responde
🔀Cambia de chat libremente: el de origen sigue respondiendo en segundo plano
📨La cola de mensajes recuerda su conversación: cada mensaje va a SU chat
🧹Borrar un chat en curso aborta su respuesta sin afectar a los demás
🧭 AutoModel inteligente: ahora elige el MEJOR modelo para cada tarea (sube y baja)
21 de mayo de 2026
Reescrito el motor de selección automática de modelo. Antes solo BAJABA a un modelo más barato cuando la pregunta era trivial (ahorro), nunca mejoraba las respuestas difíciles. Ahora clasifica la tarea (trivial · simple · código · razonamiento/matemáticas · creativo · texto largo · visión) y, leyendo tu catálogo REAL de modelos habilitados (con sus capacidades: visión, herramientas, ventana de contexto, reasoning_effort), elige el mejor encaje: BAJA a un modelo rápido para saludos/preguntas cortas y SUBE a uno más capaz (p. ej. un Codex para programar, el modelo de mayor razonamiento para matemáticas, uno con visión para imágenes) cuando la tarea lo pide. Estrategia equilibrada: calidad cuando hace falta, ahorro cuando no. Si una imagen requiere visión y tu modelo no la tiene, cambia solo a uno que sí. Robusto: ante cualquier error o catálogo vacío respeta tu modelo. Solo afecta al modo AutoModel; los invitados siguen en GarBotGPT-5-Mini.
Lo destacado
4
✨ Nuevo3
🧭Enrutado BIDIRECCIONAL: baja en triviales y SUBE en tareas duras (código, mates, análisis largo)
🎯Consciente de la tarea: código → modelo coder; razonamiento → mayor reasoning_effort; imagen → modelo con visión
🗂️Usa el catálogo real de model_configs (capacidades reales), no listas fijas — nunca apunta a un modelo inexistente
🐛 Arreglado1
🛡️A prueba de fallos: ante error o sin catálogo, se respeta el modelo que elegiste; invitados sin cambios
🧹 Limpieza del AutoModel: fuera el código muerto de "tipo de tarea"
21 de mayo de 2026
El auto-routing de modelo arrastraba código que se ejecutaba en CADA mensaje pero no tenía ningún efecto: detectTaskType() clasificaba el input (code/reasoning/creative/...) y el resultado se guardaba en globalThis.__lastTaskType y en un log, pero nunca se leía en ninguna parte. También quedaban un mapa TASK_PREFERRED_FAMILY y una lista FAST_MODELS sin usar. Se ha eliminado todo (≈90 líneas) para que el router solo haga lo que realmente decide: el downgrade conservador a un modelo más rápido cuando la pregunta es trivial. Sin cambios de comportamiento para el usuario; menos cómputo por mensaje y código más claro.
Lo destacado
3
✨ Nuevo2
🧹Eliminado detectTaskType() + patrones CODE/REASONING/CREATIVE (no se leía su salida)
🧹Fuera el mapa TASK_PREFERRED_FAMILY, la lista FAST_MODELS y globalThis.__lastTaskType (código muerto)
💎 Mejorado1
⚙️El downgrade conservador (pregunta trivial → modelo rápido) sigue intacto y verificado por tipos
🩹 Causa raíz del "typing failed": FK de conversación optimista (arreglado en el endpoint)
21 de mayo de 2026
Tras reproducirlo contra la BD: el endpoint /api/conversations/[id]/typing devolvía 500 "Failed to update typing state" cuando el chat se acababa de crear de forma OPTIMISTA y aún no estaba persistido en la tabla conversations → el upsert violaba la foreign key (code 23503). La base de datos está correcta (la constraint UNIQUE existe). Ahora el endpoint trata ese caso como lo que es —no crítico— y responde 200 no-op en lugar de 500. Junto con el backoff del cliente (v9.4.21), el indicador de "escribiendo" deja de generar errores por completo.
Lo destacado
3
✨ Nuevo2
🔎Diagnóstico confirmado reproduciendo el upsert contra la BD real
✅La tabla conversation_typing y su constraint UNIQUE están correctas (no requería migración)
🐛 Arreglado1
🩹/typing ya no devuelve 500 cuando la conversación aún no existe (FK 23503 → 200 no-op)
🔇 Fin de la tormenta de errores "typing heartbeat failed"
21 de mayo de 2026
El composer enviaba un "heartbeat" de escritura a /api/conversations/[id]/typing cada 1,2s mientras escribías; si el endpoint fallaba, registraba el error CADA vez → la consola se inundaba de "[ChatInput] typing heartbeat failed". Ahora, al primer fallo, se DEJA de llamar al endpoint para esa conversación (no se reintenta cada 1,2s) y se registra un solo aviso. El indicador de "escribiendo" es no crítico y el broadcast en tiempo real (el que usan los chats compartidos) sigue funcionando aparte del endpoint.
Lo destacado
3
✨ Nuevo1
📡El broadcast realtime de "escribiendo" sigue activo (chats compartidos OK)
🐛 Arreglado2
🔇El heartbeat de typing para al primer fallo (no más spam cada 1,2s)
🧹Consola limpia: un solo aviso en vez de error continuo
🟢 Tu propio estado siempre "En línea" + nombres de modelo legibles
21 de mayo de 2026
Pulido tras una prueba completa de la app. (1) El pill de presencia de tu propio usuario a veces mostraba "Desconnectat" (dependía del último ping de actividad); ahora el usuario actual se ve SIEMPRE "En línea" (si estás usando la app, estás conectado). (2) Se mostraban ids crudos de modelo ("gpt-5-5", "gpt-5.2") en el modal de Custom GPT ("modelo por defecto") y en el "Coste por modelo" del dashboard admin; ahora se resuelven al nombre del panel (ej. "GarBotGPT-5.5").
Lo destacado
3
✨ Nuevo3
🟢Tu propio estado siempre "En línea" (no "Desconnectat")
🏷️Modal Custom GPT: nombre de modelo legible en "modelo por defecto"
🏷️Dashboard admin: "Coste por modelo" con nombre del panel, no el id crudo
🔓 Botón "Iniciar sesión" para invitados + arreglado login desde invitado
21 de mayo de 2026
Dos cosas. (1) En la cabecera de invitado ahora hay botón de "Iniciar sesión"/"Entrar" además de "Regístrate" (escritorio y móvil). (2) BUG: la página de login redirigía a /chat nada más entrar si había una sesión de invitado (anónima) activa, así que era imposible loguearse desde el modo invitado. Ahora la auto-redirección solo ocurre con un usuario REAL; si la sesión es anónima, se muestra el formulario de login con normalidad.
Lo destacado
3
✨ Nuevo2
🔓Botón "Iniciar sesión"/"Entrar" para invitados (escritorio + móvil)
✅La auto-redirección de /auth/login solo aplica a usuarios reales, no a invitados
🐛 Arreglado1
🐛Arreglado: login imposible desde invitado (redirigía a /chat por la sesión anónima)
📱 Envío instantáneo desde welcome también en MÓVIL
21 de mayo de 2026
El envío optimista de v9.4.17 hacía instantánea la transición welcome→chat en escritorio (la vista cambia con activeConversationId), pero en móvil el cambio depende de NAVEGAR a /chat/[id], y esa navegación se hacía tras crear la conversación (~3s) → en móvil seguía lento. Ahora la navegación a /chat/[id] también es optimista (al instante), porque esa ruta es client-only y renderiza el chat desde el store sin consultar al servidor. Resultado: en móvil pulsar enviar también salta al chat al momento, con el mensaje y "Pensant…" visibles.
Lo destacado
3
✨ Nuevo2
🧭Navegación a /chat/[id] optimista (ruta client-only, sin 404)
↩️Si falla crear la conversación, vuelve a welcome y restaura el texto
💎 Mejorado1
📱Móvil: clic enviar → vista de chat instantánea (antes esperaba ~3s)
⚡ Envío instantáneo desde welcome (de ~2,6 s a ~0 s percibidos)
21 de mayo de 2026
Medido en directo: al enviar el primer mensaje desde la pantalla de bienvenida, pasaban ~2.609 ms (2,6 s) hasta que cambiaba a la vista de chat, porque el cliente ESPERABA a crear la conversación en el servidor (round-trip a la BD) antes de cambiar de pantalla y mostrar el mensaje. Ahora el envío es OPTIMISTA: se pre-genera el id de la conversación y se cambia a la vista de chat + se muestra tu mensaje y "Pensant…" AL INSTANTE; la conversación se crea en el servidor en segundo plano (con ese mismo id, sin saltos). La respuesta del modelo sigue tardando lo suyo (latencia BD+modelo), pero la app reacciona al momento. Si la creación fallara, se revierte y se restaura el texto.
Lo destacado
3
✨ Nuevo2
🟦Tu mensaje y "Pensant…" aparecen al momento, sin esperar al servidor
🆔La conversación se crea en segundo plano con id pre-generado (sin swap ni remontaje)
💎 Mejorado1
⚡Clic enviar → vista de chat: de ~2.609 ms a ~16 ms (instantáneo)
⚡ Arreglados los parpadeos/tirones del chat (tormenta de 403 + re-animación)
21 de mayo de 2026
Se cazaron en directo (navegador + instrumentación del DOM) las causas de los parpadeos. (1) Los hooks de colaboración (TypingIndicator y useConversationCollaboration) reconsultaban sus endpoints cada 1,5s/30s y, para invitados o conversaciones sin acceso, recibían 401/403 y REINTENTABAN sin parar → tormenta de errores + re-renders que llegaban a congelar la página (React #185 "Maximum update depth"). Ahora paran al primer 401/403 y se reinician solo al cambiar de conversación. (2) La animación de entrada de las burbujas (message-in) se re-disparaba al terminar el stream porque la burbuja se remonta con el id de BD; ahora solo se anima en mensajes recién creados (<2s) — adiós flash, y también desaparece la cascada de animaciones al abrir un chat.
Lo destacado
3
✨ Nuevo3
⛔TypingIndicator y colaboración dejan de reintentar ante 401/403 (no más tormenta de 403)
🧊Adiós al congelamiento por bucle de re-render (React #185)
✨La animación de burbuja ya no parpadea al terminar de responder ni al abrir un chat
Se cambió el modelo disponible para invitados (no logueados) de GarBotGPT-5.2 a GarBotGPT-5-Mini (gpt-5-mini). Ahora GarBotGPT-5-Mini es el único modelo seleccionable para invitados y GarBotGPT-5.2 aparece bloqueado con candado como el resto. Forzado también server-side en /api/chat.
Lo destacado
3
✨ Nuevo2
🔁Modelo de invitado: GarBotGPT-5-Mini (gpt-5-mini)
🛡️Enforcement server-side actualizado a gpt-5-mini
🔒 Seguridad1
🔒GarBotGPT-5.2 pasa a estar bloqueado para invitados
📱 Composer del welcome bajado para invitados + saludo sin IP
21 de mayo de 2026
Dos arreglos para invitados (no afecta a logueados). (1) En la pantalla de bienvenida, el cuadro de escribir aparecía flotando demasiado arriba (sobre las tarjetas de accesos rápidos) dejando un hueco abajo: pasaba porque la barra de navegación inferior no se renderiza para invitados, pero su altura (~56px) seguía reservada. Ahora se trata como altura 0 y el composer baja al fondo. (2) El saludo mostraba la IP del invitado ("Invitado · 104.x.x.x"); ahora muestra siempre el alias amigable (ej. "Invitado Zorro Curioso 482"). Además, los nombres antiguos con IP se migran al alias en el siguiente mensaje.
Lo destacado
3
✨ Nuevo3
📱Composer del welcome ya no flota arriba para invitados (nav inferior cuenta como 0)
🏷️Saludo de invitado sin IP: alias amigable y estable
🧹Migración automática de nombres antiguos "Invitado · <ip>" → alias
🔒 Menú de modelos con candados para invitados + 🧰 Herramientas por modelo (admin)
21 de mayo de 2026
Tres cosas. (1) Invitados (no logueados): el menú de modelos vuelve a mostrarse, pero todos los modelos salen bloqueados con candado y solo GarBotGPT-5.2 es seleccionable; un aviso invita a registrarse para desbloquear el resto. (2) El nombre que se asigna a un invitado ya NO es su IP, sino un alias amigable y estable (ej. "Invitado Zorro Curioso 482"), más legible en el panel admin y sin exponer la IP. (3) NUEVA pestaña "Herramientas" en el editor de modelos del admin: permite habilitar/deshabilitar por modelo qué herramientas aparecen en el menú del chat (búsqueda web, deep research, código, imágenes, documentos, hojas de cálculo, conocimiento, integraciones). Por defecto todas habilitadas, así que los modelos existentes no cambian.
Lo destacado
3
✨ Nuevo2
🏷️Nombre de invitado amigable y estable (no la IP)
🧰Admin: pestaña "Herramientas" para activar/desactivar tools por modelo (afecta al menú del input)
🔒 Seguridad1
🔒Invitados: todos los modelos visibles pero bloqueados (candado); solo GarBotGPT-5.2 usable
Cambios detallados7 · 2
Invitados
4
El selector de modelo se muestra de nuevo en escritorio y móvil, con todos los modelos en gris + candado salvo GarBotGPT-5.2.
Aviso "Regístrate gratis para desbloquear todos los modelos" dentro del menú.
El modo automático se oculta para invitados (solo pueden usar un modelo).
Nombre de invitado generado de forma estable a partir del id de usuario, sin usar la IP.
Admin · Modelos
3
Nueva pestaña "Herramientas" en el editor de cada modelo.
Cada herramienta tiene su interruptor; lo desactivado no aparece en el menú del chat para ese modelo.
Se guarda en model_configs.tool_config (JSON). Por defecto todo habilitado.
📱 Header móvil de invitado arreglado + invitados solo usan GarBotGPT-5.2
21 de mayo de 2026
Dos cosas para invitados (no afecta a logueados). (1) En móvil el header se desbordaba (el botón "Regístrate" quedaba cortado) por tener demasiados elementos. Como los invitados solo pueden usar un modelo, se quita el selector de modelo y se muestra una etiqueta estática "GarBotGPT-5.2"; eso libera espacio y el header entra bien (también compactado el botón Regístrate). (2) Los invitados solo pueden usar el modelo gpt-5.2 (= GarBotGPT-5.2): forzado server-side en /api/chat (se ignora auto-route y cualquier otro modelo) y sin selector en el cliente.
Lo destacado
3
✨ Nuevo2
📱Header móvil de invitado ya no se desborda (selector de modelo oculto + Regístrate compacto)
🏷️Sin selector de modelo para invitados (etiqueta estática)
🔒 Seguridad1
🔒Invitados forzados a gpt-5.2 (GarBotGPT-5.2) server-side
🔒 Invitados: herramientas se bloquean y desactivan al llegar al límite
21 de mayo de 2026
Cuando un invitado agota sus usos de herramientas (3), las herramientas se bloquean: la que tuviera activa se desactiva automáticamente y en el menú aparece un candado con "Límite de herramientas alcanzado · Regístrate". Combinado con el bloqueo del servidor (por IP), las tools quedan inutilizables hasta registrarse. No afecta a usuarios logueados.
Lo destacado
3
✨ Nuevo1
⏏️La herramienta activa se desactiva automáticamente al llegar al límite
💎 Mejorado1
🪝Hook useGuestUsage (uso real por IP) para la UI
🔒 Seguridad1
🔒Candado + "Límite alcanzado · Regístrate" en el menú de herramientas
🔐 Límite de invitados REAL: por IP (ya no se salta cerrando incógnito)
21 de mayo de 2026
PRIORITARIO: el límite de invitados se podía saltar cerrando y reabriendo el navegador (incógnito) → cada sesión anónima nueva reseteaba el contador → acceso ilimitado. Ahora el límite es POR IP y día (tabla guest_usage + RPC atómica consume_guest_usage en la DB): 10 mensajes y 3 usos de herramientas por IP/día. Cerrar/reabrir el navegador NO resetea nada. Los contadores del chat y del menú de herramientas leen el uso real por IP. Fail-closed si la comprobación falla.
Lo destacado
3
✨ Nuevo3
🔐Límite por IP/día (10 mensajes, 3 herramientas) — no se salta con incógnito
⚛️Consumo atómico en la DB (consume_guest_usage) → sin condiciones de carrera
📊Contadores reales por IP en chat y menú de herramientas
🏷️ El nombre del modelo nunca muestra el id crudo: siempre "GarBotGPT"
21 de mayo de 2026
Definitivo: en las burbujas, si el nombre del modelo no se resuelve al del panel (config aún no cargada, id desconocido, etc.) ya NO se muestra el id crudo (gpt-5.2). Se muestra el nombre del panel cuando se conoce (GarBotGPT-5.2) y, si no, la marca "GarBotGPT". Nunca el identificador técnico.
Lo destacado
2
✨ Nuevo2
🏷️Nunca el id crudo del modelo en las burbujas
✅Muestra "GarBotGPT-5.2" cuando se conoce; "GarBotGPT" como mínimo
🛡️ PRIORITARIO: unidad de red nunca se llama si está desactivada + nombre del modelo + invitados con IP
21 de mayo de 2026
Tres arreglos. (1) PRIORITARIO: la unidad de red se llamaba aunque estuviera desactivada/oculta, porque el servidor la reactivaba por "intención inferida del texto" o por referencias a ficheros de la conversación reciente, ignorando el permiso/toggle. Ahora SOLO se activa con el toggle explícito del usuario (y con permiso): eliminada toda la inferencia y la reactivación por ficheros recientes; gate por permiso en varios puntos (defensa en profundidad). Si está oculta/desactivada, no se llama jamás. (2) El nombre del modelo salía como id crudo (gpt-5.2 / gpt-5-2): los mensajes guardan el id con punto o con guion, pero el mapa de nombres solo tenía una variante; ahora mapea ambas → siempre el nombre del panel. (3) Los invitados (sin login) ahora reciben nombre "Invitado · <IP>" para poder identificarlos en el panel admin.
Lo destacado
4
✨ Nuevo3
🛡️Unidad de red: solo se activa con el toggle explícito; nunca por inferencia ni ficheros recientes
🧹 Invitados: "Regístrate" visible, sin "En línea" y con acceso a Ajustes
21 de mayo de 2026
Tres ajustes del modo invitado (no afectan a usuarios logueados). (1) El botón "Regístrate" del header no se veía (el fondo degradado no se renderizaba); ahora es sólido (violeta) y bien visible, en header de escritorio y móvil. (2) En la pantalla de bienvenida se ocultaba mal el indicador "En línea" para invitados; ahora no aparece. (3) Como a los invitados se les ocultó el menú de usuario, no tenían forma de abrir Ajustes; añadido un botón de engranaje (Ajustes) en el header para invitados.
Lo destacado
4
✨ Nuevo3
🔘"Regístrate" sólido y visible (header escritorio y móvil)
🙈Pill "En línea" oculto para invitados en la welcome
⚙️Botón de Ajustes para invitados en el header (al ocultar el menú de usuario)
🛠️ Fix: contador de herramientas de invitado + imágenes de búsqueda web solo si son relevantes
21 de mayo de 2026
Dos arreglos. (1) El contador de usos de herramientas de invitado se quedaba en "3 de 3" aunque se usara una tool: el incremento de profiles.guest_tool_uses era fire-and-forget (void) y en Vercel las promesas no esperadas se cancelan al terminar la respuesta, así que nunca persistía. Ahora se hace con await (en la fase de preparación, sin latencia perceptible). (2) La búsqueda web a veces mostraba imágenes sin relación (logos, banderas, capturas de la página): el selector forzaba un mínimo de imágenes rellenando con candidatas de baja relevancia e incluso screenshots. Ahora solo muestra imágenes que superan un umbral de confianza; si ninguna lo supera, no muestra ninguna (mejor ninguna que irrelevante).
Lo destacado
3
✨ Nuevo3
🔢El contador de herramientas de invitado ahora baja al usar una tool (await del incremento)
🖼️Búsqueda web: solo imágenes relevantes; eliminado el relleno forzado y las capturas de página
🙅Si ninguna imagen es de fiar, no se muestra ninguna
🏷️ Fix: el nombre del modelo salía como id crudo unos segundos
21 de mayo de 2026
En las burbujas, el modelo aparecía primero como id crudo (p.ej. "gpt-5.2") y, unos segundos después, ya con el nombre del panel admin ("GarBotGPT-5.2"). Causa: el store de modelos arrancaba con los nombres fallback estáticos (= id) y solo tras cargar /api/models (config del admin, con latencia) tenía el nombre real. Ahora la config de modelos se cachea en localStorage, así el primer render ya muestra el nombre del panel y se refresca en segundo plano. Sin flicker de nombre.
Lo destacado
3
✨ Nuevo1
🏷️El nombre del modelo se muestra ya correcto desde el primer render (sin pasar por el id crudo)
💎 Mejorado2
💾Config de modelos cacheada en localStorage; refresco en segundo plano
🛠️Al guardar modelos en el panel, la cache se actualiza (reloadModels)
🧹 Invitados: ocultar también la tarjeta de usuario del sidebar
21 de mayo de 2026
Para los invitados (sin login) quedaba visible la tarjeta de usuario al pie del sidebar mostrando "? Cargando…". Ahora también se oculta para invitados, igual que el menú de usuario del header y la barra inferior. Los usuarios logueados la siguen viendo.
Lo destacado
2
✨ Nuevo1
🧹Sidebar: tarjeta de usuario ("? Cargando…") oculta para invitados
🐛 Fix: el invitado entraba al login en vez de al chat
21 de mayo de 2026
El acceso directo de invitados no funcionaba: al entrar te mandaba a /auth/login en vez de al chat. Causa: el proxy/middleware (Next 16) redirigía a /auth/login a cualquier visitante SIN sesión en rutas no públicas, incluido /chat — antes de que el layout pudiera crear la sesión anónima. Solución: el middleware ahora permite /chat (y subrutas) sin sesión, así el GuestBootstrap crea la sesión anónima y muestra el chat. Además, los invitados (anónimos) ya pueden abrir /auth/register y /auth/login para "subir" a una cuenta real (antes el middleware los expulsaba de las páginas de auth por estar técnicamente autenticados).
Lo destacado
3
✨ Nuevo1
🔓Invitados anónimos pueden acceder a /auth/register y /auth/login para registrarse
🐛 Arreglado1
🐛Middleware: /chat accesible sin sesión → el invitado entra directo (no al login)
🔒 Seguridad1
🔒Resto de rutas privadas (ajustes, mis archivos, admin…) siguen pidiendo login
Mejora del acceso público. (1) Abrir la app ya NO lleva al login: crea una sesión de invitado y entra directo al chat. En el header, los invitados ven "Regístrate" (los logueados, su menú normal). (2) Para invitados se ocultan el menú de usuario y la barra inferior de navegación; los logueados ven todo igual. (3) Los invitados pueden usar herramientas pero con un tope de 3 usos (server-side), y se muestran contadores en vivo: en el chat los mensajes restantes (de 10) y en el menú de herramientas los usos restantes (de 3), que bajan al usarlos. Nada de esto afecta a los usuarios con cuenta.
Lo destacado
5
✨ Nuevo4
🚪Entrada directa al chat como invitado (sin pasar por login)
🔘Header: "Regístrate" para invitados; menú de usuario y barra inferior ocultos
🛠️Invitados: 3 usos de herramientas (server-side) + 10 mensajes
🔢Contadores en vivo: mensajes en el chat, usos de herramientas en su menú
📎 Fix: subir archivos grandes (PDFs pesados) ya no falla
21 de mayo de 2026
Adjuntar un PDF/archivo grande daba "No se pudo subir el archivo". Causa: el archivo se subía como multipart a /api/files/upload, una función serverless de Vercel, y Vercel limita el body de las funciones a 4,5MB — cualquier archivo mayor era rechazado por la plataforma ANTES de llegar a nuestro código (que permitía hasta 30MB). Solución: los archivos ahora se suben DIRECTAMENTE a Supabase Storage mediante una signed upload URL (cliente → Supabase, sin pasar por Vercel), así que el límite de 4,5MB ya no aplica. Se valida auth, tipo, tamaño (30MB) y cuota de almacenamiento en el servidor ANTES de emitir la URL, y se registra el archivo + ingest después. Aplicado al composer del chat.
Lo destacado
4
✨ Nuevo2
📎Subida directa a Supabase Storage vía signed URL (evita el límite de 4,5MB de Vercel)
🧩Nuevos endpoints /api/files/sign-upload y /api/files/register; helper uploadFileViaSignedUrl
🐛 Arreglado1
✅PDFs y archivos grandes (hasta 30MB) ya suben sin error
🔒 Seguridad1
🔒Validación server-side (auth, tipo, tamaño, cuota) antes de emitir la URL; path acotado al user
🚪 Acceso público sin registro: "Probar sin cuenta" (10 mensajes gratis)
21 de mayo de 2026
Ahora cualquiera puede probar GarBotGPT sin registrarse. En el login hay un botón "Probar sin cuenta" que crea una sesión anónima (Supabase anonymous sign-in) y deja chatear al instante, con un tope de 10 mensajes. Al llegar al límite se invita a crear una cuenta gratis. Los invitados son solo-chat (sin tools caras: imagen, vídeo, deep research, documentos, code interpreter…) para controlar coste. Todo el tope es server-side (no se puede saltar). Esto además resuelve el rechazo de Google Play (los revisores ya no necesitan credenciales: pulsan "Probar sin cuenta"). Se habilitó GOTRUE_EXTERNAL_ANONYMOUS_USERS_ENABLED en el Supabase autoalojado. RLS y datos siguen aislados por usuario (cada invitado tiene su user_id).
Lo destacado
5
✨ Nuevo4
🚪Botón "Probar sin cuenta" en /auth/login → sesión anónima y a chatear
🔢Tope de 10 mensajes por invitado (server-side, en /api/chat)
⚡ Fin del "rato" con cursor al terminar la respuesta
20 de mayo de 2026
Al terminar la IA de responder, la respuesta se quedaba un rato con el cursor parpadeando (parecía colgada) y luego "actualizaba" al mensaje final. Causa: en el cierre del stream el código hacía varios round-trips lentos al NAS (recargar conversaciones, recargar mensajes y reintentos esperando a que el mensaje apareciera en la DB) ANTES de limpiar el estado de streaming, así que la burbuja con cursor se quedaba visible todo ese tiempo (latencia Vercel↔NAS). Ahora, en cuanto la IA termina, se pinta el mensaje final al instante (optimista) y se quita la burbuja de streaming; la confirmación contra la base de datos ocurre en segundo plano y reconcilia sin parpadeo (dedupe por contenido + user_id, ventana de 60s).
Lo destacado
4
✨ Nuevo2
🔄La confirmación en la DB (loadMessages/reintentos) ocurre en segundo plano
🧩Reusa el mismo id/meta que la reconciliación existente → no duplica
💎 Mejorado1
⚡El mensaje final aparece al instante al terminar la IA (sin "rato" con cursor)
🔒 Seguridad1
🔒Dedupe fiable por contenido + user_id (verificado: 306/306 mensajes con user_id)
Eliminar un chat se sentía muy lento: el endpoint de borrado hace ~5-6 round-trips a la base de datos (auth, comprobar propiedad, preservar histórico de token_usage, borrar) y, al estar la app en Vercel y la DB en el NAS, cada salto cuesta ~150-300ms → el chat tardaba 1-2s en desaparecer porque la UI ESPERABA al servidor. Ahora el chat se quita de la lista al instante (optimista) y el borrado real ocurre en segundo plano; si el servidor fallara, el chat se restaura y se avisa con un toast. No tiene nada que ver con los chats compartidos.
Lo destacado
4
✨ Nuevo3
🔄Borrado real en segundo plano; rollback + aviso si el servidor falla
🧭El chat activo navega a la welcome sin esperar
🔎El log mostraba errores de colaboración/Realtime, pero el borrado lento era por los round-trips Vercel↔NAS, no por chats compartidos
💎 Mejorado1
⚡El chat desaparece de la lista al instante al eliminar (ya no espera al servidor)
🐛 Fix: mensaje del asistente duplicado al terminar (burbuja de streaming solapada)
20 de mayo de 2026
A veces, al terminar de responder, se veían DOS burbujas del asistente con el mismo texto pero distinto modelo (p.ej. GarBotGPT-5.2 y GarBotGPT-5.5 en modo Auto). Causa: al cerrar el stream, loadMessages cargaba el mensaje persistido (con el modelo realmente usado, p.ej. el auto-routed 5.2) ANTES de limpiar streamingContent, así que durante esa ventana convivían el mensaje real y la burbuja de streaming (etiquetada con el modelo seleccionado, p.ej. 5.5). Confirmado por SSH que en la base de datos solo hay UN mensaje (no era duplicación real, solo de render). Solución: ocultar la burbuja de streaming en cuanto exista el mensaje persistido del asistente. Respeta regeneración y chats compartidos (no oculta mensajes en live_streaming).
Lo destacado
4
✨ Nuevo2
✅Se oculta la burbuja de streaming en cuanto el mensaje real está persistido
🔬Verificado por SSH: en la DB solo hay 1 mensaje (era solo render, no duplicación real)
🐛 Arreglado1
🐛Doble burbuja del asistente (mismo texto, modelos 5.2/5.5) al terminar el stream
🔒 Seguridad1
🔒No afecta a regeneración ni a chats compartidos (live_streaming protegido)
📰 Landing rediseñada en estilo editorial premium cálido (revista de lujo)
20 de mayo de 2026
Cambio total de estilo de toda la landing: de dark premium a editorial premium cálido. Paleta crema/terracota/oliva, titulares serif grandes, layout de revista con numeración (01, 02…), reglas finas, drop-cap en el manifiesto, wordmark gigante en el footer y efectos suaves (reveal, parallax, contadores, marquee). Rehechas las 6 páginas (inicio, funciones, precios, seguridad, estudio, contacto), nav y footer. Datos 100% reales.
Lo destacado
5
✨ Nuevo5
📰Estilo editorial: crema cálido + acentos terracota/oliva + serif de revista
🔢Layout con numeración de secciones, reglas finas y drop-cap
🔍 Fix: preview de documentos en chat ahora abre a pantalla completa
20 de mayo de 2026
El preview de pptx/docx desde la card del chat salía diminuto dentro de la propia card. Causa: la DocumentGenerationCard tiene backdrop-blur, que crea un "containing block" para position:fixed, así que el modal se quedaba atrapado dentro de la card en vez de ocupar la pantalla. Solución: renderizar el modal con un Portal a document.body para que escape y se abra a pantalla completa.
Lo destacado
2
✨ Nuevo1
✅Modal renderizado vía createPortal a document.body → pantalla completa
🐛 Arreglado1
🐛Preview del chat atrapado dentro de la card por el backdrop-blur (containing block de fixed)
🎨 Landing completa rediseñada (todas las subpáginas) con efectos avanzados
20 de mayo de 2026
Toda la landing (/landing y las 5 subpáginas: funciones, precios, seguridad, sobre nosotros, contacto) rediseñada en estilo dark premium con un toolkit de efectos compartido: fondo aurora animado, glassmorphism, spotlight que sigue el ratón, tilt 3D, contadores animados, marquee de proveedores, reveal-on-scroll y botones con glow/shimmer. Nav y footer adaptados al tema oscuro en todas las páginas. Datos 100% reales de la plataforma.
Lo destacado
6
✨ Nuevo4
🖱Cards con spotlight que sigue el ratón + tilt 3D al hover
✨ Nueva landing dark premium + preview pptx en chat + modal compartir móvil
20 de mayo de 2026
Rediseño completo de la /landing: estilo dark premium con fondo mesh animado, glassmorphism, gradientes, marquee de proveedores y animaciones reveal-on-scroll. Datos reales (20+ modelos, 23 herramientas, 8 OAuth, self-hosting, RLS, datos en UE). Nav y footer adaptados al tema oscuro. Además: la vista previa de pptx/docx del chat ahora detecta el tipo igual que Mis Archivos (por formato y extensión), y el modal de compartir es full-screen en móvil.
Lo destacado
6
✨ Nuevo5
✨Landing nueva dark premium con efectos (mesh animado, glass, gradientes, reveal-on-scroll)
🏷Marquee de proveedores (OpenAI, Anthropic, Google, Meta, Mistral, DeepSeek)
🌓Nav y footer del landing adaptados al tema oscuro
📄Preview pptx/docx en chat alineado con Mis Archivos (detección por formato + extensión)
📤 Subir archivos sin análisis + delete rápido + preview responsive + sin splash
20 de mayo de 2026
Varias mejoras. (1) Mis Archivos: nuevo botón "Subir archivos" que guarda archivos SIN pasar por el análisis RAG (solo almacenamiento) — no afecta al sistema de análisis existente. (2) Botón de eliminar de acceso rápido: la barra de selección ahora es sticky (siempre visible) + botón flotante de eliminar en móvil. (3) Vista previa de documentos optimizada para móvil (pantalla completa, sin padding). (4) Splash screen eliminado por completo.
Lo destacado
4
✨ Nuevo4
📤"Subir archivos" en Mis Archivos sin análisis (skip_ingest) — solo guarda
🗑Barra de selección sticky + botón flotante de eliminar en móvil
📱Vista previa de docs responsive (pantalla completa en móvil)
⚡ Borrado instantáneo en Mis Archivos + modal compartir con rol Editor/Lector
20 de mayo de 2026
Tres mejoras. (1) Eliminar archivos en Mis Archivos tardaba ~20s con el modal bloqueado (el endpoint borraba chunks RAG + blob + contents en secuencia). Ahora el borrado es instantáneo: el archivo desaparece y el modal se cierra al momento, la limpieza pesada corre en background y en paralelo. (2) Modal de compartir chat reorganizado con un selector de acceso prominente Editor / Lector (con descripción) que aplica tanto a invitaciones como a los enlaces que generes. (3) Generar enlace con rol: ahora puedes compartir un enlace en vivo eligiendo si quien entra es Editor (puede escribir) o Lector (solo lee), además del enlace público de solo lectura.
Lo destacado
4
✨ Nuevo3
🚀DELETE /api/files/[id] paraleliza la limpieza (chunks + contents + blob) en vez de secuencial
🎚Modal compartir: toggle Editor/Lector prominente con descripción de cada rol
🔗Enlace en vivo con rol elegible (Editor o Lector) + enlace público de solo lectura
💎 Mejorado1
⚡Mis Archivos: borrado individual y masivo instantáneo (optimista) — antes ~20s bloqueado
📄 Fix card de documentos persistida + vista previa de docx/pptx
20 de mayo de 2026
Dos fixes en la generación de documentos. (1) La DocumentGenerationCard (Generado + Descargar) solo se renderizaba dentro del bloque de mensaje "live"; al persistir el mensaje, la card buena desaparecía y volvía la card de adjunto vieja. Ahora la card se renderiza también en mensajes persistidos normales y se filtra el adjunto duplicado del documento generado. (2) El botón "Abrir" descargaba el archivo (los Office docs no se previsualizan inline en el navegador). Ahora abre una "Vista previa" en modal: docx/xlsx/pptx con el visor de Microsoft Office Online (URL firmada) y PDF en iframe, con botones Abrir/Descargar.
Lo destacado
4
✨ Nuevo3
🧹El documento generado ya no se duplica como adjunto suelto debajo
👁Botón "Vista previa" (antes "Abrir"): docx/xlsx/pptx con visor Office Online, PDF en iframe
⬇El modal de preview tiene botones Abrir en pestaña y Descargar + cierre con Esc
🐛 Arreglado1
🐛DocumentGenerationCard ahora persiste en el chat (no revierte a la card de adjunto vieja)
🎉 v9.0 — Selección masiva en Mis Archivos, modelos por provider, email de reset pro
20 de mayo de 2026
Versión mayor 9.0.0 con varias mejoras. (1) Mis Archivos: selección individual + seleccionar todo + eliminación masiva, y tabs que separan Todos / Imágenes / Documentos. (2) Modal de permisos (admin → Roles): el tab Modelos ahora agrupa los modelos por provider (OpenAI, Ollama, etc.) con cabecera por grupo y "Bloquear/Permitir todos" por provider. (3) Email de recuperación de contraseña: nueva plantilla HTML profesional (logo, botón degradado, enlace de respaldo, nota de seguridad) servida desde el storage del Supabase self-hosted. (4) Verificado que el contenedor auth está sano (el aviso de Synology era una referencia de ID cacheada tras recrearlo por CLI).
Lo destacado
5
✨ Nuevo3
☑️Mis Archivos: selección individual + seleccionar todo + eliminación masiva
🛠 Fix card de documentos + cuota real en Mis Archivos + dominio ai.garbotgpt.com
20 de mayo de 2026
Tres fixes. (1) La generación de documentos/pptx mostraba el SSE crudo (data: {document_generation_event}) + todo el texto del documento en vez de una card. Causa: el handler principal de envío (ChatInput) no parseaba document_generation_event ni lo filtraba del texto (solo lo hacía el de regenerar). Ahora muestra la card desde el inicio (como imágenes) y oculta el texto del stream — el contenido va dentro del archivo descargable. (2) La página Mis Archivos mostraba 5GB hardcoded; ahora lee el límite real del usuario (storage_limit_mb) y muestra la cuota correcta o "Sin límite". (3) El dominio cambió a ai.garbotgpt.com: actualizado SITE_URL en el self-hosted para que los emails de reset de contraseña apunten al dominio correcto.
Lo destacado
4
✨ Nuevo3
📄El texto del documento ya no se muestra en el chat durante el stream (solo la card, como imágenes)
💾Mis Archivos usa el límite de almacenamiento real del usuario (no 5GB fijo)
🌐Reset de contraseña ahora apunta a https://ai.garbotgpt.com (SITE_URL actualizado en self-hosted)
🐛 Arreglado1
🐛Card de documentos: ChatInput ahora parsea document_generation_event (card visible) + filtra el SSE crudo
🎨 Admin: modal Roles/Permisos con tabs + tab Herramientas ordenado por categorías
20 de mayo de 2026
Dos rediseños del panel admin. (1) El modal de permisos por usuario (Roles y Permisos) era un scroll largo y feo; ahora es más ancho con 3 tabs internos (Herramientas, Modelos, Límites), toggles más claros, búsqueda de modelos, presets de cuota/almacenamiento y "Bloquear/Permitir todo". Incluye también el límite de almacenamiento. (2) El tab Herramientas era un grid plano de 23 cards; ahora está agrupado por categorías (Búsqueda e información, Generación de contenido, Análisis, Integraciones) con barra de stats (total/disponibles/con bloqueos/usuarios), buscador y filtro por estado.
Lo destacado
5
✨ Nuevo4
🔘Toggles de tools con check/cross verde-rojo + "Bloquear/Permitir todo"
🔍Búsqueda de modelos dentro del modal + presets de cuota y almacenamiento
🧰Tab Herramientas agrupado por 4 categorías con contador por sección
📊Barra de stats en Herramientas + buscador + filtro (Todas/Disponibles/Con bloqueos)
🔒 Seguridad1
🗂Modal Permisos con 3 tabs (Herramientas · Modelos · Límites) + más ancho y estético
📧 SMTP real configurado + tab Modelos compactado (admin)
20 de mayo de 2026
Dos cosas: (1) Configurado SMTP real en la Supabase self-hosted (servidor sv91.ifastnet.com, cuenta garbot@garbotgpt.com) — ahora recuperación de contraseña y emails funcionan (verificado HTTP 200). El hostname mail.garbotgpt.com no tenía DNS; se detectó el servidor real vía SPF. (2) El tab Modelos del admin estaba saturado: cada modelo mostraba 5 cajas de métricas + 7 botones. Ahora cada fila es compacta (nombre, slug, capacidades como puntos, coste, toggle visibilidad, Editar y menú "⋯") con métricas expandibles bajo demanda.
Lo destacado
5
✨ Nuevo5
📧SMTP real en self-hosted: recuperación de contraseña y emails operativos
🔍Detectado servidor de correo real (sv91.ifastnet.com) vía SPF — mail.garbotgpt.com no resolvía
🗜Tab Modelos: filas compactas en vez de 5 cajas + 7 botones por modelo
🔘Capacidades como puntos (S/V/T/J/D/W/R), métricas expandibles, acciones en menú overflow
👁Toggle de visibilidad inline + badge "Oculto" + Editar primario
🔧 Fix registro de usuarios (auto-confirm en self-hosted) + entrada directa al chat
20 de mayo de 2026
El registro daba "Error al registrarte" tras migrar a la Supabase self-hosted. Causa real: GoTrue tenía ENABLE_EMAIL_AUTOCONFIRM=false + SMTP placeholder (fake_mail_user), así que al registrar intentaba enviar email de confirmación, fallaba y devolvía HTTP 500 ("Error sending confirmation email"). Activado auto-confirm en el servidor (supabase.garbotgpt.com). Ahora el registro funciona y, como el usuario queda confirmado al instante con sesión activa, la página de registro lo lleva directo al chat en vez de mostrar "revisa tu email".
Lo destacado
4
✨ Nuevo3
✅Activado GOTRUE_MAILER_AUTOCONFIRM=true en el self-hosted + recreado contenedor auth
🚀Registro exitoso lleva directo a /chat (el usuario ya tiene sesión)
✔Verificado: el trigger de profiles asigna role "user" automáticamente al registrarse
🐛 Arreglado1
🐛Causa: ENABLE_EMAIL_AUTOCONFIRM=false + SMTP falso → signup 500 al enviar email de confirmación
🔢 Versión visible en el header del Panel Admin (todas las tabs)
20 de mayo de 2026
El header del panel admin ahora muestra un badge con la versión actual (vX.XX.X) visible en todas las tabs, tanto en desktop (derecha del header) como en móvil (junto al label "Admin").
Lo destacado
2
✨ Nuevo2
🔢Badge de versión en AdminHeader desktop (lado derecho)
🏷 Título de la pestaña en Welcome ahora solo "GarBotGPT"
20 de mayo de 2026
El título del navegador en la página de inicio (welcome) mostraba "GarBotGPT - Gestion Empresarial con IA". Ahora muestra solo "GarBotGPT", más limpio. Los títulos de chats/proyectos/carpetas siguen igual (con su sufijo).
Lo destacado
1
✨ Nuevo1
🏷baseTitle de la welcome page simplificado a "GarBotGPT"
💾 Límite de almacenamiento por usuario + modal de usuario con tabs
20 de mayo de 2026
Dos mejoras en el panel admin → Usuarios. (1) Nuevo límite de almacenamiento por usuario: un admin puede establecer un tope en MB (con presets 500MB/1GB/5GB o "sin límite"). El upload de archivos verifica el uso actual vs el límite y rechaza la subida si lo excede. El modal muestra una barra con el uso actual del usuario. (2) El modal de edición de usuario rediseñado: más grande (max-w-2xl) y organizado en 3 tabs — Perfil, Cuenta y seguridad, Permisos y límites — en vez de un scroll largo. La self-hosted Supabase (supabase.garbotgpt.com) pasa a ser la DB activa.
Lo destacado
7
✨ Nuevo5
💾Nuevo campo storage_limit_mb por usuario (migración 089)
🚫Enforcement en /api/files/upload: rechaza subida con 413 si supera el límite
📊Barra de uso de almacenamiento en el modal (verde/ámbar/rojo según %)
🔐GET /api/admin/users ahora devuelve storage_used_bytes (SUM de archivos) por usuario
🗄DB activa migrada a self-hosted supabase.garbotgpt.com
💎 Mejorado1
🎚Presets rápidos de límite: 500 MB · 1 GB · 5 GB · Sin límite
🔒 Seguridad1
🗂Modal de usuario rediseñado con 3 tabs (Perfil · Cuenta y seguridad · Permisos y límites) y más grande
Antes, al clicar un archivo se abría una pestaña nueva que normalmente lo descargaba (sobre todo Office docs). Ahora se abre un visor full-screen integrado que previsualiza el documento según su tipo: imágenes, PDFs e iframe, vídeo/audio con reproductor, Office (.docx/.xlsx/.pptx) con el visor de Microsoft Office Online (vía URL firmada temporal), y texto/código/markdown/csv renderizado. Si un tipo no se puede previsualizar, ofrece descarga. Botones de Abrir en pestaña y Descargar en la toolbar, cierre con Esc.
Lo destacado
7
✨ Nuevo6
👁Visor full-screen con toolbar (Abrir / Descargar / Cerrar con Esc)
🖼Imágenes: render directo · 📄 PDF: iframe inline
🎬Vídeo y 🔊 audio: reproductor nativo embebido
📊Office (.docx/.xlsx/.pptx): visor de Microsoft Office Online vía URL firmada temporal (10 min)
Rediseño total de la página /my-files. Antes era una tabla plana y gris. Ahora tiene: hero con icono degradado, 4 stats cards (archivos, indexados, procesando, espacio), barra de almacenamiento usado (cuota visual 5GB), iconos coloreados por tipo de archivo (PDF rojo, imagen fucsia, docx azul, pptx naranja, xlsx verde, etc.), filas tipo card con hover lift, badges de estado mejorados y mejores empty states. Soporte dark mode completo.
📁 "Mis Archivos" añadido al menú de usuario (desktop + móvil)
20 de mayo de 2026
La sección "Mis Archivos" (/my-files) solo era accesible desde la sidebar. Ahora aparece también en el menú desplegable del avatar (desktop) y en el menú de acciones (móvil), junto a Calendario y Changelog.
Lo destacado
3
✨ Nuevo2
📁Link "Mis Archivos" en el dropdown del avatar (Header.tsx desktop)
📱Entrada "Mis Archivos" en el menú de acciones móvil (MobileHeader.tsx)
🎙 Voz: fix DEFINITIVO de bubbles que desaparecían + fix doble bubble en tool calls
19 de mayo de 2026
Dos fixes críticos del modo voz. (1) Las bubbles del modo voz desaparecían tras un rato porque mergeServerMessagesWithOptimistic en chat-store.ts wipea cualquier mensaje local que NO tenga meta.optimistic_local=true cuando loadMessages se ejecuta. Marcamos todos los addMessage del modo voz como optimistic_local + persistimos optimistic_client_message_id en DB para matching robusto. (2) Cuando se activaba un tool aparecía una bubble "[Respuesta de voz sin transcripcion]" antes de la respuesta real. Causa: response.done se dispara también para el turn que solo contiene function_call (sin texto). Ahora detectamos isFunctionCallOnly y skipeamos el bubble — solo creamos uno con la respuesta tras sendToolOutput.
Lo destacado
4
✨ Nuevo1
🔇Eliminado log ruidoso "response.audio.delta received" (se disparaba cada frame de audio)
💎 Mejorado1
🔗Persistimos optimistic_client_message_id en DB para que matchesOptimisticWithPersisted matchee perfectamente
🐛 Arreglado2
🐛Fix DEFINITIVO bubbles voz: meta.optimistic_local=true en todos los addMessage del modo voz (user placeholder, AI deltas, AI final, generated image)
🐛Fix doble bubble en tools: response.done con solo function_call items NO crea bubble (se espera el response.done del follow-up tras sendToolOutput)
Dos mejoras grandes al modo voz: (1) Las burbujas del usuario que aparecían un segundo y desaparecían eran porque updateMessage ignora silenciosamente IDs no presentes en el store (FIX 7.11.0) — si un loadMessages se disparaba entre handleSpeechCommitted y handleTranscript, el placeholder se wipeaba y el bubble nunca volvía. Ahora si el placeholder ya no existe, se re-añade con addMessage. (2) Añadidas 4 herramientas nuevas a GarBotGPT-Voz: youtube_search, save_memory, get_current_datetime, generate_image. System prompt reescrito con identidad fuerte "GarBotGPT-Voz" y descripción completa de capacidades.
Lo destacado
8
✨ Nuevo7
🆕Tool youtube_search: busca videos en YouTube (scrape ligero, sin API key)
🆕Tool save_memory: el usuario dice "recuerda que..." y GarBotGPT-Voz lo persiste en la tabla memories (scope user)
🆕Tool get_current_datetime: handler local (sin fetch) para "qué hora es" / "qué día es hoy"
🆕Tool generate_image: genera imagen via /api/image/generate y la inserta como attachment en el chat
🎭System prompt v8.90 con identidad "GarBotGPT-Voz, asistente conversacional con acceso completo a las herramientas de GarBotGPT"
📋Reglas explícitas por tool en el prompt: cuándo usar cada una y cómo presentar resultados en voz
🎙 Voz: arreglada transcripción + bubble del usuario (eventos GA renombrados)
19 de mayo de 2026
El nuevo modelo `gpt-realtime-mini` (GA) envía eventos con nombres distintos al Beta: `response.audio_transcript.*` → `response.output_audio_transcript.*`, y el `session.update` GA anida `turn_detection` y `transcription` dentro de `audio.input`. Nuestro hook escuchaba los nombres viejos → no llegaba transcripción ni del usuario ni del asistente (síntoma: "[Respuesta de voz sin transcripcion]" en bucle y sin bubble del usuario). Arreglado migrando todos los handlers + payload a formato GA.
Lo destacado
5
✨ Nuevo4
🔧session.update migrado a formato GA: `output_modalities`, `audio.input.{transcription,turn_detection}`, `audio.output.voice`
✅Compat: los handlers Beta antiguos se mantienen (case fall-through) por si en algún momento revertimos
👤Ahora aparece la bubble del usuario inmediatamente al hablar + transcripción real al terminar
🤖Ahora aparece transcripción real del asistente en vez del fallback "[Respuesta de voz sin transcripcion]"
🐛 Arreglado1
🐛Eventos GA añadidos: response.output_audio.delta/done · response.output_audio_transcript.delta/done · response.output_text.delta/done · conversation.item.input_audio_transcription.delta
🎙 Voz: migración a gpt-realtime-mini (GA) — el preview anterior está deprecado
19 de mayo de 2026
OpenAI deprecó la familia `*-realtime-preview`. Migrado el default del modo voz a `gpt-realtime-mini` (modelo GA oficial). Mismo precio (~$10/$20 por 1M tokens audio in/out), mejor latencia (~400ms) y soporte completo GA: interrupciones nativas, function calling estable, image input y mejor calidad de voz. La cuenta ahora tiene acceso a los 4 modelos GA (gpt-realtime, gpt-realtime-mini, gpt-realtime-1.5 y gpt-realtime-2 — verificado HTTP 200 en client_secrets).
🔇 Botón mute arreglado + voice card en posición correcta en Welcome
19 de mayo de 2026
Dos fixes UX del modo voz: el botón mute no cambiaba visualmente (la lógica retornaba sin tocar state si el audio stream no estaba listo) y la voice card aparecía abajo en welcome (donde no hay composer). Ahora el mute siempre toggle el state + aplica al stream si está disponible, y la voice card en welcome se ancla encima del input centrado mediante CSS var --welcome-input-top expuesta por el WelcomeScreen.
Lo destacado
4
✨ Nuevo2
📍Voice card en welcome: top var(--welcome-input-top) + translateY(-100%) = justo encima del input centrado
📏WelcomeScreen expone posición Y del input vía useEffect + ResizeObserver
💎 Mejorado1
⬆Cuando voiceModalOpen, el wrapper del input del welcome tiene mt-32 extra para empujar elementos arriba y dejar hueco visual
🐛 Arreglado1
🐛toggleMute: setIsMuted(prev => !prev) primero, aplica a stream solo si existe. Antes retornaba si stream era null y el state no cambiaba.
🎙 Voz: modelo default cambiado a gpt-4o-mini-realtime-preview (gpt-realtime requería acceso)
19 de mayo de 2026
El endpoint GA /v1/realtime/calls funciona perfecto, pero el modelo `gpt-realtime` (unified GA) requiere acceso especial que esta API key no tiene. Probé los modelos disponibles y todos los `*-realtime-preview` SÍ funcionan. Cambiado default a `gpt-4o-mini-realtime-preview` (más barato).
🎙 Voz — endpoint WebRTC GA descubierto: /v1/realtime/calls
19 de mayo de 2026
OpenAI también deprecó el endpoint WebRTC Beta /v1/realtime?model=X (no solo /v1/realtime/sessions). El nuevo GA es /v1/realtime/calls (sin query model, el modelo va en el ephemeral key). Probado con curl: ya no devuelve "Beta API no longer supported" sino que acepta el SDP correctamente.
Lo destacado
4
✨ Nuevo3
✅Nuevo endpoint GA: POST https://api.openai.com/v1/realtime/calls
✅El modelo ya NO va en query string — viene dentro del ephemeral token
🔧useRealtimeVoice.ts línea ~648 actualizado
🐛 Arreglado1
🐛SDP exchange daba 400 con "beta_api_shape_disabled" porque el endpoint WebRTC también era Beta
🎙 Voz: error real visible + voice "marin"→"alloy" client + acepta value en root
19 de mayo de 2026
Si la conexión voz falla, ahora muestra el error real de OpenAI/Vercel en la pantalla en vez del genérico "No se pudo conectar". También arregla 2 detalles del cliente: voice default "marin" (que ya no existe) cambiado a "alloy" en useRealtimeVoice, y el extractor de ephemeral key ahora acepta `value` en root (formato GA) además del legacy `client_secret.value`.
🎙 Modo voz arreglado de verdad — OpenAI deprecó la Beta API
19 de mayo de 2026
OpenAI deprecó completamente el endpoint Beta /v1/realtime/sessions con error "The Realtime Beta API is no longer supported". Migrado al nuevo endpoint GA /v1/realtime/client_secrets con nueva forma del body. Modelo default actualizado a gpt-realtime (unificado GA). Mi fix anterior (v8.74.0) solo cambiaba modelo dentro del mismo endpoint Beta deprecated.
🎨 Landing rediseñada estilo corporativo geeconomics (blanco + azul)
19 de mayo de 2026
Landing rehecha 100% con estilo institucional moderno tipo geeconomics.com: blanco + azul corporativo #0066CC + numeración editorial 01/02/03 + sin gradientes flashy. Layout, navbar y footer también actualizados al nuevo estilo. Reemplaza la versión navy+dorado anterior.
Lo destacado
14
✨ Nuevo11
📐Layout sobrio: sin gradientes ni glow, mucho espacio en blanco, tipografía sans light/medium
🔢Numeración estilo editorial — 01/02/03/04/05/06 antes de cada sección
🧭Navbar nuevo: blanco sticky, links con underline azul al activo, mobile con números
🦶Footer 4 columnas con icons contacto + numeración en columnas + DPA/GDPR links
✨ Landing rediseñada completa — paleta navy + dorado, estilo premium
19 de mayo de 2026
Landing principal /landing reescrita 100% con nueva paleta navy oscuro + dorado y estructura totalmente nueva (12 secciones). Estilo elegante tipo Stripe/Apple/Linear pero con touch premium dorado. Aurora background, mockup de chat realista, 3 pilares, tool groups, casos de uso editoriales, audit log showcase, stats grandes, pricing 3 tiers, FAQ y CTA final.
🌐 /landing/features actualizado con TODAS las tools y funciones (50+ items)
19 de mayo de 2026
Página de features reescrita con todo lo real: 23 tools (chat normal + nuevas), 8 integraciones OAuth, colaboración en vivo, agentes autónomos, empresa/admin/seguridad, UX y multi-idioma. 7 categorías, 50+ tarjetas. Anclas por sección, paletas extendidas (indigo/lime/teal/orange).
Lo destacado
8
✨ Nuevo6
🤖Chat: añadidos Auto modelo (router), Artifacts, edición + versiones
🛠Tools: lista completa de 22 herramientas (web/research/imagen/video/OCR/RAG/network/Excel/BD/code/browser/voz/docgen/PPTX/mindmap/quiz/music/app-builder/img-to-code/youtube)
🔌Integraciones: las 8 OAuth (Gmail, Drive, Calendar, Analytics, AdSense, Microsoft 365, Spotify, GitHub, Monday)
👥Colaboración nueva: chats compartidos, comentarios, asignaciones, presencia, canales, calendario
Encontrado el root cause del banner solapado: .desktop-minimal-header es position:absolute top:14px y mi fix anterior de orden DOM no era suficiente. Ahora el banner tiene pt-16/pt-20 dentro de su wrapper para empujarlo debajo del header flotante. Landing extendida con 3 secciones nuevas (Para empresas, Stack técnico) que mencionan self-hosting, roles avanzados, audit log, agentes, status page, artifacts, doc generation.
Lo destacado
5
✨ Nuevo2
🔁ChatShell: orden DOM revertido a Header→BannerDisplay (el padding ahora hace el offset)
🆕Landing: nueva sección "Stack técnico" con 6 tarjetas (Next.js 16, Supabase, pgvector, OpenAI, Anthropic, Vercel fra1)
🐛 Arreglado1
🐛Banner: pt-16 md:pt-20 + z-[35] dentro del wrapper inline (resuelve solape con header position:absolute)
🔒 Seguridad2
🆕Landing: nueva sección "Para empresas" con 6 cards (Self-hosting, Roles+permisos, Status page, Agentes autónomos, Artifacts/Canvas, Generar Word/Excel/PDF/PPT)
📝Privacy section ampliada con audit log, RLS, OAuth providers
📺 Resumir YouTube añadido al menú de tools del chat (+ móvil)
19 de mayo de 2026
El toggle youtube_summary estaba en el store pero faltaba en el menú "+" del input. Añadido en el dropdown desktop (después de "Generar Quiz") y en el menú mobile estilo ChatGPT. Body del fetch envía `youtube_summary` al /api/chat y se cuenta en activeToolsCount.
Lo destacado
6
✨ Nuevo6
📺Item "Resumir YouTube" en menú desktop (+) del input
📺Mismo item en menú mobile bottom-sheet
🔌youtubeSummary destructurado del useChatStore
🎬Icon Youtube importado de lucide-react
📡body del fetch ahora envía youtube_summary: youtubeSummary
🔢activeToolsCount actualizado para incluir youtubeSummary
🌐 Landing actualizada con features reales (artifacts · agentes · self-hosting · status)
19 de mayo de 2026
Bento grid de la landing extendido con todo lo añadido v8.70-v8.75: Artifacts tipo Canvas, Document Generation Card, Agentes autónomos con scheduler, Roles+permisos granulares, Mis Archivos, análisis vídeo/OCR, self-hosting completo (Supabase + NAS) y status page propio. Stats actualizados a 20+ modelos, 13 tools, 8 OAuth.
🎨Descripciones actualizadas: "13 tools en vivo", "20+ modelos", "OAuth Google/Microsoft/Spotify/GitHub/Monday — la IA actúa por ti"
🌈Nueva paleta indigo para BentoCard
🔒 Seguridad1
🆕Cards bento añadidas: Artifacts (Canvas), Generación de documentos, Agentes autónomos, Roles y permisos, Mis archivos, Self-hosting completo, Status page propio
📄 DocumentGenerationCard — card desde el inicio (como ImageGenerationCard)
19 de mayo de 2026
Cuando activas generación de docx/pdf/xlsx/pptx, ya no ves todo el texto markdown seguido del archivo al final. Ahora aparece una card con animación desde el inicio del request, frases rotativas de progreso, y al terminar muestra el archivo final con botones Descargar / Abrir. El texto markdown queda oculto (el contenido está dentro del archivo descargable).
Lo destacado
8
✨ Nuevo4
🆕Tipos según formato: docx=azul, pdf=rosa, xlsx=verde, pptx=naranja, html=violeta, json=amber
📡MessageBubble intercepta el evento en el stream y actualiza el store
💾meta_json.generated_document persistido en el message para que la card se re-renderice al recargar conversation
🙈Cuando hay generatedDocMeta, displayContent se sobrescribe a un mensaje corto ("Aquí tienes tu X 👇") — el texto markdown completo NO se muestra (está dentro del archivo)
🔧 5 fixes: voz · banner · preview pptx · títulos IA · enforcement cuota/tools
19 de mayo de 2026
Lote de hotfixes: arregla modo voz roto (modelo deprecated), banner que se solapaba con el header, preview de pptx con UI clara, títulos de documentos generados con IA en vez del prompt literal, y enforcement server-side de cuota mensual de tokens y tools deshabilitadas.
Lo destacado
6
✨ Nuevo5
📢Banner: ahora se renderiza ENCIMA del header (era debajo y se solapaba con el selector de modelo)
📊Preview pptx/zip/binarios: card centrada con icono, info del archivo, botón Descargar prominente y Abrir en nueva pestaña
🤖Títulos de documentos generados con IA: nueva función generateSmartDocumentTitle() en document-export.ts (gpt-4o-mini, response_format json_object). Ej: "hazme presentación michael jackson" → título "Michael Jackson: Rey del Pop" + slug "michael-jackson-rey-del-pop"
🛡Enforcement server-side: /api/chat valida quotaProfile, bloquea suspended/pending con 423, devuelve 429 si supera monthly_token_limit del mes, fuerza false en tool flags que el user tiene en disabled_tools
🛠 Tab Roles+Permisos en admin · Tab Tools reescrito · Mis Archivos página propia
19 de mayo de 2026
Tres tabs nuevas/reescritas en panel admin y la página dedicada Mis Archivos en el menú de usuario. Roles y Permisos consolida la gestión completa del sistema RBAC nuevo (cambio de rol, suspensión con razón/fecha, permisos por feature, dominios permitidos, audit log global). Tools reescrito desde cero con grid visual y bulk actions. Mis Archivos da al usuario página propia para ver/descargar/renombrar/eliminar/reintentar sus archivos.
Lo destacado
9
✨ Nuevo7
🔁Tab admin "Herramientas" reescrita completa — grid de 13 tools con bulk actions (bloquear/desbloquear para todos)
🆕Endpoint GET /api/admin/tools con resumen + lista users bloqueados por tool
🆕Endpoint POST /api/admin/tools/[id]/bulk action=block_all|unblock_all
📂Página /my-files con filtros (todos/indexados/procesando/fallidos), búsqueda, polling auto
🔧Endpoints: GET /api/files (lista), DELETE /api/files/[id], PATCH /api/files/[id] (rename)
➕Links "Mis archivos" + "Admin" en ambos menús del sidebar (collapsed y full)
✅Signup totalmente abierto: cualquier email no listado → role=user automático (confirmado en v8.72.0)
🔒 Seguridad2
🆕Tab admin "Roles y Permisos" — sub-tabs Usuarios / Dominios permitidos / Audit log global
🆕Modales: cambiar rol, suspender (con razón y fecha hasta), permisos por feature (tools/models/cuota), audit log
Optimización de latencia tras migrar Supabase a self-hosted en NAS (Madrid). Vercel ahora despliega en Frankfurt (fra1) para estar cerca del NAS. Polling de presencia reducido 50%. Cache HTTP en /api/tools/permissions. Índices estratégicos en mensajes/conversations/token_usage. Signup ahora abierto: cualquier email se da de alta como user (los dominios listados siguen forzando rol específico).
Sobre el sistema simple v8.70.0 (profiles.role admin|user), añadimos: rol pending, auto-aprobación por dominio email, audit log trazable, permisos por user (disabled_tools, disabled_models, monthly_token_limit), middleware que bloquea /admin/* a no-admins y a usuarios suspendidos o pending.
Lo destacado
12
✨ Nuevo9
🆕Rol pending para usuarios cuyo email no está en la lista blanca de dominios
🌐Tabla allowed_email_domains: signup auto-asigna role (o pending) según el dominio
🛡Middleware bloquea /admin/* y /api/admin/* si role!=admin; bloquea todo para suspended/pending
🔧verifyAdmin() ahora también valida suspended y devuelve profile completo
🆕verifyActiveUser() helper para endpoints no-admin
🆕Endpoints: GET /api/admin/users/[id]/audit, GET/POST/PATCH/DELETE /api/admin/email-domains
🆕PATCH /api/admin/users acepta disabled_tools/disabled_models/monthly_token_limit y registra audit
🔐 Sistema de roles simplificado — fuente única profiles.role
19 de mayo de 2026
Eliminado por completo el RBAC granular (roles, user_roles, role_permissions) que coexistía sin sincronización con profiles.role y generaba huecos de seguridad. Ahora la única fuente de verdad es profiles.role enum (admin | user). Admin tiene acceso total; user accede a todo excepto el panel admin.
🩺 Status page: arreglados falsos positivos de Supabase Auth/Storage + threshold web
19 de mayo de 2026
Los checks de Supabase Auth y Storage estaban marcados como caídos siendo falsos positivos (faltaba el header apikey en el ping). El cron ahora lo inyecta automáticamente para URLs *.supabase.co, Storage usa /storage/v1/version (público) y el threshold de la app web sube a 3000ms degraded / 10000ms down para no penalizar cold-starts de Vercel.
🤖 Sistema de Agentes — refactor completo (planner + toolchain real)
19 de mayo de 2026
Reescritura completa del executor de agentes: planner con JSON validado, toolchain real (web_search + browse_url + db_query), límites de pasos y timeout configurables, traza estructurada por step, y summarizer dinámico sin hardcoding.
Lo destacado
10
✨ Nuevo6
🚮Quitado prompt hardcoded "FC Barcelona" del summarizer — ahora 100% genérico basado en agent.goal
🛡️Plan JSON validado con schema + fallback a single-step summary si falla el planner
⏱️max_steps (default 10, hard cap 25) y step_timeout_ms (default 20s) configurables vía agent.config_json
🚫code_interpreter explícito como "no soportado en serverless" en vez de stub silencioso
🤖Summarizer dinámico — instruido por agent.goal + step.text, formato pedido por el usuario (tabla/lista/JSON/informe)
🛡️db_query con lista blanca de tablas + force-filter user_id (incluso con service role) — nunca puede leer otros usuarios
💎 Mejorado1
⚡JSON mode en OpenAI planner para garantizar parseo limpio
🐛 Arreglado2
✅Try/catch por step — un fallo en un paso no aborta toda la ejecución, continúa
📋Trace estructurado (acción, ms, ok/error, preview) guardado en agent_executions.result como <details> colapsable
🔒 Seguridad1
🔧Tools reales en agentes: web_search (Tavily), browse_url (HTML fetch+strip), db_query (SELECT con safelist + RLS por user_id)
🐛 Fix: header "Reescribir para…" mostraba barra rara
18 de mayo de 2026
Bug visual reportado por el usuario: el header del dropdown "Reescribir para…" se veía mal — aparecía como una barra vertical extraña al lado del texto, parecía que faltaba la primera letra. Causa: el emoji ✨ (U+2728 SPARKLES) combinado con CSS `uppercase` + `tracking-wider` + `text-[10px]` se renderizaba con un glifo "compacto" raro en algunos sistemas/fuentes, parecido a una barra. Fix: reemplazar el emoji por un icono Lucide `<Sparkles>` que se renderiza limpio en todos los sistemas (es SVG, no depende de fuente emoji). De paso aplicado el styling premium de los otros dropdowns (rounded-[18px] + liquid glass + sombra multicapa + items con rounded interno + animación cubic-bezier de Apple).
Lo destacado
7
✨ Nuevo3
✨rounded-[18px] (antes rounded-xl) + sombra multicapa con highlight superior
✨Items con mx-1.5 + rounded-[10px] hover + active:scale-[0.98] (consistente con sidebar)
🔔 Notificaciones browser para assignments + coalescer polling de colaboración
18 de mayo de 2026
Doble entrega que activa la dimensión "real" de la colaboración. (1) Notificaciones del navegador cuando alguien te asigna un mensaje en un chat compartido. Nuevo listener AssignmentNotificationsListener montado en ChatShell que se suscribe via Realtime a conversation_message_assignments filtrado por tu user_id. Muestra notificación con nombre del asignador + preview del mensaje + nota; click navega al chat. Anti-doble-notif y skip si ya estás en el chat. (2) Coalescer polling: el hook useConversationCollaboration polleaba /collaboration cada 2.5s para detectar cambios en presence/live_runs/read_receipts. Migración 084 añade esas tablas al supabase_realtime publication; ahora el hook se suscribe via postgres_changes con debounce 250ms y dispara refresh inmediato. Polling de safety net subido a 30s (antes 2.5s) — reduce ~80% queries DB sin perder responsividad.
🎵 Spotify Now Playing en Welcome + 5 fixes chats compartidos
18 de mayo de 2026
Doble entrega. (1) El indicador de Spotify "lo que estás escuchando ahora" que estaba en el menú de usuario del Header se extiende a la página Welcome con un look más visual (cover 64px con glow verde pulsante, barras EQ animadas, barra de progreso live mm:ss). Hook reutilizable `useSpotifyNowPlaying` consolida la lógica antes duplicada en Header y MobileHeader. (2) Sistema de chats compartidos: migración 083 consolida `shared_chats` (existía en prod pero no en repo — bomba de relojería); ParticipantsList.tsx muerto eliminado; beacon DELETE de presence con `keepalive: true` al cerrar pestaña; MessageReactions enchufadas al MessageBubble en chats compartidos (componente que existía pero estaba huérfano).
Cada carpeta del sidebar ahora tiene un botón de 3-puntos (visible on-hover) que abre un menú dropdown con todas las operaciones comunes: Abrir espacio, Nuevo chat aquí, Renombrar, Marcar/Quitar favorita, Configurar carpeta (abre FolderSettingsModal), Eliminar (con confirm dialog rojo). Antes había que ir a Settings de la carpeta para hacer cualquier cosa, ahora 1 click. El menú reutiliza el mismo estilo premium del dropdown de chats (rounded-[18px] + liquid glass + sombra multicapa). Renombrar es inline: pulsas Renombrar y el nombre se convierte en input editable. Doble-click sobre el nombre también activa renombrar.
Lo destacado
9
✨ Nuevo8
📁Botón MoreHorizontal (3-puntos) on-hover en cada FolderBlock
📂 Pipeline de documentos: 11 mejoras (Paquete A+B)
18 de mayo de 2026
Re-trabajo a fondo del sistema de análisis de documentos al subir. 11 mejoras de impacto real, varias arreglan bugs serios. (1) Embeddings con batching REAL: antes mandaba 1 texto por HTTP request, ahora envía hasta 100 por request → ingest de PDF de 200 chunks pasa de 200 round-trips a 2 (~50× más rápido + más barato). (2) Retry con jitter exponencial (antes lineal sin jitter → thundering herd). (3) Skip re-ingest si content_hash unchanged (antes pagaba embeddings duplicados). (4) Atomic chunk replacement: nuevos antes de borrar viejos (antes DELETE→INSERT, fallo a mitad dejaba orphan failed sin chunks). (5) LLM analysis skip si hash unchanged. (6) Branch image/* en extractor con OCR automático (antes "Unsupported file type" → failed). (7) Whitelist ingestable unificada cliente/server (antes el cliente skipea xlsx/pptx/odt/etc.). (8) Server-side auto-ingest usando flag SERVER_AUTO_RAG_INGEST_ON_UPLOAD que estaba declarado pero sin usar. (9) FileLibrary: polling status cada 3s mientras procesa. (10) FileLibrary: tooltip de ingest_error + retry button rojo. (11) FileLibrary: upload via /api/files/upload (antes bypassaba MIME validation + size cap).
Lo destacado
11
✨ Nuevo7
🛡️#3 Skip re-ingest si full_content_hash === previousHash (ahorra dinero)
🛡️#7 Atomic chunk replacement: INSERT nuevos → DELETE viejos por ID (no más orphan failed)
🛡️#18 LLM analysis skip si hash no cambió
📸#4 Imágenes con OCR automático (tesseract.js, antes throw Unsupported)
🔗#6 isIngestableFile() unificado en cliente y servidor
🚀#17 SERVER_AUTO_RAG_INGEST_ON_UPLOAD activa ingest en fire-and-forget tras upload
👁️#9 FileLibrary: polling 3s mientras queued/processing → badge live
💎 Mejorado2
⚡#1 Embeddings batch real: 100 textos/request en vez de 1 (10-100× menos latencia/coste)
⚡#15 Backoff exponencial con jitter (Math.pow(2,attempt) + Math.random()×0.3)
🐛 Arreglado1
🚨#10 FileLibrary: tooltip negro con ingest_error + AlertCircle + retry button rojo si failed
🔒 Seguridad1
🔒#12 FileLibrary: upload via /api/files/upload (no más bypass de MIME/size/sanitización)
✨ Mensajes de estado IA con vida: icono por tool + rotación + shimmer
18 de mayo de 2026
Tres mejoras premium al indicador "Pensando..." que aparece mientras la IA contesta en chats compartidos. (1) Icono específico por tool: Search para web, Database para SQL, Sparkles para imagen, Telescope para deep research, FileSpreadsheet para Excel, Youtube, ScanText para OCR, etc. (antes era el mismo Loader2 spinner genérico para todo). (2) Rotación automática entre 3 variantes de texto cada 2.4s: ej. para web "Buscando en la web..." → "Revisando fuentes recientes..." → "Contrastando resultados..." (las variantes ya existían en i18n pero nunca se usaban). (3) Shimmer animado sobre el texto (gradient sweep violeta + blanco translúcido en el medio que viaja de izquierda a derecha) — sensación de "trabajando" en vez de "congelado". El backend ahora persiste live_tool en meta_json (key estable) y el frontend hace todo lo demás: rotación local, mapeo a icono, shimmer.
Renombrado el modelo de conversación por voz de "GIA-Voz" a "GarBotGPT-Voz" para alinearlo con la marca de la app. Cambiado en UI (SettingsModal: ajuste de voz; UserTokenUsage admin: tarjeta de voz + lista actividad reciente; VoiceConversationModal: model field de cada mensaje + nombre del speaker), en API (transcribe: vocabulario del prompt de Whisper) y en DB (model_configs.display_name vía migración 082). De paso arreglado un bug pre-existente en VoiceConversationModal: el lookup hacía .eq("is_active", true) pero esa columna no existe (es is_visible) → el lookup siempre devolvía null y el system_prompt del admin nunca se aplicaba. Ahora sí.
Lo destacado
7
✨ Nuevo6
🎤SettingsModal: "Elige la voz que usará GarBotGPT-Voz"
🔧 Hotfix: cron de Vercel rompía el build (Hobby limit)
18 de mayo de 2026
El vercel.json que añadí en v8.61.0 para el status-checks cron usaba schedule */2 * * * * (cada 2 min). Vercel Hobby plan SOLO permite cron diario, así que cualquier expresión más frecuente hace fallar el build durante la validación de manifiesto — por eso v8.61.0 y v8.62.0 nunca llegaron a Vercel a pesar de estar pushed a GitHub. Fix: vacío el vercel.json y muevo el cron a GitHub Actions (.github/workflows/status-checks-cron.yml) que pinguea /api/cron/status-checks cada 5 minutos. GitHub Actions cron es gratis y suficiente para status monitoring. Frecuencia ligeramente más baja (5min vs 2min) pero igual funcional.
Lo destacado
6
✨ Nuevo5
🔧vercel.json crons removido (causaba "Hobby accounts limited to once-per-day cron")
🔧.github/workflows/status-checks-cron.yml: cron 5min con curl al endpoint
🔧Usa secret CRON_SECRET y opcional STATUS_ENDPOINT desde GitHub Actions secrets
🔧concurrency group evita ejecuciones solapadas
🔧timeout 5min + curl con max-time 90s
💎 Mejorado1
🔧workflow_dispatch permite trigger manual desde la UI de GitHub
✨ Sidebar premium + reconexión robusta con mala conexión
18 de mayo de 2026
Dos mejoras: (1) estética del sidebar y sus menús dropdown, (2) reconexión automática del sistema de "en línea" cuando hay mala conexión. Los menús del sidebar (3-puntos por chat y el del perfil) ahora tienen rounded-[18px] con liquid glass real (backdrop-blur-2xl + saturación), sombras multicapa con highlight superior, items con rounded interno + active:scale + transición suave. El sidebar refinado: items rounded-[10px] con inset shadow sutil en el activo, hover con shadow inset, kbd más cuidado. La parte 2 arregla un bug serio: con mala conexión móvil/wifi pobre, las suscripciones Realtime quedaban en CHANNEL_ERROR sin recuperarse y los pings de actividad se perdían silenciosamente — el usuario aparecía offline en 5min sin recovery. Ahora hay reconexión exponencial (1s, 2s, 4s, 8s, 16s, 30s), retry/backoff en pings HTTP, listener window.online que fuerza refresh inmediato al recuperar conectividad, focus listener para refrescar al volver al tab, y un realtimeStatus en el contexto para futuras UI de degradación.
Nuevo sistema completo de status page público y monitoring activo. Página /status pública (no requiere login) con liquid glass + uptime 90 días en barras estilo Supabase + incidents activos y resueltos. Cron en Vercel cada 2 minutos pinguea 12 servicios: web app, Supabase REST/Auth/Storage, Tika, OpenAI/Anthropic/Gemini, OAuth providers (Google/Microsoft/Spotify/GitHub). Estado por servicio: operational/degraded/down según thresholds de latencia. Auto-incident creation cuando un servicio está down 5 checks consecutivos. Auto-resolve cuando vuelve a operational 3 checks. Admin UI en /admin/status para gestionar incidents manualmente. Banner global en la app cuando hay incident activo.
Lo destacado
8
✨ Nuevo7
📡12 servicios sembrados (infraestructura, AI models, OAuth)
📡Cron Vercel /api/cron/status-checks cada 2 min con auto-incident creation/resolution
📡/status público con liquid glass, uptime 90 días en barras tipo Supabase, gráfico de incidents con timeline
📡/admin/status para crear/editar/resolver incidents manualmente
📡Banner global en ChatShell cuando hay incident activo (dismissable por user, recordado en localStorage)
📡API pública GET /api/status devuelve JSON con global_status, services, incidents
📡/api/health para auto-monitoring de la propia app
El build de Vercel en v8.60.0 falló: Turbopack no podía analizar los require() dinámicos de @ffmpeg-installer/ffmpeg (el paquete resuelve el binario por OS a runtime con paths computados, no estáticos). Fix: marcar @ffmpeg-installer/* y fluent-ffmpeg como serverExternalPackages en next.config.ts para que el bundler los deje pasar y se carguen via require() nativo en Node.
Lo destacado
3
✨ Nuevo3
🔧next.config.ts: serverExternalPackages incluye @ffmpeg-installer/* y fluent-ffmpeg
🔧Patrón estándar para paquetes con require() dinámico OS-specific
🔧Análisis de vídeo v8.60.0 ahora compila y funciona en Vercel
La IA ahora puede ENTENDER vídeos subidos (antes solo generaba). Sube un mp4/mov de hasta 30MB y 5min — el backend extrae 6 keyframes evenly-spaced con ffmpeg, transcribe el audio con Whisper (con timestamps por segmento), describe cada frame con gpt-4o-mini visión usando el transcript como contexto, y genera un resumen + 3-5 key moments con timestamps. Todo se inyecta como contexto en el system prompt para que el AI pueda responder cualquier pregunta sobre el vídeo (reuniones grabadas, tutoriales, vídeos de clientes, screencast de bugs). Auto-detección: con solo subir un vídeo se dispara el análisis, sin toggle nuevo.
💾 Rescate de mensajes del asistente "desaparecidos"
18 de mayo de 2026
Bug: en chats dentro de carpetas (y otros casos), el usuario veía la respuesta del AI durante el streaming pero a los pocos segundos desaparecía. Causa: el INSERT del mensaje del asistente al final del streaming fallaba o se interrumpía (timeout, error de DB, cliente desconectado antes del INSERT), y aunque el cliente tenía el contenido en memoria, al refrescar o cambiar de chat se perdía porque el mensaje optimista solo vive en estado de React. Verificado en DB del usuario: conversación con user_msg pero asst_count=0 a pesar de respuesta vista. Fix: nuevo endpoint /api/messages/save-assistant-recovery que persiste el contenido huérfano cuando el INSERT principal falló. El frontend lo llama automáticamente cuando, tras 3 reintentos de loadMessages, no aparece el assistant en DB. Anti-duplicado: si el INSERT del stream sí persistió tarde, el endpoint detecta el contenido similar y skipea.
🪞 /ios V11 iteración: más transparente + bordes con refracción visible
18 de mayo de 2026
Feedback: V11 quedaba demasiado gris/lechoso y no se veía cómo el cristal deformaba el fondo en los bordes. Dos bugs identificados y arreglados: (1) la recombinación de canales RGB usaba feComposite arithmetic (suma) que sobre-saturaba a gris/blanco — cambiado a feBlend mode="screen" que recombina correctamente sin engrisar. (2) Defaults demasiado tímidos en refracción y demasiado generosos en tint/highlights blancos — rebalanceados.
Lo destacado
10
✨ Nuevo9
📐scaleRatio 0.7 → 1.2 (refracción claramente visible en bordes)
📐glassThickness 6 → 12 (más profundidad de deformación)
📐bezelWidth 16 → 26 (zona de refracción más ancha)
🪟tintOpacity 0.10 → 0.03 (3% en vez de 10% — casi transparente)
🪞 /ios v11: réplica fiel del Liquid Glass de Apple iOS 26
18 de mayo de 2026
Tras analizar la documentación de Apple, los repos open-source de referencia (liquid-glass-main, conor.fyi/liquid-glass-reference, nikdelvin/liquid-glass) y vídeos de WWDC 2025, añado la versión 11 del showcase /ios — la más fiel al cristal real de Apple. Mejoras concretas sobre V9/V10: aberración cromática real (3 displacement maps con IORs distintos por canal R/G/B), specular reactivo al puntero (la luz viaja siguiendo el cursor), press con bounce spring (scale 0.96 + cubic-bezier con overshoot), touch ripple (destello blanco desde el punto de click expandiéndose en 640ms), top edge highlight (luz cayendo desde arriba en el bezel, no en el centro). Defaults Apple-like: refracción mucho más sutil (scaleRatio 0.7, blur 0.6, glassThickness 6, bezelWidth 16) en vez de los V9/V10 exagerados.
Lo destacado
8
✨ Nuevo8
🌈Aberración cromática: SVG con 3 feDisplacementMap por canal RGB, IORs 1.515/1.500/1.485
💡Specular reactivo: radial-gradient hot-spot + halo amplio que siguen --v11-px/--v11-py via pointermove
🎯Press bounce: cubic-bezier(0.34, 1.56, 0.64, 1) — overshoot al soltar como SwiftUI .interactive()
💫Touch ripple: span expandiéndose scale(1→70) en 640ms con mix-blend-mode screen
✨Top edge highlight: linear-gradient(180deg, white 55% → transparent 30%) en el bezel superior
🐛 Hotfix: "No se pudieron cargar los miembros" en Compartir carpeta
18 de mayo de 2026
Las policies RLS que añadí en la migración 078 sobre folder_shares hacían recursión infinita (un EXISTS sub-select sobre folder_shares dentro de la propia policy de folder_shares → Postgres lanza "infinite recursion detected in policy"). El usuario veía el toast "No se pudieron cargar los miembros" al abrir la tab de Compartir en FolderSettingsModal. Fix: usar la función SECURITY DEFINER folder_shared_role (bypasea RLS internamente) para chequear el rol admin en vez del sub-select recursivo. La migración 078 del repo ya está corregida para deploys desde cero, y la 080 arregla entornos donde la 078 antigua ya se aplicó.
Lo destacado
4
✨ Nuevo1
🛡️Migración 080 aplicada en producción (project GEIA / iuuuhhrwbteerxecxhlu)
🐛 Arreglado3
🐛Causa: EXISTS sub-select sobre folder_shares dentro de policy de folder_shares
🔧Fix: usar folder_shared_role() SECURITY DEFINER (no recursivo)
📁Migración 078 actualizada en el repo para que deploys desde cero no caigan en el bug
Auditoría completa al sistema de carpetas con varios bugs serios resueltos y mejoras de UX. Lo más importante: las "columnas fantasma" (accent_color, is_favorite, parent_folder_id, banner_url, smart_filters_json, tablas folder_shares y folder_templates) ahora tienen migración SQL real (078) — antes existían solo en la base de datos creada a mano y cualquier deploy nuevo habría petado. Las carpetas compartidas ahora funcionan end-to-end (antes la UI permitía compartir pero el backend ignoraba al invitado). Las queries de contexto de carpeta van en paralelo. El inventario de archivos cap por tokens, no por filas. Modelo por defecto por carpeta. Toggle para aislar conocimientos. Multi-select + bulk move. Endpoint de búsqueda cross-folder.
Lo destacado
11
✨ Nuevo8
🤝Carpetas compartidas funcionan de verdad: instrucciones, memorias y archivos llegan al invitado
🧠Modelo por defecto por carpeta (default_model_slug) con picker en settings
✂️Dedup de archivos entre carpeta-RAG y knowledge-RAG (no más chunks duplicados)
📐Inventario de archivos: cap por tokens (~3500), no por filas — antes podía empujar fuera el contexto
🌳Carpetas anidadas: el sidebar ya tenía render-tree pero faltaba la columna parent_folder_id en la migración
🔍Endpoint /api/folders/search: busca carpetas, chats y archivos a través de TODAS las carpetas (propias + compartidas)
✅Multi-select + bulk move en FolderWelcomeScreen — botón "Seleccionar" + bar flotante "Mover a…"
🗒️Auto-cap de folder_memories: cuando una carpeta pasa de 80 memorias activas, las 20 más antiguas se desactivan (no se borran)
💎 Mejorado1
⚡4 queries de contexto de carpeta paralelizadas (Promise.all, ahorra 60-150ms/mensaje)
🧠 Conocimientos: clasificador LLM de intent (sin palabras clave)
18 de mayo de 2026
Mejora encima de v8.56.0. Antes el detector de "el usuario pide listar archivos" funcionaba con regex (lista cerrada de palabras: archivos, documentos, pdf, nóminas, facturas, etc.). Frágil con frases idiomáticas raras, otros idiomas o tipos de documento nuevos. Ahora hay un mini-LLM clasificador (gpt-4o-mini) paralelo al de Spotify intent: cuando la conversación tiene colección de conocimientos vinculada y el regex no matcheó, llama al LLM para decidir entre "list" (inyectar inventario) y "search" (búsqueda semántica). Coste despreciable (~$0.00005/llamada) y el regex sigue como fast path: el 80% de mensajes ni lo tocan. Cache 5 min en memoria por mensaje normalizado.
📚 Conocimientos: ahora enumera TODOS los archivos de la colección
18 de mayo de 2026
Bug: con una colección de conocimientos de 16 nóminas vinculada a una carpeta, al pedir "dime todas mis nóminas" solo aparecían 9 de 16 documentos. Causa: la búsqueda vectorial usaba p_match_count=8 (fallback 10) y la deduplicación de chunks→archivos ocurría DESPUÉS del límite, así que 16 PDFs casi idénticos colapsaban a ~9 docs únicos. Fix triple: (1) regex de "intent listar" ampliado para detectar nóminas/facturas/recibos/sueldos/contratos/etc., (2) cuando se detecta intent de listado y la conversación tiene colección de conocimientos, se inyecta el inventario COMPLETO de archivos en el system prompt (paralelo al patrón que ya teníamos para archivos de carpeta), (3) p_match_count escalado dinámicamente al nº de archivos (16 archivos → 32/48 en vez de 8/10).
🧩 Extensión Chrome: iconos actualizados con el nuevo logo
15 de mayo de 2026
La extensión Chrome "GarBotGPT — Web Capture" tenía sus iconos generados procedurally con canvas (gradient + G glyph dibujado a mano). Ahora usan el logo oficial NewLogoV2 (mismo source que /logo.png y todos los favicons). generate-icons.cjs reescrito de canvas a sharp con el mismo pipeline trim + padding 4% que usamos para los favicons. Iconos 16/32/48/128 regenerados. manifest.json version 1.0.0 → 1.1.0.
Lo destacado
5
✨ Nuevo4
🧩Source: scripts/NewLogoV2-source.png (mismo que favicons/logo)
🧩sharp con kernel lanczos3 + trim alpha + padding 4%
🧩Iconos 16/32/48/128 regenerados (~92% del canvas vs ~55% del dibujado anterior)
🧩manifest.json version 1.0.0 → 1.1.0 (para forzar update al reinstalar)
💎 Mejorado1
🧩Coherencia visual: extensión + favicons + iconos PWA usan el mismo logo
🔍 Favicons: logo más grande (trim del padding alpha)
15 de mayo de 2026
El PNG source NewLogoV2 (2).png tenía un padding alpha generoso alrededor del logo (visible: 683×704, archivo: 1254×1254 — el 45% era espacio transparente). Al hacer resize directamente, ese padding se escalaba también y el logo se veía pequeño en el favicon. Ahora con sharp.trim({ threshold: 10 }) se eliminan los bordes transparentes antes del resize y se añade un padding visual del 4% para no tocar bordes. Resultado: el logo ocupa ~92% del canvas (antes ~55%). Más visible en pestañas del navegador, home screen iOS/Android y todos los favicons.
Lo destacado
5
✨ Nuevo3
🔍sharp.trim({ threshold: 10 }) elimina padding alpha del PNG
🔍Logo ahora ocupa ~92% del canvas (antes ~55%)
🔍favicon.ico multi-size regenerado con el logo más grande
💎 Mejorado2
🔍Padding visual del 4% del lado para balance visual
🔍Mejora visible en pestaña navegador + apple-touch-icon + android-chrome
Reemplazado el logo de toda la app (sidebar, chat avatar, splash, login, etc.) con NewLogoV2 (2).png. Square 1254×1254 RGBA con alpha. Regenerados todos los assets de marca + favicons usando sharp con kernel lanczos3 (anti-aliasing premium): logo.png, logo-mark.png, logo-mark-transparent.png, logo-transparent.png, logo-square.png. Favicons 16/32/96/180/192/512. favicon.ico multi-size con png-to-ico. Source guardado en scripts/NewLogoV2-source.png para futuras regeneraciones. Nuevo script reutilizable scripts/generate-favicons-v3.cjs.
Lo destacado
8
✨ Nuevo8
🖼️Logo nuevo en TODAS las superficies (sidebar/chat/splash/login/menus)
Dos fixes en /auth/login. (1) El badge de versión arriba a la derecha mostraba "6.3.0" HARDCODED. La constante APP_VERSION existía y se actualizaba en cada release, pero el badge no la usaba. Ahora muestra "v{APP_VERSION}" dinámico. (2) El logo cargaba desde un WordPress externo (tecnofgb.com), inestable y lento. Cambiado a /logo.png local. Cuadrado 128-160px con drop-shadow violet sutil. Eliminada la versión duplicada del footer del card.
Rediseño completo del splash al estilo de apps premium (Linear / Cron / Vercel). Antes: fondo blanco con un mesh sutil + logo + spinner. Ahora: fondo oscuro #0b0b14 con mesh gradient ANIMADO (3 orbs grandes con paths sinusoidales 8-10s), grain texture SVG, 12 partículas flotantes con animation paths, logo en card de liquid glass con halo pulsante + shine sweep diagonal que cruza cada 2.6s, wordmark "GarBotGPT" que aparece letra a letra con cascading + gradient text, tagline aleatorio de 4 opciones, progress bar real (0%→100%) con gradient indigo/violet/pink, version badge + skip hint en footer. Duración subida a 2.6s. Tap anywhere para saltar. Exit smoother con scale-down del logo + bg fade.
Lo destacado
14
✨ Nuevo14
✨Background dark #0b0b14 con vignette radial
✨3 orbs mesh gradient (indigo/pink/orange) con paths animados
🎬 Menú contextual: misma animación que el menú de 3 puntos del header
15 de mayo de 2026
Aplicada la animación mobile-header-menu-in al menú contextual de burbujas de chat. Es la misma que tiene el menú de 3 puntos del header móvil: bloom desde la esquina superior con clip-path round 999px → round 30px (efecto "burbuja que se expande"), scale 0.98→1.01→1, filter blur(3px)→0, total 340ms con cubic-bezier(0.2, 0.92, 0.22, 1). transform-origin: top right para que crezca desde la esquina del lado de la burbuja. Cada item dentro tiene stagger animation con delays 140/180/220/260ms para que aparezcan en cascada.
Lo destacado
6
✨ Nuevo6
🎬Clase mobile-header-popover aplicada al menú
🎬mobile-header-menu-in 0.34s con clip-path + scale + blur
🎬transform-origin: top right (lado de la burbuja propia)
🎬Contenido con animación mobile-header-menu-content-in (140ms delay)
🎬Cada item con mobile-header-menu-row-in (stagger 140-260ms)
🎬Mismo lenguaje cinético que el resto de overlays móviles
Sigue v8.52.1: el menú aún quedaba con espacio visible a la derecha. Cambio de estrategia: en lugar de calcular `left = viewportWidth - menuWidth - margin` (que depende de window.innerWidth correcto), uso CSS `right: 6px` o `left: 6px` directamente. Esto ancla el menú al edge de forma 100% fiable independientemente de viewport, zoom o safe areas. Margen reducido de 12px → 6px para quedar casi pegado al borde.
Lo destacado
5
✨ Nuevo4
📐Estrategia cambiada: CSS right/left directo en vez de cálculo aritmético
📐sideMargin 12 → 6px para casi tocar el borde
📐isOwnUserMessage: { right: 6px, left: auto }
📐!isOwnUserMessage: { left: 6px, right: auto }
🐛 Arreglado1
📐Independiente de bugs/inconsistencias de window.innerWidth
💧 Menú contextual móvil: liquid glass + alineamiento al edge
15 de mayo de 2026
Dos refinamientos sobre v8.52.0. (1) Alineamiento: antes el menú se anclaba al borde de la burbuja, dejando un hueco en blanco entre el menú y el borde derecho del viewport si la burbuja no llegaba al edge. Ahora se ancla al BORDE DEL VIEWPORT (con margen 12px) — el menú siempre toca el lado del que viene la burbuja. (2) Aplicado liquid glass real con la nueva clase mobile-message-context-glass: gradientes radiales + lineales, backdrop-filter blur(28px) saturate(1.4) brightness(1.08) contrast(0.82), inset shadows con highlights blancos y subtle tinte violeta, edge highlight 95% white, sheen interno con linear-gradient para volumen. Mismo lenguaje que mobile-header-floating-control / bottom-nav-shell.
Rediseñado el menú de acciones que aparece al long-press en mensajes del usuario en móvil. Antes: aparecía un menú flotante + DUPLICADO de la burbuja en una posición arbitraria del touch, dejando la original borrosa detrás. Look raro. Ahora estilo ChatGPT mobile: la burbuja ORIGINAL se queda en su sitio (con un leve scale + ring blanco como destaque), aparece un scrim translúcido detrás, y el menú de acciones se ancla DEBAJO (o ENCIMA si no cabe) pegado al borde de la burbuja, alineado horizontalmente con ella. Sin duplicados.
Lo destacado
10
✨ Nuevo10
📱useRef en la burbuja del user para capturar getBoundingClientRect
📱mobileUserMenuPosition calcula left/top relativos a la burbuja
📱Espacio below vs above: elige el lado con más espacio
📱Right-aligned bubbles → menu alineado a la derecha; left → left
📱Burbuja sube z-[146] cuando menú abierto (encima del scrim)
📱Burbuja gana ring-2 white/40 + scale 1.005 + shadow elevated
📱Scrim bg-black/20 con blur-[2px] sutil
📱Eliminado el duplicado mobileUserMenuPreviewText y referencias
📱Animations mctx-fade + mctx-pop con cubic-bezier(0.22, 0.9, 0.24, 1)
A petición del usuario, revertido el rediseño del sidebar de v8.51.0 al estado anterior (v8.50.0). El bug fix de clearActiveTools (la X que cerraba herramientas activas) SE MANTIENE — eso no se revierte porque resuelve un bug real. Solo se vuelve atrás el cambio visual del sidebar: buscar separado de filter, Apps section arriba, footer con email visible, ChatRow sin avatares ni preview.
Dos paquetes. (1) BUG FIX: la X que limpia herramientas activas del composer no funcionaba cuando tenías App Builder/PPT/Imagen→Código/Mapa Mental/Quiz activos. clearActiveTools() no incluía los setters de las herramientas nuevas. (2) SIDEBAR rediseñado: buscar + filter unificados en un solo input con búsqueda inline + Enter para modal completa; Imágenes/Canales/Apps movidos al BOTTOM para dar espacio vertical a chats; footer compacto (solo avatar+nombre, email se ve en dropdown); avatares auto-generados por chat (hash del título → color HSL pastel + letra) en lugar de pin button. Preview opcional con context_summary o relative time bajo el título.
Tres nuevas herramientas en el menú GENERAR del ChatInput. (1) IMAGEN → CÓDIGO: subes una screenshot/wireframe/mockup → la IA reproduce el diseño en React+Tailwind como artifact html. Killer para devs que quieren prototipar rápido (lo que hace v0.dev). (2) MAPA MENTAL: cualquier respuesta se devuelve como mindmap Mermaid en artifact navegable con jerarquía visual. Ideal para research y aprendizaje. (3) GENERADOR DE QUIZ: cualquier tema → 10 preguntas tipo test con 4 opciones y respuesta colapsable en <details>. Útil para estudiantes y profesores.
Lo destacado
7
✨ Nuevo7
📸Imagen → Código: usa GPT-4o vision con prompt específico → artifact html React+Tailwind via htm
🐛 Submenú "Más": fix clipping superior en viewports pequeños
15 de mayo de 2026
El submenú "Más" del ChatInput está anclado al bottom del trigger (bottom-0) y crece hacia arriba. Con las 4 secciones nuevas + 11 items, en viewports cortos los items de la sección "GENERAR" (los del tope) se salían por encima del viewport. Fix: useEffect que mide bounding rect del trigger y calcula maxHeight dinámico = rect.bottom - 16px. Si el contenido excede, scroll interno con scrollbar fino.
Lo destacado
5
🐛 Arreglado5
🐛useRef + getBoundingClientRect del trigger "Más"
🐛useEffect recalcula maxHeight al abrir + en resize del viewport
🐛maxHeight = max(220, rect.bottom - 16) — siempre 220px mínimo
🐛overflow-y-auto + scrollbar fino + overscroll-contain
🐛Resultado: en cualquier viewport, todos los items del submenú visibles
El submenú "Más" del ChatInput desktop estaba desordenado — mezcla de items de generación, datos, avanzado e integraciones sin ningún agrupamiento visual. Ahora reorganizado en 4 secciones temáticas con cabeceras pequeñas en mayúsculas: GENERAR, DATOS Y ARCHIVOS, AVANZADO, INTEGRACIONES. Items relacionados juntos. Width 274px → 296px para más comodidad. Separadores 1px más finos.
Lo destacado
8
✨ Nuevo8
🧰4 secciones con cabeceras uppercase tracking-wider
🐛 Parser de artifacts tolera <artifact> sin cerrar
15 de mayo de 2026
Bug detectado en producción: el LLM (sobre todo App Builder con HTML largo) a veces emite la apertura <artifact id="..." type="html"> pero NO cierra con </artifact> al final (se queda corto en tokens, se trunca, o simplemente lo olvida). El parser regex strict no matcheaba sin closing tag → todo el HTML quedaba como texto crudo en el chat. Nuevo extractor extractArtifactBlocks() basado en índices: encuentra todas las aperturas, para cada una busca el </artifact> más cercano antes de la siguiente apertura o del fin del texto; si NO hay cierre, captura igual el contenido. Replaza de atrás hacia adelante para mantener índices válidos.
Lo destacado
5
🐛 Arreglado5
🐛extractArtifactBlocks(): index-based scanner que tolera tags abiertas
🐛Si </artifact> no aparece, captura hasta siguiente <artifact ...> o EOF
🐛Case-insensitive en el closing tag
🐛Replace en orden reverso para que los índices no se descuadren
🐛Resultado: incluso si el LLM trunca/olvida el closing, no se filtra HTML al chat
🐛 App Builder: HTML ya no se cuela en el chat (solo en artifact)
15 de mayo de 2026
Bug: cuando el usuario usaba el toggle App Builder, el LLM a veces ignoraba las tags <artifact> y envolvía el HTML completo en ```html ``` markdown, lo que hacía que TODO el código apareciera como bloque gigante en el chat además de (o en vez de) la card del artifact. Causa: el prompt usaba un ejemplo con ```html``` fence como ilustración y el LLM lo copiaba literalmente. Fix doble: (1) prompt rediseñado con ❌/✅ explícitos, ejemplos WITH <artifact> tags, sin ```html``` en ningún sitio. (2) Fallback parser server-side: si detecta un ```html``` fence con documento HTML completo (DOCTYPE/<html>) y NO hay <artifact> tag, lo convierte automáticamente en artifact. Igual para SVG. Cleanup stream-side actualizado para ocultar también ```html``` durante el streaming.
Lo destacado
5
🐛 Arreglado5
🐛prompt-builders.ts: App Builder prompt rediseñado con ❌ MAL / ✅ BIEN explícito
🐛artifact-parser.ts: pass 2 fallback que detecta ```html``` con doc completo → auto artifact
🐛Idem para ```svg``` fences con SVGs completos
🐛MessageBubble cleanAssistantStreamContent oculta ```html``` durante stream con placeholder "Generando aplicación…"
🐛Resultado: con App Builder activo, el chat solo muestra el texto presentación + card, nunca el código
Nueva herramienta independiente "Generar PPT" en el menú de herramientas. Antes había que escribir keywords ("presentación", "powerpoint", "ppt", "slides", etc.) para que la IA generara un .pptx. Ahora basta con activar el toggle y la siguiente respuesta de la IA se exporta como .pptx automáticamente, da igual el wording del prompt. Chip naranja con icono Presentation.
Lo destacado
6
✨ Nuevo6
📊Store: nuevo slidesGeneration flag + setter
📊ChatInput: menu desktop + móvil con icono Presentation
📊Chip activo naranja con etiqueta "PPT"
📊Body request envía slides_generation: boolean
📊Route: cuando true → fuerza requestedDocumentFormat=pptx + effectiveDocumentGeneration=true sin importar keywords del mensaje
📊Útil para "hazme algo sobre el café" + toggle PPT → genera ppt aunque no digas "presentación"
Nueva herramienta en el menú: App Builder. Activas el toggle, describes una app, y la IA genera una mini-aplicación web COMPLETA en un solo archivo HTML (React 18 desde esm.sh + Tailwind via CDN + cualquier librería ESM). Aparece como artifact tipo html, se renderiza inmediatamente en el panel lateral, totalmente funcional. Iteras con mensajes ("añade dark mode", "cambia el azul a verde"). NUEVO botón Rocket en el panel: "Deploy to Vercel" sube el HTML como sitio estático y devuelve URL pública real tipo nombre-xxxx.vercel.app en ~30s. Requiere VERCEL_TOKEN en env.
Lo destacado
9
✨ Nuevo8
🚀Nueva herramienta "App Builder" en el menú (chip violet con Wrench)
🚀buildAppBuilderPrompt(): instrucciones específicas para single-file React+Tailwind+htm
🚀La app es funcional desde el primer render (no placeholders)
🚀Iteración chat-based — IA reusa el mismo artifact id → versionado automático
🚀POST /api/deploy/vercel: usa Vercel API v13 con proyecto compartido garbotgpt-apps
🚀Validación de tamaño 800KB max + auth gate
🚀Botón Rocket en ArtifactPanel solo cuando type=html
🧪 /ios v10: Playground completo de Apple Liquid Glass
15 de mayo de 2026
Nueva variante v10 en /ios — port DEL TODO del index.html de liquid-glass-main con TODOS los controles editables en vivo. v9 (preset) sigue ahí. La v10 incluye: panel lateral collapsible con sliders para width/height/border-radius, glass thickness, bezel width, refractive index, scale ratio, blur, specular opacity/saturation, inner shadow (color/blur/spread), glass tint (color/opacity), outer shadow blur. 5 backgrounds preset (cielo/flores/bosque/vivo/mosaico) + opción de pegar URL custom. Glass arrastrable. Botón reset. Solo Chromium para refracción SVG real; en otros navegadores la card seguirá pero sin la refracción física.
⚙️ Settings Modal: versión móvil nativa (estilo iOS Settings)
15 de mayo de 2026
Rediseño del SettingsModal para móvil. Antes: el modal usaba el mismo layout que desktop con tabs en scroll horizontal arriba (texto pequeño, mala UX). Ahora: estilo iOS Settings app. (1) BOTTOM SHEET 92vh con rounded-t-3xl + drag handle indicator + slide-up animation. (2) Lista de tabs FULL-SCREEN cuando entras (cards grandes con icono color + label + chevron right). (3) Click en tab → contenido full-screen con header back "← Ajustes" + título de la tab centrado. (4) Save button full-width grande con safe-area-inset-bottom. Desktop sin cambios.
Tres tabs nuevas en el modal de Ajustes para gamificación e insights personales. (1) RACHA: contador de días consecutivos activos, mejor racha, días totales activos. Estilo Duolingo con flama amber. (2) ESTADÍSTICAS: mensajes totales, conversaciones, imágenes/documentos/artifacts generados, hora más activa, tu chat más largo, modelos más usados con barras de progreso. (3) LOGROS: 22 achievements desbloqueables en 4 tiers (bronce/plata/oro/platino) cubriendo categorías: mensajes, imágenes, documentos, artifacts, voz, racha, conversaciones, días activos. Progress bar con % desbloqueado. Unlock automático en cada visita.
⌨️ Inline autocomplete (ghost text) en el textarea
15 de mayo de 2026
Mientras escribes, una sugerencia gris aparece después del cursor con el final probable de tu frase. Tab para aceptar. Tipo Cursor / GitHub Copilot pero en el input del chat. Usa gpt-4o-mini con contexto de los últimos 4 mensajes de la conversación. Debounce 450ms. Solo cuando el input cabe en una línea. Toggle por usuario via localStorage. Coste ~$0.00002 por sugerencia, despreciable.
Lo destacado
7
✨ Nuevo7
⌨️POST /api/chat/autocomplete con gpt-4o-mini
⌨️Hook useInlineAutocomplete con debounce 450ms + AbortController
⌨️Mirror div con texto invisible + suggestion gris + chip "Tab"
⌨️Tab key handler en handleKeyDown intercepta antes de Enter
⌨️Auto-cancela peticiones obsoletas al seguir tipeando
⌨️No completa si frase termina en puntuación (.!?)
Tres nuevas funciones de calidad de vida para el chat. (1) PIN MESSAGES: botón pin/unpin en cada mensaje. Los anclados aparecen en una barra sticky amber arriba del chat con preview clickeable que hace scroll smooth + flash. Útil para conversaciones de research largas. (2) REESCRIBIR PARA…: dropdown en respuestas IA con 8 audiencias: jefe, niño 8 años, experto, Twitter/X, email formal, casual, más corta, más detallada. Envía un nuevo prompt al chat con instrucciones de reformulación. (3) AUTO-RESUMEN: cuando el chat ≥50 mensajes, aparece icono FileText en el header. Click → modal con TL;DR estructurado (temas, decisiones, acciones pendientes) generado por gpt-4o-mini. Copy/regenerar/cerrar.
Lo destacado
9
✨ Nuevo9
📌meta_json.pinned guarda estado, optimistic update en store
📌PinnedMessagesBar: hasta 2 visibles + "+N más" expandible
📌Pin scroll-to-message con ring amber 1.5s flash al llegar
📌Ring amber permanente en mensajes anclados
✨RewriteMenu: dropdown con 8 opciones predefinidas + iconos
✨Custom event chatinput-send-prompt para comunicar con ChatInput
📋POST /api/conversations/[id]/summarize con gpt-4o-mini
📋ConversationSummaryModal con markdown structured (TL;DR/temas/decisiones/acciones)
Nueva capacidad de generación de documentos: PowerPoint (.pptx). Junto a docx/pdf/xlsx/md/html/json/txt que ya teníamos. Detecta keywords "presentación, powerpoint, ppt, slides, diapositivas, deck, pitch deck" y genera un .pptx 16:9 con portada estilizada (gradient indigo→violeta lateral), slides H1/H2-driven, header bar de marca, footer con número de slide, paleta GarBotGPT consistente. El LLM recibe instrucciones específicas para estructurar el markdown por slides (cada ## es una slide, bullets cortos, 7-12 slides total).
Lo destacado
8
✨ Nuevo7
📊Librería pptxgenjs (4.0.1) para Node-compatible PPTX
Los logs de Vercel confirmaron que el "no se encontró canciones" venía de Spotify devolviéndonos 429 Too Many Requests (rate-limit por app, compartido por todos los usuarios). El retry single-shot tampoco salvaba: ambos volvían 429. Ahora: (1) cache in-memory de 5min por búsqueda (query + filtro + count), evita hits repetidos cuando el usuario reintenta. (2) Cool-down global: cuando vemos 429 dos veces seguidas, marcamos RATE_LIMITED_UNTIL = now + Retry-After (o 60s default) y todas las búsquedas siguientes se cortocircuitan devolviendo [] sin pegarle a Spotify. (3) El mensaje al usuario diferencia: si fue rate-limit, dice "Spotify saturado, prueba en Xs"; si fue 0 resultados real, sugiere otro nombre. (4) Logs diagnósticos de v8.42.1 limpiados.
Lo destacado
7
✨ Nuevo6
⏳RATE_LIMITED_UNTIL global, respeta Retry-After del header
⏳Si search devuelve 429 dos veces, marca cooldown y devuelve []
⏳isSpotifyRateLimited() expuesto al spotify tool
💬Mensaje al usuario diferencia rate-limit vs no-results
💬Mensaje rate-limit dice "Cooldown: Xs" con tiempo real restante
🧹Logs diagnósticos de v8.42.1 limpiados
💎 Mejorado1
⏳Cache LRU lite (max 100 entries, TTL 5min) en SEARCH_CACHE
Logs temporales en searchSpotifyTracks para identificar por qué la búsqueda devolvía 0 tracks. Logs revelaron que era 429 Too Many Requests de Spotify. Limpiado en v8.42.2.
🧠 Spotify: LLM extrae artista/query/cantidad (sin depender de palabras clave)
15 de mayo de 2026
El clasificador LLM (gpt-4o-mini) ya devolvía la intención create/read/none, pero el regex de extracción de artista en deriveSpotifySearchIntent() seguía siendo el que decidía la búsqueda real. Eso fallaba con fraseología natural ("ponme algo de Rosalía", "música para correr", "mix de Bad Bunny en español"). Ahora el LLM extrae en la MISMA llamada: artist (nombre exacto capitalizado), searchQuery (semántico, traducido a inglés cuando no hay artista), y requestedCount. El spotify tool USA estos parámetros con prioridad absoluta. Fallback al regex solo si el LLM no extrajo nada o falla la llamada. Coste +1KB tokens output, ~$0.00005 por llamada.
🎵 Spotify: regex acepta "album/álbum/mix" como trigger
15 de mayo de 2026
Cambio MINIMAL sobre el revert de v8.41.1. El regex artistAfterDe en deriveSpotifySearchIntent() solo reconocía "playlist|lista|música|canciones|temas" como palabras que disparan la extracción del artista. Para "hazme un album de Michael Jackson" fallaba: no extraía el artista, caía al cleaned path con query="un Michael Jackson" sin artistFilter, Spotify devolvía mezcla rara o 0 tracks, y no aparecía la card. Ahora añadidas como triggers: album/albumes/álbum/álbumes/mix/recopilatorio/selección. NO se reintroduce el cache ni el 429 handling de la v8.33.26 anterior.
Lo destacado
3
✨ Nuevo2
🎵1 línea cambiada en deriveSpotifySearchIntent() (regex)
🎵"hazme un álbum de X" → ahora extrae X correctamente
💎 Mejorado1
🎵Sin cache, sin rate-limit handling (lo demás sigue revertido)
A petición del usuario: Spotify revertido a su estado anterior a los cambios de v8.33.17 (estrategia artist-ID + top-tracks + albums). spotify-helpers.ts restaurado al commit 653fc80 (v8.33.15) y la reordenación de v8.40.0 en route.ts (effectiveSpotifyRead vs Create) deshecha. Resto del proyecto intacto.
Lo destacado
4
✨ Nuevo2
↩️spotify-helpers.ts: -439 líneas (vuelve a la implementación original)
↩️route.ts: effectiveSpotifyRead y Create vuelven a la lógica original
💎 Mejorado1
↩️Sin ALBUM_CACHE, sin RATE_LIMITED_UNTIL, sin regex extendido de "album"
🐛 Arreglado1
↩️Resto del codebase intacto (artifacts, /ios showcase, bug fixes de edit, etc.)
🎥 Fondo de vídeo en /ios + 🍎 v9 Apple iOS 26 (port oficial)
15 de mayo de 2026
Dos extensiones al showcase /ios para evaluar el liquid glass en condiciones reales: (1) nueva opción de fondo "Vídeo (movimiento real)" que usa el hero-bg.mp4 de la web para que la refracción se vea sobre contenido en movimiento. (2) Nueva variante v9 "Apple iOS 26" — port del repositorio liquid-glass-main de @lucasromerodb, con refracción física real usando SVG feDisplacementMap + perfil de refracción IOR calculado en canvas + specular highlights pre-renderizados. La card es ARRASTRABLE sobre el fondo para ver cómo refracta. Solo Chromium (Chrome/Edge); en Firefox/Safari fallback a blur normal.
Lo destacado
9
✨ Nuevo9
🎥Bg "Vídeo" usa <video> autoplay loop con hero-bg.mp4
🎥Overlay sutil top/bottom para legibilidad sin tapar movimiento
🍎v9 Apple iOS 26: AppleLiquidGlassCard.tsx (port de index.html)
🍎calculateRefractionProfile() con IOR + bezel + glass thickness
🍎generateDisplacementMap + generateSpecularMap en canvas
🍎SVG filter inyectado dynamically con dangerouslySetInnerHTML
🍎Drag handler: pointer events con clamp a parent bounds
🍎Sección "Destacado" propia antes del grid v1-v8
🍎Fallback elegante para navegadores sin backdrop-filter: url()
🐛 Spotify "album de X" + Bug solapamiento mensaje editado
15 de mayo de 2026
Dos bugs corregidos: (1) "hazme un album de Michael Jackson" devolvía la lista de TUS playlists existentes en lugar de crear el álbum. Causa: el regex fallback de SpotifyRead capturaba la palabra "album" aunque el LLM ya hubiera clasificado la intención como CREATE, y AMBOS flujos (read + create) corrían en paralelo. Ahora el fallback de read solo se activa si NO hay create. (2) Al editar un mensaje con herramientas activas, la respuesta vieja del asistente quedaba visible arriba mientras la nueva se generaba abajo. Causa: race condition con Realtime que re-insertaba el mensaje viejo durante el streaming. Ahora se guarda pendingRegenAfterMessageId en el store y ChatArea oculta cualquier mensaje del asistente con created_at posterior hasta que termina la regeneración.
Lo destacado
6
✨ Nuevo4
🎵"album de X" ahora va al flujo de creación correctamente
✏️Edit + tools: nuevo pendingRegenAfterMessageId en chat-store
✏️MessageBubble: set/clear flag alrededor de regenerateFromHere
Tres cambios: (1) página /logos eliminada (LogosGallery + animaciones). (2) Nueva página /ios con 8 variantes de liquid glass Apple-style — frosted, specular reactive, SVG refraction, chromatic aberration, iridescent, mercurial, bubble lens, clean flat. Cada una sobre 4 fondos distintos (gradiente animado, cálido, frío, mesh oscuro) para evaluar comportamiento. Permite "elegir" una. (3) Nuevo botón de pantalla completa en el panel de artifacts: en desktop expande el panel a 100vw tapando el chat, con animación clip-path desde el lateral. Se restaura al cambiar de artifact.
🔍 Share full-screen + 💧 Liquid glass más neutro y reactivo
15 de mayo de 2026
Dos mejoras: (1) la página /share/artifact/{token} ahora muestra el artifact EDGE-TO-EDGE (sin padding ni card alrededor), ocupando todo el espacio entre header compacto y footer mínimo. Mucho más profesional para compartir. (2) Liquid glass del móvil rediseñado: saturación bajada de 1.8 a 1.4 para evitar reflejos "Aero" eléctricos sobre fondos coloridos, y añadido el ghost reflection: cuando presionas un control, el rim-light se desplaza al lado opuesto con inset shadows que simulan compresión física del cristal (tipo iOS 26).
Lo destacado
8
✨ Nuevo8
🔍SharedArtifactView: h-screen + flex-col, sin padding alrededor del preview
🔍Header y footer compactos (shrink-0) para maximizar el artifact area
🔍Code tab mantiene max-w-6xl para legibilidad en monitores wide
El contenedor central del WelcomeScreen pasa de max-w-2xl (672px) a max-w-3xl (768px) para alinear el ancho del input inline con el del ChatInput dentro de un chat ya en curso. Las starter-prompts mantienen su max-w propio (sin cambio visual).
Lo destacado
2
✨ Nuevo2
📏WelcomeScreen container: max-w-2xl → max-w-3xl
📏Coherente con el max-w-3xl que ya tenía ChatInput por dentro
En v8.33.28 se desactivó efectivamente la herramienta de Base de Datos (effectiveToolPermissions.dbQuery = false) pero las entradas del menú de herramientas (desktop + móvil) seguían condicionadas a `toolPermissions.dbQuery` (raw permission del perfil), no a la efectiva. Resultado: si el usuario tenía la permission en BD, la entrada del menú aparecía aunque al clicar no hiciera nada. Ahora se gate por `effectiveToolPermissions.dbQuery`, así que desaparece para todos.
Lo destacado
4
✨ Nuevo4
🗑️Menú desktop: entrada "Base de datos" ya no aparece
🗑️Menú móvil: idem
🗑️Chip activo de DB tampoco se muestra (por sesiones viejas que lo tenían true)
🗑️Separador de sección recalculado para no quedar huérfano
⚡ Artifacts en vivo: panel se abre desde el primer token
15 de mayo de 2026
Mejora UX: el panel lateral ahora se abre AUTOMÁTICAMENTE en cuanto el LLM emite la primera etiqueta <artifact>, mostrando el código en tab "Código" mientras se escribe en tiempo real (con auto-scroll al fondo). Cuando detecta </artifact> al cerrar, cambia AUTO a tab "Preview" para mostrar el resultado renderizado. La card sigue apareciendo en el mensaje para re-abrir luego. Banner pulsante violeta "Generando en vivo…" mientras dura. Si el usuario cierra el panel manualmente durante el stream, se respeta y no se reabre. Para tipos que no toleran contenido parcial (react/mermaid/svg), la tab Preview muestra placeholder "Esperando a que termine…" con CTA al código.
Lo destacado
8
💎 Mejorado8
⚡Panel abre desde el primer <artifact ...> detectado en el stream
⚡Tab Código en vivo, auto-scroll al fondo mientras llegan tokens
⚡Auto-switch a Preview cuando se detecta </artifact>
⚡Banner pulsante "Generando en vivo…" mientras dura
⚡Placeholder para react/mermaid/svg (no parsean contenido parcial)
⚡Cierre manual durante stream respetado (no reabre)
⚡parseStreamingArtifact() tolera tags abiertos sin cerrar
⚡useArtifactStreamingSync() hook montado globalmente en ChatShell
🚀 Artifacts Fase 3: React/Mermaid renderers + Share público
15 de mayo de 2026
Cierre del Canvas. (1) REACT en vivo: el LLM puede emitir <artifact type="react"> con JSX/TSX y se renderiza compilado con Sucrase en un iframe sandboxed con React 18 desde esm.sh. Soporta hooks, imports de react/react-dom, JSX runtime automático. (2) MERMAID: diagramas reales (no source code) renderizados con la librería oficial mermaid, lazy-loaded (~600KB solo cuando hay uno abierto). Maneja errores del parser. (3) SHARE PÚBLICO: botón "Compartir" en el panel genera un link UUID (/share/artifact/{token}) accesible sin login. La página pública tiene preview/code tabs, copy/download, contador de vistas y CTA a GarBotGPT. Snapshot completo en jsonb (sobrevive si el chat se borra). Límite 500KB por share.
Continuación del Canvas de v8.34.0. (1) VERSIONADO: cuando el usuario itera sobre un artifact ("ahora cámbialo a azul", "añade un botón") y la IA reutiliza el mismo id, ahora se guardan TODAS las iteraciones. En el panel aparece un navegador ◄ N/M ► con badges v1/v2/v3 — los históricos se ven con un banner amber "viendo versión anterior". El server recorre la conversación buscando artifacts con el mismo id en mensajes previos y los enlaza como historial. (2) GALERÍA: nuevo botón Boxes en el header (con badge contador) y entrada en el menú móvil → abre un modal con grid de TODOS los artifacts del chat actual. Búsqueda por título/tipo/lenguaje. Click en una card → se abre el panel.
Lo destacado
9
✨ Nuevo9
📚Versionado: panel muestra ◄ N/M ► cuando hay múltiples iteraciones del mismo id
📚Banner amber "viendo versión anterior" en históricas
📚Server: attachPriorVersions() consulta mensajes previos del chat
📚Instrucciones al LLM actualizadas: reutiliza el mismo id al iterar
📚Copy + Download usan la versión visible (no siempre la última)
📚Galería: nuevo botón en Header (desktop) con badge contador
📚Galería: entrada "Artifacts" en menú móvil (solo si hay)
📚Modal con grid, búsqueda por título/tipo/lenguaje, badge v2/v3 si tiene versiones
📚Hook useConversationArtifacts() recorre messages del store
🎨 Artifacts (Canvas): panel lateral con preview en vivo
15 de mayo de 2026
Nueva feature mayor estilo Claude Canvas / ChatGPT Canvas. Cuando la IA genera contenido sustancial (HTML, código largo, SVG, documentos), aparece una card en el mensaje que abre un panel lateral con dos tabs: Preview (renderizado en vivo) y Código (con syntax highlight). En móvil se abre como modal full-screen. Soporta HTML (iframe sandboxed), Código (todos los lenguajes), Markdown (renderizado), SVG (inline sanitizado) y React (placeholder en MVP). El parser usa tags <artifact id type title language> emitidas por el LLM y las almacena en meta_json.artifacts para persistir entre sesiones.
🔄 Modelos: sync entre pestañas · 🗄️ Database tool eliminada
15 de mayo de 2026
Dos cambios: (1) El selector de modelos ahora se actualiza al INSTANTE entre pestañas — antes solo funcionaba si admin y chat estaban en la misma navegación. Añadido BroadcastChannel "garbotgpt:models" que emite cuando admin edita y los listeners en otras pestañas recargan automáticamente. (2) Herramienta "Base de datos" desactivada globalmente del chat (mismo patrón que Network Drive en v8.33.22). Pestaña "Conexiones BD" oculta del admin.
Lo destacado
5
✨ Nuevo3
🔄Throttle 500ms para evitar loops
🔄broadcast:false en listener para no re-emitir
🗄️Pestaña "Conexiones BD" oculta del admin (código intacto, descomentando se reactiva)
💎 Mejorado1
🔄BroadcastChannel cross-tab: edita en pestaña admin → chat se actualiza al instante
🔒 Seguridad1
🗄️effectiveToolPermissions.dbQuery = false (no aparece en menú ni chips)
Bug: al editar el nombre de un modelo en /admin, el selector del chat tardaba hasta 5 minutos en mostrar el cambio. Causa: cache server-side de 5min en /api/models + flag loaded:true en Zustand store que bloqueaba el re-fetch. Fix: TTL bajado a 30s + invalidación instantánea desde admin (server clear + client reloadModels()) al crear/editar/eliminar/toggle visibility/bulk operations.
Lo destacado
5
✨ Nuevo1
✅Resultado: cambios visibles en el selector ANTES de 1 segundo
Tres fixes Spotify: (1) "hazme un album de Michael Jackson" extraía 0 canciones porque la regex artistAfterDe no incluía "album" como keyword — solo aceptaba playlist/lista/musica/canciones/temas. Añadido album/álbum/mix/recopilatorio/selección. (2) Cache de búsqueda de álbumes por artista (TTL 30min) para reducir llamadas a Spotify. (3) Detección de rate-limit (429) con flag global por proceso (60s cooldown) y mensaje claro al usuario "Spotify saturado, espera 1 min" en lugar del genérico "no se encontraron canciones".
🎨 NewLogoV2 G transparente · GarBotGPT capitalizado · 15 animados pro · Marca propia
15 de mayo de 2026
Cambios visuales y de marca: (1) NewLogoV2.png integrado con script remove-bg.cjs que elimina fondo blanco usando algoritmo saturation-based. Regenerados todos los favicons + android-chrome. (2) Todos los logos del wordmark ahora muestran "GarBotGPT" con capitales correctas (antes "garbotgpt" lowercase). (3) Añadidos 15 nuevos logos animados pro con texto "GarBotGPT": gradient flow, stagger fade, underline draw, orbit text, shimmer plata, neón GPT, wave ondulando, G rotando, breath, loading side, marquee infinito, terminal cursor, 3D flip, sparkles, mask reveal. (4) Landing rebrandeada: modelos GarBotGPT 5/Pro/Mini/Voice/Vision/Code en lugar de GPT/Claude/Gemini.
Lo destacado
8
✨ Nuevo3
🎬15 nuevos animados pro: 31-45 en _animated.ts (gradient flow, neón, shimmer, mask reveal, marquee, terminal, 3D flip, sparkles, etc.)
🎨 Liquid glass refinado · 📱 Play Store assets generados
15 de mayo de 2026
Refinamiento del estilo liquid glass: saturación bajada (1.6/1.7 → 1.10/1.12) para look "Apple optical" en vez de "glossy plastic", chromatic fringing sutil (cyan/amber) en bordes para simular refracción real, brightness más sutil. Script generador de assets para Google Play Store: feature graphic 1024×500 + 4 screenshots 1080×2400.
🛠️ Input expandible · 🛡️ Privacy/Terms pro · 🎨 +36 logos nuevos · 🚫 Barça out
15 de mayo de 2026
Cuatro mejoras: (1) El composer del chat ahora se expande verticalmente igual que cuando se activan herramientas — el texto largo ya no se sale del contenedor. (2) Privacy y Terms rediseñadas con sticky TOC, jerarquía visual mejorada, tabla de procesadores con badges UE, email actualizado a garbot@garbotgpt.com. Splash deshabilitado en estas páginas + /landing + /maintenance. (3) Eliminado el componente BarcaChampions completamente (archivo + import + JSX). (4) Galería /logos: 12 nuevos con texto, 12 nuevos solo icono, 18 nuevos animados — total ahora ~80 logos.
Lo destacado
9
✨ Nuevo7
🛠️ChatInput: composer expande layout cuando multilínea (igual que has-tools)
🛡️/privacy: sticky TOC, hero gradient, 11 secciones con iconos, tabla de procesadores con badges UE/USA
🛡️/terms: sticky TOC, hero blue, 12 secciones (aceptación, uso aceptable, IA disclaimer, ley)
📧Email contacto actualizado: garbot@garbotgpt.com en ambas páginas
🚫Splash NO aparece en /privacy /terms /landing/* /maintenance
🗑️BarcaChampions eliminado: componente, import en layout.tsx, JSX
🎬/logos animados: +18 nuevos (Loading dots, Bouncing ball, Ripple multi, Rotating square, Progress bar, Eye blink, Sound emit, DNA helix, Lightning strike, Particle field, Typewriter, Pulse wordmark, Color shift, Morphing blob, Scanning line, Bouncing letters, Live network, Modern spinner)
📚 Conocimientos mejorados + 🛑 Unidad de Red OFF + 🔓 Registro libre
15 de mayo de 2026
Tres mejoras grandes: (1) Sistema de conocimientos enriquecido con panel de métricas en vivo (chunks indexados, duplicados, idiomas, errores, última sync), búsqueda + filtros por estado en la lista, endpoint /stats y /reingest para reintentar items con error de un golpe. Paginación añadida al endpoint de items. (2) Tool de Unidad de Red desactivada globalmente — no aparece en el menú ni como chip activo (código intacto para reactivar). (3) Verificación de invitación al registrarse desactivada — cualquier email puede crear cuenta durante la beta.
Lo destacado
8
✨ Nuevo5
🔍Búsqueda por nombre de archivo + filtros (Todos / Errores / Duplicados / OK)
🚀Nuevo endpoint GET /api/admin/knowledge/[id]/stats con métricas completas
🚀Nuevo endpoint POST /api/admin/knowledge/[id]/reingest (scope: errors/duplicates/all)
📄Paginación en /api/admin/knowledge/[id]/items (limit, offset, q, status, duplicates filters)
🔓Register sin verificación: check-invitation comentado — cualquier email entra directo
🐛 Arreglado2
📊KnowledgeManagement: panel de stats (4 tiles + idiomas + última sync + tasa de error)
♻️Botón "Reintentar errores" reingiere automáticamente los items con sync_status=error
🔒 Seguridad1
🚫Tool Network Drive desactivada en ChatInput (effectiveToolPermissions.networkDriveRag → false)
🛠️ Fix textareas: strings sin espacios desbordaban el input
15 de mayo de 2026
Strings largos sin espacios (ej. "fffffff...") rompían los textareas porque CSS por defecto no parte palabras a mitad. Resultado: el texto se extendía fuera del input visualmente. Fix: añadidas reglas break-words + [overflow-wrap:anywhere] en chat input (mobile + desktop), modales de carpeta (crear + ajustes) y plantillas.
Lo destacado
5
✨ Nuevo5
🛠️ChatInput (chat principal + welcome) — break-words + overflow-wrap:anywhere
🛠️CreateFolderModal — textarea de indicaciones con word-break
🛠️FolderSettingsModal — textareas de indicaciones del sistema y descripción de plantilla
✅Strings tipo "ffffff...." ahora se parten en cualquier carácter, no desbordan
✅assetlinks.json (v8.33.19): añadida huella SHA-256 de Play App Signing (Google) junto a la upload key
🎵 Spotify: bug crítico — playlist mezclaba canciones de otros artistas
15 de mayo de 2026
Bug crítico de Spotify: al pedir "playlist de Michael Jackson" aparecían canciones de OTROS artistas para completar el número pedido. El código tenía un padding-with-allTracks que rellenaba con resultados generales cuando el filtro de artista no llegaba al count solicitado. Fix: cuando hay filtro de artista, NUNCA rellenar con tracks de otros — mejor devolver menos canciones correctas que el número exacto mezclado. Diagnóstico previo: Spotify deprecó /artists/{id}/top-tracks y /albums en nov 2024 (403/429). Estrategia actualizada usa /search?type=album + /albums/{id}/tracks.
Lo destacado
7
✨ Nuevo6
🎵Si pides 20 canciones de MJ y solo hay 9 únicas, recibes 9 correctas (no 20 mezcladas)
🛠️Nuevo endpoint admin /api/admin/spotify-test para diagnóstico (con debug bypass temporal)
🛠️Acumulación de errores en globalThis.__spotifyDebugErr para depurar Spotify API
📌Diagnosticado: /artists/{id}/top-tracks devuelve 403 desde nov 2024 (Spotify API policy)
Bug diagnosticado: search?q=artist:"X" devolvía mayoritariamente los mismos hits repetidos como remasters/lives. Dedup por nombre reducía 250 candidatos a ~9 únicos. Intentamos pivotar a /artists/{id}/top-tracks + /artists/{id}/albums pero descubrimos que están deprecados desde nov 2024 (403/429). Endpoint debug admin añadido.
🌐 Landing rehecha con datos reales (sin precios inventados)
14 de mayo de 2026
Las páginas de /landing tenían precios inventados (€19/€49) y certificaciones que no existen (SOC2 inflado). Reescritas con datos honestos: el producto está en beta abierta, 100% gratis, sin Stripe. Features listadas son las que están realmente cableadas en el código. Aesthetic upgrade general: bento grid, mejor tipografía, mejor hero, modelos reales, integraciones reales.
Lo destacado
11
✨ Nuevo7
💸Pricing: una sola card "€0 gratis durante la beta" + roadmap honesto de planes futuros
🚫Eliminados los planes €19/€49 ficticios (no hay Stripe ni billing)
✅Features solo reales: 14 tools cableadas (web search, RAG, código, imagen, vídeo, voz, BD, OCR, etc.)
✅Integraciones solo reales: Gmail, Outlook, Drive, OneDrive, Calendar, Spotify, GitHub, Monday
✅Modelos reales: GPT-5/4o, Claude 4.7, Gemini 2, Mistral, Llama, DeepSeek
🛡️Security: "honestos sobre lo que protegemos" — GDPR sí, SOC2 todavía no, sin inflar
📖About: manifesto auténtico + principios reales + sin VC
💎 Mejorado4
🎨Bento grid de features con tamaños mixtos (más visual)
🎨Hero más grande (88px), badge "Beta abierta" en emerald
🎨Chat mock con tools chips reales y modelo Claude 4.7
🎨Background orbs + grid sutil + máscaras radiales en todas las páginas
🎵 Spotify devuelve N pedidas · 🎨 /logos x3 tabs · 📂 carpetas recuerdan estado
14 de mayo de 2026
Cuatro mejoras: (1) Spotify ya entrega el número exacto de canciones pedidas — antes pedir 20 a veces devolvía 10 porque dedup por nombre y filtro de artista eran demasiado agresivos. (2) /logos ahora tiene 3 tabs: "Con texto" (38 lockups), "Solo icono" (38 símbolos), "Con movimiento" (12 logos animados con SMIL). Las versiones anteriores se mantienen — todo coexiste. (3) Las carpetas del sidebar recuerdan si estaban colapsadas al recargar la página. (4) Versión 8.33.15.
Lo destacado
7
✨ Nuevo3
🎵Spotify: 3 → 5 páginas (250 candidatos), padding con allTracks cuando artista no llega al needed
🎵Si pides 20 canciones, ahora recibes 20 (siempre que existan en Spotify)
📂Sidebar: carpetas colapsadas persisten en localStorage ("garbotgpt:sidebar:collapsedFolders")
💎 Mejorado4
🎨/logos: 3 tabs activos — Con texto / Solo icono / Con movimiento
🎨38 lockups con texto (14 designer + 24 playful — no se borró nada)
Tres mejoras: (1) Arreglado el bug donde al activar una herramienta el textarea del chat se reducía a 44px y el texto se renderizaba 1 char por línea — el wrapper no tenía grid-column asignado. (2) Nueva landing pública en /landing con 5 subpáginas (inicio, funciones, precios, seguridad, sobre, contacto), no aplicada como home. (3) Spotify: regex sustituido por clasificador LLM (gpt-4o-mini) que entiende cualquier fraseología.
Lo destacado
10
✨ Nuevo8
🌐/landing — landing page enterprise con hero, stats, features grid, integrations, testimonial, CTA
🌐/landing/features — 12 funciones detalladas con bullets
🌐/landing/security — 6 pilares + tabla de compliance (GDPR, SOC2, ISO27001…)
🌐/landing/about — historia, principios, equipo
🌐/landing/contact — form decorativo + datos de contacto
🎵Spotify intent ahora por LLM (gpt-4o-mini): entiende "ponme algo para correr", "necesito música chill", etc., sin necesidad de palabras clave específicas
🎵Coste por clasificación: <$0.00003 — despreciable
🐛 Arreglado2
🛠️Fix textarea desktop: wrapper "composer-textarea-wrap" con grid-column 1/-1 correcto
🎨 Logos nivel diseñador (rediseño completo /logos)
14 de mayo de 2026
Galería /logos rehecha con criterio "designer brand brief": 14 lockups con texto + 14 símbolos sin texto. Paletas curadas (un solo acento por logo), tipografía con contraste de pesos y kerning ceñido, conceptos legibles (monogramas G, brackets dev, slash divider, two-tone, italic editorial, glitch, single-stroke, soundwave, …). Cards con crop marks decorativos para estética de diseño.
Lo destacado
5
💎 Mejorado5
🎨14 nuevos lockups con texto (540×180): monogram G, period signature, italic editorial, hex token, typing dots, two-tone divider, brackets wrap, underline arc, GB monograma, slash, outline, version badge, orb, dot-matrix
Tres mejoras: (1) La detección de intent de Spotify ahora cubre muchas más formas de pedir crear una playlist (haz/arma/monta sin "me", patrón "playlist con N canciones de X" sin verbo, etc.), antes fallaba con frases comunes. (2) Página de mantenimiento totalmente rediseñada: mesh gradient animado, timeline de progreso, reloj en vivo, polling automático, subscribe email, status cards. (3) /logos ahora tiene tabs: "Con texto" (24 wordmarks) y "Solo icono" (24 símbolos sin texto, perfectos para favicon, app icon, redes sociales).
🔧 Fixes mantenimiento: /garmantenimiento + URL real + versión visible
14 de mayo de 2026
Tres fixes al sistema de mantenimiento de v8.33.10: (1) /garmantenimiento rechazaba a admins legítimos porque la query SELECT incluía columna inexistente `email` en profiles → role=null → acceso restringido. (2) Header (chat + mobile) seguía mostrando v8.33.7, ahora muestra v8.33.11. (3) El middleware redirigía con cambio de URL a /maintenance; ahora hace REWRITE (la URL del navegador no cambia, el usuario sigue viendo el dominio normal).
Lo destacado
5
✨ Nuevo3
🛠️Nueva versión visible discreta en la página de login
🌐Mantenimiento ya NO cambia la URL: rewrite interno en lugar de redirect
El usuario en /chat sigue viendo "/chat" en la barra pero ve la página de mantenimiento
🐛 Arreglado2
🛠️Fix: /garmantenimiento accesible para admins (eliminada referencia a profiles.email inexistente)
🛠️Fix: APP_VERSION bumped a 8.33.11 en chat/Header.tsx y mobile/MobileHeader.tsx
🔧 Modo mantenimiento global + conocimientos privados + Unidades de Red desactivadas
14 de mayo de 2026
Nuevo modo mantenimiento controlable desde /admin → Mantenimiento (o vía bypass /garmantenimiento). Cuando está activo, todos los usuarios ven /maintenance (página pro con aurora + estado en vivo) y /api/* devuelven 503; solo /garmantenimiento sigue accesible para el admin. Nueva opción "🔒 Solo yo (privado)" en conocimientos: marcadas así, solo las ve y usa su creador. La pestaña "Unidades de Red" se oculta del panel (código intacto).
Lo destacado
7
✨ Nuevo4
🛠️Pestaña /admin → Mantenimiento con toggle ON/OFF + mensaje personalizable
🔑URL secreta /garmantenimiento como bypass para reactivar el sitio
🛡️Middleware redirige todo a /maintenance excepto bypass + /api/admin/maintenance + /api/auth
🚫Pestaña Unidades de Red oculta del menú (código backend intacto)
💎 Mejorado1
🎨Página /maintenance con aurora, status pills y CTA — diseño profesional dark mode
🐛 Arreglado1
🚫APIs durante mantenimiento devuelven 503 con { error: "MAINTENANCE_MODE" } en lugar de redirect
🔒 Seguridad1
🔒Conocimientos privados: checkbox "Solo yo" + filtro en API admin y pública
📤 Subidas de conocimiento en segundo plano + galería /logos
14 de mayo de 2026
Las subidas de archivos al panel de conocimientos ahora viven en un store Zustand global, así que sobreviven a cambios de pestaña sin abortar ni perder el progreso. Un widget flotante muestra el avance desde cualquier sección de /admin. Además, nueva página /logos con 24 logos vectoriales descargables para elegir la identidad del producto.
Lo destacado
6
✨ Nuevo4
🧠Store global useUploadQueueStore: la cola y el bucle de subida viven fuera del componente
⏯️Cambiar de pestaña (Modelos, Usuarios, etc.) ya NO interrumpe ni pierde uploads en curso
🛰️Widget flotante UploadProgressWidget en /admin: progreso por colección, expand/colapsar, descartar
🧹Botón "Limpiar" para descartar uploads completados (solo aparece cuando no hay activos)
💎 Mejorado2
🎨Nueva página /logos con 24 variantes de logo SVG (descargables + copiables al portapapeles)
Generado el proyecto Android TWA (Trusted Web Activity) completo y compilado el AAB firmado para subir a Google Play Store. Bypass de los prompts interactivos de bubblewrap CLI mediante script programático que usa @bubblewrap/core directamente. Keystore creado, SHA-256 fingerprint añadido a /.well-known/assetlinks.json.
Lo destacado
6
✨ Nuevo6
📦scripts/generate-twa.cjs: generador programático del proyecto Android (bypassa prompts CLI)
🔧 Fix middleware bloqueaba /manifest.json y /.well-known/ + arranque TWA
14 de mayo de 2026
El middleware redirigía /manifest.json y /.well-known/assetlinks.json a /auth/login para usuarios no autenticados, rompiendo Lighthouse, PWA install y la verificación Digital Asset Links que necesita la app Android (TWA). Matcher actualizado para excluir todas las rutas estáticas críticas. Setup inicial TWA en marcha (Bubblewrap CLI + JDK 17 + Android SDK instalados).
Lo destacado
6
✨ Nuevo4
📦public/.well-known/assetlinks.json placeholder (se rellenará con sha256 del keystore Android)
📱android-twa/ añadido a .gitignore (proyecto Android local, keystore privado no debe commitearse)
🎨 Nuevo logo "GarBotGPT" wordmark + Video como "Próximamente"
14 de mayo de 2026
Logo actualizado al nuevo diseño "NewLogoV2.png" (wordmark "GarBotGPT" con gradient en la "o", fondo transparente). Regenerados todos los assets PNG: logo, mark, square, favicons (16/32/96), apple-touch-icon, android-chrome 192/512. La feature de Video Generation se marca temporalmente como "Próximamente" (toggle visible pero deshabilitado con badge).
Lo destacado
9
✨ Nuevo7
🛠️scripts/generate-logo.cjs reescrito: ahora consume NewLogoV2.png en lugar de generar el G monogram con canvas
📦Regenerados todos los assets: logo.png/transparent/mark/mark-transparent/square + 6 favicons
🎬Video Generation toggle marcado como "Próximamente":
- Visible en menú pero disabled + opacity-50 + cursor-not-allowed
- Badge gradient violet→amber "Próximamente"
- tooltip "Próximamente disponible" al hover
- Pipeline backend completa (queda solo conectar RUNWAY_API_KEY cuando esté listo)
💎 Mejorado2
🎨NewLogoV2.png como nueva fuente (wordmark transparent 1254×1254)
🎯Favicons pequeños (≤48px): crop centrado al 55% para enfatizar la gradient "o" (mejor reconocimiento)
Cambios detallados15 · 2
Logo / assets visuales
11
NewLogoV2.png en raíz como source canónica del logo
public/logo.png (512×512 transparent) — wordmark
public/logo-transparent.png — alias
public/logo-square.png (1024 hi-res)
public/logo-mark.png (512 con fondo blanco)
public/logo-mark-transparent.png
public/favicon-{16,32,96}.png (transparent, crop al 55% para tamaños chicos)
Feature 5/7 del roadmap. Nueva tool de generación de video usando Runway Gen-3 (text-to-video, 5-10s, 16:9/9:16/1:1). Toggle en el menú del ChatInput debajo de "Generar Imagen". El video se renderiza embebido en una card con descarga + abrir + estados loading/error.
📌 Web Capture — Chrome extension + endpoint /api/capture
14 de mayo de 2026
Feature 4/7 del roadmap. Extensión de Chrome (Manifest V3) que envía cualquier página web o selección de texto a GarBotGPT con un click derecho. Crea una conversación nueva con el contenido capturado pre-cargado como primer mensaje del usuario.
Lo destacado
7
✨ Nuevo5
📦Nueva carpeta chrome-extension/ con la extensión completa
✨ Smart Suggestions v2 — sugerencias proactivas con anti-spam
14 de mayo de 2026
Feature 3/7 del roadmap. La WelcomeScreen ahora muestra 2-3 cards con sugerencias proactivas generadas por LLM basándose en el historial reciente del usuario (últimos 7 días). Click → crea conversación nueva con el prompt pre-cargado.
Lo destacado
8
✨ Nuevo5
🧠Backend lee conversaciones recientes (últimos 7 días, hasta 12 convs) y resume con últimos mensajes user/assistant
❌Anti-spam: dismissal persistido en localStorage por hash
😴Fatigue: 2 dismissals/día → silencio total las próximas 24h
👁️Skip si está en streaming (no distraer mid-respuesta)
📝Draft pickup: click envía el prompt al ChatInput vía sessionStorage
💎 Mejorado3
⚡LLM gpt-4o-mini genera 2-3 sugerencias variadas (continuar, revisar, crear)
💾Cache 24h por usuario en memoria → 1 LLM call/día máximo (coste controlado)
🎨Cards bonitas en grid 2-col con icono sparkle + título + razón
Cambios detallados13 · 4
Nuevo: src/lib/server/proactive-suggestions.ts
4
loadRecentConversations: query convs activas + sus últimos 2 user messages + 1 assistant
buildUserPrompt: estructura el contexto temporal con fechas
callLlm: gpt-4o-mini con response_format JSON estricto, parsea + valida
Cache in-memory Map per-user, TTL 24h
Nuevo: src/app/api/suggestions/proactive/route.ts
2
GET endpoint, query param ?force=1 para saltar cache (debug)
Pantalla de bienvenida con logo + animaciones suaves en cold-start (una vez por sesión). Plus fix del quirk de iOS donde añadir la PWA desde /auth/login dejaba al user atascado en login — ahora si hay sesión activa, redirige a /chat automáticamente.
Feature 2/7 del roadmap. Crea plantillas con nombre + icono + system prompt + modelo + tools por defecto + starter prompts. Aparecen en la sección "Mis GPTs" del sidebar. Activar un GPT crea una conversación nueva con su config aplicada automáticamente (system prompt inyectado, tools forzados, modelo preseleccionado).
Lo destacado
9
✨ Nuevo7
🆕Columna `conversations.active_gpt_id` (FK con ON DELETE SET NULL)
🔌API: GET /api/gpts, POST /api/gpts, PATCH /api/gpts/[id], DELETE /api/gpts/[id]
💾Zustand store `useCustomGptsStore` con CRUD + modal state
📋Sidebar: sección "Mis GPTs" con icon + nombre, botón "+", edit on hover
⚡ Slash commands inline (/) — comandos rápidos en el ChatInput
14 de mayo de 2026
Al escribir "/" al inicio del input aparece un menú flotante con comandos rápidos (summarize, explain, improve, translate, code, clear, help). Navegación con ↑↓ + Enter o Tab. Cada comando construye un prompt inteligente y lo envía automaticamente al chat. Feature #1 del roadmap v8.33.x.
Lo destacado
8
✨ Nuevo6
🔍Filtrado por substring: "/sum" deja solo /summarize
⌨️Keyboard nav: ↑↓ navegar, Enter o Tab para seleccionar, Esc salir
🎯Dark mode + accent violet, accesible
📝/help muestra toast con la lista completa
🚫Enter normal NO envía "/comando" crudo — el menú lo intercepta
🌐 Migración de dominio: gia.gesem.es → ai.garbotgpt.com
14 de mayo de 2026
Actualizadas todas las referencias hardcodeadas al dominio antiguo (gia.gesem.es y gia.fgarola.es) por el nuevo ai.garbotgpt.com. Esto afecta los fallback URLs cuando faltan los env vars de producción: OAuth redirects (Google, Microsoft, Spotify, GitHub, Monday), invite emails de registro, auth callbacks. El comportamiento normal sigue priorizando NEXT_PUBLIC_APP_URL / NEXT_PUBLIC_SITE_URL si están definidos.
🎨 Logo v2 super pro + PNG transparente + suite favicon completa
13 de mayo de 2026
Rediseño mayor del logo: gradiente iridiscente 5-stop (purple → violet → magenta → coral → ámbar), G refinada con sparkle accent estilo Gemini/Claude, depth real con inner shadow + highlight cenital, y suite completa de assets: 5 variantes de logo + 7 favicons regenerados. Manifest actualizado a marca GarBotGPT (antes seguía con "GIA").
🐛 Fix: Network RAG ya no se auto-activa por menciones del assistant
13 de mayo de 2026
Cuando un turno previo (sobre todo Deep Research) mencionaba archivos de red en su respuesta (ej: Manual_Interno_GESEM.txt), el SIGUIENTE turno corto del usuario auto-activaba network_drive_rag aunque el usuario no lo hubiera pedido. La intención de consultar la unidad de red debe venir de lo que el usuario escribió, no de lo que el assistant mencionó en respuestas anteriores.
Lo destacado
6
✨ Nuevo5
🚫extractRecentNetworkFileReferences ahora solo escanea mensajes del usuario
🗑️Eliminado el boost x1.5 para mensajes del assistant (era el responsable principal)
✅Si el usuario escribe "consulta el Manual_X.pdf" → network RAG se activa correctamente
✅Si el assistant menciona "Manual_X.pdf" en su respuesta → NO contamina el siguiente turno
🧪Typecheck verde
💎 Mejorado1
📝Nota: web_search y deep_research badges siguen siendo "sticky" (persisten entre turnos por diseño). Si no quieres usarlos en un turno, desactivalos manualmente en el menú.
🎨 Logo nuevo nivel diseñador: app-icon G monogram + wordmark
13 de mayo de 2026
Logo completamente rediseñado para GarBotGPT. Reemplaza el wordmark plano "garbotgpt" por una composición premium: app-icon rounded square (estilo iOS, radius 22.5%) con gradiente indigo→magenta→ámbar, "G" custom blanca con stroke geométrico (arc abierto + crossbar) dentro del mark, drop shadow suave para elevación, highlight cenital sutil, y wordmark "GarBotGPT" debajo en Inter Semibold con letter-spacing optical.
Lo destacado
7
✨ Nuevo6
📱App-icon mark estilo iOS premium (rounded square 22.5% radius)
🎨 Logo nuevo: "garbotgpt" con la estética del antiguo "gia"
13 de mayo de 2026
Reemplazado el logo "gia" antiguo por uno nuevo de "GarBotGPT" manteniendo exactamente la misma estética visual: charcoal lowercase bold + dot icónico con gradiente magenta→naranja. El nombre se distribuye en 2 líneas ("garbot" / "gpt") para preservar la compacidad del square format, y el dot del acento se coloca sobre la "o" central de "garbot" como homenaje al dot del "i" del logo original.
Lo destacado
6
✨ Nuevo4
✨Misma tipografía: Arial Black 900, letter-spacing apretado
🔘Dot iconico sobre la "o" de "garbot" — posición calculada midiendo el ancho del texto
📄SVG fuente en public/logo.svg para futuras ediciones manuales
🛠️scripts/generate-logo.cjs reproducible — regeneración con `node scripts/generate-logo.cjs`
💎 Mejorado2
🎨Logo PNG 512×512 generado vía script con node-canvas
✨ Sources estilo OpenWebUI + 2 bugs (mobile selector + auto-model al editar)
13 de mayo de 2026
Reemplazada la lista plana de chips de fuentes al final de cada mensaje del assistant por una card colapsable estilo OpenWebUI: pill con favicons apilados + contador, click para expandir la lista numerada con cada fuente clicable. Plus 2 bugfixes: (1) los modelos Ollama no se mostraban como seleccionados al clicarlos en el selector móvil, y (2) al editar un mensaje, la badge del modelo mostraba el predefinido en lugar del auto-elegido por el auto-router.
Lo destacado
7
✨ Nuevo4
🔗SourcesPanel: pill colapsable con stack de 3 favicons + "N fuentes" + chevron
📜Expandido: lista numerada con [1] [2] [3]… cada fuente clicable (web → URL, RAG → file preview, network → download inline)
🎨Inspirado en Citations.svelte de OpenWebUI (favicons overlapping + accent color por tipo de fuente)
🐛 Arreglado2
🐛Fix mobile selector: comparación isSelected extendida a m.id || m.config_id || m.provider_model_id (como ya hacía MobileHeader). Ollama models ahora muestran check al seleccionarlos.
🐛Fix auto-model al editar: persistir publicModelId (modelo realmente usado tras auto-routing) en lugar del model crudo del body. La badge del mensaje regenerado ahora refleja el modelo auto-elegido.
Cambios detallados12 · 4
Nuevo: src/components/chat/SourcesPanel.tsx
6
Dedupe automático por (kind + key) — RAG dupes del mismo file_id se consolidan
Web → favicon de google.s2 + abre en pestaña nueva con noopener
🐛 Fix bugs al editar mensaje: PDFs de red fantasma + respuesta solapada
13 de mayo de 2026
Dos bugs al editar un mensaje ya enviado: (1) reaparecían los PDFs de unidad de red como fuentes (mismo bug que arreglamos en v8.31.8 pero por otro path no cubierto). (2) Solapamiento — la respuesta vieja del assistant reaparecía sobre el chat mientras la nueva se generaba, especialmente notable con web search por su mayor latencia. El bug afectaba a TODAS las herramientas y al modo sin herramientas — web search solo lo hacía más visible por el tiempo extra.
Lo destacado
5
✨ Nuevo3
👁️Mensaje solapado: poll de 15s en ChatArea pisaba el stream local con la versión vieja de la DB
🎯Causa raíz: durante un regenerate, el server actualiza el assistant message AL FINAL del stream, no durante. Cualquier loadMessages mientras streamea trae la versión vieja.
🧪Typecheck verde
💎 Mejorado1
⚡Mismo fix para el fast-sync de 250ms en conversaciones compartidas
🐛 Arreglado1
🚫Network drive: 2 puntos de auto-enable adicionales fixed (line 2342, 2347 de route.ts) que NO respetaban regenerate_message_id
Cambios detallados4 · 2
src/app/api/chat/route.ts
2
Línea 2332: `if (!regenerate_message_id && ...)` añadido al guard que escaneaba conversación histórica buscando refs a PDFs.
Línea 2352: `if (!regenerate_message_id && ...)` añadido al forced-enable basado en `effectiveExplicitFileReferences`.
src/components/chat/ChatArea.tsx
2
Poll de 15s (5s si hay task pendiente): si isStreaming && streamingConversationId === activeConversationId → skip refetch.
Fast-sync de 250ms (cuando hay foreign user awaiting assistant): mismo guard.
🔬 Deep Research reconstruido — multi-step plan-visible (MVP)
13 de mayo de 2026
Paso 2/2 de la reconstrucción de Deep Research. Nueva arquitectura: planner (LLM barato genera 3-5 sub-preguntas) → searcher (Tavily en paralelo) → scraper (fetchPageContent extrae texto) → synthesizer (inyecta fuentes citables [1][2] en el systemPrompt). El plan + fuentes consultadas se renderizan en una card colapsable encima de la respuesta.
🧨 Deep Research desmantelado (paso 1 de la reconstrucción)
13 de mayo de 2026
Paso 1/2: eliminado todo el pipeline antiguo de Deep Research (planificación con sub-preguntas, cache, evidence matrix, SSE de progreso, componentes de UI). El toggle del menú sigue visible pero ahora actúa como un "Web Search extendido". En v8.32 se reconstruye con arquitectura multi-step plan-visible (planner → sub-queries → scrape → synthesize → citations) que ya quedó decidida.
🐛 Fix: PDFs de red fantasma + mensaje desaparece en Web Search
13 de mayo de 2026
Dos bugs arreglados: (1) la IA inyectaba PDFs de unidad de red como fuentes en respuestas que NO los pedían (ej: "hazme una imagen de Barcelona" → adjuntaba 01-26-FerranGarola.pdf, 02-25-FerranGarola.pdf). (2) Al enviar mensaje desde Welcome con Búsqueda Web activa, el mensaje del usuario desaparecía durante varios segundos antes de que la IA respondiera.
Lo destacado
5
✨ Nuevo4
🚫Eliminado el auto-enable global de network_drive_rag (cualquier mensaje con 3+ palabras lo activaba si el user tenía drives sincronizados)
🎯Ahora network_drive_rag respeta solo el flag explícito del cliente (el client ya hace intent detection via hasNetworkDriveIntent)
👁️Optimistic user message se preserva al cambiar de activeConversation si pertenece a la nueva conv
🧪Typecheck verde
💎 Mejorado1
⏱️Especialmente notable en web search por su latencia mayor — antes se veía un gap visual de 5-15s
Cambios detallados5 · 2
src/app/api/chat/route.ts (líneas ~1717-1741)
2
Eliminado el bloque que auto-activaba effectiveNetworkDriveRag basándose en hasInput + 3+ palabras + drives sincronizados.
Reemplazado por un comentario explicativo. El client (ChatInput.handleSend, WelcomeScreen.handleSend) ya hace hasNetworkDriveIntent() y solo manda network_drive_rag=true cuando la frase realmente sugiere consultar la red.
src/store/chat-store.ts (setActiveConversation)
3
Antes: `messages: []` borraba TODO al activar una nueva conversación.
Ahora: preserva los mensajes optimistic_local que pertenecen a la nueva conv (filtrados con isOptimisticLocalMessage).
mergeServerMessagesWithOptimistic + dedupeMessagesByContentWindow ya manejan los duplicados cuando el servidor responde con la versión persistida.
Bloque CSS @media (max-width: 520px) y un fallback (max-width: 360px) que reescriben la card del reproductor para pantallas pequeñas: cover centrada, controles touch-friendly (≥44px), waveform compacto, crossfade oculto, descripción y greeting ocultos, playlist con filas reducidas y scroll corto.
Lo destacado
9
✨ Nuevo8
🎯Cover centrada con max-width 230px (200px en ≤360px)
👆Botón play 64px + secundarios 44px — todos los tap targets ≥44px
🎚️Crossfade oculto en móvil (poco usado, libera espacio)
🚫Sin parallax 3D en touch — evita ángulos raros con tap-drag
🔍Botón fullscreen del cover siempre visible (no hay hover)
📜Playlist max-height 320px (260px en ≤360px), filas 38px
🔇Descripción y greeting del footer ocultos (recuperan vertical)
〰️Waveform 44px (vs 56px desktop) con padding tap-area 12px
💎 Mejorado1
🎨Topbar minimalista: sin source-tag, sin subtitle del brand
Cambios detallados3 · 1
src/components/chat/MusicPlayer.tsx
3
Nuevo bloque @media (max-width: 520px) con ~60 reglas mobile.
Bloque adicional @media (max-width: 360px) para ultra-narrow.
🎤 +14 canciones Suno de Ferran Garola en el music player
13 de mayo de 2026
Añadidas las 14 pistas de la playlist Suno (ad3cf70f-…) de Ferran Garola al DEFAULT_PLAYLIST. Los MP3 se sirven directamente desde cdn1.suno.ai con CORS abierto.
Lo destacado
7
✨ Nuevo7
🎵Rumba de Verano, Baila Hasta el Sol, Ella No Dice Nada
🎵La Chica del Club, Silencio de Verano, Qué Nos Está Pasando
🎵Corazón Traicionero, Fiesta Portuguesa, Costa Dorada
🎵No pares de Bailar, A ti, Corazón Partido
🎵Vem Encosta Devagar, Qué Está Pasando
🌐URLs verificadas (200 OK + Access-Control-Allow-Origin: *)
🎶 Music player: arreglado el corte a 7s + waveform mucho mas vivo
13 de mayo de 2026
Bug crítico: el reproductor se detenía a los ~7 segundos. Causa: el useEffect de MusicPlayer dependía de `initialPlaylist`, cuya referencia cambia cada vez que el padre (MessageBubble) re-renderiza tras refrescar el mensaje del stream — la cleanup ejecutaba audio.pause() + audio.src = "". Ahora el efecto depende solo de `playerId` (message.id es estable). Además, la waveform ahora baila con todas las barras y múltiples frecuencias superpuestas (rápida + lenta + flicker) para parecerse a audio real.
🎵 Reproductor de música ahora aparece como chip activo
13 de mayo de 2026
Al activar la herramienta "Reproductor de música" desde el menú del ChatInput, ya aparece su chip rosa en el composer y se cuenta en el badge "N actives". Antes el toggle se marcaba con check pero no se reflejaba ni en la cuenta ni en los chips visibles.
Lo destacado
4
✨ Nuevo3
🎵musicPlayer añadido al array activeToolsCount
🩷Chip rosa con icono <Music> y botón X para desactivar
🧹setMusicPlayer(false) añadido a clearActiveTools
💎 Mejorado1
✅Sin cambios de comportamiento del propio reproductor — solo UI
📎 Cite mode siempre activo + toggle eliminado del Header
13 de mayo de 2026
El botón de "Citar fuentes" (icono Quote) se ha eliminado del Header. citeMode queda activo por defecto (su default ya era true en el store) — las respuestas con RAG citan siempre las fuentes recuperadas sin que el usuario tenga que activarlo manualmente.
Lo destacado
4
✨ Nuevo4
🗑️Botón Quote eliminado del Header
✅citeMode default sigue siendo true (siempre cita fuentes)
🧹Removido citeMode/setCiteMode del destructuring de useChatStore
📚 RAG siempre activo + toggle eliminado del Header
13 de mayo de 2026
El sistema RAG ahora está activado por defecto en modo "assisted" y el toggle de RAG (off/assisted/strict) se ha eliminado del Header del chat. El botón de "citar fuentes" sigue visible para alternar citaciones.
WelcomeScreen ahora muestra 7 toggles de herramientas en móvil (web, deep, red, doc, imagen, BD, excel) en lugar de 4, con badge contador de herramientas activas y filtrado por permisos del admin. Rebrand completo: todas las menciones de "GIA" se han renombrado a "GarBotGPT" (124 reemplazos en 52 archivos), preservando los IDs de modelo GIA-5.2 etc.
🎆 Petardos del Barça + modal infinito + banner abajo
11 de mayo de 2026
Sistema de cohetes/petardos que suben desde abajo y explotan en lluvia de chispas. El modal de celebración ya NO se cierra solo — espera a que el usuario clique fuera de la tarjeta. Banner residual movido a la esquina inferior derecha. Burst de confeti programado cada 4.5s mientras dure el modal.
Lo destacado
8
✨ Nuevo7
🚀Cohetes/petardos que salen disparados desde el suelo hacia arriba
💥Cada cohete explota en 36-52 chispas radiales heredando su color
✨Trail de 12 puntos con fade-out por cada cohete
🌧️Lanzamiento cada 280-420ms (con 45% de doble lanzamiento)
🚫Modal SIN auto-cierre — usuario controla cuándo cerrar
🎉Burst extra programado cada 4.5s para celebración infinita
👇Banner residual movido de top-right a bottom-right
💎 Mejorado1
🎨Cabeza brillante del cohete con shadow blur 14px
Cambios detallados12 · 2
Fireworks engine
7
Nuevo tipo Rocket con x/y/vx/vy/color/trail/exploded.
createRocket() spawns a posición x random 10%-90%, vy -11 a -16 (sube fuerte).
Gravedad 0.18 px/frame² aplicada → decelera la subida hasta vy >= -0.5.
Al peak (vy >= -0.5 o y < 18% altura) → explosión: 36-52 partículas radiales con createParticle(originX, originY, intensity 1.3).
Color de explosión: 70% del color del cohete, 30% de la paleta general.
Trail: array de últimas 12 posiciones con alpha decay 0.85 por frame.
Cabeza del cohete: círculo blanco interior + círculo de color exterior + shadowBlur 14 px.
UX cambios
5
closeModal() ya NO se llama por timer. Solo al click en overlay.
Banner residual bajado a bottom: 20px, right: 20px (móvil 12/12).
Slide animation invertida: ahora entra desde abajo.
Tip del modal actualizado: "Toca fuera de la tarjeta para cerrar".
Rediseño total de la celebración: escudo oficial FCB descargado de Wikipedia, intento de autoplay de "Viva la Vida" con fallback a botón dorado, 4 fases cinemáticas con flash blanco inicial, spotlights conicos rotando, senyera ondulando en BG, 30 estrellas titilando, halo dorado pulsante alrededor del escudo, título letra-por-letra con rotación 3D, count-up de 4 stats reales (28 Ligas · 5 Champions · 32 Copas · 14 Supercopas), confeti masivo con 4 formas (rect/círculo/estrella/triángulo) + multi-burst, glow rays + shimmer animation.
Lo destacado
12
✨ Nuevo12
⚽Escudo OFICIAL FC Barcelona (descargado de Wikipedia Commons)
🎵Audio "Viva la Vida" con autoplay + fallback button dorado si bloqueado
🏆 Celebració FC Barcelona campió de Liga (temporal)
08 de mayo de 2026
Componente temporal que celebra el título de Liga del FC Barcelona. Al cargar la app aparece un modal con confeti, escudo FCB animado y el lema "ÉS CAMPIONS!". Después queda un banner pequeño top-right que persiste durante la sesión. Auto-desactiva el 15 de junio de 2026.
Lo destacado
6
✨ Nuevo6
🎉Modal full-screen con backdrop blaugrana + confeti continuo (canvas)
⚽Escudo FCB dibujado en SVG desde cero (cruz Sant Jordi + senyera + bandas blaugrana + balón)
✨Título "ÉS CAMPIONS!" con gradient blanco→dorado y shine animation
🏵️Tres estrellas doradas parpadeantes + badge "🏆 Campeones de La Liga 2025-26"
📌Banner persistente top-right con pulse cada 3s, cierre 24h via localStorage
⏰Auto-expiración: desaparece después del 2026-06-15
Refactor v8.20 — Helpers de research/web/YouTube extraídos (-829 líneas)
08 de mayo de 2026
El módulo más grande del Bloque A: 40+ helpers de search, ranking, deep research, image collection, YouTube, concurrency y rerank parsing se mueven a `src/lib/server/chat/helpers/research-helpers.ts` (~960 líneas). DI eliminada en 2 tools (web-search y youtube).
Lo destacado
8
✨ Nuevo7
🔍40+ helpers extraídos a research-helpers.ts (~960 líneas)
Refactor v8.19 — Helpers de Gmail/Outlook extraídos (-652 líneas)
08 de mayo de 2026
Helpers compartidos por Gmail tool y Microsoft tool salen al módulo `gmail-helpers.ts` (~600 líneas con 14 públicos + 11 privados). DI eliminada en 2 tools.
Lo destacado
7
✨ Nuevo6
📧30+ helpers de email a gmail-helpers.ts
🔧Regex EMAIL_ADDRESS_RE y GMAIL_SEND_CONFIRMATION_RE como exports
✍️Parseo intent + edición + AI draft generation centralizados
Refactor v8.16 — Helpers de documento extraídos (-150 líneas)
08 de mayo de 2026
Primer paso del Bloque A. Helpers puros de manipulación de strings, parseo JSON, detección de tipo de archivo, parseo de números con formato europeo/americano y QuickChart URLs salen al módulo `document-helpers.ts`.
GarMusic Cinema — reproductor totalmente nuevo con waveform y color dinámico
08 de mayo de 2026
Rediseño completo desde cero con concepto editorial-cinematográfico. El album art es el héroe, el color del player se extrae del propio cover en tiempo real, la barra de progreso es un waveform de 56 barras que representa la "huella" musical de cada pista, y todo flota sobre un mesh gradient animado que también usa el color del cover.
Lo destacado
10
✨ Nuevo8
🌊Waveform de 56 barras como barra de progreso — pintada con el accent en la parte reproducida
🎬Mesh gradient animado en backdrop usando el color extraído
🪟Parallax 3D en cover (perspective 1100px, max 8°), con glow follower del ratón
📰Tipografía editorial: serif italic para labels + sans con tracking negativo en titles
Music Player — rediseño completo estética premium (Apple Music / Tidal)
08 de mayo de 2026
El reproductor GarMusic se rediseña desde cero con estética minimalista premium inspirada en Apple Music y Tidal. Fuera los gradientes saturados, el disco que gira, las ondas concéntricas y las pills de colores. En su lugar: el album cover domina la composición y su versión ampliada + desenfocada da el color al bloque entero (igual que en Spotify Now Playing). Tipografía SF Pro con jerarquía clara, controles minimalistas con SVG vectoriales, progreso ultrafino con thumb que aparece en hover, playlist tipo Spotify Desktop con número de pista que se transforma en ▶ al hover y en equalizer cuando suena.
Lo destacado
10
✨ Nuevo9
🖼️El cover ampliado y desenfocado pinta el bloque (sin gradientes hardcoded)
✨Glassmorphism real: vidrio negro 35% sobre el backdrop borroso
🎯Controles SVG vectoriales nítidos en cualquier resolución
🎵Playlist estilo Spotify Desktop: número → ▶ on hover → equalizer cuando suena
📐Tipografía SF Pro Display + tabular nums para tiempos
🌫️Progress thin (4px) que crece a 6px on hover, thumb aparece on hover
⏯️Botón Play prominente en blanco con sombra cinematográfica
🖥️Modo fullscreen renovado (cover grande + título + artist)
✅typecheck verde, build verde
💎 Mejorado1
🎨Rediseño completo: minimalista, premium, Apple Music style
Cambios detallados10 · 2
Comportamiento conservado
5
Mismo audio engine: load/play/pause/seek/crossfade
Misma persistencia localStorage por player_id
Mismos atajos teclado (Space, ←, →, Esc)
Misma búsqueda + drag & drop en la playlist
Mismo shuffle, repeat, mute, volumen, crossfade configurable
Lo que cambia
5
Layout: cover + info + controles arriba; playlist a la derecha (desktop) o debajo (mobile).
Header con marca G, eq animado cuando suena, label "Reproductor del chat".
Iconos lucide/feather en SVG en lugar de caracteres unicode.
Footer minimalista con greeting y stats de sesión.
Sin temas de color hardcoded — el color sale del album cover.
Music Player tool — reproductor GarMusic Nova en el chat
08 de mayo de 2026
Nueva tool: cuando se activa el botón "Reproductor de música" en el menú del chat (icono 🎵), o cuando el mensaje contiene URLs `.mp3`, la respuesta del asistente embebe un reproductor completo: portada con parallax 3D, playlist con búsqueda y drag&drop, controles play/prev/next/shuffle/repeat/mute, crossfade configurable, modo Now Playing en pantalla completa, atajos teclado, persistencia (índice + tiempo escuchado) en localStorage. Adaptado del plugin Open WebUI a React/TypeScript con styled-jsx para no chocar con Tailwind.
Lo destacado
7
✨ Nuevo6
🎵Tool Music Player con reproductor completo dentro de la burbuja del asistente
🪩Parallax 3D en portada · disco animado · ondas cuando suena
🎶Playlist con búsqueda + drag & drop · persistencia localStorage
Refactor v8.12 — System prompt builders extraídos a módulo puro
07 de mayo de 2026
Cinco fragmentos del system prompt salen de route.ts a un único módulo de funciones puras: `src/lib/server/chat/prompt-builders.ts`. Los fragmentos: recuerdos del usuario, instrucciones del Code Interpreter, contexto del proyecto (instrucciones + memorias + inventario), contexto de carpeta (instrucciones + memorias + inventario), y plantilla de generación de documento (xlsx/json/markdown). Sin DI — todo son funciones que toman datos y devuelven string.
Lo destacado
5
✨ Nuevo4
🧱5 system prompt builders → prompt-builders.ts
🧮67 líneas inline reemplazadas por 5 llamadas (1 línea cada una)
🪶Funciones puras — sin red, sin BD, sin mutación
✅typecheck verde, build verde
🔒 Seguridad1
🔒Comportamiento idéntico — mismos textos exactos para cada caso
El bloque Spreadsheet analysis (118 líneas: lectura xlsx con SheetJS, cálculo de stats numéricos por columna, detección de eje categórico para chart, generación de URLs QuickChart) sale a `src/lib/server/chat/tools/spreadsheet.ts`. Mantiene los límites originales: 3 archivos máx, 3 hojas por archivo, 1200 filas muestreadas, 40 columnas máx, 4 charts.
El bloque YouTube summary (50 líneas: descarga metadata + transcript de hasta 2 vídeos en paralelo, fallback a búsqueda web si la transcripción es pobre, construcción del [RESUMEN DE YOUTUBE] block del system prompt) sale a `src/lib/server/chat/tools/youtube.ts`. Status enum ok|error|skipped.
Lo destacado
4
✨ Nuevo3
🎬YouTube summary (50 líneas) → tools/youtube.ts
🧬4 helpers DI (runWithConcurrency, fetchYouTubeMetadata, fetchYouTubeTranscript, searchWeb)
✅typecheck verde, build verde
🔒 Seguridad1
🔒Comportamiento idéntico — slice 12000 chars de transcript, slice 320 de fallback sources
Continúa el strangler-pattern. El bloque OCR (72 líneas: llamada a gpt-4o-mini visión, parseo JSON con summary + full_text + document_type + language + confidence + invoice_fields, construcción del bloque [OCR ADJUNTOS] del system prompt) se mueve a `src/lib/server/chat/tools/ocr.ts`. Status enum: ok | error | skipped. Si OCR falla no bloquea la respuesta del modelo principal.
Lo destacado
4
✨ Nuevo3
👁️OCR (72 líneas) → tools/ocr.ts
📦12 líneas en route.ts en lugar de 72
✅typecheck verde, build verde
🔒 Seguridad1
🔒Comportamiento idéntico — mismo prompt JSON + mismas heurísticas
Refactor v8.8 — Google AdSense + Google Analytics extraídos (en paralelo)
07 de mayo de 2026
Continúa el strangler-pattern. Dos bloques grandes salen del monolito en una sola release: Google AdSense (172 líneas — modo summary y modo comparison hoy-vs-ayer, con métricas + dimensiones + report meta para cards) y Google Analytics GA4 (99 líneas — modo summary y modo comparison con previousDateRanges, breakdown por dimensiones). Ambos a `src/lib/server/chat/tools/google-{adsense,analytics}.ts`. Se enchufan al multi-tool parallel: AdSense + Analytics + web/db/spotify/gmail/microsoft pueden correr a la vez.
Refactor v8.7 — Microsoft 365 (Outlook + OneDrive) extraído + en paralelo
07 de mayo de 2026
Continúa el strangler-pattern del monolito. El bloque Microsoft 365 (156 líneas: lectura Outlook con focused/sender/email filters, envío Outlook con borrador + confirmación + fallback mailto, lectura de OneDrive con search) se mueve a `src/lib/server/chat/tools/microsoft.ts`. Se enchufa al multi-tool parallel: si el usuario activa Microsoft + otra integración, ahora corren en paralelo. Comparte 11 helpers de redacción de correo con Gmail (parseGmailSendIntent, generateGmailDraftIfNeeded, etc.) — siguen en route.ts y se inyectan vía DI.
Lo destacado
5
✨ Nuevo3
📨Bloque Microsoft 365 (156 líneas) extraído a tools/microsoft.ts
🧬19 helpers inyectados vía DI (11 compartidos con Gmail + Drive helpers + parseRequestedCount + extractGmailSenderName)
✅typecheck verde, build verde
💎 Mejorado1
⚡Microsoft 365 también va en paralelo con web/db/spotify/gmail
🔒 Seguridad1
🔒Comportamiento idéntico — mismo orden de aplicación al systemPrompt
Refactor v8.6 — Gmail tool extraído a su módulo (en paralelo con web/db/spotify)
07 de mayo de 2026
Continúa el strangler-pattern del monolito api/chat/route.ts: el bloque Gmail (122 líneas, lectura de bandeja + envío con borrador + fallback mailto) se mueve a `src/lib/server/chat/tools/gmail.ts` con el mismo patrón de Dependency Injection que web/db/spotify. Al extraerlo se enchufa al multi-tool parallel: cuando el usuario activa Gmail + otra tool, ahora corren en paralelo. Los helpers internos (parseGmailSendIntent, fetchGmailMessages, sendGmailMessage, etc.) siguen en route.ts y se inyectan vía context — Microsoft 365 también los usa, así que se extraerán cuando ese bloque también salga.
Lo destacado
5
✨ Nuevo3
📧Bloque Gmail (122 líneas) extraído a tools/gmail.ts
Hito importante del refactor v8.x: ahora cuando el usuario activa múltiples tools, web_search + db_query + spotify NO esperan unos a otros — corren con Promise.all() y el tiempo total es max(web, db, spotify) en lugar de sum(). Beneficio típico: respuestas con tools 2-3× más rápidas. Implementado lanzando las promises temprano (justo después de calcular los inputs) y haciendo `await thePromise` en cada call site original — el orden de aplicación al systemPrompt se mantiene exacto.
Lo destacado
5
✨ Nuevo2
⏱️Tiempo total: max(web=5s, db=2s, spotify=1s) = 5s en lugar de 8s
🛠️typecheck verde, build verde
💎 Mejorado2
⚡web_search + db_query + spotify ahora corren EN PARALELO
✅Sin cambios de comportamiento — solo optimización de timing
🔒 Seguridad1
🔒Orden del systemPrompt preservado (mismo orden de aplicación)
Cambios detallados9 · 2
route.ts cambios
6
Justo después de las var declarations (línea ~9156), lanzar las 3 promises:
Refactor: Spotify tool extraído del monolito (cambio de plan)
07 de mayo de 2026
Continúa el refactor v8.x. NetworkDriveRag y DeepResearch resultaron ser MUCHO más grandes (1800 y 400+ líneas con 30+ helpers locales) — extraerlos limpiamente requiere reorganizar también esos helpers, lo que es trabajo de varias releases. Pivotamos a integraciones más self-contained: Spotify (~100 líneas) extraído a `lib/server/chat/tools/spotify.ts` con dependency injection. typecheck verde, comportamiento idéntico.
Continúa el refactor v8.x. El bloque MÁS COMPLEJO del chat route (db_query, ~245 líneas con SQL gen via gpt-4o-mini, fallback automático a SELECT * FROM tabla, schema inventario, telemetría) ahora vive en `lib/server/chat/tools/db-query.ts` con `runDbQueryTool(ctx) → result`. Helpers (selectDbConnectionForPrompt, sanitizeMarkdownCell, wantsDbSchemaListing, etc.) siguen en route.ts y se inyectan vía context. typecheck verde, build verde, comportamiento idéntico.
Continúa el refactor v8.x. El bloque inline de 75 líneas del RAG (project scope, match_file_chunks + fallback threshold + file_contents persistidos + citation tracking) ahora vive en `lib/server/chat/tools/rag-search.ts` con `runRagSearchTool(ctx) → result`. tool-timeline movido al inicio del handler para estar en scope de todos los tools. typecheck verde, build verde.
Refactor: web_search extraído del monolito chat route
07 de mayo de 2026
Continúa el refactor v8.x. El bloque inline de 80 líneas de web_search ahora vive en `lib/server/chat/tools/web-search.ts` con interfaz pura `runWebSearchTool(ctx) → result`. Los helpers (rankWebSources, collectDeepResearchImages) siguen en route.ts y se inyectan vía context — esto permite extraer la orquestación sin romper nada (otras 500 líneas de helpers se moverán en v8.x posteriores). Sin cambios funcionales, typecheck verde, build verde, comportamiento idéntico.
Refactor del chat route — fundación para sacar el monolito de 12k líneas
07 de mayo de 2026
src/app/api/chat/route.ts tiene 12.356 líneas: 14 tool blocks, RAG, memorias, live runs, persistencia, providers... todo en un solo archivo. Esto bloquea multi-tool parallel real, streaming progressive y tests E2E. v8.0.0 establece la fundación: estructura `src/lib/server/chat/tools/`, README con roadmap completo de extracción tool-por-tool, y primera pieza extraída como prueba del patrón (`tool-timeline.ts`). Las siguientes 11 releases (v8.1 → v8.11) sacan tools una a una con tests, hasta llegar a multi-tool parallel REAL en v8.8 y streaming progressive en v8.9.
Lo destacado
7
✨ Nuevo7
🏗️Bump a v8.x.0 marca el inicio del refactor mayor del chat route.
📁Estructura nueva: src/lib/server/chat/tools/ con README arquitectónico.
🧱Primera extracción: createToolTimeline() ahora vive en tool-timeline.ts (era inline en route.ts).
📋Roadmap claro de 11 releases siguientes con scope concreto y líneas estimadas.
✅Sin cambios funcionales — el comportamiento del chat es idéntico.
UI agentes IA del canal + Tool timeline visible durante respuesta
07 de mayo de 2026
Cierre de los items pendientes de v7.41. Modal completo de gestión de agentes IA del canal accesible desde un botón "Agentes" en el header (gradient violet→fuchsia). Permite a los admins añadir modelos con trigger configurable (mention/keyword/always), keywords, display name, system prompt y cooldown. Y nuevo evento SSE `tool_timeline_event` que el chat route emite con los timings de cada tool ejecutado (web_search, db_query) — el cliente lo pinta como pill flotante junto al token meter durante el streaming: "🌐 Web 2.1s · 🗃️ DB 0.8s · total 2.9s". El multi-tool parallel real (Promise.all del chat route) sigue deferred — requiere tests E2E antes de tocar el path más crítico de la app.
Lo destacado
8
✨ Nuevo6
🤖Modal de agentes IA del canal (botón "Agentes" gradient en header).
⏯️Toggle on/off por agente sin tener que borrarlo.
🗑️Quitar agente con confirmación.
📊Tool timeline pill durante streaming: muestra qué tools se ejecutaron y cuánto tardaron.
Componente nuevo con iconos por tool, color por estado, fmtMs(ms) helper, total acumulado.
ChatArea escucha custom event 'chat-tool-timeline', filtra por conversationId, guarda en state.
Reset state al cambiar de conversación.
Render junto al TokenContextMeter en el header del streaming.
Pendiente realmente difícil (deferred a v7.43+)
2
Multi-tool parallel TRUE: refactor del chat route para que web_search + RAG + db_query corran con Promise.allSettled. Requiere extraer ~400 líneas inline a funciones puras + tests E2E del path completo (chat con cada tool y combinaciones) antes de tocar.
Streaming progressive REAL: convertir todo el chat route a SSE desde el inicio (no solo después de los tools). Otra ronda de refactor profundo.
AI permanente en canales — agente vive en el canal con triggers configurables
07 de mayo de 2026
Implementada la mejora #6 pendiente de v7.40.0: ahora puedes asignar un modelo IA a un canal con tres modos de activación (mention/keyword/always) + cooldown anti-loop + system prompt personalizado para darle personalidad. Antes la IA solo respondía cuando la mencionabas explícitamente con @. Multi-tool parallel y streaming progressive de tools quedan deferred a v7.42 porque requieren refactor profundo (>400 líneas) del chat route que no es seguro hacer en una sola pasada.
Lo destacado
7
✨ Nuevo5
🤖Modelos IA viven en canales con trigger configurable.
🎯3 modos de trigger: `mention` (@ explícito), `keyword` (palabras clave), `always` (responde a todo).
⏱️Cooldown configurable (default 5s) para evitar bucles cuando trigger=always.
👤Display name custom — el agente puede llamarse "ResearchBot" en lugar del nombre del modelo.
🛡️Tabla channel_agent_last_reply para implementar cooldown sin race conditions.
💎 Mejorado1
🎨System prompt personalizado por canal — dale personalidad/foco al agente.
🔒 Seguridad1
🔒RLS: solo admins del canal pueden asignar/quitar agentes. Cualquier miembro los ve.
Paquete grande de mejoras en el sistema de IA: medidor de tokens y context window en vivo durante streaming; detector de formato que añade lenguaje a bloques de código sin language; endpoint de auto-debug que analiza por qué falló una respuesta y propone arreglos (gpt-4o-mini); citation tracking estricto en RAG con formato [N] y verificación; detector de tipo de tarea (code/reasoning/creative/simple/general) extendiendo el auto-router existente; nuevo endpoint /api/memory/hierarchy que consolida memorias proyecto > carpeta > conversación con deduplicación; nuevo endpoint /api/rag/should-search (Self-RAG) que decide si la query necesita RAG/web/db antes de gastar tokens; función SQL match_file_chunks_hybrid que combina vector + tsvector con pesos 70/30. Quedan pendientes (refactor profundo del chat route): multi-tool en paralelo, streaming progresivo y AI permanente en canales.
Lo destacado
8
✨ Nuevo7
📊TokenContextMeter: tokens en vivo + barra de context window con color (verde/amber/rojo) + coste USD acumulado.
🔧enhanceMarkdownContent: detecta SQL/JS/TS/Python/JSON/Bash/YAML/CSS/HTML en bloques sin lenguaje declarado.
📚Citation tracking estricto: cada claim factual con [N] obligatorio, "no inventes citas", "di cuando no tengas info".
🧠detectTaskType: clasifica input como code/reasoning/creative/simple/general usando ~15 patrones regex.
🪜Memory hierarchy: GET /api/memory/hierarchy consolida user+project+folder+conversation memories con dedup heurístico y orden por especificidad.
🤔Self-RAG: POST /api/rag/should-search decide si necesita RAG/web/db con heurística + gpt-4o-mini fallback. Conservador por defecto.
🔍Hybrid search: nueva función SQL match_file_chunks_hybrid (vector 70% + ts_rank_cd 30%) con normalización por subset, top-50 vector pre-filter, tsvector index GIN.
🐛 Arreglado1
🐞AutoDebugCard: tras thumbs-down, gpt-4o-mini analiza qué falló y sugiere fixes (cambiar modelo, añadir contexto, activar tool, replantear).
Cambios detallados18 · 5
UI nueva
5
src/components/chat/TokenContextMeter.tsx — pill flotante con tokens, context%, $ coste.
src/components/chat/AutoDebugCard.tsx — card rose con sugerencias de fix tras thumbs-down.
Carpetas: anidación, compartir, plantillas y banner — UI completa
07 de mayo de 2026
Cierre de la línea de carpetas avanzadas iniciada en v7.37/v7.38. Ahora todas las funciones que tenían el schema listo en DB tienen UI funcional: árbol jerárquico de carpetas en el sidebar, modal de invitar usuarios con roles (viewer/editor/admin), galería de plantillas en el modal de crear carpeta, "Guardar como plantilla" desde Settings, banner image (URL) y picker de carpeta padre. Smart filters se queda para más adelante (necesita un editor de query JSON).
Lo destacado
7
✨ Nuevo6
🪺Sidebar renderiza carpetas anidadas como árbol con indentación + línea punteada lateral.
🔗Tab "Compartir" en Settings con búsqueda por email + roles + cambiar/quitar acceso.
💾Botón "Guardar como plantilla" en tab Organización (con flag pública/privada).
🖼️Campo "Banner image URL" con preview live.
🌲Picker de carpeta padre (anidación).
📊use_count se incrementa cuando alguien usa una plantilla.
💎 Mejorado1
📦Galería de plantillas en CreateFolderModal con preview y aplicación instantánea.
Cambios detallados23 · 6
API endpoints nuevos
5
GET / POST / PATCH /api/folder-templates — list (own + public), create, increment use_count.
DELETE / PATCH /api/folder-templates/:id — solo owner via RLS.
GET / POST /api/folders/:id/shares — list (con profiles join) e invite por email/user_id.
PATCH / DELETE /api/folders/:id/shares/:shareId — cambiar rol o quitar acceso.
Validación de permisos: owner + admins de la carpeta pueden invitar/eliminar; el invitado puede salirse.
CreateFolderModal — Plantillas
6
Carga GET /api/folder-templates al abrir.
Sección colapsable "Empezar desde una plantilla" con grid 2 columnas.
Cada tarjeta muestra icono+color, nombre, descripción, badge "Pública", use_count y count tools.
Completados los items de v7.37.0 que necesitaban migración de schema. Ahora cada carpeta puede tener un color de acento (13 paletas), marcarse como favorita (sube arriba en el sidebar), anidarse bajo otra carpeta (parent_folder_id), tener un banner image, y existir como "smart folder" con filtros dinámicos. Además se añaden dos tablas nuevas con RLS completo: `folder_shares` para compartir carpetas con otros usuarios (roles viewer/editor/admin) y `folder_templates` para guardar plantillas reutilizables (públicas o privadas). UI integrada en CreateFolderModal y FolderSettingsModal con color picker y toggle de favorito.
Lo destacado
8
✨ Nuevo1
⭐Favoritas suben al principio del sidebar automáticamente.
💎 Mejorado4
🎨13 colores de acento por carpeta (sky, violet, blue, emerald, amber, rose, indigo, teal, orange, pink, cyan, lime, red).
🪺Anidación: cada carpeta puede tener un `parent_folder_id` (DB lista, UI próxima).
🖼️Banner image opcional por carpeta (DB lista, UI próxima).
🧠Smart folders con filtros JSON (DB lista, UI próxima).
🔒 Seguridad3
🔗Compartir carpeta con otro usuario con roles viewer/editor/admin (DB + RLS lista).
📦Templates de carpeta — guardar y reutilizar configuración (DB + RLS lista).
🛡️RLS completo en folder_shares y folder_templates con función helper folder_shared_role().
Cambios detallados38 · 7
Schema (Supabase)
10
folders: + parent_folder_id (FK self-ref ON DELETE SET NULL), accent_color, is_favorite, banner_url, smart_filters_json.
CHECK constraint folders_no_self_parent (carpeta no puede ser su propia padre).
Indices: idx_folders_parent_id (partial WHERE NOT NULL), idx_folders_user_favorite (partial WHERE is_favorite).
Tabla folder_shares (folder_id, user_id, role, invited_by, UNIQUE(folder_id, user_id)).
Tabla folder_templates con use_count, is_public, todos los campos de carpeta.
Repaso a fondo del sistema de carpetas con 11 mejoras y arreglos en una sola release. Resumen: pinned arriba, buscador con ⌘F, drag-drop para reordenar, export a JSON/Markdown, sparkline de actividad de los últimos 7 días, chips de tools por defecto en el header, validación inline de nombre duplicado al crear, "Indexar ahora" para ficheros sin indexar, cache scoped por usuario para evitar fugas entre cuentas, atajos de teclado, stats con tamaño total de documentos. Las funciones que requieren cambio de schema (anidación, compartir carpeta, templates, color, banner, smart folders, favorito) quedan documentadas para la siguiente release tras confirmar la migración.
Lo destacado
11
✨ Nuevo10
🔍Búsqueda inline de chats dentro de la carpeta (⌘F).
🤚Drag-drop para reordenar chats — persiste folder_sort_order automáticamente.
📌Pinned chats agrupados arriba con header propio "Fijados".
📥Export a JSON (full backup con mensajes) o Markdown (legible).
📊Activity log: sparkline 7 días + count "este mes".
🔧Chips de "Activas:" mostrando las tools por defecto de la carpeta en el hero.
⚠️Validación inline de nombre duplicado al crear carpeta — antes el toast desde el padre te hacía perder lo escrito.
🚀Botón "Indexar ahora" (gradient violeta) para ficheros con ingest_status=none.
💾Stats: tamaño total de documentos (KB/MB/GB), último chat, count este mes.
🔒 Seguridad1
🔒Cache de useFolderContext scoped por user_id (antes era global, fuga entre cuentas).
Cambios detallados35 · 6
FolderWelcomeScreen.tsx — rewrite
10
Buscador con focus-ring sky, atajo ⌘F, cierre con Esc, kbd visible cuando vacío.
Drag-drop nativo HTML5 con persist en lote: reorder dispara N updates a `conversations.folder_sort_order`. La fila arrastrada se opaca, la dropZone se resalta sky.
Pinned chats van a sección propia "Fijados" arriba con divider y header amber. Las pinned no se reordenan (siempre van arriba), solo las "Recientes" son arrastrables.
Draft del chat IA persiste también en chat nuevo (sin id)
07 de mayo de 2026
ChatInput ya guardaba el draft por conversación en localStorage, pero sólo cuando había `activeConversationId`. Si abrías un chat NUEVO (sin enviar nada todavía → no hay id) y refrescabas la página, lo escrito se perdía. Fix: usamos el slot `__new__` cuando no hay conversación activa, así el draft sobrevive a refrescos antes del primer envío. Al mandar el primer mensaje (que crea la conversación), limpiamos tanto el slot del nuevo id como el slot `__new__` para que no quede basura.
Lo destacado
4
✨ Nuevo4
💾Chat nuevo: lo escrito se conserva tras refrescar.
💾Slot dedicado `geia:chat-draft:__new__` para chats sin id.
🧹Al enviar desde un chat nuevo, se limpian ambos slots (el `__new__` y el del nuevo id) para evitar drafts huérfanos.
✅El comportamiento existente (draft por conversación abierta) se mantiene intacto.
Cambios detallados5 · 1
Cambios en ChatInput.tsx
5
draftStorageKey: `${PREFIX}${activeConversationId || "__new__"}` (antes devolvía null cuando no había id).
Los useEffect de restore y persist ya no early-return con null — siempre operan.
handleSubmit captura `wasNewChat = !convId` antes de createConversation.
Tras éxito en chat nuevo, además de limpiar `draftStorageKey`, también limpia explícitamente `${PREFIX}__new__` para cubrir el race entre createConversation y el re-render del useMemo.
Misma limpieza en la rama de message queue (cuando se mete en cola).
Draft de canal persiste al refrescar + Voz: vuelve la transcripción del usuario
07 de mayo de 2026
Dos fixes: (1) En canales, lo que escribes en el composer ahora persiste en localStorage por canal — al refrescar la página, recuperas el texto donde lo dejaste. Antes se perdía. (2) En el modo voz, la transcripción de TUS mensajes había dejado de aparecer en el chat. Causa: el modelo `gpt-4o-mini-transcribe` con prompt (introducido en v7.19) era rechazado silenciosamente por OpenAI en algunos casos, dejando de enviar el evento `conversation.item.input_audio_transcription.completed`. Vuelta a `whisper-1` (modelo estable de toda la vida) sin prompt + log explícito si OpenAI vuelve a rechazar la config.
Lo destacado
8
✨ Nuevo7
💾Composer del canal: tu draft sobrevive a refrescos.
💾El draft es por canal — cada canal tiene el suyo en localStorage (`channel-draft:{channel.id}`).
💾Al enviar, el draft se borra del localStorage automáticamente.
💾Al cambiar de canal, se rehidrata el draft del nuevo.
🎙️Voz: transcripción del usuario vuelve a aparecer en el chat.
🎙️Modelo de transcripción revertido de `gpt-4o-mini-transcribe` → `whisper-1` (estable, universal).
🎙️Eliminado el prompt experimental que reforzaba vocabulario — algunos session.update eran rechazados con esa combinación.
💎 Mejorado1
🪵Log explícito en consola si OpenAI vuelve a rechazar el `input_audio_transcription` para diagnóstico rápido.
Cambios detallados9 · 2
ChannelView — draft persistido
5
useState con lazy init lee `localStorage.getItem(`channel-draft:${channel.id}`)`.
useEffect sync escribe en localStorage cada vez que `input` cambia (vacío → remove, no-vacío → set).
useEffect on `channel.id` change rehidrata el draft del nuevo canal.
handleSend limpia la entrada del localStorage al enviar.
Sin coste perceptible (localStorage es síncrono y barato; sin debounce).
Eliminado el campo `prompt` (vocabulario custom). Era experimental y a veces hacía que OpenAI rechazara todo el session.update.
Síntoma de la regresión: el usuario hablaba, GIA respondía con voz, pero la burbuja del usuario se quedaba con `…` (placeholder) porque `conversation.item.input_audio_transcription.completed` nunca llegaba → handleTranscript nunca se ejecutaba → la burbuja nunca se actualizaba ni se persistía.
Log nuevo en case "error": si el mensaje contiene "transcription" o "input_audio_transcription", warning explícito en consola.
Canales: el chat dentro del canal también con estilo nivel dios
07 de mayo de 2026
Continuación de v7.33: ahora los mensajes, el composer y los empty states dentro de un canal abierto también tienen el rediseño completo. Avatares de mensaje 10×10 con presence ring animado (verde online, azul typing) + glow detrás, badges "Tú", "IA", "Admin" con gradients, indicador "escribiendo" con dots animados, reactions con gradient violet→fuchsia cuando reaccionaste tú, contador de hilo como pill blue→cyan, toolbar hover con backdrop-blur + iconos coloreados al hover, composer con focus ring violeta y botón send gradient violet→fuchsia→pink con glow, empty state del canal con shimmer + sparkle.
Lo destacado
14
✨ Nuevo12
🦸Avatar del mensaje: 10×10 con ring de presencia animado (online verde, typing azul) + glow blur detrás.
⌨️Badge "Tú" en los mensajes propios (indigo pill).
🤖Badge "IA" gradient violet→fuchsia con logo.
👑Badge "Admin" gradient amber→orange con corona.
✍️Badge "escribiendo" con 3 dots animados cuando un usuario está typing.
😀Reacciones: gradient violet→fuchsia cuando es tuya, pill blanca con backdrop-blur cuando no.
🧵Contador de hilo: pill blue→cyan con flecha al hover.
🪟Toolbar hover: rounded-xl + ring + shadow elevada + iconos que cambian a color al hover (smile→amber, reply→blue, pin→amber, link→violet, trash→rose).
😀Quick emoji picker: rounded-2xl + emojis 18px + scale 1.25 al hover.
✨Empty state del canal: hero icon 80×80 con halo violet→fuchsia→pink, título con shimmer animado, "Sé el primero en escribir 👋".
Repaso a fondo de la sección /channels: aside con orbes flotantes y blur liquid-glass, header con gradient violet→fuchsia→pink, búsqueda más refinada con shortcut visible (⌘K), tabs en píldoras con conteos, fila de canal con glow lateral pulsante cuando está activa, halo en el icono al hover, badges animados (mention shake + pulse), avatares de personas con presence ring que pulsa en verde cuando online o azul cuando typing (con dots animados), header del canal abierto con icono más grande y halo, empty state hero con shimmer en el título y orbes de fondo gigantes.
Lo destacado
13
✨ Nuevo12
🪐Aside con 3 orbes flotantes detrás (violet, blue, pink) con animación independiente.
✨Botón "+" con gradient violet→fuchsia→pink, escala y glow al hover.
⌘K visible en el placeholder de búsqueda + ring focus violeta.
🎯Tabs como píldoras con contador (canales: total, personas: count online con dot pulsante).
🌟Fila de canal activa: glow lateral 3px pulsante con gradient + ring violeta.
🌀Icono del canal con halo difuso al hover (escala 1.06 + rotate -3°).
🚨Badge de menciones: gradient rose→pink, pulse + shake.
🔔Badge de no leídos: gradient violet→indigo, pulse.
🟢Avatares de personas: ring que pulsa verde cuando online, azul cuando typing.
⌨️"Typing" con 3 dots animados al lado del estado.
👑Tag "Admin" amarillo + corona dorada.
🏆Empty state: orb gigante 600px detrás, hero icon con halo violet→pink, title con shimmer animado, 3 chips Canales/Personas/DMs, hint "⌘K para buscar".
💎 Mejorado1
🎨Header del canal abierto: icono más grande (40×40) con halo, gradient en el badge "Privado", chip de miembros emerald con dot.
prefers-reduced-motion respeta todas las animaciones nuevas.
Página /channels (page.tsx)
3
Aside ahora bg-white/85 + backdrop-blur-xl con 3 orbes detrás.
Header del aside con icono "MessageSquarePlus" en gradient violet→fuchsia→pink y título con gradient text.
Empty state nuevo: orbes detrás (600px y 280px y 320px), hero icon Hash 80×80 con halo, sparkle flotante decorativo, título con shimmer, 3 FeatureChip (Canales / Personas / DMs), hint con kbd ⌘K.
ChannelList (sidebar)
7
Header con padding mayor, separator más sutil, gradient suave de fondo.
Search input con ring focus violeta, kbd ⌘K visible cuando vacío, X cuando hay query.
Tabs reescritas como píldoras dentro de un container ring + contadores.
Filtro de menciones reescrito como pill con gradient rose→pink al activar.
Empty states con icon hero + halo + texto secundario.
Filas de canal: padding mayor, rounded-xl, transición de translate-x al hover, halo en el icono, descripción inline.
Filas de personas: avatar 9×9, presence ring animado verde/azul, dots de typing, tag "Admin" amarillo, → arrow al hover.
ChannelView (header del canal abierto)
5
Glow detrás del header (gradient ellipse violet + blue) animado.
Icono del canal: 40×40 con halo blur, ring violeta, gradient bg.
Hash icon en violeta brillante.
Tag "Privado" como pill amarilla con shield icon.
Chip de miembros: gradient emerald→teal con icono de Users colored.
Fix: la card de imagen se duplicaba al terminar la generación
07 de mayo de 2026
En v7.25 hicimos persistir la card efímera (`activeImageGenerationRun`) hasta que terminara la imagen. En v7.30 hicimos que el bubble del mensaje persistido también renderizara la card. Resultado: cuando la imagen se attachaba al mensaje, durante unos instantes había DOS cards visibles — la efímera y la del mensaje persistido. Fix: ChatArea oculta la efímera si detecta que la URL ya está en algún mensaje persistido (en meta_json.generated_image_url, meta_json.image_url o attachments_json.kind=generated_image). Además, ChatInput recarga los mensajes inmediatamente tras éxito para que el persistido aparezca rápido.
Lo destacado
4
✨ Nuevo3
🚫Sin más duplicados: la card efímera desaparece cuando el mensaje persistido la incluye.
🔍Match por URL exacta entre `imageGenerationRun.imageUrl` y los 3 sitios donde la imagen puede estar persistida.
🛡️Si la imagen aún no está persistida (race), la efímera sigue mostrándose — sin parpadeo.
💎 Mejorado1
⚡ChatInput.tsx hace `loadMessages(convId, { silent: true })` justo después de éxito para acelerar la transición efímero → persistido.
Cambios detallados7 · 2
Cambios en ChatArea.tsx
4
`activeImageGenerationRun` useMemo ahora también depende de `messages`.
Cuando run.status === "ready" y run.imageUrl, busca la URL en cada mensaje del conversationId.
Match en 3 sitios: meta_json.image_url, meta_json.generated_image_url, attachments_json[kind=generated_image].url.
Si encuentra match → devuelve null (oculta la card efímera). Si no → sigue mostrando la efímera.
Cambios en ChatInput.tsx
3
Tras `setImageGenerationRun({ status: "ready", ... })`, llama a `loadMessages(convId, { silent: true })`.
Esto trae el assistant message con la imagen attachada (meta_json + attachments_json) al store.
Una vez en el store, ChatArea detecta el match por URL y oculta la efímera.
Las frases del centro del preview ahora rotan también
07 de mayo de 2026
En v7.29 hicimos rotar el subtítulo de la cabecera de la card, pero las dos líneas grandes del centro del preview ("Renderizando preview" + "La imagen aparecerá aquí al completarse") seguían fijas. Ahora rotan cada 2.2s entre 10 pares (Renderizando preview, Mezclando colores, Esculpiendo formas, Encendiendo luces, Tejiendo detalles, Afinando contraste, Capturando matices, Pintando capas, Casi lista, Empaquetando imagen). Cada cambio entra con un fade-in con blur.
Lo destacado
4
✨ Nuevo3
🔄10 pares de frases rotativas en el centro del preview (cada 2.2s).
✨Animación fade-in con blur al cambiar de frase (0.7s cubic-bezier).
♿prefers-reduced-motion respetado.
🐛 Arreglado1
⏸️Sólo rotan en estado `running`. En error muestra "Generación detenida" + el error real.
Fix: la imagen al refrescar salía como "archivo 0 B" + ahora aparece en /imagenes
07 de mayo de 2026
Tras refrescar el chat la imagen generada salía como un attachment genérico (clip de papel "archivo 0 B") en vez de la card de imagen. Causa: desde v7.22 el endpoint /api/image/generate guarda la imagen en `meta_json.generated_image_url`, pero MessageBubble (`getImageUrl`) y la página /imagenes seguían leyendo el campo legacy `meta_json.image_url`. Resultado: el url no se encontraba, no se renderizaba la card, y el attachment con `kind: "generated_image"` caía al renderizador genérico. Fix: leer ambos campos (legacy + nuevo + attachments_json) y filtrar el attachment generated_image para que no se muestre como archivo genérico.
Lo destacado
6
✨ Nuevo6
🖼️La imagen ahora reaparece como CARD al refrescar (antes salía como attachment "archivo 0 B").
🗂️Las imágenes nuevas YA aparecen en la página /imagenes (galería).
🔍`getImageUrl(message)` busca en 3 sitios: meta_json.image_url (legacy), meta_json.generated_image_url (v7.22+), y attachments_json[] con kind="generated_image".
🚫Filtrado: el attachment con `kind: "generated_image"` se excluye del listado de attachments del bubble — ya se renderiza arriba en la card, no debe duplicarse como archivo.
🏷️El badge del modelo en la card persistida ahora viene del registro real (antes estaba hardcoded a "gpt-image-1").
📝Nueva función `getImageModel(message)` simétrica a getImageUrl/getImagePrompt.
Cambios detallados13 · 3
Causa raíz
4
Pre-v7.22 (cuando la imagen se generaba inline en /api/chat) los campos eran `image_url`/`image_prompt` en meta_json.
En v7.22 movimos la generación a /api/image/generate, que escribe en `generated_image_url`/`generated_image_prompt` y añade un `attachments_json[].kind: "generated_image"`.
Pero MessageBubble.tsx:getImageUrl y ImagesGalleryPage.tsx seguían leyendo SÓLO los campos legacy. Resultado: las imágenes generadas desde v7.22 nunca persistían visualmente.
Adicional: el attachment generated_image llegaba al renderizador genérico de archivos sin file_id ni size → mostraba "archivo / 0 B" con icono de clip.
Cambios en MessageBubble.tsx
5
getImageUrl: lee meta_json.image_url || meta_json.generated_image_url || attachments_json[kind=generated_image].url.
getImagePrompt: misma lógica con prompt.
getImageModel: nueva función para el badge del modelo.
rawAttachments: filtra los `kind: "generated_image"` para que no se rendericen como attachment genérico.
ImageGenerationCard recibe modelLabel del registro real (no hardcoded).
Cambios en ImagesGalleryPage.tsx (/imagenes)
4
Query incluye attachments_json además de meta_json.
Lookup en 3 sitios: meta_json.image_url legacy, meta_json.generated_image_url, attachments_json[kind=generated_image].url.
Las imágenes generadas desde v7.22 ahora aparecen en la galería del usuario.
Las pre-v7.22 (legacy) siguen apareciendo (compat hacia atrás).
Card de generación de imagen con más fases y muchas más partículas
07 de mayo de 2026
Durante la generación, la card ahora rota por 13 fases (antes 5) cambiando de mensaje cada 1.5s, así el admin no ve la misma frase 25s seguidos. Triplicado el campo de partículas (10 → 30) con más variación. Añadidas tres capas visuales nuevas: una segunda órbita interior rotando al contrario, un glow central pulsante, y 10 sparkles que parpadean en sitios fijos. El timer interno actualiza ahora cada 250ms (era 420ms) para animación más fluida.
Lo destacado
8
✨ Nuevo6
🌀Doble órbita: una exterior rotando 360° y otra interior al revés.
✨10 sparkles que parpadean (twinkle) en sitios fijos del card, además de las partículas que flotan.
💫30 partículas (era 10) con sizes 3-7px y delays/durations variados — más densidad de magia.
🌟Glow central pulsante rosa/violeta detrás de todo, escala de 0.9 a 1.15.
⏱️Las fases rotan por TIEMPO (cada 1.5s) además de por progreso. Si el modelo tarda 25s ya no se queda atascado en la misma frase.
🎯prefers-reduced-motion respetado en todos los nuevos efectos.
Hotfix: build fallaba por maxDuration=800 en Hobby
07 de mayo de 2026
En v7.28.0 puse `maxDuration = 800` (máximo de Pro), pero Vercel Hobby sólo admite valores entre 1 y 300, así que el deploy fallaba con "Builder returned invalid maxDuration value for Serverless Function api/image/generate. Serverless Functions must have a maxDuration between 1 and 300 for plan hobby". Bajado a 300 (máximo de Hobby) — sigue siendo más que suficiente para cualquier modelo de imagen (gpt-image-1 ~25s, dall-e-3 ~12s).
Lo destacado
3
✨ Nuevo3
🔧maxDuration: 800 → 300 (máximo permitido en Vercel Hobby).
✅Build vuelve a pasar.
💪300s = 5min sigue siendo holgadísimo para cualquier modelo de imagen.
Quitadas TODAS las limitaciones de tiempo en generación de imagen
07 de mayo de 2026
Eliminados los AbortSignal internos que cortaban la generación antes de tiempo. Ahora el único límite es el del runtime de Vercel (800s declarados, máximo del plan Pro). En Hobby la plataforma sigue capando a 10s a nivel de infraestructura — eso no se puede tocar desde el código. En Pro y dev local, el modelo puede tardar lo que necesite (gpt-image-1 25s, dall-e-3 12s, etc.) y se entrega sin cortar.
Lo destacado
5
✨ Nuevo5
⏱️`maxDuration = 60` → `800` (máximo de Vercel Pro). En Hobby sigue siendo 10s a nivel de plataforma.
✂️Eliminado `AbortSignal.timeout(55_000)` de la llamada a OpenAI Images. Antes cortaba a los 55s aunque tuviéramos 800s disponibles.
✂️Eliminado `AbortSignal.timeout(2500)` del prompt assist. Si gpt-4o-mini tarda más, esperamos.
🧹`callImage(model)` simplificado — ya no recibe `timeoutMs`.
⚠️Hobby (10s hardcap): gpt-image-1 (10-30s) seguirá fallando. Si estás en Hobby, usa dall-e-2 o sube a Pro.
Cambios detallados9 · 2
Cambios en /api/image/generate
5
maxDuration: 60 → 800 (Pro max). En Hobby la plataforma sigue capando a 10s independientemente de lo declarado.
Quitado el AbortSignal del fetch principal a OpenAI Images. Sin recorte interno.
Quitado el AbortSignal del prompt assist (gpt-4o-mini). Si tarda, esperamos.
callImage() ya no recibe timeoutMs como argumento.
El catch global sigue manejando errores de red por si Vercel mata la función — pero ya no hay timeout *nuestro* que la corte.
Lo que sigue limitando
4
**Vercel Pro**: 800s máximo declarados. La función puede correr hasta 13min antes de que Vercel la mate.
**Vercel Hobby**: 10s máximo a nivel de plataforma, no se puede subir desde el código. gpt-image-1 (10-30s) no cabrá. Solución: subir a Pro o usar dall-e-2 (2-5s).
**Dev local**: sin límites de plataforma. La función corre hasta que el modelo termine.
**OpenAI**: el SDK/API de OpenAI tiene sus propios timeouts internos (~10min). Si el servidor de OpenAI tarda más que eso, esa llamada falla del lado de ellos.
El modelo del panel admin se RESPETA en el chat (sin fallback silencioso ni placeholder engañoso)
07 de mayo de 2026
Tres bugs en cascada hacían pensar al admin que su selección no se aplicaba: (1) El bubble del chat enseñaba `gpt-image-1` por defecto durante la generación — un placeholder visual que no reflejaba la config real. (2) El v7.26 hacía fallback silencioso a dall-e-2 si el modelo principal fallaba — el admin selecciona gpt-image-2, ve dall-e-2 (o gpt-image-1) y cree que su config no se aplica. (3) El dropdown del panel mostraba el primer modelo detectado en vez del realmente guardado cuando el guardado no estaba en la lista de OpenAI. Fix: el bubble lee `/api/image/config` y muestra el modelo configurado desde el primer momento; el fallback silencioso eliminado (si el modelo del admin falla, se devuelve el error real); el dropdown muestra siempre el valor guardado.
Lo destacado
6
✨ Nuevo4
🎯El bubble ahora muestra el modelo CONFIGURADO durante la generación (no el placeholder `gpt-image-1`).
🔄ChatInput hace `fetch /api/image/config` justo antes de generar, actualiza el bubble con el modelo correcto.
🪟Dropdown del panel admin: el valor mostrado es siempre el guardado (antes caía a `models[0]` si no estaba detectado).
💎 Mejorado1
⚠️Si el modelo configurado falla por timeout, ahora el error dice claramente: "La generación con [modelo] tardó demasiado. Cambia el modelo en /admin/image-generation a uno más rápido".
🐛 Arreglado1
🚫Eliminado el fallback silencioso a dall-e-2. Si el admin selecciona gpt-image-2, se usa gpt-image-2 (o se devuelve el error real).
Cambios detallados18 · 5
Por qué confundía
4
Admin selecciona gpt-image-2 en /admin/image-generation y guarda → config.generation.model = "gpt-image-2".
Admin manda mensaje "hazme una imagen de Barcelona" → el bubble aparece con badge "GPT-IMAGE-1" porque era el placeholder default en `ChatArea.tsx` y `ImageGenerationCard.tsx`.
En v7.26 además, si gpt-image-2 fallaba (timeout, model not found), se llamaba a dall-e-2 silenciosamente. La respuesta llevaba `model: "dall-e-2"` aunque el admin pidió otra cosa.
Conclusión del admin: "mi selección no se aplica, está cogiendo gpt-image-1" — confusión total.
Endpoint /api/image/config
3
GET, runtime nodejs, requiere auth de usuario (no admin) — porque cualquier usuario que pueda generar imagen tiene derecho a saber qué modelo se usa.
Lee `app_settings.image_generation` igual que `/api/image/generate`, pero devuelve sólo `{ model, size, enabled }`.
NO devuelve api_key, api_url, ni extra_params — campos sensibles permanecen sólo en el endpoint admin.
ChatInput.tsx — modelo en el bubble desde el inicio
4
Antes: setImageGenerationRun({ status: "running", ... }) sin model → bubble usaba el default "gpt-image-1".
Ahora: la IIFE async hace primero un `fetch /api/image/config`. Si responde con un modelo, se actualiza el bubble con `model: cfgModel`.
El bubble pasa de "GPT-IMAGE-1" placeholder a mostrar el modelo real configurado en menos de 1s.
Si /api/image/config falla (raro), el bubble muestra el badge null = sin badge. Mejor que mentir.
Eliminado fallback silencioso
4
En v7.26 añadimos fallback automático a dall-e-2 cuando el modelo principal fallaba. Era para arreglar el "tardó demasiado" que apareció en v7.25.
Pero el admin lo vio como traición a su config: "selecciono gpt-image-2 y me pone dall-e-2".
En v7.27 eliminado. El modelo configurado se llama una sola vez con timeout 55s. Si falla, error real al admin.
Si quiere un modelo más rápido, puede cambiarlo en /admin/image-generation. El nuevo error message lo sugiere explícitamente.
Panel admin — dropdown muestra el valor guardado
3
Antes: si el modelo guardado (gpt-image-2) no estaba en la lista detectada por OpenAI, el `<select>` mostraba `models[0]` (gpt-image-1) → confusión total.
Ahora: el valor mostrado es siempre el guardado. Si no está en la lista detectada, aparece como primera opción con label "X (personalizado)".
El admin puede seguir cambiando a otro modelo de la lista o mantener su valor custom.
Fallback automático a dall-e-2 si gpt-image-1 falla / tarda demasiado
07 de mayo de 2026
En v7.25.0 dejamos visible el error real cuando la generación de imagen fallaba — el usuario empezó a ver "La generación tardó demasiado" porque `gpt-image-1` (default desde v7.23.0) tarda 10-30s y muchas veces excede el budget de la función serverless, además de requerir Verified Organization en OpenAI. Solución: fallback automático a `dall-e-2` (2-5s, no requiere verificación) cuando el modelo principal falla por timeout o error. También bajado el timeout interno del modelo principal a 28s para dejar margen al fallback dentro de los 60s declarados, y el prompt assist a 2.5s para no quemar budget si OpenAI va lento.
Lo destacado
6
✨ Nuevo3
⏱️Timeout principal bajado de 55s a 28s. dall-e-2 con 22s adicionales = 50s totales, dentro del budget de 60s en Pro.
🧰`buildPayload(model, size)` adaptativo no sólo en quality, ahora también en size: si el size guardado no es válido para el modelo (ej. dall-e-3 con 256x256) lo normaliza a 1024x1024.
🏷️La respuesta ahora incluye `model` (el realmente usado), `requested_model` (el pedido) y `fallback_used: true` cuando hubo fallback. El bubble muestra el modelo correcto.
💎 Mejorado1
⚡Timeout del prompt assist bajado de 4s a 2.5s. Si gpt-4o-mini va lento, se salta y se usa el prompt original.
🐛 Arreglado2
🔁Fallback automático: si `gpt-image-1` (o cualquier modelo configurado) falla por timeout o error 4xx/5xx → se reintenta con `dall-e-2` automáticamente.
📝Mensaje de error más informativo: "La generación tardó demasiado (probado fallback dall-e-2 también)" si ambos fallan, antes era genérico.
Cambios detallados11 · 3
Por qué fallaba antes
3
gpt-image-1 (default desde v7.23) requiere Verified Organization en OpenAI. Cuentas sin verificar reciben 403 inmediato.
gpt-image-1 además tarda 10-30s. En Vercel Hobby (10s cap) no cabe. En Pro cabe pero a veces excede el AbortSignal de 55s.
En v7.25 hicimos persistir la burbuja, así que el usuario por fin vio el error real que antes desaparecía con la burbuja.
Estrategia del fallback
4
Helper `callImage(model, timeoutMs)` extrae la lógica de llamar a OpenAI. Devuelve `{ ok, data, modelUsed }` o `{ ok: false, status, detail, isTimeout }`.
Primer intento: el modelo configurado por el admin con timeout 28s.
Si falla y el modelo NO era ya `dall-e-2` → segundo intento con `dall-e-2` (timeout 22s). dall-e-2 es el más rápido y disponible para todas las cuentas.
Si ambos fallan → devuelve el error del primario. Si el primero es timeout, el mensaje incluye "(probado fallback dall-e-2 también)".
Cambios en el endpoint
4
src/app/api/image/generate/route.ts: refactor a helper + fallback automático.
Prompt assist: 4s → 2.5s timeout.
Tamaños inválidos para el modelo seleccionado se normalizan automáticamente a 1024x1024.
Respuesta JSON ampliada con `requested_model` y `fallback_used` para el cliente.
Fix DEFINITIVO: la burbuja de imagen ya no desaparece al acabar el chat
07 de mayo de 2026
En v7.23.0 quitamos el `setTimeout(clearImageGenerationRun, 1400)` del finally del chat creyendo que era el bug que mataba la burbuja, pero la verdad estaba en `ChatArea.tsx` línea 1138: el render era `{isStreamingHere && activeImageGenerationRun && (...)}`. Cuando el chat termina (3-5s), `isStreamingHere` pasa a false y la burbuja se desmonta — incluso aunque la imagen siga generándose en /api/image/generate (10-30s). Resultado: el usuario veía "Creando imagen / 24%" y a los segundos desaparecía sin imagen. Fix: quitada la condición `isStreamingHere &&`. La burbuja ahora vive mientras haya un `activeImageGenerationRun`, independiente del estado de streaming del chat.
Lo destacado
5
✨ Nuevo2
🎯Causa raíz REAL (que se nos escapó en v7.23.0): el render de la burbuja en ChatArea.tsx estaba gateado por `isStreamingHere &&`.
⏱️Timing: chat 3-5s, imagen 10-30s. Cuando el chat acaba la burbuja se desmonta sin esperar a la imagen.
🔄La IIFE async de /api/image/generate sigue actualizando el run a `ready`/`error` y la burbuja ahora SÍ recibe ese update porque ya está montada.
🧠Lección: en v7.23.0 buscamos el bug en ChatInput (el clear) en vez de en el render condicional. Ambas cosas mataban la burbuja, pero quitar el clear no es suficiente si el render se desmonta solo.
Cambios detallados8 · 2
ChatArea.tsx — render condicional
4
Antes: `{isStreamingHere && activeImageGenerationRun && (...)}` — la burbuja vivía sólo mientras el chat streameaba.
Ahora: `{activeImageGenerationRun && (...)}` — la burbuja vive mientras haya un run activo.
El run se sobrescribe automáticamente cuando el usuario manda otra solicitud de imagen, así que no hay leak.
Cuando el run pasa a `ready` con `imageUrl`, el ImageGenerationCard ya muestra la imagen final con badge "Completado".
Por qué el fix de v7.23.0 no fue suficiente
4
En v7.23.0 quitamos `setTimeout(clearImageGenerationRun, 1400)` del finally de ChatInput.
Pero el render condicional en ChatArea seguía haciendo `isStreamingHere &&`. Resultado: aunque el run en el store seguía vivo (status=running), la UI lo escondía al acabar el chat.
Pensábamos que el clear era el único responsable porque coincidía visualmente: chat acaba ≈ 3-5s, clear era a +1.4s del finally → unmount visual a 4-6s. Pero quitando el clear, el unmount seguía ocurriendo a chat-end por el render condicional.
Ahora ambos fixes en sintonía: no hay clear en el finally + el render no depende de `isStreamingHere`.
Modelos de imagen detectados desde la API de OpenAI (no más hardcoded)
07 de mayo de 2026
El selector de modelo del panel `/admin/image-generation` ya no muestra una lista hardcoded de 3 modelos: ahora hace una llamada a `/v1/models` con la api_key del admin y filtra a los que generan imagen (`gpt-image-*`, `dall-e-*`). Si la cuenta tiene acceso a modelos nuevos aparecen automáticamente. Si la API falla o no hay key, usa los 3 conocidos como fallback. Botón refrescar al lado del select para volver a pedir la lista cuando se cambia la api_key.
Lo destacado
8
✨ Nuevo8
🛰️Nuevo endpoint GET `/api/admin/image-generation/models?target=generation|edit` (admin-only).
🔑Lee `api_url` + `api_key` del bloque correcto en `app_settings.image_generation`. Fallback a `OPENAI_API_KEY` env si no hay key configurada.
🧪Filtra los modelos a los que generan imágenes: id que empieza por `gpt-image` o `dall-e`. Resto descartado.
🪂Si la API falla (401, timeout, network) → devuelve los 3 modelos conocidos con `fallback: true` y el panel muestra un hint explicando que está en modo fallback.
🔄Botón refrescar (icono ↻) al lado del select. Útil tras guardar una nueva api_key sin recargar la página.
⏳Loading state mientras se piden los modelos (spinner en el botón refrescar, select disabled).
🛟Si el modelo guardado no aparece en la lista detectada, se muestra como `xxx (no detectado)` para que el admin lo vea pero pueda cambiarlo.
🏷️Orden estable: `gpt-image-1` primero, luego otros gpt-image, luego dall-e-3, dall-e-2 y el resto alfabéticamente.
Cambios detallados14 · 3
Endpoint /api/admin/image-generation/models
5
GET con verifyAdmin pattern (auth user + check `profile.role === "admin"`).
Lee la config existente en `app_settings.image_generation` para extraer api_url y api_key del target solicitado (`generation` o `edit`). Si el target no tiene key, prueba el otro bloque. Si tampoco, fallback a `process.env.OPENAI_API_KEY`.
Llama a `${api_url}/models` con `AbortSignal.timeout(10_000)` y `cache: "no-store"`.
Filtro `isImageModel(id)`: matchea `gpt-image*` o `dall-e*`. Si en el futuro OpenAI lanza otra familia (ej. `imagen-x`) se puede ampliar fácilmente.
Panel admin (ImageGenerationPanel)
5
Reemplazado `OPENAI_IMAGE_MODELS` constante por `genModels` y `editModels` state — uno por cada select (Crear / Editar imagen).
Dos `useEffect` que llaman a `fetchModels(target)` cuando la tab está activa, ya cargó la config, y el engine es `openai`.
Nuevo helper `<ModelSelectWithRefresh>` que combina select + botón refrescar. Disabled mientras carga, spinner en el botón.
Si el modelo guardado no está en la lista detectada, se añade al final del select con label `xxx (no detectado)` — así no se pierde la selección y el admin sabe que no está validado.
Hint del row "Modelo" cambia según `fallback`: si fallback=true dice "No se pudo consultar la API — mostrando modelos por defecto", si false dice "Modelos detectados desde tu cuenta de OpenAI".
Por qué este cambio
4
En v7.23.0 hicimos el select con 3 modelos hardcoded para evitar typos como `gpt-image-2` (que no existe).
Pero hardcodear significa que si OpenAI lanza un modelo nuevo, hay que recompilar. Tampoco respeta cuentas con modelos custom o de partners.
Solución pedida por el usuario: "vamos hacerlo diferente que haga llamada a la API de OpenIA para ver los modelos de imagenes que tenemos disponibles de el usuario por su API y salgan en el selector de modelo".
Ahora la lista refleja exactamente lo que la api_key tiene acceso. Si OpenAI lanza `gpt-image-2` mañana, aparece sin redeploy.
Fix CRÍTICO: la imagen aparecía y luego desaparecía sin generarse
06 de mayo de 2026
La versión 7.23.0 arregla 3 bugs en cadena que impedían generar imágenes desde v7.22.0: (1) ChatInput tenía un setTimeout(clearImageGenerationRun, 1400) en el finally del chat — antes de v7.22.0 era inocuo porque la imagen se generaba inline y ya estaba lista, ahora corre en paralelo (10-30s) y la limpieza llegaba a 1.4s tras el chat (3-5s) → la burbuja desaparecía mientras la imagen seguía generándose en background. (2) El modelo default era `gpt-image-1.5` que NO existe en OpenAI — los modelos reales son `gpt-image-1`, `dall-e-3`, `dall-e-2`. Cualquier llamada con el default fallaba con "model not found". (3) El payload era estático con `quality: "auto"` — `dall-e-2` no acepta ese param. Ahora payload adaptativo por modelo. Bonus: el input del modelo en el admin pasa a dropdown con sólo los 3 modelos reales para evitar typos.
Lo destacado
8
✨ Nuevo2
✂️Causa raíz #1: `clearImageGenerationRun(id, 1400ms)` en el finally del chat. Pre-v7.22 la imagen ya estaba lista al acabar el chat. Post-v7.22 está corriendo en paralelo y la limpieza la mataba.
🏷️Badge correcto: el bubble ahora muestra el modelo REAL devuelto por la API (no el hardcoded `gpt-image-1.5`).
💎 Mejorado1
👻Causa raíz #2: defaults `gpt-image-1.5` (NO existe) en `chat/route.ts`, `/api/image/generate`, y 4 sitios de UI. OpenAI Images sólo acepta `gpt-image-1`, `dall-e-3`, `dall-e-2`.
🐛 Arreglado5
🚨Bug visible (foto del usuario): "Creando imagen / 24%" aparecía → tras unos segundos la burbuja desaparecía sin imagen.
🎯Fix #1: eliminado el `setTimeout(clearImageGenerationRun)` del finally del chat. La burbuja ya se gestiona desde la IIFE async de la generación (status running → ready/error).
🎯Fix #2: defaults cambiados a `gpt-image-1` en backend Y UI. Si el admin nunca ha guardado config, ahora funciona.
🎛️Fix #3: input del modelo en `/admin/image-generation` pasa a dropdown con los 3 modelos OpenAI reales (cuando engine=openai). Para engines custom (A1111, ComfyUI, etc.) sigue siendo input libre.
🧬Fix #4: payload adaptativo por modelo — `dall-e-2` no recibe `quality`, `dall-e-3` recibe `quality: standard`, `gpt-image-1` recibe `quality: auto`. Antes era `quality: auto` para todos → dall-e-2 fallaba.
Cambios detallados31 · 6
Bug #1 — clear prematuro
4
Antes: `setTimeout(() => clearImageGenerationRun(runId), 1400)` en el finally del POST a /api/chat.
En v7.21.0 y anteriores el chat hacía la imagen inline → cuando el chat terminaba, la imagen YA estaba lista. El clear de 1.4s sólo daba tiempo a ver el "done" antes de quitar la burbuja.
En v7.22.0 movimos la imagen a `/api/image/generate` paralelo. El chat tarda 3-5s, la imagen 10-30s. El clear se disparaba a `chat_end + 1.4s ≈ 5-7s` → mataba la burbuja mientras la imagen seguía generándose.
Fix: eliminado el clear. La IIFE async que llama a /api/image/generate ya pone `setImageGenerationRun({ status: "ready" / "error" })` cuando termina. La burbuja persiste hasta que el usuario navega o se descarga la imagen.
Bug #2 — modelo default inexistente
4
El default era `gpt-image-1.5` en 6 sitios (chat/route.ts, image/generate/route.ts, ChatArea.tsx ×2, ImageGenerationCard.tsx, MessageBubble.tsx). Modelo INVENTADO — no existe en la API de OpenAI.
Cuando el admin no había guardado config Y se intentaba generar → 400 "model not found" → la IIFE async marca status: error → bubble desaparece tras 1.4s por el bug #1.
Fix: todos los defaults `gpt-image-1.5` → `gpt-image-1`.
`dall-e-2` no soporta `quality` → 400 "Unrecognized parameter: quality".
`dall-e-3` soporta `quality: standard | hd` (no acepta "auto").
`gpt-image-1` soporta `quality: low | medium | high | auto`.
Fix: payload construido adaptativo:
- dall-e-2: sin quality
- dall-e-3: quality: standard
- gpt-image-1 (y otros): quality: auto
- extra_params del admin pueden sobrescribir cualquier campo (incluido quality)
Bug #4 — typos en el admin
5
El admin en /admin/image-generation tenía un input de texto libre para el modelo. Usuario podía escribir cualquier nombre (ej: gpt-image-2) y la API rechazaba sin que se viera el error claramente.
Fix: cuando engine=openai, el campo "Modelo" pasa a Select con los 3 únicos modelos válidos: gpt-image-1, dall-e-3, dall-e-2.
Si el admin elige otro engine (A1111, ComfyUI, Replicate, custom), el campo sigue siendo input libre porque cada engine tiene sus propios modelos.
Si la config guardada tiene un modelo desconocido (legacy), el dropdown cae a `gpt-image-1` automáticamente al renderizar.
Hint en el campo: "Sólo modelos OpenAI Images reales. Otros nombres dan error 400."
Mejora — modelo real en el badge del bubble
5
El endpoint /api/image/generate devuelve `{ success, image_url, model, prompt }`.
Antes el bubble ignoraba `data.model` y usaba `modelLabel="gpt-image-1.5"` hardcoded.
Ahora la IIFE async guarda `data.model` en `imageGenerationRun.model` (campo nuevo añadido al type).
El componente `<ImageGenerationCard modelLabel={run.model || "gpt-image-1"}>` muestra el modelo correcto.
Si el admin tiene configurado dall-e-3, el badge dice "DALL-E-3"; si gpt-image-1, dice "GPT-IMAGE-1"; etc.
Calidad técnica
4
Typecheck verde tras los 4 cambios.
Sin breaking changes — los toggles del composer y la UI funcionan igual.
Comentarios "7.23.0" en cada punto de cambio.
Si la config guardada tiene un modelo legacy invalido (gpt-image-1.5, gpt-image-2), el dropdown lo trata como inexistente y muestra gpt-image-1 (sin perder la config — el admin sólo tiene que pulsar Guardar para fijar el válido).
Fix CRÍTICO: FUNCTION_INVOCATION_TIMEOUT en generación de imagen
06 de mayo de 2026
La versión 7.22.0 arregla el FUNCTION_INVOCATION_TIMEOUT que aparecía al pedir imágenes en Vercel. La causa: el endpoint /api/chat hacía la llamada a OpenAI Images API inline (15-30s para generar), excediendo el límite de 10s de Vercel Hobby. La función se cortaba a la mitad y la respuesta del chat también se perdía. Solución: extraída la generación a un endpoint dedicado /api/image/generate que corre en su propia función serverless con timeout independiente. El chat responde inmediato con texto ("estoy generando la imagen…") y el cliente lanza /api/image/generate en paralelo, mostrando el progreso en el bubble cuando llega el resultado.
Lo destacado
7
✨ Nuevo5
✂️Generación de imagen REMOVIDA del endpoint /api/chat. El chat ya no se bloquea esperando la imagen — devuelve respuesta inmediata.
🆕Nuevo endpoint `/api/image/generate` con su propia función serverless de 60s declarados (10s reales en Hobby) — independiente del chat. Si timeout, sólo falla la imagen, NO el chat.
🔁El cliente lanza `/api/image/generate` en paralelo cuando el toggle imagen está activo. Antes ambos eran secuenciales en la misma función → bloqueo total.
📎El nuevo endpoint sigue leyendo `app_settings.image_generation` (modelo, tamaño, URL, key, params) y hace el "asistente de prompt" si está activado.
🔗Tras generar, attachea la imagen al último mensaje assistant del chat actualizando `attachments_json` y `meta_json` — así sobrevive a refreshes y se ve en historial.
🐛 Arreglado2
🚨Bug: pedir una imagen mostraba "An error occurred with your deployment FUNCTION_INVOCATION_TIMEOUT" — Vercel Hobby cortaba el chat a 10s mientras la API de imagen aún tardaba 15-30s.
⏱️AbortSignal.timeout(55000) en la llamada a OpenAI — si la API tarda más de 55s, abortamos para devolver error legible antes del kill duro de Vercel.
Cambios detallados33 · 6
Causa raíz del FUNCTION_INVOCATION_TIMEOUT
5
Vercel Hobby tiene límite de 10s en funciones serverless. Pro tiene 60s.
/api/chat declaraba `maxDuration = 60` (irrelevante en Hobby).
Dentro del chat, si `image_generation: true`, hacía `await fetch("https://api.openai.com/v1/images/generations")` que tarda 15-30s con `gpt-image-1`/`dall-e-3`.
A los 10s exactos, Vercel mata la función → cliente recibe FUNCTION_INVOCATION_TIMEOUT → ni respuesta de chat ni imagen.
Esto era SISTEMÁTICO: cualquier petición con imagen activa fallaba en Hobby.
Solución: endpoint separado
8
Nuevo `src/app/api/image/generate/route.ts` (POST) — su propia función serverless.
Lee la config del admin desde `app_settings.image_generation` (igual que antes el chat — código duplicado intencional para que el endpoint sea autónomo).
Hace el "asistente de prompt" si `generate_prompt_assist: true` (rewrite con gpt-4o-mini, timeout 4s).
Llama a `${api_url}/images/generations` con AbortSignal.timeout(55000).
Sube el resultado a Supabase Storage `generated-images/{user_id}/{ts}_generated.png` y devuelve la public URL.
Si hay `conversation_id`, busca el último mensaje `assistant` de la conversación y lo actualiza con el attachment de la imagen — así la imagen queda persistida en el historial.
Errores devueltos con status apropiados (403 si admin desactivó, 502 si API falla, 504 si timeout).
Cambios en /api/chat/route.ts
4
Eliminado el bloque inline de generación de imagen (~140 líneas que llamaban a /v1/images/generations + uploadToStorage).
Cuando `image_generation` está activo, sólo añade un hint al system prompt: "El usuario ha activado generación de imagen. La imagen se está generando en paralelo en /api/image/generate y se mostrará automáticamente en el chat cuando esté lista. Tu respuesta debe ser breve (1-2 frases) confirmando que estás generando la imagen."
El chat responde inmediato → no hay timeout porque la fetch a OpenAI Images ya no se hace aquí.
El SSE `image_generation_event` que antes mandaba `status: ready/error` ahora manda sólo `status: running` para compatibilidad — el state real lo gestiona el cliente desde la respuesta del nuevo endpoint.
Cambios en ChatInput.tsx
7
Justo después de `setImageGenerationRun({ status: "running" })`, lanza un `fetch("/api/image/generate")` en una IIFE async (sin await — corre en paralelo).
- Excepción de red: `setImageGenerationRun({ status: "error", error: errMsg })`
El bubble del chat ya tenía la lógica para mostrar progress + imagen final desde imageGenerationRun → no se tocó nada del UI.
El chat principal (texto del modelo) sigue su flujo normal vía /api/chat. Imagen y texto llegan independientemente.
Comparativa antes/después
4
**Antes (v7.21.0)**: 1 sola petición a /api/chat, debe completar imagen + texto en 10s. Resultado en Hobby: FAIL siempre.
**Ahora (v7.22.0)**: 2 peticiones independientes en paralelo. /api/chat termina rápido (sólo texto, ~3-5s). /api/image/generate corre aparte (≤10s en Hobby, ≤60s en Pro). Si la imagen falla, el chat sigue funcionando.
Coste: idéntico — la API de imagen se llama una vez, igual que antes.
Latencia percibida: MEJOR. El usuario ve la respuesta del chat en 3-5s y la imagen llega cuando esté lista — no espera 30s para ver nada.
Calidad técnica
5
Typecheck verde tras los cambios.
Sin breaking changes — el toggle de imagen del composer funciona igual.
El estado `imageGenerationRun` (Zustand store ya existente) se sigue usando como única fuente de verdad para la UI.
Si en el futuro se migra a Vercel Pro, el código sigue funcionando — sólo aumenta el timeout efectivo.
El endpoint `/api/image/generate` también puede llamarse desde fuera del chat (ej: regenerar una imagen, dar otro estilo, etc.) — útil para futuras features.
Fix: la config del panel admin de Imagen ahora SÍ se aplica al chat
06 de mayo de 2026
La versión 7.21.0 cierra el loop del panel de Imagen (v7.19.0): el admin podía guardar el modelo (gpt-image-2, etc.), tamaño, motor, URL/key, parámetros — pero el chat seguía usando "gpt-image-1.5" hardcoded. Ahora el endpoint de chat lee `app_settings.image_generation` antes de cada generación y usa los valores del admin. El badge del modelo en el bubble de imagen también refleja el modelo real (no el hardcoded). Bonus: implementado el "Asistente de prompt" (cuando está activo en el panel, reescribe el prompt del usuario con un LLM ligero antes de enviarlo al modelo de imagen para mejor calidad).
Lo destacado
7
✨ Nuevo5
📐Tamaño de la imagen también lee del admin (`generation.size`) — antes siempre 1024×1024 fijo.
🔌URL base de la API y clave API se leen del admin: permite usar OpenAI con cuenta personal, AUTOMATIC1111 local, ComfyUI, Replicate, o cualquier endpoint compatible con la API de OpenAI Images.
⚙️Parámetros JSON adicionales del admin (ej: `{"quality": "hd", "style": "vivid"}`) se mezclan con la petición.
🏷️El badge del modelo en el bubble del chat ahora muestra el modelo REAL (era "GPT-IMAGE-1.5" hardcoded).
🛑Si el admin desactiva globalmente la generación de imágenes (toggle "Generación de imágenes"), el chat NO genera aunque el usuario active el toggle del composer.
💎 Mejorado2
🎨El modelo configurado en `/admin/image-generation` (ej: `gpt-image-2`) ahora se usa de verdad en cada generación. Antes era ignorado y el chat usaba `gpt-image-1.5` hardcoded.
✨Asistente de prompt implementado: si está activado en el panel, reescribe el prompt con `gpt-4o-mini` añadiendo detalles visuales (estilo, composición, iluminación) antes de generar. Timeout 5s — si falla, usa el prompt original.
Cambios detallados29 · 6
Lectura dinámica de la config (chat/route.ts)
5
Antes de generar imagen, el endpoint hace `serviceClient.from("app_settings").select("value").eq("key", "image_generation").maybeSingle()`.
Si encuentra config: extrae `enabled`, `generate_prompt_assist`, `generation.{model, size, api_url, api_key, extra_params}`.
Si no encuentra config (admin nunca guardó): fallback a defaults `gpt-image-1.5` + `1024x1024` + `https://api.openai.com/v1` + `process.env.OPENAI_API_KEY` + `{}`.
`extra_params` se parsea con `JSON.parse` con try/catch — si el admin guardó JSON inválido, se ignora silenciosamente.
Ningún campo es required — si falta `model` se usa el default. Cualquier valor "" (string vacío) se ignora.
URL endpoint configurable
7
La petición ahora va a `${imageGenApiUrl}/images/generations` en lugar de hardcoded `https://api.openai.com/v1/images/generations`.
El `api_url` del admin se normaliza con `.replace(/\/$/, "")` para quitar slash final si el admin lo añadió.
Permite usar:
- `https://api.openai.com/v1` (OpenAI default)
- `http://localhost:7860` (AUTOMATIC1111 local)
- `https://api.replicate.com/v1` (Replicate)
- Cualquier endpoint compatible con la API OpenAI Images.
Asistente de prompt (rewriter)
6
Si `app_settings.image_generation.generate_prompt_assist === true`, antes de llamar al modelo de imagen se hace una llamada extra a `gpt-4o-mini` para reescribir el prompt.
System prompt del rewriter: "Eres un experto en prompts para generación de imagen. Reescribe el prompt del usuario añadiendo detalles visuales (estilo, composición, iluminación, paleta) que mejoren el resultado. Devuelve SÓLO el prompt mejorado en una línea, sin comillas ni explicación. Mantén el idioma original."
Temperature 0.5, max_tokens 200, timeout 5s con `AbortSignal.timeout(5000)`.
Si el rewrite falla o devuelve string vacío, se usa el prompt original (no-fatal).
Coste: ~$0.0001 por imagen — insignificante comparado con el coste de la imagen ($0.04+).
Útil para cuando el usuario escribe prompts cortos tipo "perro" → el rewriter lo expande a "Fotografía de un golden retriever en un parque al atardecer, luz dorada, profundidad de campo, 4K".
Badge del modelo en el chat
3
El stream event `image_generation_event` incluye el campo `model` que se muestra en el bubble como "GPT-IMAGE-2", "DALL-E-3", etc.
Antes era hardcoded `model: "gpt-image-1.5"` → siempre se veía ese badge aunque el admin hubiera configurado otro.
Ahora `model: imageGenModel` que viene del config del admin.
Toggle global del admin
3
Si `app_settings.image_generation.enabled === false`, la generación de imagen se SKIPPEA aunque el usuario active el toggle del composer.
Caso de uso: el admin quiere desactivar temporalmente la imagen sin tocar permisos por rol.
El usuario verá la respuesta del modelo de chat normal sin imagen — sin error explícito (decisión: el admin ya sabe que la apagó).
Calidad técnica
5
Typecheck verde.
Sin breaking changes — si no hay config en `app_settings.image_generation`, todo funciona como antes.
Try/catch envolviendo la lectura de config (no fatal si Supabase falla).
Try/catch envolviendo el rewriter (no fatal si OpenAI tarda o falla).
Logs claros: `[ImageGen] Generating with model=X, size=Y, url=Z` y `[ImageGen] Prompt rewritten via assist: ...`
Fix: image_generation visible en menú + long-press en sidebar mobile
06 de mayo de 2026
La versión 7.20.0 arregla dos problemas reportados: (1) la herramienta de generación de imágenes desapareció del menú de herramientas porque se gateaba por `selectedModelCapabilities.image_generation`, lo cual era incorrecto — la generación de imagen llama a un endpoint aparte (gpt-image / DALL-E) y no depende del modelo de chat. Lo mismo aplica al code_interpreter (Pyodide en el navegador). Ambos toggles vuelven a aparecer con cualquier modelo. (2) En la sidebar de mobile no había forma de abrir el menú de opciones (3 puntos) de cada conversación porque el botón sólo aparecía con hover (que no existe en táctil). Ahora long-press de 500ms sobre la fila abre el menú en la posición del dedo, con vibración háptica suave; el botón de 3 puntos también es visible siempre en mobile como alternativa.
Lo destacado
5
✨ Nuevo4
📱Long-press en sidebar mobile: 500ms de pulsación sostenida sobre una conversación abre el menú de opciones (renombrar, fijar, exportar, mover de carpeta, archivar, eliminar) en la posición del dedo.
👆El botón de 3 puntos ahora es visible siempre en mobile (no requiere hover); en desktop se mantiene el comportamiento de aparecer al hover sobre la fila.
📳Vibración háptica de 15ms cuando se dispara el long-press (en dispositivos que soportan navigator.vibrate).
🛡️Long-press cancelable: si mueves el dedo más de 12px o levantas antes de los 500ms, no se dispara — así no interfiere con el scroll de la lista.
💎 Mejorado1
🎨image_generation y code_interpreter ya no se gatean por capabilities del modelo de chat. Estos tools llaman a APIs propias (gpt-image / Pyodide) — la herramienta debe poder activarse con cualquier modelo si la cuenta tiene credenciales y rol adecuado.
Cambios detallados18 · 3
Fix #1 — image_generation y code_interpreter visibles
5
Antes: `effectiveToolPermissions.imageGeneration = toolPermissions.imageGeneration && collaborationAllowedTools.imageGeneration && (selectedModelCapabilities?.image_generation ?? true)`. La última condición desactivaba el tool si el modelo de chat tenía `capabilities.image_generation: false` (que es el default de la mayoría de modelos GIA-5.x, gpt-4o, etc.).
Razón del bug: la generación de imagen NO la hace el modelo de chat — el endpoint /api/image llama a gpt-image-1 o DALL-E 3 directamente. El modelo de chat sólo recibe la URL resultante.
Lo mismo con code_interpreter: corre en Pyodide en el navegador desde v7.10.0, no depende del modelo de chat.
Ahora: `imageGeneration: toolPermissions.imageGeneration && collaborationAllowedTools.imageGeneration` (sin gate de modelo).
Igual para `codeInterpreter`. El resto de herramientas (web_search, deep_research, network_drive_rag, document_generation, spreadsheet_analysis) SÍ siguen gateando por capabilities porque sí dependen del modelo de chat (tools API, vision para attachments, etc.).
Fix #2 — Long-press en sidebar mobile
8
Nuevo `onTouchStart` en cada `<li>` de ChatRow: arranca un timer de 500ms y guarda la posición inicial del dedo.
`onTouchMove`: si el dedo se desplaza más de 12px (scroll detectado), cancela el timer.
`onTouchEnd` / `onTouchCancel`: cancela el timer si el usuario suelta antes de los 500ms.
Cuando el timer dispara: vibración 15ms (`navigator.vibrate(15)`), abre el menú con `setMenuOpen(true)` y posiciona en `(touchX, touchY + 12)` con clamp para que no se salga de pantalla.
Flag `longPressFiredRef.current = true` evita que el siguiente click (synthetic del touchend) abra la conversación tras el long-press.
Cleanup useEffect: cancela timers al desmontar para evitar fugas si el usuario navega rápido.
CSS: `WebkitUserSelect: none`, `userSelect: none`, `WebkitTouchCallout: none` en el `<li>` para evitar el menú de iOS de selección de texto durante el long-press.
Botón MoreHorizontal: `opacity-100 md:opacity-0 md:group-hover/row:opacity-100` — siempre visible en mobile, sólo en hover en desktop. Así el usuario también puede tocar el botón directamente sin esperar al long-press.
Calidad técnica
5
Typecheck verde.
Sin breaking changes.
Comentarios "7.20.0" en cada punto de cambio.
El long-press es modular: usa refs y useCallback para no recrear handlers en cada render.
LONG_PRESS_MS = 500ms (estándar Material) y LONG_PRESS_MOVE_TOLERANCE = 12px.
Cierre del docx Errores GIA — los 6 fixes pendientes resueltos
06 de mayo de 2026
La versión 7.19.0 cierra el ciclo del documento Errores GIA.docx aplicando los 6 fixes que quedaron pendientes en 7.18.0: (E2+E3) Whisper actualizado a gpt-4o-mini-transcribe con prompt de vocabulario para no "limpiar" dominios raros como efigarola.es; (E4) modelo virtual GIA-Voz añadido a model_configs vía migración 076 y voice modal lee system_prompt configurable desde admin; (E6) dedup defensivo añadido por (role + content + ventana de 3s) para casos edge entre Realtime broadcast e INSERT del cliente; (E10) nueva tab "Imagen" en panel admin estilo OpenWebUI con modelo, tamaño, motor, URL/key, parámetros JSON tanto para crear como para editar imágenes; (E11) cada tab del admin tiene su propia URL ahora (/admin/users, /admin/models, /admin/image-generation, etc.) con back/forward del navegador funcionando.
Lo destacado
6
✨ Nuevo6
🎤E2+E3 — Whisper: cambio de `whisper-1` a `gpt-4o-mini-transcribe` (mejor precisión). Prompt de vocabulario "GIA, Ferran, Gesem, fgarola, efigarola.es..." para que NO transforme dominios raros en typos comunes. Fallback automático a whisper-1 si el nuevo no está disponible.
🐰E4 — Modelo virtual "GIA-Voz" creado en `model_configs` (migración 076). Aparece en el panel admin Modelos y se puede editar (system_prompt, max_tokens, etc.). El voice modal lee `system_prompt` del admin si existe; si está vacío usa el default.
🛡️E6 — Nuevo dedup `dedupeMessagesByContentWindow`: detecta y elimina mensajes con (role + content idéntico + created_at en ventana de 3s) aunque tengan ids distintos. Cubre el caso edge de Realtime broadcast llegando con id distinto al INSERT del cliente.
🖼️E10 — Nueva tab "Imagen" en panel admin estilo OpenWebUI: configuración de motor, modelo, tamaño, URL base, clave API, versión API y parámetros JSON para "Crear imagen" y "Editar imagen" por separado. Persiste en `app_settings` bajo key `image_generation`.
🔗E11 — Cada tab del admin ahora tiene su propia URL: `/admin/dashboard`, `/admin/users`, `/admin/models`, `/admin/image-generation`, etc. (21 tabs con sus rutas). Back/forward del navegador funciona. `/admin` redirige a `/admin/dashboard`.
📋Logging de duplicados: `dedupeMessagesById` y `dedupeMessagesByContentWindow` ahora loguean en consola cuando detectan y eliminan duplicados — visibilidad para diagnosticar casos edge futuros.
Cambios detallados39 · 6
E2+E3 — Whisper más preciso
6
Modelo: `whisper-1` → `gpt-4o-mini-transcribe` (preview-stable, mejor precisión).
`temperature: 0` para más determinismo (cada audio se transcribe igual cada vez).
Fallback automático: si `gpt-4o-mini-transcribe` falla con 4xx, retry con `whisper-1` + el mismo prompt.
Aplicado en `/api/voice/transcribe` (botón mic del composer) Y en `useRealtimeVoice.ts` para el `input_audio_transcription` del Realtime API.
Resultado: "efigarola.es" se transcribe literal — antes Whisper lo convertía en "fgarola.es" (más común) y la IA buscaba en internet el dominio incorrecto.
E4 — Modelo GIA-Voz en admin
7
Migración 076 (`gia_voz_model_entry.sql`): inserta `display_name="GIA-Voz"` en `model_configs` apuntando a `gpt-4o-mini-realtime-preview`.
Idempotente: si el modelo ya existe (por slug o display_name), no hace nada.
Auto-detección del provider OpenAI activo (`is_active=true`, ordenado por `priority`).
Sin `system_prompt` por defecto — la idea del usuario era "elimina las instrucciones que tiene ahora mismo, déjalo solamente que se llama GIA-Voz". El admin puede añadir prompt personalizado desde el panel si quiere.
VoiceConversationModal ahora lee `system_prompt` del modelo "GIA-Voz" en `model_configs`. Si existe, lo usa como base; si no, fallback al default hardcoded.
Resultado: el admin puede entrar a /admin/models, ver "GIA-Voz", y editar el system_prompt (o cualquier otra opción) sin tocar el código.
E6 — Dedup adicional por content-window
6
Nueva función `dedupeMessagesByContentWindow(messages: Message[]): Message[]` en `chat-store.ts`.
Para cada mensaje, comprueba si ya hay otro con: mismo role + content idéntico (trim) + `created_at` en ventana de ±3s.
Si encuentra duplicado, conserva el primero y elimina el segundo. Loguea en consola cuántos quitó.
Aplicado en `mergeServerMessagesWithOptimistic` (la función que combina mensajes del server con los optimistic locales en cada `loadMessages`).
Cubre el caso edge: Realtime broadcast trae un mensaje con id distinto al INSERT que hizo el cliente — antes se mostraban dos bubbles iguales.
No reemplaza al `dedupeMessagesById` — se aplica DESPUÉS, como segunda red.
E10 — Tab Imagen en admin (estilo OpenWebUI)
7
Nuevo componente `src/components/admin/panels/ImageGenerationPanel.tsx`.
Sección "General": toggle global para activar/desactivar generación de imágenes.
Sección "Crear imagen": motor (OpenAI / AUTOMATIC1111 / ComfyUI / Replicate / Custom), modelo, tamaño (256-2048), toggle de asistente de prompt, URL base API, clave API, versión API, parámetros JSON.
Sección "Editar imagen": mismos campos para configurar el motor de edición de imágenes por separado (puedes generar con OpenAI y editar con AUTOMATIC1111).
Persiste en `app_settings` con key `image_generation` (añadida a la whitelist en `/api/admin/app-settings`).
UI con subcomponentes Toggle, Input, Select, SecretInput (con eye/eye-off), Textarea — patron consistente con el resto del admin.
Validación: el panel sólo monta los datos cuando `active=true` (igual que otros paneles del admin).
E11 — URLs por tab del admin
8
Nuevo route dynamic `src/app/admin/[tab]/page.tsx` que valida el tab y pasa `initialTab` a `AdminPageClient`.
Lote de fixes del Errores GIA.docx — voz, Pyodide, imágenes, Welcome
06 de mayo de 2026
La versión 7.18.0 ataca 7 de los 13 errores reportados en el documento "Errores GIA.docx" del usuario. Cubre las áreas de voz (sonidos premium con sonido READY al estar listo, volumen 3× más alto, fix del primer mensaje que no aparecía en chat, fix del preview de voces que no reproducía), Pyodide (input() interactivo ahora funciona con window.prompt como fallback en lugar de lanzar RuntimeError), imágenes (preview con spinner sobre el thumbnail estilo ChatGPT desde el inicio del upload, sin toast separado) y Welcome (hora se actualiza cada segundo con segundos visibles). Los 6 errores restantes (admin tab Imagen, separar admin en archivos, modelo Gia-Voz en panel modelos, Whisper transcripción, duplicado de mensajes, casos edge) requieren refactor más amplio y se atacarán en próximas releases.
Lo destacado
8
✨ Nuevo3
🕐E12 — Welcome: hora se actualiza cada segundo (antes sólo cambiaba al navegar) + ahora muestra segundos también.
🔔E5 — Voz: nuevo sonido `ready` cuando GIA-Voz pasa a estado LISTO (campanita Do-Mi-Sol con sub-octava + glissando final brillante). NO suena al abrir ni al conectar — sólo al estar listo para escuchar.
🎤E1 — Primer mensaje de voz: si el evento `audio_transcript.delta/done` no llega antes de `response.done` (común en el primer turno), se usa el fallback "[Respuesta de voz sin transcripción]" para que el bubble se cree igualmente. Antes la respuesta se perdía silenciosamente.
💎 Mejorado3
🔊E5 — Voz: volumen subido 3× (master 0.18 → 0.55), envelope ADSR con attack suave y release exponencial. Sonidos `mute`/`unmute`/`hangup` mejorados con capas armónicas.
🖼️E9 — Imagen pegada: el toast "Imagen pegada, subiendo…" sustituido por spinner SOBRE el thumbnail (estilo ChatGPT). Previsualización aparece inmediatamente, con loader encima mientras sube.
🖼️E8 — Preview imagen durante upload: ahora se muestra al instante (placeholder optimista con `temp_id` + `uploading: true`). Antes sólo aparecía tras finalizar la subida.
🐛 Arreglado2
🐍E13 — Pyodide: `input()` ya NO lanza RuntimeError. Usa `window.prompt()` del navegador como fallback. Si el usuario cancela, devuelve string vacío en lugar de romper el código.
🎚️E7 — Preview de voz: `gpt-4o-mini-tts` no soporta voces `marin`/`cedar` (Realtime-only) — ahora hay fallback automático a tts-1-hd con voz mapeada (marin→verse, cedar→onyx). Toast con error claro si falla.
Cambios detallados41 · 8
E12 — Welcome: hora en vivo con segundos
3
Antes: `getTimeLabel()` se calculaba SOLO al montar `WelcomeScreen`. Si abrías la pantalla a las 11:59 y mirabas a las 12:30, seguía mostrando 11:59 hasta que cambiabas de página y volvías.
Ahora: el `time` (y el `weekday`, por consistencia) se calcula con `countdownNow` que ya tenía un `setInterval(setCountdownNow(new Date()), 1000)` activo. Cada segundo se refresca.
`getTimeLabel()` ahora acepta una `Date` opcional y formatea con `hour: 2-digit`, `minute: 2-digit`, `second: 2-digit` — antes sólo hora:minuto.
E13 — Pyodide: input() interactivo con prompt() del navegador
4
Antes (v7.10.0): cualquier código con `input()` daba `RuntimeError: input() interactivo no está disponible en el navegador`. Bloqueado a propósito.
Ahora: definimos `window.geiaPrompt(msg)` que llama a `window.prompt()` y devuelve la respuesta del usuario. Si cancela, devuelve string vacío.
En el sandbox prelude de Python redefinimos `builtins.input = _interactive_input`, que llama a `js.geiaPrompt()` desde Python.
Resultado: cualquier ejemplo que use `input()` (ej: `nombre = input("Tu nombre")` que generan los modelos) funciona igual que en una terminal — abre un prompt nativo del navegador, captura la respuesta y la pasa al código.
E5 — Sonidos premium del asistente de voz
7
Nuevo sonido `ready`: cuando el data-channel pasa a `connected`, suena una campanita ascendente Do5 → Mi5 → Sol5 (acorde de Do mayor) con sub-octava Do4 para calidez + glissando final La5 → Mi6 brillante. Inspirado en Apple Intelligence / Pixel.
Suena UNA SOLA VEZ por sesión, en el primer paso a `connected`. Si la sesión termina (idle/error) y vuelve a empezar, vuelve a sonar.
NO suena al abrir el modal ni mientras está conectando — sólo cuando ya está LISTO para escuchar.
Volumen del master: 0.18 → 0.55 (≈3× más alto). Más audible en entornos con ruido.
Envelope mejorado en todos los sonidos: attack 12ms, sustain plano, release exponencial a 0.0001 (silenciamiento orgánico, sin clicks).
`mute` / `unmute` / `hangup`: tonos con 2-3 capas armónicas (fundamental + sub-octava + glissando), no sonido digital plano.
`hangup`: añadido tono de "click mecánico" (220 Hz triangle 100ms) al final para sensación táctil de cerrar.
E7 — Preview de voz: fallback robusto
5
Síntoma: pulsar play en cualquier voz se quedaba colgado en "Cargando…" sin emitir audio. Especialmente con Marin/Cedar (no soportadas en TTS) pero también ocurría intermitentemente con Alloy.
Causa raíz 1: `gpt-4o-mini-tts` no acepta `marin`/`cedar` (esas voces son EXCLUSIVAS de la Realtime API). El endpoint /v1/audio/speech devolvía 400 y el cliente no mostraba error.
Fix #1 (mapeo de voces): en `/api/voice/tts`, si la voz solicitada no está en la whitelist TTS, fallback automático: `marin → verse`, `cedar → onyx`. El resto de voces no soportadas → `alloy`.
Fix #2 (fallback de modelo): si la primera petición a `gpt-4o-mini-tts` falla con 4xx (cuenta sin acceso, etc.), reintentamos automáticamente con `tts-1-hd` (más viejo, pero con compatibilidad universal).
Fix #3 (visibilidad): el endpoint ahora devuelve el `error.message` del backend en el JSON de respuesta. El frontend muestra un toast con ese mensaje si el preview falla.
E9 + E8 — Imagen pegada con spinner sobre thumbnail
7
Antes (E9): pegar imagen mostraba un toast "Imagen pegada, subiendo…" en bottom-right de la pantalla, separado del input. UX confusa.
Antes (E8): la previsualización de la imagen sólo aparecía tras terminar la subida — durante el upload, no había feedback visual encima del input.
Ahora: añadimos el attachment OPTIMÍSTICAMENTE al state al inicio del upload con `temp_id` y `uploading: true`. El thumbnail aparece al instante con la imagen del `localPreview` (blob URL).
Encima del thumbnail, mientras `uploading: true`, se renderiza un overlay con `bg-black/45 backdrop-blur-[2px]` y un `Loader2` blanco animado en el centro — exactamente como ChatGPT.
Cuando termina el upload con éxito, swap del temp_id por el file_id real y `uploading: false` → el spinner desaparece y queda el thumbnail limpio.
Si falla, se quita el placeholder optimista y se muestra el toast de error.
Eliminado el `addToast` para paste — el feedback ahora es 100% visual sobre la imagen.
E1 — Primer mensaje de voz no aparecía en el chat
4
Síntoma: después del primer turno tras abrir GIA-Voz, el mensaje del usuario aparecía en el chat pero la respuesta de la IA NO. El audio de la respuesta sí sonaba, pero no había bubble en el chat. Sólo se arreglaba en turnos posteriores.
Causa raíz: en `useRealtimeVoice.ts` el handler de `response.done` sólo llama a `onAIResponseDone(finalText)` si `finalText` es truthy. En el primer turno, los eventos `audio_transcript.delta` y `audio_transcript.done` a veces no llegan antes que `response.done` (race), y `aiTranscriptBufferRef.current` queda vacío. `finalText = ""` → no se llama a la callback → no se persiste el mensaje.
Fix: ahora SIEMPRE se llama a `onAIResponseDone`, incluso si `finalText` está vacío. En ese caso se pasa el fallback `"[Respuesta de voz sin transcripción]"` para que el bubble se cree y el usuario sepa que hubo una respuesta de audio.
En la mayoría de los casos `finalText` SÍ llega y este fallback no se usa. Sólo cubre el caso edge del primer turno con timing raro.
Errores PENDIENTES (próximas sesiones)
6
E2 — Whisper transcribe mal dominios raros (`efigarola.es` → `fgarola.es`). Causa: Whisper "limpia" lo que parecen typos. Solución potencial: pasar `prompt` con vocabulario común a Whisper, o usar `whisper-large-v3` cuando esté en el endpoint de OpenAI.
E3 — A veces no transcribe bien. Mejorable subiendo el `silence_duration_ms` o usando un modelo de transcripción más reciente.
E4 — Modelo "Gia-Voz" en el panel admin tab Modelos. Requiere añadir entrada virtual al sistema de modelos.
E6 — Caso edge nuevo de duplicación de mensajes (sin foto). Pendiente de reproducción.
E10 — Tab "Imagen" en el panel admin (estilo OpenWebUI). Requiere construir una nueva tab completa con campos para modelo, tamaño, API URL/key.
E11 — Separar el panel admin en archivos por tab/URL. Refactor masivo del componente AdminPageClient.
Calidad técnica
5
Typecheck verde tras los 7 fixes.
Sin breaking changes — APIs públicas estables.
Comentarios "7.18.0" en cada punto de cambio para visibilidad histórica.
`PendingAttachment` interface ampliada con `temp_id` y `uploading` para soportar el placeholder optimista.
TTS endpoint: error message del backend ahora viaja al cliente (antes se perdía).
Voz: vuelta a la burbuja compacta no intrusiva (anclada al composer)
06 de mayo de 2026
La versión 7.17.0 vuelve al diseño de burbuja compacta del asistente de voz, anclada encima del composer del chat. Las versiones 7.15.0 (fullscreen) y 7.16.0 (modal centrado) eran demasiado intrusivas y bloqueaban la lectura del chat. Ahora la burbuja flota arriba del composer (~max-w-md, ~70px alto), no oscurece el resto de la página, y el usuario puede seguir leyendo mensajes mientras habla con la IA. Mantiene el look premium con orbe pequeño + halo glow + status pill + waveform inline + 3 botones a la derecha.
Lo destacado
11
✨ Nuevo10
🫧Burbuja compacta anclada al composer (vuelve al estilo pre-7.15). NO ocupa toda la pantalla, NO tiene backdrop oscuro, NO bloquea el chat.
📐Tamaño: max-w-md (~448px), altura ~70px. Sólo ocupa lo necesario.
👈Click fuera no cierra (estaba en 7.16, era confuso). El Hangup explícito es el único cierre.
🌑Sin backdrop ni overlay oscurecido — el usuario sigue viendo el chat completo detrás.
🪐Avatar pequeño (44px) con halo glow del estado + 2px ring del color primario.
🕒Timer + cost en línea con la status pill, no en líneas separadas.
📊Waveform inline al final de la línea de status (12px alto, 2px gap).
🔘3 botones compactos (36×36 cada uno) a la derecha: Interrupt (condicional, ámbar) · Mute (zinc/glass) · Hangup (rojo, primary).
✨Mantiene: animaciones cubic-bezier, status-dot ping, text-fade entre turnos, gradient radial sutil del estado, glow exterior.
🐛 Arreglado1
🪄Wrapper en ChatShell: `fixed left-0 right-0 bottom-X` con offset = composer height + 12px. Posición exacta sobre el input.
Cambios detallados40 · 7
Por qué volver a la burbuja
4
v7.15.0 (fullscreen): la experiencia ocupaba toda la pantalla con aurora gradient mesh + 10 partículas + orbe gigante. Era inmersiva pero bloqueaba completamente la lectura del chat. Demasiado intrusiva para un toggle de "escuchando con la IA".
v7.16.0 (modal centrado): cubría ~50% de la pantalla con un card de 600px. Aún demasiado dominante. El backdrop oscurecía el chat detrás → usuario no podía seguir el contexto.
v7.17.0 (vuelta a la burbuja): asistente de voz como herramienta NO INVASIVA. El chat sigue 100% visible y legible. El usuario pulsa el botón de voz, aparece la burbuja flotante, habla, y puede seguir viendo los mensajes que llegan.
Diseño "tipo Spotify Now Playing": pill flotante anclada al composer que NO bloquea nada.
ChatShell — wrapper restaurado
4
Antes (v7.15-16): el modal se renderizaba directamente sin wrapper, gestionando su propio fixed inset-0.
Ahora: vuelta al wrapper `fixed left-0 right-0 z-50 pointer-events-none` con `bottom: var(--mobile-nav-current-height) + 10px` (mobile) o `var(--chat-composer-height) + 12px` (desktop).
Wrapper interno `max-w-4xl mx-auto px-3 sm:px-4 pointer-events-auto` para centrar y permitir clicks dentro.
Z-50 (no z-200 como en fullscreen) — encima del chat pero debajo de toasts/dialogs.
Voz: modal centrado estilo ChatGPT (no fullscreen)
06 de mayo de 2026
La versión 7.16.0 cambia la interfaz del asistente de voz de fullscreen a un modal centrado estilo ChatGPT: backdrop semi-transparente con blur del chat detrás, card compacto en el centro (max-w-md), orbe de 200px más limpio, transcript breve, y 3 botones flotantes abajo. Click fuera del card cierra. Mantiene todas las animaciones y la estética premium pero sin tomar la pantalla entera.
Lo destacado
8
✨ Nuevo7
🎯Modal centrado (max-w-md / max-w-lg) con `max-h: min(620px, 100vh - 32px)` — NO fullscreen.
🌫️Backdrop semi-transparente `rgba(8,11,22,0.62)` con `blur(14px)` — el chat se ve atenuado detrás.
🖱️Click fuera del card cierra el modal (estilo ChatGPT/Claude).
🪐Orbe central reducido de 260px a **200px** — más coherente con el modal compacto.
🔘Botones inferiores ajustados: Mute (48×48), Hangup (56×56), Interrupt (48×48). Más compactos sin perder jerarquía.
🌟Partículas flotantes eliminadas — el efecto era para fullscreen, en modal compacto resulta sobrecargado.
✨Mantenidos: triple anillo orbital, halo glow pulse, status pill animada, transcript card con animación text-fade.
💎 Mejorado1
🌈Aurora removido del fondo (era para fullscreen). Ahora sólo gradient sutil del estado en la parte superior del card + borde tintado + glow exterior.
Cambios detallados30 · 6
Cambio de fullscreen → modal centrado
5
Antes (v7.15.0): `fixed inset-0 flex flex-col` con backdrop completo de aurora gradient mesh.
Ahora (v7.16.0): `fixed inset-0 flex items-center justify-center p-4` — sólo backdrop centrado, el card va dentro.
Backdrop: bg `rgba(8,11,22,0.62)` con `blur(14px) saturate(140%)`. El chat se sigue viendo difuminado detrás.
Voz: modelo mini revertido (8× más barato) + interfaz fullscreen pro completamente nueva
06 de mayo de 2026
La versión 7.15.0 revierte el modelo Realtime al "mini" (8× más barato que el full) manteniendo todos los fixes de comportamiento de v7.14.0 (VAD ajustado, system prompt reescrito, historial limitado, Whisper auto-detect) — la combinación da respuestas correctas a coste razonable. Y rehace la interfaz del asistente de voz desde cero: pasa de un panel pequeño anclado al composer a una experiencia FULLSCREEN inmersiva tipo "llamada premium" con aurora gradient mesh dinámico, orbe central de 260px con triple anillo orbital, partículas flotantes, transcript card grande con tipografía optical, status pill con icono, y barra de acción inferior con botones premium.
Lo destacado
11
✨ Nuevo8
💰Coste de voz: modelo Realtime revertido a `gpt-4o-mini-realtime-preview` (8× más barato que el full). Pricing: $0.60/$10/$2.40/$20 per 1M tokens (vs $5/$40/$20/$80 del full).
🪐Orbe central de 260px con TRIPLE anillo orbital: exterior dashed (22s horario), medio fino (32s contrario), interior fino (14s horario). Halo glow blur 28px que pulsa con `pulse-soft 2.4s` cuando hay actividad.
🌟10 partículas flotantes ambient en posiciones aleatorias, animadas con `particle-float` 4-6s desfasadas, brillan con el color del estado.
📰Transcript en tarjeta grande (max-w-2xl) con backdrop-blur-xl, tipografía 18-20px medium, animación `text-fade` cuando cambia de turno.
🏷️Status pill premium en top-left: dot animado + icono Lucide semántico + label uppercase tracking-[0.18em] con backdrop-blur.
🔘Bottom action bar: 3 botones flotantes con gradients reales y sombras de profundidad. Hangup centrado y MÁS GRANDE (20×20) en rojo intenso para jerarquía. Mute (16×16) y Interrupt (16×16, condicional) a los lados.
⌨️Animaciones de entrada escalonadas (`mount-fade` 400ms del backdrop, `content-up` con delays 0.05/0.12/0.20s para top bar / centro / bottom).
✕ Botón X cerrar en top-right (además del Hangup principal abajo).
💎 Mejorado1
🎬NUEVA interfaz de voz: pasa de panel pequeño anclado al composer → experiencia FULLSCREEN inmersiva tipo "llamada premium".
🐛 Arreglado2
✅Mantenidos los fixes de comportamiento de v7.14.0: VAD ajustado, system prompt reescrito, historial limitado a 8 msgs, Whisper auto-detect. Combinados estos fixes hacen que el mini ya responda bien.
🌈Aurora gradient mesh dinámico: 3 capas de gradients radiales que se mueven lentamente con `aurora-shift 18s/22s` y se tintan con el color del estado (verde escuchando · violeta hablando · ámbar buscando · rojo error).
Coste por 1M tokens vuelve a: text_input $0.60, audio_input $10, text_output $2.40, audio_output $20 (vs $5/$40/$20/$80 del full).
Pricing actualizado en `track-usage/route.ts` (backend) y `VoiceConversationModal.tsx` (frontend, para el badge de coste en vivo).
CRÍTICO: se mantienen TODOS los fixes de comportamiento de v7.14.0 — VAD ajustado, system prompt reescrito, historial limitado, Whisper auto-detect. Estos fixes son la causa de que el mini ahora responda bien.
El cliente puede pasar `model: "gpt-4o-realtime-preview"` explícitamente si quiere el full.
Interfaz fullscreen pro — concepto general
4
ChatShell.tsx: el modal ya no se renderiza dentro de un panel anclado al composer (`fixed left-0 right-0 bottom-X`). Ahora se monta directamente y el modal gestiona su propio layout fullscreen.
Modal: `fixed inset-0 z-[200]` toma toda la pantalla. Backdrop completo en lugar de "pill" pequeño.
Mismo flow funcional (start/stop, mute, interrupt, hangup, transcript, cost tracking) — sólo cambia la presentación visual.
Animación de entrada: backdrop hace fade-in con `mount-fade 0.4s` que también pasa de `blur(0)` a `blur(28px)`. Los 3 bloques (top bar, centro, bottom bar) entran escalonados con `content-up` y delays 0.05/0.12/0.20s.
Background — aurora gradient mesh dinámico
6
Base: linear-gradient vertical de #0a0b14 (top) a #0f1424 (bottom). Aspecto "noche premium".
Capa 1 — radial-gradient ellipse 80%×60% en (20%, 20%) con color `aurora1` del estado (alpha 28-35%). Animación `aurora-shift 18s` que la mueve lentamente.
Capa 2 — radial-gradient ellipse 70%×50% en (80%, 30%) con `aurora2` (alpha 16-18%). Animación `aurora-shift-2 22s` con dirección distinta.
Capa 3 — radial-gradient ellipse 90%×70% bottom con `aurora1` otra vez. Crea sensación de espacio.
Las dos capas animadas tienen `filter: blur(60-80px)` y `opacity 0.7-0.85` cuando isConnected, 0.3-0.4 cuando no. Transición 0.6s.
Resultado: el modal tiene una atmósfera viva que cambia con el estado, sin ser distractor.
Orbe central — 260×260px con triple anillo + halo
6
Anillo exterior: `border: 1.5px dashed ${stateColor.primary}55`, rota en sentido horario en 22s (`orbit-rotate`).
Anillo medio: `inset 22px` (más interno), `border: 1px solid alpha 44`, rota CONTRARIO en 32s (`orbit-counter`).
Halo glow: `inset -30px` (envuelve el orbe), `radial-gradient` con `glow` color, `filter: blur(28px)`. Animación `pulse-soft 2.4s` cuando isSpeaking || isListening.
Avatar central: 130×130 circle con padding 22px (logo más pequeño centrado). Box-shadow triple — anillo blanco + anillo del estado + sombra fuerte + inset highlight.
Bajo el orbe: waveform con 12 barras (renderBars con 4px width, max 32px alto) o spinner Search 32px si está buscando.
Partículas ambient — 10 dots flotantes
6
Sólo se renderizan cuando `isConnected = true` (no malgastan CPU en idle).
10 dots de 2-5px en posiciones específicas (no random — definidas estáticamente para coherencia visual entre renders).
Cada dot tiene su propia duración (4.2-5.8s) y delay (0-2.6s) para que floten desfasados.
Box-shadow 4×size con el color del estado → glow real, no plano.
Animación `particle-float`: translate(8px, -12px) y opacity 0.4↔0.8.
Posicionados sobre toda la pantalla pero en zonas que no chocan con el contenido central.
Top bar — status pill + timer + cost + close
4
Status pill: rounded-full px-3 py-1.5 con backdrop-blur-md. Dot 7×7 animado + icono Lucide (Mic/Volume2/Search/Loader2/Radio) + label uppercase tracking-[0.18em].
Color del pill = `${stateColor.primary}1f` (bg) + `${stateColor.primary}55` (border). Texto = primary del estado.
Timer y cost: píldoras separadas con bg `rgba(255,255,255,0.06)` y border `rgba(255,255,255,0.12)`. Tabular-nums. En desktop, en línea con el status; en mobile, debajo del orbe.
Botón X cerrar: 10×10 rounded-full backdrop-blur, hover:bg-white/10.
Transcript card — protagonista visual
6
Max-width 2xl (672px). Mucho espacio para que el texto respire en pantallas grandes.
Speaker label: "TÚ" / "GIA" en uppercase 11px tracking-[0.22em], color del estado, mb-2.5.
Texto: 18-20px font-medium leading-relaxed, text-shadow sutil, animación `text-fade 0.3s` cuando cambia el contenido (key={`text-${displayText}`}).
Empty state: si no hay transcript aún, muestra placeholder contextual ("Empieza a hablar..." / "Estableciendo conexión..." / "No se pudo conectar").
min-height: 100px para evitar saltos de layout cuando aparece/desaparece transcript.
Bottom action bar — 3 botones premium
6
**Mute** (izquierda, 64×64): si activo gradient zinc-700/zinc-600 con shadow zinc, si no transparent glass con border blanco. Label "Activar" / "Silencio" debajo en uppercase tracking-[0.16em].
**Hangup** (centro, 80×80, MÁS GRANDE): gradient red-500/red-600 con shadow rojo intenso 20px×44px. Label "Colgar" en rojo claro. Botón principal de la barra.
**Interrupt** (derecha, 64×64, CONDICIONAL): sólo aparece cuando isSpeaking && !isSearching. Gradient amber-500/orange-600. Label "Parar" en ámbar.
Cuando Interrupt no se muestra, hay un spacer 64×64 invisible para que el layout no salte. Hangup queda perfectamente centrado siempre.
Todos los botones: hover:brightness-110, active:scale-90, gap entre icono y label de 8px.
Sombras de profundidad reales (12-20px blur) con offset positivo. Inset highlights para sensación de relieve.
Calidad técnica
6
Typecheck verde tras todos los cambios.
Sin breaking changes — la firma del componente VoiceConversationModal sigue igual (props onClose, conversationId, userId, onEnsureConversation, systemInstructions).
El audio analyser y los refs de waveform (`mobileBarsRef`, `desktopBarsRef`) siguen funcionando — sólo el JSX que los usa ha cambiado.
GIA-Voz responde correctamente: modelo full + VAD ajustado + prompt directo
06 de mayo de 2026
La versión 7.14.0 ataca el bug crítico reportado: GIA-Voz daba respuestas desconectadas de las preguntas del usuario ("Entiendo, me avisas si necesitas algo" tras "¿Quién eres?"). Tras analizar la causa raíz se aplicaron 5 fixes: (1) modelo Realtime cambiado de "mini" a FULL — el mini era el principal culpable de respuestas pobres; (2) VAD reajustado: silence 600ms→1500ms, threshold 0.5→0.6, padding 300ms→500ms — evita cortar al usuario mid-frase; (3) system prompt reescrito sin la línea "Si no entiendes pide aclaración" que disparaba respuestas tipo "no he entendido bien"; (4) historial inyectado limitado a 8 mensajes (no 20) con etiqueta explícita "histórico, NO respondas a esto"; (5) Whisper sin language fijo, auto-detecta es/ca/en. Pricing del cost indicator actualizado al modelo full.
Lo destacado
8
✨ Nuevo6
🚀Modelo Realtime cambiado de `gpt-4o-mini-realtime-preview` a `gpt-4o-realtime-preview` (FULL). Comprensión y coherencia mucho superiores. Coste ~8× pero la calidad lo justifica.
⏱️VAD ajustado: `silence_duration_ms` 600→1500ms (1.5s para pensar mid-frase), `threshold` 0.5→0.6 (menos falsos positivos), `prefix_padding_ms` 300→500ms (no se pierde la primera sílaba).
📚Historial inyectado reducido de 20 → 8 mensajes (4 turnos), truncado de 400 → 240 chars. Con etiqueta explícita "=== Histórico — NO respondas a esto ===" para que el modelo distinga contexto de fondo vs turno actual.
🌍Whisper sin `language` fijo: auto-detecta español, catalán, inglés... Si alternas idiomas mid-conversación, transcribe cada turno en su idioma real.
🎙️Voz por defecto del Realtime API también es ahora "marin" (premium, casi humana) en lugar de "alloy".
💰Cost indicator actualizado al pricing del modelo full ($5/M text in, $40/M audio in, $20/M text out, $80/M audio out).
💎 Mejorado1
📝System prompt reescrito: fuera la línea "Si no entiendes pide aclaración" que disparaba "no he entendido bien" en bucle. Ahora: "Responde SIEMPRE al último mensaje del usuario, nunca cambies de tema". Si no se oye → "No te he escuchado bien, ¿puedes repetir?" (literal, no improvise relleno).
🐛 Arreglado1
🎯BUG resuelto: respuestas desconectadas. La IA ya no responde "Entiendo, me avisas si necesitas algo" tras "¿Quién eres?".
Cambios detallados34 · 8
Causa raíz del bug "respuestas desconectadas"
4
Síntoma: el usuario dice "¿Quién eres?" y GIA-Voz responde "Entiendo, me avisas si necesitas algo. ¡Estoy aquí para ayudar!". Tras "¿Quién eres? ¿Cómo te llamas?" responde "Claro, cuando esté listo para hablar, estaré aquí para ayudarte. ¡Que tengas un buen día!".
Análisis del flow: cuando el VAD corta el audio mid-frase (silence 600ms es muy corto), el modelo recibe input incompleto + ve la línea "Si no entiendes pide aclaración" en el system prompt → genera respuesta defensiva genérica.
Análisis adicional: el modelo "mini" tiene comprensión limitada. Cuando se combina con history dump grande (20 mensajes) + input parcial → respuesta off-topic.
Tres causas combinadas → 5 fixes coordinados.
Fix #1 — Modelo Realtime FULL en lugar de mini
5
Cambiado en 4 sitios: `useRealtimeVoice.ts` (3 referencias) + `/api/voice/session/route.ts` (default).
Coste ~8× mayor pero respuestas mucho más coherentes y contextualmente acertadas.
El cliente puede sobrescribir al mini pasando explícitamente `model: "gpt-4o-mini-realtime-preview"` si el coste es prioritario sobre calidad.
Voz por defecto del session también cambiada de "alloy" a "marin" (premium).
Fix #2 — VAD reajustado
3
`silence_duration_ms`: 600 → **1500** ms. Antes una pausa natural (",", "...") cortaba el turno. Ahora 1.5s de silencio antes de cerrar — permite pensar mid-frase.
`threshold`: 0.5 → **0.6**. Menos falsos positivos con ruido ambiental, perros, teclado. Requiere voz más clara para considerar "speech started".
`prefix_padding_ms`: 300 → **500** ms. Captura medio segundo PREVIO al inicio del habla detectada. Si empezabas rápido y se perdía la primera sílaba ("Quién" salía como "uién"), ya no.
Fix #3 — System instructions reescritas
7
Antes: "Si no entiendes la petición, pide aclaración corta en lugar de cambiar de tema." → este texto disparaba el bucle "Parece que no he entendido bien" porque el modelo lo interpretaba como invitación a usarlo siempre.
Ahora reglas explícitas:
- "Responde SIEMPRE al último mensaje del usuario, nunca cambies de tema ni respondas a turnos anteriores."
- "Si te preguntan quién eres, di: \"Soy GIA, tu asistente de voz.\""
- "Si no escuchas bien o el audio llega cortado, di literalmente \"No te he escuchado bien, ¿puedes repetir?\" — NO inventes una respuesta."
- "No digas frases tipo \"estoy aquí para ayudarte\" si el usuario te ha hecho una pregunta concreta — responde la pregunta."
Persona base reescrita: "Eres GIA, un asistente de voz inteligente. Responde de forma natural, conversacional y al punto. Voz cálida pero eficiente."
Fix #4 — Historial reducido y mejor etiquetado
4
Antes: 20 mensajes históricos × hasta 400 chars cada uno = ~8000 chars en el system prompt. Modelo perdía foco entre contexto histórico y turno actual.
Ahora: 8 mensajes × hasta 240 chars = ~1920 chars máximo. Suficiente para "recordar el hilo" sin saturar.
Etiqueta cambiada de "Contexto del chat (mensajes anteriores...)" a "=== Histórico del chat (sólo contexto de fondo, NO respondas a esto) === ... === Fin histórico — espera el siguiente turno del usuario ===".
Las marcas `===` y la instrucción explícita "NO respondas a esto" ayudan al modelo a tratar el histórico como contexto de referencia, no como turnos a los que debe responder.
Fix #5 — Whisper auto-detect language
4
Antes: `input_audio_transcription: { model: "whisper-1", language: "es" | "ca" }` — forzaba el idioma del UI de la app.
Ahora: `input_audio_transcription: { model: "whisper-1" }` — Whisper detecta el idioma de cada turno automáticamente.
Beneficio: si dices una palabra técnica en inglés ("framework", "API") en medio de una frase en español, ya no se transcribe raro. Si cambias de idioma mid-conversación (turno en es, turno en ca), cada uno transcribe correcto.
Whisper-1 detecta idioma con altísima precisión, no hay desventaja real al no forzarlo.
Pricing del cost indicator
3
Actualizado en frontend (`VoiceConversationModal.tsx`) y backend (`/api/voice/track-usage/route.ts`) para reflejar el modelo full.
Voces premium (gpt-4o-mini-tts + marin/cedar) · rediseño aurora-glass del asistente
06 de mayo de 2026
La versión 7.13.0 cambia el motor TTS por defecto a `gpt-4o-mini-tts` (calidad notablemente superior, soporta instrucciones de estilo y suena mucho más natural que tts-1) y añade las dos voces premium nuevas de OpenAI: Marin y Cedar — voces casi humanas, expresivas, con prosodia muy natural. La voz por defecto pasa de Alloy (neutra/robótica) a Marin. El modal del asistente de voz se ha rediseñado por completo con un look "aurora-glass" premium: sistema de color por estado, anillos orbitales animados sobre el avatar, halo de glow que pulsa con el audio, transcript en tarjeta vidriada, píldora de estado con icono semántico, botones con gradients y sombras de profundidad real.
Lo destacado
12
✨ Nuevo9
🎙️Motor TTS actualizado a `gpt-4o-mini-tts` por defecto (antes tts-1) — calidad mucho superior, soporta `instructions` para guiar tono/cadencia.
⭐Dos voces nuevas premium: **Marin** (expresiva, casi humana) y **Cedar** (profunda y natural) — destacadas con anillo dorado en SettingsModal.
📋Lista de voces ampliada de 8 a 12 (añade Marin, Cedar, Nova, Fable) y reordenada por calidad: premium → top → resto.
🌀Avatar con doble anillo orbital animado (uno en sentido horario, otro contrario) + halo glow que pulsa con `pulse-soft 2.6s`.
🏷️Píldora de estado con dot animado + icono semántico (Mic / Volume2 / Search / Loader2 / Radio) y color de marca por estado.
💬Transcript ahora en tarjeta vidriada con `backdrop-blur 20px` y borde sutil — mucho más legible que el texto suelto.
🔘Botones con gradients reales (no solo `bg-color`), sombras de profundidad e inset highlights — sensación de relieve premium. Botón Colgar más grande (16×16) y rojo intenso para jerarquía clara.
⌨️Animación de entrada `mount-up` con cubic-bezier(0.16, 1, 0.3, 1) — el modal aparece con respiración natural.
🖥️Desktop pill: borde fino con tinte de estado, glow sutil alrededor del avatar, píldora de estado compacta integrada con el timer.
💎 Mejorado2
🎨Voz por defecto cambiada de "alloy" a "marin" — primera impresión mucho más natural.
📐Layout móvil: 348px de altura mínima, padding refinado, jerarquía visual clara (status → avatar → transcript → controles).
🐛 Arreglado1
✨Modal de voz: rediseño completo "aurora-glass" — fondo gradient mesh dinámico que cambia con el estado (verde escuchando · violeta hablando · ámbar buscando · rojo error).
Cambios detallados37 · 6
Motor TTS — gpt-4o-mini-tts
4
`/api/voice/tts` ahora acepta el campo `model` (opcional). Default = `gpt-4o-mini-tts` (lanzado por OpenAI en 2025, calidad mucho superior).
gpt-4o-mini-tts soporta `instructions` (style instructions) que guían tono, cadencia y emoción. Default: "Voz natural y conversacional en español neutro. Tono cálido pero profesional. Pronunciación clara, sin prisa."
Si el caller pasa `model: "tts-1"` o `tts-1-hd` se usa el campo `speed` legacy para retro-compatibilidad.
El cliente puede sobrescribir `instructions` para personalizar el estilo (ej: "habla como narrador de audiolibro").
Voces nuevas — Marin y Cedar
6
OpenAI lanzó dos voces premium en 2025 con prosodia mucho más natural que las anteriores. Ahora disponibles en GIA.
**Marin** (femenina-andrógina, expresiva): la voz por defecto recomendada. Casi indistinguible de una persona real en frases largas.
**Cedar** (masculina, profunda): tono cálido y autoritativo. Excelente para narración o explicaciones técnicas.
Ambas se compatibles con el Realtime API y con `gpt-4o-mini-tts`.
En SettingsModal estas voces se destacan con anillo dorado y badge "⭐ Premium" en la descripción.
Tier "top" (Verse, Ballad, Coral) también marcado en la lista — son las mejores tras las premium.
Voz por defecto cambiada a Marin
3
Antes: nuevos usuarios empezaban con "alloy" (neutra, algo robótica).
Ahora: default = "marin". Si el usuario tiene una preferencia guardada en `profiles.settings_json.voice_voice`, se respeta.
Sin cambios para usuarios existentes que ya hayan configurado otra voz.
Modal de voz — rediseño aurora-glass
12
Sistema de color por estado: cada estado (idle/connecting/listening/speaking/searching/error) tiene una paleta coherente con primary (bordes/texto), soft (fondos), glow (sombras).
Fondo del modal con gradient mesh tri-color: top-left = soft del estado, top-right = white wash sutil, bottom = soft del estado de nuevo, base = oscuro premium (rgba(28,29,38,0.92) → rgba(15,23,42,0.95)).
Border-color del panel: `${stateColor.primary}30` (alpha 30) — sutil pero perceptible.
Box-shadow del panel: doble sombra (drop shadow + inset highlight) + glow exterior `0 0 80px ${stateColor.glow}` que cambia con el estado.
Avatar: anillo exterior dashed que rota lentamente (18s en sentido horario), anillo interior fino que rota al contrario (28s), halo radial blur 8px con animación pulse-soft cuando hay actividad.
Logo dentro de círculo blanco con anillo doble: ring blanco semitransparente + ring del color de estado (primary 80) + sombra fuerte.
Píldora de estado: rounded-full con dot animado (animation `status-dot 1.6s` cuando listening/speaking) + icono semántico Lucide (Mic/Volume2/Search/Loader2/Radio) + label uppercase tracking-wide.
Timer + cost: ahora píldoras compactas con border `rgba(255,255,255,0.10)` y bg `rgba(255,255,255,0.06)` — coherente con el resto del panel.
Transcript: tarjeta vidriada propia con `backdrop-blur 20px`, border sutil `rgba(255,255,255,0.08)`, padding generoso. Min-height 64px para no saltar de tamaño.
Botones inferiores: gradients reales (no flat), inset highlights `inset 0 1px 0 rgba(255,255,255,0.25)`, sombras de profundidad con offset positivo. Botón Colgar 16×16px (más prominente que los otros 14×14px) en rojo intenso para jerarquía clara.
Labels bajo cada botón: uppercase tracking-wider, color tinted con el estado del botón (rojo Colgar, slate Silenciar, ámbar Parar).
Animación de entrada `mount-up`: opacity 0→1, translateY 8→0, scale 0.985→1, cubic-bezier(0.16,1,0.3,1) en 320ms. Sensación de respiración natural.
Modal de voz — desktop pill mejorado
7
Borde con tinte del estado: `border: 1px solid ${stateColor.primary}30` — sutil pero comunica el estado activo.
Glow sutil alrededor del panel: `box-shadow: 0 0 32px ${stateColor.glow}` — el modal "vibra" con el estado.
Fondo: gradient diagonal oscuro + gradient radial del color de estado en el lado izquierdo (donde está el avatar).
Avatar con halo glow de fondo (radial gradient blur 6px) que se ilumina cuando hay actividad.
Píldora de estado compacta integrada en la línea de header (label + timer + cost) en lugar de ocupar línea propia.
Botones más pulidos: gradients lineares en lugar de bg-color flat, hover:brightness-110 en lugar de hover:bg-color, active:scale-90 más natural que active:scale-95.
Sin breaking changes — la firma de useRealtimeVoice y el endpoint /api/voice/tts mantienen compatibilidad.
Performance: las animaciones CSS (orbit-rotate, pulse-soft, status-dot) usan transform/opacity (GPU-accelerated). El waveform sigue siendo 60fps via requestAnimationFrame con ref directo al DOM.
Prefiere reduced motion: las animaciones largas (orbits 18-28s) se desactivan en `isConnected=false` para no consumir CPU sin razón.
Lucide icons añadidos: Search, Loader2, Volume2, Radio (todos ya en bundle por otros componentes — sin coste extra).
Sistema de voz: 5 fixes críticos + memoria del chat + preview de voz
06 de mayo de 2026
La versión 7.12.0 ataca los 5 problemas más críticos del sistema de voz identificados en la auditoría: (B1) leak de seguridad en network-search, (B2) idioma fijo a "es" ignorando catalán, (B3) created_at hardcoded +2000ms causaba orden inconsistente, (U1) STT sin VAD ni timeout permitía graburar indefinidamente, (C3) sin indicador de coste en vivo. Además: GIA-Voz ahora tiene memoria de los últimos 20 mensajes del chat (sean texto o voz) inyectados en systemInstructions; nueva preview de voz en SettingsModal con botón play/stop por cada voz disponible.
Lo destacado
10
✨ Nuevo7
B1 (security) — /api/voice/network-search ahora filtra por `drive_id IN (drives activos)`. Antes leía cualquier chunk de network_file_chunks sin filtrar drives, exponiendo info de drives desactivados.
B2 — idioma del Realtime API y Whisper ahora viene de useTranslation() (es / ca). Antes hardcoded a "es" — usuarios en catalán recibían respuestas en castellano.
U1 — STT con VAD basado en AnalyserNode: detecta silencio sostenido >2s tras hablar y auto-para la grabación. Si no detecta voz en 8s, cancela. Hard cap absoluto de 60s. Evita graburar indefinidamente y costes accidentales de Whisper.
U1 — /api/voice/transcribe ahora valida tamaño: rechaza files >25 MB con 413 y files <256 bytes con 400.
C3 — coste estimado en vivo en el modal de voz (USD): píldora con $X.XXX que se actualiza tras cada response.done usando los pricing constants del backend. Tooltip muestra tokens consumidos.
Memoria del chat: GIA-Voz ahora "recuerda" los últimos 20 mensajes de la conversación (sean texto o voz) y los inyecta en systemInstructions del session.update inicial. Permite continuar una conversación de texto por voz sin perder contexto.
Preview de voz en SettingsModal pestaña Voz: cada una de las 8 voces (Alloy, Ash, Ballad, Coral, Echo, Sage, Shimmer, Verse) tiene un botón play que reproduce un sample. Click otra vez para parar. Cleanup automático al cerrar settings.
💎 Mejorado2
B1 — matching mejorado: AND-style sobre TODAS las keywords (no sólo la primera) + stopwords (de/la/el/que/etc.) descartadas + descenso de acentos antes de comparar.
B3 — created_at del AI message ahora se calcula consultando el created_at REAL del último user message persistido + 1ms (no +2000ms hardcoded). Resuelve casos donde turnos rápidos quedaban en orden incorrecto al recargar.
🐛 Arreglado1
Toasts mejorados en STT: errores de red, errores de transcripción, "no detecté tu voz" — feedback claro en lugar de fallo silencioso.
Cambios detallados47 · 8
Fix B1 — Security en network-search por voz
6
Antes: `/api/voice/network-search` hacía `ilike "%kw%"` sobre `network_file_chunks` sin filtrar `drive_id`. Cualquier usuario autenticado podía leer chunks de drives desactivados o de drives que se quitaron del control.
Ahora: primero carga drives activos (`is_active=true`) y restringe la búsqueda a `drive_id IN (...)`. Mismo modelo de permisos que el chat normal.
Si no hay drives activos: devuelve mensaje claro en vez de buscar en vacío.
Tokenización mejorada: split + filtro stopwords (de, la, el, los, las, que, cómo, dónde, para, por, etc.) + descartar palabras <3 chars + strip de acentos antes de match.
AND-style matching: el primer keyword usa el índice (`ilike`), los demás filtran client-side. Antes una búsqueda "michael jackson" buscaba sólo "michael" y traía cualquier chunk con esa palabra. Ahora exige que el chunk contenga AMBOS términos.
Si AND devuelve 0 resultados, fallback a OR (al menos coincide la primera keyword) para no quedar sin nada.
Fix B2 — Idioma de voz
3
Antes: `language: "es"` hardcoded en VoiceConversationModal. El useRealtimeVoice pasaba `whisper-1` con `language: "es"` aunque la app estuviera en catalán.
Ahora: `language: appLanguage === "ca" ? "ca" : "es"` leído de `useTranslation()`. Whisper transcribe en el idioma correcto y la voz responde en consecuencia.
Compatible con todos los modos: STT del composer (ya leía `language` del context), Realtime (ahora también).
Fix B3 — Orden de mensajes en voz
4
Antes: el AI message se insertaba con `created_at = userTs + 2000ms` hardcoded. En turnos cortos (<2s entre user→AI→user), el SEGUNDO user message quedaba ANTES del AI anterior por created_at, causando orden raro al recargar.
Ahora: query a Postgres por el último user message del conversation_id y `created_at = max(lastUser.created_at + 1ms, Date.now())`. Garantiza orden estricto sin depender de hardcoded offsets.
Fallback al patrón antiguo (+1ms en lugar de +2000ms) si la query falla.
Resolución microsegundo de Postgres timestamps hace que +1ms sea suficiente para garantizar orden estricto.
Fix U1 — STT con VAD + timeouts
9
Nuevo: Voice Activity Detection (VAD) usando AnalyserNode + RMS de la onda en tiempo real (60fps via requestAnimationFrame).
Umbral RMS configurado a 0.012 (calibrado para voz humana en mics típicos).
Auto-stop tras 2s de silencio sostenido tras haber detectado habla.
Cancelación si pasan 8s sin que se detecte habla en absoluto (probablemente click accidental).
Hard cap absoluto: 60s — si el usuario olvida apagar el mic, no se queda grabando para siempre.
Toast informativo si no se detectó voz: "No detecté tu voz. Inténtalo de nuevo."
Toasts de error específicos para fallo de red, fallo de transcripción Whisper, etc. Antes era silencioso.
Server: `/api/voice/transcribe` ahora rechaza files >25 MB (413) y files <256 bytes (400). Protección contra files manipulados que inflaran coste de Whisper.
Cleanup robusto: AnalyserNode, MediaStreamSource y AudioContext se cierran tanto en stop manual como en stop por VAD.
C3 — Coste estimado en vivo
6
Pricing constants del backend (`REALTIME_PRICING`) duplicados en el cliente para estimación local sin viaje extra al servidor.
Tras cada `response.done`, `useRealtimeVoice` llama a `onUsageReady` con `{ input_tokens, output_tokens, input_token_details, output_token_details }`. El modal calcula el coste de ese turno y lo acumula.
Píldora visible con `$X.XXX` (4 decimales si <$0.01, 3 decimales si más) en la cabecera del modal.
Implementación tanto en el layout móvil como en el desktop.
No reemplaza al `/api/voice/track-usage` (que sigue persistiendo en `token_usage` para histórico). Es sólo display.
Memoria del chat — GIA-Voz recuerda mensajes anteriores
6
Cuando el modal se abre con un `conversation_id`, carga los últimos 20 mensajes (`role IN (user, assistant)`) ordenados por `created_at DESC` y los invierte para orden cronológico.
Cada mensaje se trunca a 400 chars para no inflar tokens en exceso (un sistema con 60 memorias + 20 turnos cabe holgado en el contexto del Realtime).
Formato: `Usuario: <texto>\nGIA: <texto>\n...` añadido a `effectiveInstructions` como bloque "Contexto del chat (mensajes anteriores, sean de texto o de voz)".
Carga en paralelo con memorias del usuario; ambos se necesitan ANTES de iniciar la sesión Realtime.
Sin distinción texto/voz: cualquier mensaje del chat actual entra. Si la conversación empezó por texto y el usuario abre voz para continuar, GIA-Voz tiene contexto completo.
Si la conversación es nueva (sin mensajes previos), no se inyecta nada y la session.update va con instructions limpias.
Preview de voz en SettingsModal
8
Cada una de las 8 voces tiene ahora un botón circular de play (lucide Play icon) a la derecha del card.
Click → llama a `/api/voice/tts` con un sample fijo: "Hola, soy GIA, tu asistente de voz. Estoy aquí para ayudarte con cualquier cosa que necesites."
Mientras carga: spinner Loader2 dentro del botón.
Mientras suena: botón cambia a stop (lucide Square) en color rose-500.
Click en stop → para inmediatamente y libera el blob URL.
Click en otro play mientras suena uno → para el actual y arranca el nuevo.
Cleanup al desmontar el modal o cambiar de tab → para audio y libera blob.
No se hace cache de los blobs entre clicks (cada preview pide fresh al backend) — es intencional, el usuario raramente hace preview repetido.
Calidad técnica
5
Typecheck verde tras todos los cambios.
Sin breaking changes — el contrato de useRealtimeVoice mantiene la firma; sólo añade comportamiento.
VoiceConversationModal pasa a 800+ LOC pero las nuevas responsabilidades están bien aisladas (estado de coste/memoria son self-contained).
Logs nuevos: `[VoiceModal] failed to load chat history`, `[VoicePreview] failed`, `[STT] VAD setup failed` — todos con fallback elegante.
Comentarios `7.12.0 — Fix BX` en cada punto de cambio para visibilidad histórica.
Fix CRÍTICO duplicado de respuesta al editar mensaje · auditoría completa del sistema de edición
05 de mayo de 2026
La versión 7.11.0 corrige un bug crítico donde tras editar un mensaje aparecían DOS respuestas del asistente (la antigua + la nueva regenerada) al acabar el streaming. Tras una auditoría completa del sistema de edición (cliente, store, Realtime, /api/messages/edit y /api/chat regen), se identificaron 4 superficies de bug y se aplicaron fixes en CADA UNA: (1) el handler Realtime UPDATE de mensajes "ghost-añadía" filas eliminadas localmente, (2) el fallback de updateMessage en el store APPENDeaba un nuevo registro cuando el id no existía, (3) el endpoint /api/messages/edit no protegía contra races (un INSERT por Realtime entre lectura y delete sobrevivía), (4) /api/chat regen branch no garantizaba ausencia de duplicados al final. Nueva capa de dedup defensivo a nivel de store.
Lo destacado
9
✨ Nuevo4
Capa de dedup defensivo a nivel de store: nueva función `dedupeMessagesById()` aplicada en `addMessage`, `updateMessage` y `mergeServerMessagesWithOptimistic`. Garantiza que el render NUNCA vea dos filas con el mismo id, incluso si por alguna razón el array las tuviera.
updateMessage ya no APPENDea filas con id desconocido. Si el mensaje no está en local, el update se ignora (caso típico tras removeMessagesAfter durante regen).
messages/edit returns deleted_count incrementado con los excedentes del safeguard cleanup. Logs detallados para debugging futuro.
Logs de chat/route.ts cuando detecta huérfanos: incluye regen_target, conversation_id, orphan_ids para debugging.
🐛 Arreglado5
BUG CRÍTICO — Respuesta duplicada al editar mensaje: tras editar y regenerar aparecían 2 respuestas del asistente (la antigua y la nueva, ambas con header GIA-5.5 y contenido casi idéntico). Identificado y corregido en 4 superficies independientes.
CAUSA 1 — Realtime UPDATE handler: tras `removeMessagesAfter()` el assistant local se eliminaba; cuando llegaba el UPDATE de Realtime con el contenido regenerado, `updateMessage()` lo añadía de nuevo via fallback APPEND. Después `loadMessages()` lo añadía otra vez. Resultado: 2 filas. Fix: el handler Realtime UPDATE ignora el evento si el mensaje no está en local (loadMessages posterior reflejará el estado correcto).
CAUSA 2 — Fallback de updateMessage en chat-store: si el id no existía, hacía `[...messages, candidate]` (APPEND) en lugar de ignorar. Antes esto era inocuo; con el flow de edit causaba duplicado. Fix: si el id no existe, simplemente devolvemos el state sin cambios (el siguiente loadMessages traerá el estado correcto desde DB).
CAUSA 3 — Race en /api/messages/edit: la lista de afterEdited se capturaba al inicio, pero entre la lectura y el `delete` podía entrar un INSERT por Realtime/otra request. Fix: doble verificación tras el primer delete — re-leer la conversación, identificar excedentes (otros assistants posteriores al regenTarget, otros mensajes user posteriores) y borrarlos.
CAUSA 4 — /api/chat regen branch sin garantía: tras actualizar el regen target, no verificaba si quedaban OTROS assistants en la conversación más allá. Fix: tras la update, query defensivo por `conversation_id` + `role=assistant` + `created_at >= regen_target.created_at` + `id != regen_target` → borra cualquier huérfano.
Cambios detallados30 · 7
Auditoría del flujo de edición — superficies analizadas
6
Cliente — `MessageBubble.tsx#handleEditSave` (líneas ~2150-2247): valida targetMessageId, llama a /api/messages/edit con fallback de 404, parsea respuesta, llama a `updateMessage` + `removeMessagesAfter` + `setAssistantVersionOverride` + `regenerateFromHere(skipUserSave=true)`, finalmente `loadMessages(silent)`.
Cliente — `MessageBubble.tsx#regenerateFromHere` (líneas ~2288-2495): setea streaming state, fetch /api/chat con `regenerate_message_id`, captura streaming chunks, en finally llama a `loadMessages(silent)` y limpia streaming state.
Cliente — `chat-store.ts#updateMessage` (líneas ~600-625): el fallback APPEND era el origen del ghost-add tras Realtime UPDATE.
Cliente — `ChatArea.tsx` Realtime listener (líneas ~288-360): los handlers INSERT/UPDATE/DELETE de Supabase Realtime pueden disparar mientras el cliente tiene el assistant temporalmente eliminado de local.
Servidor — `/api/messages/edit/route.ts`: valida ownership, actualiza el mensaje, inserta en `message_edits`, identifica `regenTarget` (primer assistant tras el editado), elimina los demás afterEdited.
Servidor — `/api/chat/route.ts` regen branch (líneas ~12025-12095): valida `regenerate_message_id`, inserta nueva versión en `message_versions`, actualiza `messages.content`. Si update falla → fallback con payload reducido.
Fix #1 — Realtime UPDATE handler ignora ghosts
3
Antes: el listener `postgres_changes UPDATE` llamaba a `updateMessage(id, incoming)` sin comprobar si el mensaje estaba en local. Si el assistant había sido eliminado por `removeMessagesAfter` y luego Realtime mandaba el contenido regenerado, el fallback APPEND del store creaba una nueva fila.
Después: el listener verifica `useChatStore.getState().messages.some((m) => m.id === incoming.id)`. Si el mensaje no está en local, el evento se ignora — `loadMessages` posterior traerá el estado correcto desde DB.
Sin pérdida de funcionalidad: cuando el mensaje sí está en local, el update en sitio sigue funcionando.
Fix #2 — chat-store#updateMessage sin APPEND
3
Antes: si el id no existía, `updateMessage` hacía `[...messages, candidate]` para "no perder" updates. Esto era una mala defensa: el caller debería usar `addMessage` para crear, no `updateMessage`.
Después: si el id no existe, devolvemos el state sin cambios. Cualquier creación legítima debe pasar por `addMessage` (Realtime INSERT handler sí lo usa).
Comentario añadido en código explicando el bug histórico para evitar regresiones.
Fix #3 — Safeguard cleanup en /api/messages/edit
4
Antes: `idsToDelete` se calculaba sobre `afterEdited` capturado al inicio. Race entre la lectura y el `.delete()` permitía que mensajes insertados in-flight (por otro tab, por Realtime, por otra request concurrente) sobrevivieran.
Después: tras el primer delete, se re-lee la conversación. Si hay extras: assistants posteriores al regenTarget, o messages no-assistant posteriores al editado, se borran en una segunda pasada (`safeguardIdsToDelete`).
Logs en consola cuando el safeguard tiene que limpiar (visibilidad para debugging futuro).
deleted_count en la respuesta JSON ahora incluye también los del safeguard.
Fix #4 — Cleanup de huérfanos en /api/chat regen branch
4
Antes: tras actualizar el regen target con el nuevo contenido, no se verificaba que no hubiera otros assistants posteriores en la conversación. Si por algún bug previo o race quedaban, se mostraban como duplicados.
Después: tras la update, query defensivo por `conversation_id` + `role=assistant` + `created_at >= regen_target.created_at` + `id != regen_target_id` → si hay resultados son huérfanos → se borran.
Logs `[Chat] Removing orphan assistant duplicates after regen:` con regen_target, conversation_id, orphan_ids para visibilidad.
try/catch envuelve el cleanup de huérfanos: si falla, se loguea pero no se rompe el flujo principal.
Capa de dedup defensivo en el store
5
Nueva función `dedupeMessagesById(messages: Message[]): Message[]` que conserva la primera ocurrencia de cada id en el array.
Aplicada en `addMessage` tras sortMessages.
Aplicada en `updateMessage` tras sortMessages (caso de update en sitio).
Aplicada en `mergeServerMessagesWithOptimistic` (loadMessages flow) tras combinar server + retainedOptimistic.
Es una capa "belt-and-suspenders" — los fixes anteriores deberían ser suficientes, pero el dedup garantiza que aunque alguno fallase en el futuro, el render nunca verá filas duplicadas.
Calidad técnica
5
Typecheck verde tras todos los cambios.
Sin breaking changes — la API pública de `/api/messages/edit` sigue devolviendo los mismos campos (sólo añade `deleted_count` aumentado).
Sin pérdida de funcionalidad — la cadena de versiones del assistant sigue intacta (regen target keep + version_index incrementado).
Logs de cleanup defensivo cuando se ejecuta — visibilidad sin ruido (sólo loguea cuando realmente había que limpiar).
Comentarios "FIX 7.11.0" en todos los puntos de cambio para visibilidad histórica.
Code interpreter funcional en Vercel · Python en el navegador con Pyodide
05 de mayo de 2026
La versión 7.10.0 migra el code interpreter de Python a Pyodide (WebAssembly), ejecutándose 100% en el navegador del usuario. Antes, en Vercel Hobby, el endpoint /api/code-interpreter siempre fallaba con "No hay runtime de Python disponible" porque el runtime serverless de Vercel no incluye Python. Ahora cualquier bloque de código Python puede ejecutarse desde gia.gesem.es / gia.fgarola.es sin más infraestructura, gratis, con numpy/pandas/matplotlib/scipy/sympy/scikit-learn disponibles vía micropip. La primera ejecución descarga ~6MB cacheados por el navegador; las siguientes son instantáneas.
Lo destacado
12
✨ Nuevo10
Code interpreter ejecutándose en producción (Vercel) sin necesidad de servicio externo de Python.
CodeExecutionBlock.tsx ya no llama a /api/code-interpreter — usa `executePython()` cliente con onProgress callback que muestra "Cargando Pyodide… → Inicializando Python… → Ejecutando código…".
MessageBubble.tsx (bloque de código en respuesta del asistente) también migrado a Pyodide con dynamic import (lazy-loaded sólo si el usuario pulsa Ejecutar).
Detección automática de imports: si tu código tiene `import numpy as np` o `from pandas import …`, los paquetes se cargan vía `loadPackagesFromImports` antes de ejecutar.
Sandbox: `input()` se bloquea con un mensaje claro porque no hay stdin interactivo en navegador. El resto de Python estándar funciona normal.
Timeout configurable (30s por defecto) protege contra bucles infinitos.
Endpoint /api/code-interpreter sigue existiendo como fallback para self-hosted con Docker (el Dockerfile incluye python3) — ahora detecta `process.env.VERCEL` y devuelve un mensaje claro recomendando recargar la app para usar Pyodide.
Bibliotecas adicionales vía `micropip.install(...)` desde el propio código (ej. requests, plotly).
Coste para ti: 0€. Sin servicio externo, sin Pro plan, sin Modal/E2B.
💎 Mejorado2
Nuevo módulo `src/lib/pyodide-client.ts`: singleton loader con caché, lazy-load del CDN jsdelivr, captura de stdout/stderr, detección automática de paquetes desde imports.
Coste para el usuario: ~6MB descargados la primera vez, cacheados por el navegador para siempre. Siguientes cargas son instantáneas.
Cambios detallados36 · 7
Por qué Pyodide y no otra solución
5
Vercel Hobby: el runtime serverless no incluye Python. `child_process.spawn("python")` siempre falla con ENOENT. Imposible añadir Python al runtime de Vercel.
Alternativa A — Vercel Pro: function timeout de 60s (vs 10s en Hobby) pero SIGUE sin tener Python. No resuelve el problema.
Alternativa B — servicio externo (E2B, Modal, Replicate): coste mensual + complejidad de auth/proxying. Para un proyecto Hobby es overkill.
Alternativa C — VPS aparte con Docker: $5-10/mes, requiere mantener un microservicio.
Alternativa D — Pyodide: 0€, 0 servicios nuevos, ejecuta en el cliente. Funciona en Vercel, Netlify, Cloudflare Pages, GitHub Pages, donde sea. Bibliotecas científicas pre-compiladas. Ganador.
Nuevo módulo `src/lib/pyodide-client.ts`
7
Singleton: una sola instancia de Pyodide por tab. La primera ejecución carga ~6MB; las siguientes son instantáneas.
Lazy-load del script: añade `<script src="https://cdn.jsdelivr.net/pyodide/v0.27.5/full/pyodide.js">` al document.head sólo cuando se llama a `getPyodide()` por primera vez. Sin coste de bundle inicial.
Captura de stdout/stderr vía `py.setStdout({ batched })` y `py.setStderr({ batched })` — la salida se acumula y se devuelve concatenada.
Detección automática de paquetes: regex sobre `import X` y `from X import …`. Si X está en la whitelist (numpy, pandas, matplotlib, scipy, sklearn, sympy, statsmodels, networkx, PIL, regex, lxml, bs4, yaml, jinja2, dateutil, pytz, micropip), se carga antes de ejecutar.
Sandbox prelude: bloquea `input()` con `RuntimeError("input() interactivo no está disponible en el navegador. Usa variables fijas en el código.")`.
Helpers exportados: `isPyodideReady()`, `isPyodideLoading()`, `prewarmPyodide()` (precarga en idle para tener Pyodide listo cuando el usuario pulse Ejecutar por primera vez).
Componentes UI actualizados
5
CodeExecutionBlock.tsx: `handleExecute` ahora usa `executePython()` directo. Eliminado el check de `conversationId` (no es necesario en cliente).
Estado `pyodideStatus` para mostrar la fase de carga ("Cargando Pyodide…", "Cargando paquetes: numpy, pandas…", "Ejecutando código…").
El botón "Ejecutar" muestra el status actual durante la ejecución en lugar de un genérico "Ejecutando…".
MessageBubble.tsx (CodeBlock interno): `import("@/lib/pyodide-client")` dinámico — el chunk de Pyodide sólo se descarga si el usuario pulsa Ejecutar (no impacta first paint del chat).
Mensajes de error claros: si el CDN no carga, muestra "No se pudo cargar Pyodide desde el CDN. Comprueba tu conexión a internet." (caso usuario sin conexión).
Endpoint /api/code-interpreter (fallback)
3
No se elimina — sigue siendo útil para self-hosted con Docker (el Dockerfile del proyecto YA incluye `apk add python3`).
Detecta `process.env.VERCEL` o `process.env.VERCEL_ENV` y devuelve un mensaje específico: "El runtime serverless de Vercel no incluye Python. En el cliente, GIA ejecuta Python en el navegador vía Pyodide — actualiza la app (Ctrl+R) y reintenta."
En self-hosted local sin Vercel y sin Python en PATH, el mensaje recuerda al usuario que el cliente puede ejecutar Pyodide igualmente — recarga la app.
Compatibilidad y limitaciones
7
Soportado en Chrome, Firefox, Safari, Edge modernos (todos con WebAssembly + dynamic import).
NO funciona en navegadores muy antiguos sin BigInt o WebAssembly. En la práctica, irrelevante en 2026.
NO hay acceso al filesystem del usuario (correcto: es un sandbox).
NO hay subprocess, sockets reales ni threading (limitaciones del entorno de navegador).
Las requests HTTP funcionan via `pyodide-http` (que stubbea `requests` y `urllib`) pero CORS aplica como en cualquier fetch del navegador.
matplotlib renderiza imágenes que se pueden mostrar como base64 en el output. Para gráficos interactivos plotly funciona pero requiere `micropip.install("plotly")`.
numpy + pandas + matplotlib son los paquetes científicos clave y vienen pre-compilados oficialmente — instantáneos tras el primer load.
Rendimiento
5
First load (cold): ~5-15s descargando 6MB de WASM + bibliotecas core.
Subsequent loads (warm): instantáneo (módulo cacheado en memoria).
Browser cache: el archivo `.wasm` y los `.whl` quedan en HTTP cache, así que entre sesiones también es rápido.
Ejecuciones consecutivas: instantáneas (mismo intérprete, sólo se ejecuta el código nuevo).
Bundle inicial de Next.js sin afectar: el `import("@/lib/pyodide-client")` es dinámico → chunk separado que sólo se descarga al pulsar Ejecutar.
Calidad técnica
4
Typecheck verde tras la migración.
Sin nuevas dependencias en `package.json` — Pyodide se carga vía CDN, no vía npm. Mantiene el bundle ligero.
Sin breaking changes en la API: el endpoint /api/code-interpreter sigue existiendo y respondiendo, sólo que con un mensaje claro cuando no hay runtime.
Cero coste para producción Vercel; cero coste para self-hosted; cero coste para dev local.
Fix edit revert + leak de unidad de red · tablas markdown editoriales · runtime Python robusto
05 de mayo de 2026
La versión 7.9.0 corrige tres bugs críticos: (1) al editar un mensaje y regenerar la respuesta, el cliente "volvía" a mostrar la respuesta antigua al acabar streaming hasta cambiar de chat — fix en el effect de message_versions; (2) la herramienta de unidad de red seguía activándose en regen aunque el cliente la enviara como false — fix en chat/route.ts para no inferir intent ni hacer fallback a attachments del histórico cuando hay regenerate_message_id; (3) el code interpreter fallaba con "No hay runtime de Python" cuando Python sí estaba instalado pero no en PATH del proceso Node — detección robusta con sweep de rutas, where/which y caché. También rediseña las tablas markdown con estética editorial profesional (zebra, hover ámbar, tipografía optical, dark mode).
Lo destacado
10
✨ Nuevo3
Fallback a `where python`/`where py` en Windows y `which python3`/`which python` en Unix antes de rendirse.
attachmentFileIdsForRag = [] en regen sin attachments explícitos: ni siquiera se consulta /files de la conversación. Antes se llevaba todos los attachments_json del histórico al RAG aunque el usuario no los hubiera mencionado.
effectiveDbQuery, effectiveGmailRead, effectiveGmailSend también respetan flags explícitas en regen (no se infieren del input editado).
💎 Mejorado3
BUG CRÍTICO 1 — Edit message revert: tras editar un mensaje y recibir nueva respuesta, al acabar streaming la UI volvía a la respuesta anterior. Sólo cambiar de chat y volver mostraba la nueva. Fix en MessageBubble.tsx: el useEffect que cachea message_versions sólo se disparaba al montar; ahora también refetchea cuando cambia message.content / updated_at / edit_version / forcedAssistantVersion.
Tablas markdown rediseñadas con estética editorial: borde sutil, header zinc-50 con border-bottom 2px, zebra striping suave, hover ámbar, tipografía optical (uppercase 10.5px en headers con tracking 0.08em, 13.5px tabular-nums en cuerpo), primera columna en negrita, dark mode nativo, scroll horizontal limpio.
Caché del binario Python resuelto durante 5 minutos: la primera ejecución prueba candidatos, las siguientes van directas al binario que funcionó. Auto-renovación tras instalar.
🐛 Arreglado4
BUG CRÍTICO 2 — Network drive en edit: aunque la v7.7.0 ya enviaba network_drive_rag: false desde el cliente, el backend SEGUÍA activándolo por dos rutas: (a) inferredNetworkDriveIntent del texto del input editado, (b) fallback a recentConversationAttachmentIds del histórico de la conversación. Fix en chat/route.ts: cuando regenerate_message_id está presente, NO se infieren intents ni se hace fallback al histórico — sólo se respetan las flags y attachments explícitos del cliente.
BUG 3 — Runtime de Python: el code interpreter fallaba con "No hay runtime de Python disponible" en Windows incluso con Python instalado, porque el spawn no encontraba `python`/`py` en el PATH del proceso Node (típico tras instalar sin reiniciar el shell del dev server).
Detección de Python robusta: sweep de rutas habituales en Windows (LOCALAPPDATA\Programs\Python\Python313/312/.../38, Program Files\Python*) y macOS/Linux (/usr/local/bin, /opt/homebrew/bin, framework de macOS, pyenv).
Mensaje de error mejorado: lista los candidatos probados, incluye el path típico para CODE_INTERPRETER_PYTHON_BIN según SO, y recuerda que tras instalar Python hay que reiniciar el dev server.
Cambios detallados34 · 5
Fix CRÍTICO — Edit message revert
7
Síntoma: usuario envía mensaje → recibe respuesta A → edita el mensaje → streaming muestra respuesta B correctamente → al acabar streaming la UI vuelve a A → cambiar de chat y volver muestra B (la real, ya persistida en DB).
Causa raíz: el useEffect que carga `message_versions` desde Supabase sólo se ejecutaba al montar el componente (deps `[isAssistant, message.id]`). Tras editar, message.id no cambia (se reusa el regen_target_message_id) — el effect no refetchea. assistantVersions queda con `[{version_index: 1, content: respuestaA}]`.
displayContent (línea 2535) prioriza `assistantVersions[idx].content` sobre `message.content`. Como assistantVersions está cacheada con respuestaA, ése es el que se renderiza, aunque message.content de loadMessages ya sea respuestaB.
Fix: añadir `message.content`, `message.updated_at`, `message.edit_version` y `forcedAssistantVersion` a las dependencias del effect. Cualquier señal de regeneración refresca el cache local.
Fix bonus: el effect ahora usa flag de cancelación (cancelled=true en cleanup) para evitar setState tras unmount durante navegación entre chats.
Fix bonus: si ya hay un override `forcedAssistantVersion`, lo respeta al reposicionar el activeAssistantVersionIdx (antes saltaba siempre al último, lo que rompía la navegación entre versiones del usuario).
Fix bonus: comparación previMax vs nextMax para evitar reemplazar el array si la query devuelve menos versiones (race con loadMessages).
Fix CRÍTICO — Network drive leak en regen
6
Síntoma: aunque la v7.7.0 corrigió el cliente para mandar `network_drive_rag: false` y `attachments: []` cuando ninguna herramienta los necesita, el backend seguía adjuntando archivos del contexto a la respuesta editada (chips "generame-un-docx-sobre…" bajo el mensaje).
Causa raíz 1 — inferencia textual: chat/route.ts línea 5429 calculaba `effectiveNetworkDriveRag = network_drive_rag || inferredNetworkDriveIntent || explicitFileReferences.length > 0`. Si el contenido editado contenía palabras como "documento", "lista", "manual", "explica" + scope, se reactivaba la herramienta a espaldas del cliente.
Causa raíz 2 — fallback a attachments del histórico: chat/route.ts línea 6872 calculaba `attachmentFileIdsForRag = explicitAttachmentFileIds.length > 0 ? explicitAttachmentFileIds : recentConversationAttachmentIds`. En regen el cliente manda explicitAttachmentFileIds=[] → caía al histórico → traía PDFs antiguos al contexto RAG.
Fix 1: cuando `regenerate_message_id` está presente, las inferencias `inferredNetworkDriveIntent`, `inferredDbQueryIntent`, `inferredGmailReadIntent`, `inferredGmailSendIntent` se ignoran. Sólo cuentan las flags explícitas del cliente.
Fix 2: cuando `regenerate_message_id` está presente Y el cliente NO mandó attachments explícitos, attachmentFileIdsForRag = []. No se hace fallback al histórico.
Resultado: editar "¿Qué puedes hacer?" devuelve respuesta limpia sin chips de PDFs viejos, sin reactivar herramientas que el usuario no había marcado.
Fix — Code interpreter Python runtime
7
Síntoma: en Windows, pulsar "Ejecutar" en un bloque de código Python devuelve "No hay runtime de Python disponible en el servidor (python3/python/py)" aunque Python esté instalado en C:\Python313\python.exe o en LOCALAPPDATA.
Causa raíz: el proceso Node del dev server se inició antes de añadir Python al PATH (o tras instalar Python sin reiniciar el shell), por lo que `spawn("python")` falla con ENOENT en los 3 candidatos típicos.
Fix 1 — sweep de rutas habituales: nueva función `discoverExtraPythonPaths()` que busca en LOCALAPPDATA\Programs\Python\Python{313,312,311,310,39,38}\python.exe y Program Files\Python*\python.exe en Windows, y /usr/local/bin/python3, /opt/homebrew/bin/python3, /Library/Frameworks/Python.framework/... en macOS/Linux.
Fix 2 — fallback con `where`/`which`: si los candidatos comunes fallan, hace `where python`, `where py` (Windows) o `which python3`, `which python` (Unix) y añade los resultados a la lista de candidatos antes de rendirse.
Fix 3 — caché del binario resuelto: una vez encontrado un Python que funciona, se cachea durante 5 minutos. Las siguientes ejecuciones van directas al binario sin probar candidatos. Auto-renovación tras expirar.
Fix 4 — mensaje de error mejorado: lista los candidatos probados, incluye el path típico para CODE_INTERPRETER_PYTHON_BIN por SO (C:\Python312\python.exe / /usr/local/bin/python3) y recuerda reiniciar `npm run dev` tras instalar Python.
Sin breaking changes: si CODE_INTERPRETER_PYTHON_BIN está configurado, sigue siendo prioridad absoluta.
Tablas markdown — rediseño editorial
10
Antes: tabla con borde rounded-2xl, header bg-zinc-100/90, sin zebra, sin hover, sin dark mode, fuente sm uniforme, primera columna sin distinción.
Ahora: borde rounded-lg con border zinc-200/80 dark:zinc-700/60 + shadow-sm.
Header: bg-zinc-50 dark:bg-zinc-800/60 con border-bottom 2px gruesa, tipografía uppercase 10.5px tracking 0.08em color zinc-500.
Body: zebra striping sutil con `[&>tr:nth-child(even)]:bg-zinc-50/60` (light) y `dark:[&>tr:nth-child(even)]:bg-zinc-800/30`.
Hover de fila: bg-amber-50/40 (light) / bg-amber-500/5 (dark) — destaca la fila apuntada sin saturar.
Bordes internos finos zinc-100 dark:zinc-800/60, last:border-b-0 (no double border al final).
Padding cómodo px-3.5 py-2.5, primer y último td/th con first:pl-4 / last:pr-4 para respiración.
Tipografía del cuerpo: 13.5px tabular-nums, `<strong>` se renderiza zinc-900 dark:zinc-50 font-semibold (datos resaltados), primera columna automáticamente font-medium text-zinc-900 dark:text-zinc-50 (parece label).
Soporte dark mode nativo en todos los rincones de la tabla.
Scroll horizontal cuando la tabla excede el contenedor (overflow-x-auto + min-width 360px sm 480px).
Calidad técnica
4
Typecheck verde tras todas las modificaciones.
Sin breaking changes: el contrato de la API de chat sigue igual, sólo cambia la priorización interna de flags en regen.
Cache de python bin con expiración: evita filtraciones de rutas obsoletas tras desinstalar/mover Python.
Effect de message_versions con cancellation flag: previene setState on unmounted component al cambiar rápido de chat.
Mobile model menu pro · fix subir archivos en canales · nuevas funciones de canal
05 de mayo de 2026
La versión 7.8.0 actualiza el menú de modelos mobile (modo automático + separación por plataforma como en PC), arregla un bug por el que subir archivos en canales fallaba siempre con error 500 (bucket inexistente), corrige el badge de corona en avatares cuadrados, y añade un set de nuevas funciones al módulo de canales: buscador interno, scroll-to-bottom con contador de mensajes nuevos, drag&drop de archivos sobre el chat, copiar texto y enlace directo a un mensaje, deep links #m-<id> con highlight, atajos de teclado (Ctrl+K, Ctrl+F, Esc) y picker de emojis y toolbar de acciones rediseñados.
Lo destacado
19
✨ Nuevo14
Mobile: el menú de modelos ahora muestra el toggle "Modo automático" con icono Sparkles ámbar (igual que en PC).
Mobile: modelos agrupados por proveedor (OpenAI, Google, Anthropic, Meta, Mistral, Ollama, OpenRouter, Groq, Otros) con header de plataforma en color distintivo y separadores.
Mobile: cuando "Auto" está activo el botón del header muestra "Auto · <modelo base>" con icono Sparkles, igual que en PC.
Whitelist de mimes en canales ampliada: PDF, Word, Excel, PowerPoint (legacy + nuevos), OpenDocument, RTF, CSV, JSON, XML, YAML, MD, HTML, ZIP/7Z/RAR/TAR/GZ, imágenes (HEIC/AVIF incluidos), audio y vídeo. Tamaño máximo subido a 25 MB (antes 10 MB).
Logo de admin (corona): el badge se posicionaba mal sobre avatares cuadrados (rounded-md). Ahora `admin-crown-ring` no fuerza border-radius — el avatar decide. Se añade variante `admin-crown-ring--circle` para avatares redondos del header.
Buscador interno del canal: nuevo botón Search en el header del canal abre una barra que filtra mensajes por contenido en tiempo real. Muestra contador de resultados.
Atajo Ctrl/Cmd + K abre el buscador del canal desde cualquier sitio del módulo. Ctrl/Cmd + F lo abre cuando el foco ya está dentro del canal.
Scroll-to-bottom button: aparece flotando arriba del input cuando el usuario está scrolleado y desaparece al llegar abajo.
Contador de mensajes nuevos: si llegan mensajes mientras estás scrolleado arriba, el botón de scroll muestra "X nuevo(s)" en píldora rosa.
Drag & drop de archivos: arrastra cualquier archivo sobre el área del canal y se sube automáticamente con preview overlay.
Copy message: nueva acción "Copiar texto" en la toolbar de hover del mensaje (icono Copy de lucide). Toast de confirmación.
Copy message link: la acción de copiar enlace ahora genera deep links `#m-<message_id>` correctamente. Pegar el link en otra pestaña hace scroll-into-view + highlight ámbar 1.4s.
Deep links: al abrir el canal con un hash `#m-<id>` el cliente desplaza la lista hasta ese mensaje y lo resalta brevemente.
Esc cierra el buscador o, si está cerrado, el modal de perfil y el popup de menciones.
Toolbar de acciones del mensaje rediseñada: rounded-md, bordes neutros zinc-200, hover bg-zinc-100, sin shadows pesadas. Soporte dark mode nativo.
Picker de emojis quick-react rediseñado: rounded-md, bordes neutros, hover bg suave en cada emoji.
Botón de respuesta a hilo (thread count) rediseñado: outline neutro en lugar de pill indigo.
🐛 Arreglado1
Bug crítico CANALES: subir archivos siempre devolvía 500 porque /api/channels/upload intentaba escribir en buckets `channel-files` y `files` que NO existen en el proyecto. Ahora usa el bucket real `user-files` con prefijo `channel-attachments/`.
Cambios detallados56 · 9
Mobile — Menú de modelos
7
Añadido toggle "Modo automático" con icono Sparkles ámbar al inicio del bottom-sheet de modelos. Texto explicativo "Elige modelo según complejidad" / "Usar siempre el modelo seleccionado".
Añadida la lógica de agrupación por proveedor (mismo `getProviderKey` que el header de PC): OpenAI, Google, Anthropic, Meta, Mistral, Ollama, OpenRouter, Groq, Otros.
Cada grupo tiene un header con label en color distintivo (emerald para OpenAI, blue para Google, orange para Anthropic, etc.).
Separadores `<hr>` entre grupos, padding refinado.
Cuando autoModelMode está activo, ningún modelo se marca como seleccionado (la decisión la hace el backend).
Botón principal del header muestra "Auto · <modelo base>" en lugar del nombre del modelo cuando autoModelMode está activo.
Icono Sparkles con gradient amber→orange dentro de un cuadradito redondeado en lugar del icono del modelo cuando autoModelMode está activo.
Fix CRÍTICO — subir archivos en canales
8
Síntoma: pulsar el clip en un canal, seleccionar archivo, recibe error "No se pudo subir el archivo" sin más detalle. Logs del servidor: 500 Internal Server Error.
Causa raíz: /api/channels/upload intentaba subir al bucket `channel-files` y, si fallaba, al bucket `files`. Ninguno de los dos existe en este proyecto. Los buckets reales son `user-files`, `avatars` y `public-assets`.
Fix: ahora usa el bucket `user-files` (el mismo que /api/files/upload), aislando los archivos del módulo de canales bajo el prefijo `channel-attachments/<user_id>/...`. Sin fallback porque ya no es necesario.
Mejora: la whitelist de mime types se expandió usando el mismo modelo que /api/files/upload (ALLOWED_MIME_PREFIXES + ALLOWED_MIME_EXACT + ALLOWED_EXTENSIONS) — ya no rechaza .doc/.xls/.ppt legacy, .zip, .7z, .rar, HEIC, AVIF, etc.
application/octet-stream se acepta sólo si la extensión está en la whitelist (mismo patrón anti-abuso que en upload).
Tamaño máximo subido de 10 MB a 25 MB.
Errores devuelven status correctos (413 para tamaño, 415 para tipo, 500 para upload error) con mensajes legibles en español.
El campo accept del input file en ChannelView se sincronizó con la whitelist nueva.
Logo de admin (corona) — fix de posicionamiento
7
Antes: la clase `.admin-crown-ring` forzaba `border-radius: 9999px`. Esto entraba en conflicto con avatares cuadrados nuevos (rounded-md/rounded-lg) en canales y modal de perfil — los volvía circulares aunque el contenedor fuese cuadrado.
Antes: el badge `.admin-crown-badge` se posicionaba a `top: -6px; right: -6px`, demasiado lejos del centro para avatares pequeños (28-32px) usados en filas de canal — quedaba sobre el ring.
Ahora: `.admin-crown-ring` no fuerza border-radius (deja que el elemento decida con rounded-md/rounded-full).
Ahora: badge a `top: -4px; right: -4px`, tamaño 13×13 (antes 14×14), borde 1.5px sólido blanco para contraste, gradient más suave (fde68a → f59e0b).
Nuevo: variante `.admin-crown-ring--circle` para casos en los que el avatar SÍ debe ser redondo (header de chat, modal de perfil, panel de admin).
Aplicada `admin-crown-ring--circle` en src/components/chat/Header.tsx (avatar redondo) y src/components/admin/panels/UsersAdminPanelContent.tsx (avatares de tabla y modal).
En src/components/channels/ChannelList.tsx se quitó el doble ring (`ring-1.5 ring-amber-400 admin-crown-ring`) — el shadow del crown ring ya provee el efecto.
Canales — Buscador interno
7
Nuevo botón Search en el header del canal: toggle on/off, estilo zinc-900 cuando activo.
Barra de búsqueda full-width que aparece bajo el header cuando se activa, con icono Search, input de tipo text, botón X para limpiar y contador de resultados.
Búsqueda en tiempo real: filtra los mensajes cargados en memoria por substring case-insensitive en `content`.
Empty state cuando no hay resultados con mensaje claro y sugerencia de cargar histórico antiguo.
Atajo Ctrl/Cmd + K: abre el buscador desde cualquier punto del módulo de canales.
Atajo Ctrl/Cmd + F: abre el buscador cuando el foco ya está dentro de la vista del canal (data-channel-view).
Esc: cierra el buscador (limpia query); si ya está cerrado, cierra modal de perfil / mention popup como antes.
Canales — Scroll & nuevos mensajes
6
Listener de scroll en el contenedor: detecta si el usuario está cerca del fondo (< 80px) o no.
Botón flotante "Ir al final" / "X nuevo(s)" arriba del input, con shadow suave y hover state.
Cuando llegan mensajes nuevos por Realtime y el usuario está scrolleado arriba (>120px), se incrementa contador `unreadNew` y se muestra el badge rojo con el número.
Si el mensaje viene del propio usuario (envió desde otra ventana), no cuenta para unreadNew.
Click en el botón hace scroll smooth al final y resetea el contador.
Cuando el usuario llega al fondo manualmente, también resetea unreadNew.
Canales — Drag & drop de archivos
5
Listener `onDragOver`/`onDragLeave`/`onDrop` en el contenedor `data-channel-view`.
Detecta `dataTransfer.types.includes("Files")` para distinguir entre arrastrar texto vs arrastrar archivos.
Overlay de drop con backdrop blur, borde dashed blanco, icono Paperclip, mensaje "Suelta el archivo para subirlo" + ayuda "Máximo 25 MB · imágenes, vídeo, audio, documentos, ZIP…"
Al soltar, llama a `handleFileUpload(file)` con el primer archivo del DataTransfer.
Sin cambios en la UX: aparece el preview habitual + se sube + queda como `pendingAttachment` listo para enviar con el siguiente mensaje.
Canales — Copy & deep links
6
Nueva acción "Copiar texto" en la toolbar de hover del mensaje (icono Copy de lucide). Usa `navigator.clipboard.writeText` con fallback a textarea oculto + execCommand para navegadores antiguos.
Toast de confirmación "Mensaje copiado" / "No se pudo copiar el mensaje" según resultado.
La acción de copiar enlace ahora genera URLs con hash `#m-<message_id>` (antes usaba query param `&msg=` que el componente no manejaba).
El componente añade `id="m-${msg.id}"` a cada mensaje renderizado, lo que permite a los deep links funcionar con scroll-into-view nativo.
useEffect específico para deep links: lee `window.location.hash`, busca el elemento por id, hace `scrollIntoView({ behavior: "smooth", block: "center" })` y aplica un highlight ámbar transitorio (1.4s) con transición suave.
Listener de hashchange: si el usuario navega a otro #m-<id> desde la misma página, también funciona.
Canales — UI refinada
5
Toolbar de acciones del mensaje: rounded-md (antes rounded-2xl), border zinc-200, p-0.5 (antes p-1), shadow-md (antes shadow-lg shadow-black/10), backdrop-blur-md.
Cada botón de acción: rounded-md, hover bg-zinc-100, color zinc-500 base con hover a zinc-800. Soporte dark mode (hover bg-zinc-700, hover text zinc-100).
Botón Eliminar: hover bg-rose-50 dark:bg-rose-500/15 + hover text rose-600 dark:rose-400.
Picker de emojis quick-react: rounded-md, p-1, border zinc-200/70, cada emoji con padding 1×0.5 y hover bg-zinc-100 (antes hover scale-125 sin contenedor).
Botón "X respuestas en hilo": outline neutro (border zinc-200/70 + bg-white) en lugar de pill indigo. Más coherente con el resto del módulo.
Calidad técnica
5
Typecheck verde tras todas las modificaciones.
Sin breaking changes: la API del backend no cambia (sólo se corrige el bucket usado internamente).
Sin pérdida de funcionalidad existente: todas las acciones previas (responder en hilo, fijar, editar, eliminar, reaccionar) siguen funcionando.
Lint clean (sin warnings introducidos).
Reuso de helpers (getProviderKey idéntico en mobile y desktop, copy clipboard con fallback robusto).
Rediseño minimalista del módulo de Canales y fix crítico del editado de mensajes
05 de mayo de 2026
La versión 7.7.0 rehace por completo la estética del sistema de Canales (página, lista y vista de canal) para alinearlo con la línea minimalista del resto del producto: fuera gradientes violeta/indigo, blobs animados y liquid-glass; dentro tipografía más limpia, jerarquía consistente, dark mode nativo y micro-interacciones discretas. Además corrige un bug crítico en el editado/regeneración de mensajes que reactivaba la herramienta de unidad de red sin permiso del usuario y filtraba todos los archivos del contexto en la respuesta.
Lo destacado
19
✨ Nuevo14
regenerateFromHere ahora reenvía explícitamente todas las flags de herramientas (web_search, db_query, network_drive_rag, deep_research, document_generation, spreadsheet_analysis, code_interpreter, integraciones Google/Spotify/Microsoft, auto_route_model) leyéndolas del store; no se infieren más por defecto.
Los attachments del mensaje original sólo se reenvían cuando hay una herramienta que los consume activa (RAG estricto, network_drive_rag, spreadsheet_analysis, document_generation, code_interpreter). Si re-preguntas "¿Qué puedes hacer?", ya no se cuelan PDFs anteriores.
channels/page.tsx: fuera blobs animados (welcome-blob-1/2/3), fuera bg gradient slate→blue→indigo. Fondo unificado #f9f9f9 / #171717 (dark).
ChannelList: header limpio (icono cuadrado + título tipográfico), botón "+" en zinc-900 sólido (no gradient indigo→violet), search compacto con bg zinc-100/80, tabs como underline (no pill), filas de canal con icono 28px y badges sólidos (rose-500 para menciones, zinc-900 para no leídos).
ChannelView: header sticky con backdrop-blur sutil, icono cuadrado neutro, badges minimalistas, mensajes con hover zinc-100/70 sin shadows, avatares 32px con borde redondo discreto.
Modales de crear/editar canal: sin gradient violeta→purpura, header limpio con borde inferior, picker de iconos en estilo neutral (ring zinc-900 cuando seleccionado), botones primarios en zinc-900/zinc-100.
Input de mensaje en canal: contenedor con borde neutro, botón send sólido zinc-900/zinc-100 (antes gradient indigo→violet→purple con scale animation), attach como icono ghost.
Adjuntos preview (durante upload y tras upload): bg zinc-100 neutro en lugar de gradient indigo/violet.
Mention popup en input de canales: bordes y superficies neutras, item activo con bg zinc-100, sin colores de marca azul.
Empty state de canal sin mensajes: icono cuadrado en zinc-100, sin gradients indigo/violet.
Pin bar (mensajes fijados): amber-50 suave en lugar de gradient amber→orange. Cards de pin con bordes neutros.
Soporte dark mode nativo en todos los rincones del módulo de canales (antes sólo light).
Tipografía coherente con el resto del producto (10/11/12.5/13/13.5/15px) y tracking-tight en títulos.
💎 Mejorado4
Sistema de Canales completamente rediseñado estéticamente: minimalista, coherente con chat/admin/sidebar/changelog/welcome.
ThreadPanel rediseñado: header limpio, replies con avatar cuadrado neutro, botón send minimalista. Soporte completo dark mode.
Modal de perfil de usuario: header sin gradient blue/cyan, cards con bordes neutros, status dot simple sin animación ping.
Bordes y superficies usando la paleta unificada zinc-200/70 dark:zinc-800/60 en lugar de white/40 + shadows pesadas.
🔒 Seguridad1
Bug crítico: al editar un mensaje el backend reactivaba la herramienta de unidad de red ("network_drive_rag") sin permiso del usuario, mostrando una lista enorme de archivos del contexto bajo la respuesta. Corregido.
Cambios detallados50 · 6
Fix crítico: editado de mensajes activaba network drive sin permiso
6
Síntoma: al editar "¿Qué puedes hacer?" la respuesta llegaba acompañada de una lista enorme de archivos (Manual_Interno_GESEM.txt, generame-un-docx-sobre..., 12-25-FerranGarola.pdf, etc.) que no debían aparecer.
Causa: regenerateFromHere() en MessageBubble.tsx reenviaba TODOS los rawAttachments del mensaje original en cada edición sin filtrar por herramienta activa. El backend (chat/route.ts línea 5429) calcula effectiveNetworkDriveRag = network_drive_rag || inferredNetworkDriveIntent || explicitFileReferences.length > 0; al recibir attachments siempre disparaba el RAG de unidad de red aunque el usuario no lo hubiera activado.
Causa secundaria: regenerateFromHere tampoco enviaba network_drive_rag, db_query, deep_research, document_generation, spreadsheet_analysis, integraciones ni auto_route_model. El backend asumía valores por defecto e inferidos del input.
Fix: regenerateFromHere ahora lee del store (useChatStore) las flags actuales del usuario (networkDriveRag, dbQuery, deepResearch, documentGeneration, spreadsheetAnalysis, integrationGoogle, integrationSpotify, integrationMicrosoft, autoModelMode) y las envía explícitas en cada POST a /api/chat.
Fix de attachments: forwardedAttachments = attachmentsConsumingToolActive ? attachmentIds : []. Se filtran a [] si no hay herramienta activa que los necesite (networkDriveRag || spreadsheetAnalysis || documentGeneration || codeInterpreter || ragMode === "strict").
Resultado: al editar un mensaje plano la respuesta vuelve limpia, sin archivos colados, sin reactivar herramientas que el usuario tiene desactivadas.
Canales — wrapper (channels/page.tsx)
6
Eliminados los 3 blobs animados (welcome-blob-1, welcome-blob-2, welcome-blob-3) que generaban gradientes violeta/cyan/indigo de 750px con blur de 90px.
Eliminado bg-gradient-to-br from-slate-50 via-blue-50/50 to-indigo-50/40 del wrapper.
Sustituido por fondo plano #f9f9f9 (light) / #171717 (dark) coherente con chat/admin/sidebar.
Sidebar de canales con border-r border-zinc-200/70 dark:border-zinc-800/60, sin liquid-glass-sidebar.
Header del sidebar: botón back con hover bg-zinc-100, título con font-medium tracking-tight (no más bold con emoji 📡 inline).
Estado vacío rediseñado: icono Hash dentro de un cuadrado redondeado neutro w-14 h-14, título con tracking-tight, descripción text-zinc-500 leading-relaxed.
Canales — lista (ChannelList.tsx)
8
Header reducido a 6×6 icono + título 13px font-semibold. Botón "+" 7×7 en bg-zinc-900 dark:bg-zinc-100 (antes 7×7 gradient indigo→violet con shadow-md).
Badges: menciones en bg-rose-500 sólido (antes border rose-200 + bg rose-50), no leídos en bg-zinc-900 (antes gradient red→pink).
Filas de usuario: avatar 7×7 redondeado md (no rounded-xl), status dot 2.5×2.5 sin animate-ping, info 12.5px font-medium.
Modales (crear/editar): max-w-md (antes max-w-sm), header sin gradient violeta/azul, picker de iconos con ring zinc-900 cuando seleccionado (no scale-110+shadow-indigo). Botones cancelar+guardar como toolbar bottom (no grid 2 cols).
Canales — vista (ChannelView.tsx)
13
Header sticky: backdrop-blur-md sobre bg-white/90 (antes liquid-glass-header con shadow-sm). Padding vertical reducido a 2.5.
Modal de perfil: max-w-md rounded-xl con border zinc-200 (antes rounded-3xl con shadow blob 28px-70px).
Header del modal: limpio con border-bottom (antes gradient blue→indigo→cyan).
Avatar del usuario: 14×14 rounded-lg (antes 16×16 rounded-full con shadow-md).
Status dot: 3×3 simple (antes 3.5×3.5 con animate-ping para online).
Cards de info (rol app, rol canal, género, cumpleaños, última actividad, miembro desde, cuenta creada): rounded-md border zinc-200 bg-zinc-50 (antes rounded-xl). Soporte dark mode nativo en todas.
Bio card: igual a las otras tarjetas, padding y tipografía coherente.
Calidad técnica
5
Typecheck verde tras todas las modificaciones de canales y del fix de regenerateFromHere.
Sin cambios en la API ni en el contrato de tipos: ChannelList y ChannelView mantienen la misma firma de props.
Sin pérdida de funcionalidad: gestión de miembros, mensajes, hilos, reacciones, pins, mute, DMs, edición/borrado de mensajes — todo funciona igual.
Hardening de seguridad, velocidad post-streaming y rediseño del changelog
04 de mayo de 2026
La versión 7.6.0 endurece la seguridad del backend (SSRF blacklist en webhooks, mime whitelist en upload, RLS tightening en token_usage, SIGKILL forzado en code interpreter), recorta 1-3 segundos del cierre de cada respuesta de la IA (webhooks en paralelo con timeout, generación de título con AbortSignal, cache 5 min de provider api_key, throttle de snapshot a 500ms/128 chars), y rediseña la página de changelog con un layout más expresivo y jerárquico. También limpia varios useEffect sin cleanup, refuerza el manejo de errores y soluciona logs que filtraban stack traces.
Lo destacado
18
✨ Nuevo13
Mime whitelist en /api/files/upload: lista explícita de tipos permitidos. Octet-stream solo si la extensión es conocida. Devuelve 415 con razón clara.
Code interpreter: SIGTERM + SIGKILL forzado a los 2s para eliminar procesos zombi cuando timeout no funciona.
Webhooks en paralelo con timeout 4s cada uno (Promise.allSettled): -100ms a -1s al cierre del response cuando hay 2+ webhooks.
Title generation con AbortSignal de 3s + fallback: deja de bloquear el cierre 5-10s si OpenAI tarda.
Throttle de snapshot durante stream subido a 500ms/128 chars: -50% adicional en writes Supabase durante respuestas largas.
Body req.json() con catch: si el JSON es inválido responde 400 inmediato en vez de colgar el endpoint.
Queue wait loop con timeout máximo 60s: si la cola queda atascada, el usuario no espera infinitamente.
Promise.all → Promise.allSettled en /api/admin/feedback: una query fallida ya no tumba la respuesta entera.
JSON.parse del plan de agentes con fallback: si el modelo devuelve JSON inválido, no crashea (steps vacíos).
useEffect cleanup en /auth/update-password y ActivityContext: cancelable, sin race tras unmount.
a11y: motion-safe:animate-pulse en ModernDashboard (respeta prefers-reduced-motion), disabled:pointer-events-none en botón de registro.
void supabase.removeChannel en 3 cleanups de Realtime (no-floating-promises).
💎 Mejorado1
Página de changelog rediseñada con layout tipo timeline agrupado por mes, hero dramático, stats banner y cards por área de feature.
🐛 Arreglado1
console.error sin filtrar stack/paths: solo .message en code-interpreter, title gen y webhooks.
🔒 Seguridad3
SSRF en webhooks: validateWebhookUrl bloquea localhost, 127.x, 10.x, 192.168.x, 172.16-31.x, 169.254 (metadata), ::1 y direcciones IPv6 link-local.
RLS tightening (migración 075): WITH CHECK (true) en token_usage → solo service_role o auth.uid()=user_id.
Cache in-memory de provider api_key descifrado (TTL 5min): -50-100ms por chat request en cuentas con providers custom.
Cambios detallados40 · 7
Seguridad
7
SSRF: nueva función validateWebhookUrl() en /api/webhooks que rechaza https://localhost, 127.0.0.0/8, 10.0.0.0/8, 192.168.0.0/16, 172.16-31.0.0/12, 169.254.0.0/16 (AWS metadata), ::1, fd*, fc* (link-local IPv6).
Aplicado en POST y PATCH de webhooks: si el URL no pasa el check, devuelve 400 con razón legible.
Mime whitelist en /api/files/upload: PDF, Word/Excel/PowerPoint, OpenDocument, RTF, CSV, JSON, XML, YAML, código, imágenes (PNG/JPG/WebP/GIF/HEIC/SVG), audio (MP3/WAV/M4A/OGG), video (MP4/MOV) y ZIP.
Octet-stream solo se acepta si la extensión está en la whitelist (.pdf, .docx, etc.). Si no, 415 con error.
RLS tightening en token_usage (migration 075): la policy "Service role can insert" tenía WITH CHECK (true), permitiendo a cualquier service-role insertar con cualquier user_id. Reemplazada por auth.role() = service_role OR auth.uid() = user_id.
Code interpreter: tras SIGTERM por timeout, programa SIGKILL forzado a los 2s para no dejar zombies de Python.
Logs sanitizados: console.error sin objeto Error completo (no leak de stack/paths/env).
Velocidad de respuesta de la IA
5
Webhooks ahora en PARALELO con Promise.allSettled y timeout AbortController de 4s cada uno. Antes: secuencial bloqueando 1-3s por cada webhook configurado.
Title generation con AbortSignal de 3s: si OpenAI tarda más, fallback a truncar el input. Antes: sin timeout, bloqueaba el cierre 5-10s.
Cache in-memory 5min de provider api_key descifrado: decryptAndMigrateSecretField era ~50-100ms por chat request, ahora primer hit y los siguientes son instant.
Throttle de persistLiveAssistantSnapshot subido de 250ms/64 chars a 500ms/128 chars: el cliente lee del propio stream, los snapshots solo importan para colaboradores via Realtime; reduce ~50% más las writes a Supabase.
Total ahorrado en cierre del response (post-streaming): 1-3 segundos en condiciones típicas con webhooks/multi-tools.
Robustez
5
body = await req.json() ahora con .catch(): si el JSON es inválido o vacío, responde 400 sin crashear el endpoint.
Queue wait loop con timeout máximo de 60 segundos: si conversation_live_runs queda atascada por un bug en otro request, el usuario no espera infinitamente — se fuerza el run con un warn.
Promise.all → Promise.allSettled en /api/admin/feedback: profiles + listUsers + conversations son queries independientes; una fallida ya no tumba la respuesta entera. Cada array hace fallback a [].
JSON.parse del plan de agentes en /api/agents/execute: try/catch con fallback a { steps: [] } en vez de 500.
Type guard de step.query (unknown → string) en agent execution para evitar passing de undefined a searchWeb.
Lifecycle React
3
useEffect en /auth/update-password ahora cancelable: setea state solo si el componente sigue montado. Antes generaba React warning "setState on unmounted".
useEffect en ActivityContext igual: cancela getUser() si el contexto se desmonta antes de resolver.
void en cleanup de supabase.removeChannel en AdminPageClient (sync jobs), UserTokenUsage y MessageReactions: explicita que ignoramos la promesa (silencia no-floating-promises).
UX y a11y
3
Botón "Solicitar acceso" en /auth/register con disabled:pointer-events-none: ya no se puede activar con tab+enter cuando está deshabilitado (evita doble submit).
Skeleton del ModernDashboard ahora es motion-safe:animate-pulse (respeta prefers-reduced-motion del sistema).
Webhooks Discord/Slack: el cuerpo del mensaje ahora lleva emojis legibles (💬 chat completado · 👤 usuario · 📊 mensajes · 🤖 modelo). Antes salían mojibake "💬..." por encoding doble.
Página de Changelog (rediseño nivel dios)
13
Hero rediseñado: título dramático "Cada cambio, documentado." con tipografía 64px + gradient text sutil en la palabra "documentado".
Aurora gradient mesh suave en el fondo del hero (violeta/cyan/ámbar), reemplazando los orbs animados pesados.
Stat ribbon con 3 píldoras: "Última versión" con dot animado verde, total de versiones, total de cambios.
Top bar sticky con backdrop-blur y "Volver al chat" + "Releases GitHub" como atajos.
Timeline agrupado por MES (sticky header de mes mientras haces scroll) — antes era una lista plana sin jerarquía temporal.
Versión renderizada en font-mono 44px (display) con anchor link copiable (#v7.6.0).
Highlights en card destacada con icono ✨ "Lo destacado" y bullets con hover state.
Cambios detallados ahora en GRID 2 columnas: cada feature group es una card con icono semántico (Zap=perf, Shield=seguridad, Wrench=fix, Palette=ui, TrendingUp=mejora, Sparkles=default).
Cada card de área tiene contador en píldora ("8") y bullets compactos.
Footer minimalista con count de versiones + cambios totales + links a chat/GitHub/releases.
Dark mode nativo en todos los elementos.
scroll-mt-24 en cada artículo para que el anchor link no quede oculto bajo el sticky header.
Helpers utilitarios: getAreaIcon() detecta el icono por keywords del área, totalChangesAcrossVersions() suma highlights+features para el stat, groupByMonth() crea las secciones temporales.
Calidad técnica
4
Typecheck verde después de cada commit (4 commits en esta release).
Sin rotura: todos los cambios mantienen API existente (auto_route_model sigue siendo opt-in, webhooks siguen aceptando los mismos campos, etc.).
Migración 075 aislada (no toca tablas, solo policy de RLS): aplicar es seguro y reversible.
Falsos positivos descartados tras análisis (IDOR en calendar import, path traversal en network-drive-write, trigger sin OR REPLACE en migration 009).
Modo automático de modelo, paste de imágenes y limpieza de admin
04 de mayo de 2026
La versión 7.5.0 introduce el "Modo automático" de selección de modelo: el sistema baja a un modelo más rápido y barato (GIA-5.4-nano / GIA-5.4-mini / GIA-5.2) cuando la pregunta es trivial, y mantiene el modelo capable seleccionado para preguntas complejas. Incluye toggle visible en el menú de modelos del header, indicador "Auto · <modelo base>" en el botón, mejora del paste de imágenes desde el portapapeles (los screenshots ahora se nombran correctamente), y la limpieza de 4521 LOC de un backup huérfano del panel admin.
Lo destacado
13
✨ Nuevo10
Nuevo "Modo automático" de modelo: baja a GIA-5.4-nano/-mini cuando la pregunta es trivial, mantiene GIA-5.5 cuando es compleja.
Toggle visible en el dropdown de modelos del header con switch verde/gris y descripción contextual.
Indicador en el botón del menú: "Auto · GIA-5.5" con icono ✨ Sparkles cuando el modo automático está activo.
Heurística conservadora: pregunta trivial (saludos, ≤4 palabras) → downgrade. Adjuntos o complejidad intermedia con tools activas → mantiene capable.
Soporte para IDs con guión (gpt-5-5, gpt-5-4) y con punto (gpt-5.5, gpt-5.4) — comparación case-insensitive.
Tiempo de respuesta del modelo visible bajo cada mensaje (1.2 s, 850 ms) con dot verde.
Pegar imagen desde portapapeles: los screenshots ahora se nombran "pasted-image-YYYYMMDD-HHMMSS.png" con extensión correcta del mime.
Toast informativo al pegar imágenes: "Imagen pegada, subiendo..." (o "N imágenes pegadas...").
Activación opt-in del auto-routing por defecto en el frontend (ChatInput + WelcomeScreen).
Persistencia del toggle en localStorage: la preferencia del usuario sobrevive a refresh.
💎 Mejorado2
Cuando "Auto" está activo, el menú no marca ningún modelo como seleccionado (UI más coherente).
Borrado AdminPageClient.backup.tsx (4521 LOC huérfano): cold start del dev más rápido.
🐛 Arreglado1
Cadena de aliases robusta: si el target no existe en model_configs (gpt-5-4-nano), prueba gia-5-4-nano, gpt-5-4-mini, gia-5-4-mini, gpt-5-2, gia-5-2, gpt-5-mini, antes de hacer fallback al original.
Cambios detallados33 · 6
Auto-routing de modelo
9
Nuevo módulo src/lib/server/chat/auto-router.ts con heurísticas puras y testeables.
looksTrivial(): detecta saludos, cortesías, preguntas de ≤4 palabras.
Botón del header muestra "Auto · GIA-5.5" cuando autoModelMode está ON, con icono ✨ en lugar del icon del modelo.
Tooltip al hover: "Modo automático activo (base: GIA-5.5)".
Cuando Auto está activo, los modelos del menú no se marcan como seleccionados (sin checkmark ni bg destacado) — la decisión es del backend.
⭐ favorito sigue visible y persistido independientemente del modo Auto.
Estado autoModelMode persistido en localStorage bajo "geia:auto-model-mode".
Default: ON (todos los usuarios obtienen el ahorro automático sin configurar nada).
Resiliencia del backend
5
Fallback de aliases en chat/route.ts: si el target del downgrade (p.ej. gpt-5-4-nano) no existe en model_configs, prueba 6+ alternativas antes de rendirse.
Si ningún alias resuelve, vuelve al modelo original sin romper la respuesta.
Log detallado en cada llamada con auto_route activo: input (60 chars), selected, decision, downgraded, finalModel, anyToolActive, hasAttachments.
Logs separados para "skip por X" y "downgrade: A → B (Y palabras)".
Cuando el alias se resuelve, log adicional: "[AutoRoute] target alias resolved: gpt-5-4-nano → gia-5-4-nano".
Paste de imágenes
5
Los screenshots del portapapeles vienen sin name → ahora se generan con timestamp.
Rediseño minimalista, rendimiento del chat y nuevo sidebar Sleek
04 de mayo de 2026
La versión 7.4.0 unifica la estética del producto bajo un sistema minimalista estilo ChatGPT (#f9f9f9 / #171717), introduce un sidebar nuevo "Sleek" con dos modos (expandido y colapsado), rediseña por completo la pantalla de bienvenida, mejora la velocidad de respuesta de la IA reduciendo writes durante el streaming y paralelizando queries pre-modelo, y limpia más de 200 textos con encoding roto en el panel de administración.
Lo destacado
14
✨ Nuevo9
Nueva pantalla de bienvenida limpia: tipografía sin gradientes, logo elegante, starter prompts y dark mode nativo.
Sidebar "Sleek" único para móvil y desktop con modo colapsado tipo ChatGPT (rail de iconos + tooltips).
Estilo minimalista uniforme en chat, admin y sidebar: fondo plano, fuentes coherentes, sin glass morphism pesado.
Tiempo de respuesta del modelo visible bajo cada mensaje (1.2 s, 850 ms, etc.) con dot verde.
Lazy load de modales (settings, voice, file preview, collaborators) y librerías pesadas (tesseract.js, pdfjs-dist, mammoth, xlsx) — bundle inicial 30%+ más pequeño.
Logo del sidebar limpia el contexto antes de navegar — ahora siempre lleva al welcome.
Realtime reconnect automático: si el canal de Supabase se cae, recarga mensajes sin requerir refresh manual.
Watchdog de 90 s en el reader del stream: nunca más spinner colgado para siempre.
Toast cuando una respuesta no se pudo guardar — antes desaparecía silenciosamente al recargar.
💎 Mejorado2
Respuestas de la IA hasta 600ms más rápidas: paralelización de queries pre-modelo, menos writes durante streaming, cache in-memory de network drives.
Cache global con React Query: navegación instantánea entre páginas, menos hits a Supabase.
🐛 Arreglado3
Fix del modelo preferido (⭐): se restaura siempre al volver a la welcome o crear chat nuevo, no solo al abrir la app.
Más de 200 textos con caracteres rotos arreglados en el admin (mojibake UTF-8 ↔ Latin-1).
Error boundary específico del chat — un error en MessageBubble ya no rompe toda la app.
Cambios detallados69 · 10
Pantalla de bienvenida
8
Layout rediseñado con jerarquía clara: status pill → logo → saludo → typewriter → composer → starters.
Saludo sin gradient text, tipografía limpia con apellido/nombre del usuario en color secundario.
4 starter prompts de un click (analizar documento, investigación profunda, buscar web, archivos de red) que envían el mensaje al instante.
Avatar pill compacto con dot de estado (online / typing / reading / offline) sin glass morphism pesado.
Animaciones suavizadas con respeto a prefers-reduced-motion (sin bounce-in al cargar).
Dark mode nativo: fondo #171717, paneles #0a0a0b, texto y borders adaptados.
Quick actions móvil reducidas a píldoras compactas (rounded-14 vs rounded-2xl) sin sombras saturadas.
Subtitle del calendario en color ámbar discreto, sin shadow ni backdrop-blur.
Sidebar Sleek (nuevo)
11
Componente único SidebarSleek que sustituye Sidebar.tsx (1044 LOC) y MobileSidebar.tsx (995 LOC) — total ahorrado: ~1200 LOC.
Modo expandido (260px): logo, búsqueda con ⌘K visible, nav items (imágenes, canales, apps, nueva carpeta), grupos por fecha (Hoy, Ayer, Últimos 7/30 días, mes a mes), pinned arriba, footer con user card.
Modo colapsado (60px): rail de iconos estilo ChatGPT con tooltips a la derecha, badge de canales sin leer, avatar al pie con menú emergente (Ajustes, Admin, Cerrar sesión).
Click en logo del sidebar limpia projectContextId, folderContextId y activeConversationId antes de navegar — siempre lleva al welcome.
Modal de 3 puntos rediseñado estilo ChatGPT minimal: sin headers ni icon tiles, solo iconos pelados con texto.
Iconos de carpeta correctamente mapeados (FolderOpen, Brain, Briefcase, etc.) — antes mostraba la cadena cruda "folder", "work", "brain".
Pin/Star/Share como mini-iconos a la derecha de cada chat (ámbar/sky) en lugar de chips de texto.
Resize handle agarrable: hit area de 8px con línea visible de 1px, antes era 1px imposible de pillar.
Empty state con CTA: glow pulsante + botón "Crear primer chat".
Atajos de teclado: ⌘K enfoca filtro, "/" focus rápido, click en chat con Cmd/Ctrl abre en nueva pestaña.
Drag & drop de carpetas y chats con indicadores visuales suaves.
Velocidad de respuesta de la IA
6
Throttle de snapshot durante streaming subido de 90ms / 16 chars a 250ms / 64 chars — reduce 80% las writes a Supabase durante respuestas largas.
syncLiveRun ya no se llama por cada token, solo en cambios de fase reales — reduce a la mitad las writes restantes.
Profile select específico (id, name, avatar_url, role) en lugar de select('*') — ahorra 20-50ms por request.
Queries pre-modelo paralelizadas con Promise.all (participantes + profile en lugar de serial) — ahorra 100-200ms TTFT.
Cache in-memory de 60s para "¿usuario tiene network drives sincronizados?" — evita query Supabase repetida en cada chat.
Tiempo total ahorrado al primer token: 300-600ms en condiciones típicas.
Tiempo de respuesta visible
4
Bajo cada mensaje del asistente aparece el tiempo del modelo: "1.2 s", "850 ms", "1m 5s".
Dot verde junto al tiempo para identificarlo visualmente.
Tooltip al hacer hover muestra los milisegundos exactos.
Se persiste en meta_json.response_time_ms y meta_json.generation con tokens y provider.
Performance frontend
9
React Query (@tanstack/react-query) instalado y montado como provider raíz para cache global de queries.
Hook useUnreadChannels migrado a React Query: cache compartido + Realtime auto-invalidate, varios componentes ya no fetchean por separado.
Hook useFolders disponible para futuras migraciones (sidebar, knowledge, admin).
5 orbs animados con blur-90px eliminados del ChatShell — ahorro de 5-10% de CPU constante en desktop.
Modales lazy-loaded en SidebarSleek (CreateFolderModal, ConversationCollaboratorsModal) — solo cargan al abrirlos.
next/image en avatares de Header con AVIF/WebP automático — 40% menos peso en imágenes externas.
Dominios añadidos al config: googleusercontent.com, *.supabase.co, i.scdn.co, graph.microsoft.com.
Cache-Control en /api/public/app-settings y /api/public/welcome-messages: stale-while-revalidate de 5-10 min en lugar de no-store.
Throttle del reader del stream (90s sin chunks aborta) ya integrado en ChatInput.
Bugs críticos del chat
6
Realtime de Supabase reconecta automáticamente si CHANNEL_ERROR / TIMED_OUT / CLOSED — antes los mensajes nuevos no llegaban hasta refresco manual.
Insert de mensaje del usuario captura el error explícitamente — antes era silencioso y rompía source_message_id.
regenerate_message_id se valida antes de continuar — antes podía duplicar tareas si el ID no existía.
Persistencia fallida del mensaje del asistente emite marcador __PERSISTENCE_FAILED__ al cliente — antes la respuesta se perdía sin aviso.
Frontend muestra toast de 8s cuando la respuesta no se pudo guardar.
ChatErrorBoundary envuelve ChatArea — un error en MessageBubble ya no tumba toda la app.
Modelo preferido
3
El modelo preferido (⭐) ahora se restaura al volver a la welcome o iniciar chat nuevo, no solo al abrir la app por primera vez.
Antes la lógica solo aplicaba el preferido cuando selectedModel era el default inicial "gpt-5.2" — al navegar por chats con otros modelos, el preferido se perdía.
Ahora dos casos cubiertos: primera carga + activeConversationId === null — sigue respetando el modelo del chat existente cuando se entra en uno.
Panel de administración
10
Shell minimalista: fondo #f9f9f9 (light) / #171717 (dark) con dark mode nativo en header, sidebar y dashboard.
Eliminados los 3 orbs animados de fondo y el "liquid-glass" pesado.
Header del admin sin gradient text en "Panel Admin" — tipografía limpia tracking-tight.
Sidebar nav reducido a 256px con bg sólido, items con bg-zinc-200 al activar (sin shadow + scale).
Cards del dashboard sin liquid-glass: border + bg-white sólido, hover sutil sin scale-105.
Storage stats sin gradient text en cifras: tipografía font-semibold tracking-tight.
205 textos con encoding mojibake corregidos: Conexión, automáticamente, análisis, ningún, podrán, extraído, etc.
Emojis arreglados en el admin: 📊 📧 📁 👥 💡 🌐 ✅ ❌ ⭐.
Símbolos arreglados: ¿ ¡ ° ½.
Script reusable scripts/fix-encoding.mjs con mapeo UTF-8 ↔ Latin-1 doble.
Estilo y consistencia visual
6
Sistema de colores unificado: light #f9f9f9, dark #171717 (mismos que el sidebar y el shell).
Radios reducidos a 3 escalas (8/12/16/20px) en lugar de 5 distintos.
Tipografía a 3 tamaños principales (10px labels, 12.5-13.5px contenido, 15px brand).
Iconos Lucide con strokeWidth 1.75 en secundarios y 2 en primarios para crear jerarquía.
Eliminadas sombras saturadas (shadow-xl, shadow-blue-500/30) — ahora shadow-sm o sin sombra.
Backdrop-blur eliminado de zonas donde no aporta (footers sin contenido detrás).
Calidad técnica
6
Typecheck verde después de cada cambio sin excepciones.
Persistencia del mensaje del asistente con metadatos de generación (modelo, provider, tokens, latencia).
Component memo + comparador custom en ChatRow del sidebar para evitar re-renders.
Selectores específicos en queries Supabase en lugar de select('*').
Cache-Control con stale-while-revalidate en endpoints públicos.
Eliminados los 5 orbs animados que costaban CPU constante en desktop.
Persistencia estable de busquedas y composer movil corregido
27 de abril de 2026
La version 7.3.5 estabiliza las respuestas generadas con busqueda web y Deep Research para que no desaparezcan al refrescar o cambiar de chat, y corrige el composer movil para que el icono de enviar quede integrado correctamente dentro del input.
Lo destacado
6
✨ Nuevo5
El cliente reintenta cargar mensajes persistidos antes de crear un fallback local, evitando parpadeos y respuestas perdidas.
El input movil separa definitivamente las acciones de voz, stop, cola y enviar para evitar iconos fuera de sitio.
El boton de enviar movil solo aparece cuando hay texto o adjuntos, y se mantiene dentro de la capsula del composer.
Se anaden protecciones CSS para impedir que el boton de enviar se renderice si el input esta vacio.
Version visible actualizada a 7.3.5 en header PC y header movil.
🔒 Seguridad1
Las respuestas finales de busqueda web y Deep Research se persisten con mas seguridad antes de cerrar el streaming.
Cambios detallados11 · 3
Streaming y persistencia
4
El backend refuerza la escritura de respuestas finales cuando una peticion con herramientas termina o se interrumpe despues de haber generado contenido util.
Las respuestas de busqueda web y Deep Research dejan de depender solo del estado live temporal para sobrevivir a refresh, cambio de chat o recarga de mensajes.
La recarga final del cliente espera varias ventanas cortas de sincronizacion antes de decidir si necesita insertar un fallback optimista.
Los placeholders live_streaming no se tratan como respuestas definitivas si no contienen contenido final valido.
Composer movil
4
Rama movil dedicada para acciones del input: microfono, modo conversacion, enviar, stop y cola ya no comparten el layout desktop.
El icono de enviar se oculta cuando no hay contenido y aparece como boton interno cuando el usuario escribe o adjunta archivos.
El stop de streaming y el contador de cola mantienen tamano fijo para evitar desplazamientos visuales en la barra inferior.
CSS defensivo con data attributes para bloquear estados inconsistentes en el composer movil.
Calidad tecnica
3
Typecheck completo ejecutado tras los cambios del composer y la persistencia.
Package version y lockfile sincronizados con 7.3.5.
Changelog local actualizado para documentar las correcciones incluidas en esta entrega.
Nombre publico simplificado, streaming web estable y Deep Research recuperado
27 de abril de 2026
La version 7.3.0 simplifica el nombre publico de la pagina inicial para que el navegador muestre solamente GIA, mantiene intactos los titulos dinamicos de conversaciones, corrige carreras de streaming tras busquedas web, recupera el viewport de Deep Research y evita que estados colaborativos de chats compartidos afecten a chats normales.
Lo destacado
6
✨ Nuevo6
El titulo base de la web pasa de "GIA - Gestion Empresarial con IA" a "GIA".
Los chats conservan sus titulos dinamicos con formato "Nombre del chat - GIA".
Version visible actualizada a 7.3.0 en header PC y header movil.
Las respuestas generadas con busqueda web dejan de desaparecer al finalizar el streaming.
Deep Research vuelve a emitir frames live en la card inline y en la ventana flotante.
Los estados de chats compartidos ya no renderizan tarjetas live dentro de chats normales.
Cambios detallados17 · 4
Identidad y metadata
3
Metadata global de Next.js actualizada para que la pagina inicial use el titulo GIA.
No se modifica la logica de ChatShell que genera titulos por conversacion, proyecto o carpeta.
Package version y lockfile sincronizados con 7.3.0.
Chat y busqueda web
5
Serializacion de snapshots live para impedir que estados antiguos como "investigando" sobrescriban la respuesta final.
El cierre del streaming espera el snapshot final done antes de recargar mensajes.
El cliente ya no considera placeholders live_streaming=true como respuestas persistidas validas.
Fallback local reforzado: si el placeholder sigue visible tras una busqueda web, se convierte en la respuesta final sin parpadeo.
Los placeholders colaborativos vacios se ocultan en chats privados para evitar bloques residuales bajo respuestas normales.
Deep Research visual
5
El endpoint de eventos live acepta conversaciones con acceso de owner o participante, no solo consultas owner-only.
El hook de live viewport rehidrata historial y mantiene polling controlado para recuperar frames aunque el SSE llegue tarde.
La card inline y la ventana flotante muestran errores/fallbacks claros si Playwright no puede arrancar en vez de quedarse cargando indefinidamente.
ChatInput envia research_mode y deep_research_mode para que el backend respete el modo rapido o exhaustivo seleccionado.
Playwright publica eventos de error de navegador cuando falta configuracion o no se puede crear el contexto visual.
Chats compartidos aislados
4
El backend solo considera colaborativa una conversacion si tiene participantes activos distintos del propietario.
MessageBubble solo renderiza tarjetas live de colaboracion cuando la conversacion esta marcada como compartida.
ChatArea limpia streams y pendientes compartidos al entrar en chats normales.
El refresco rapido de estados compartidos queda desactivado en chats privados para evitar parpadeos y bloqueos visuales.
Composer pulido, Ollama estable y automatizaciones mejoradas
24 de abril de 2026
La version 7.2.0 corrige el composer del chat para adjuntos inline estilo ChatGPT, estabiliza la resolucion de modelos y la integracion con Ollama, mejora la experiencia movil y convierte Tareas en Automatizaciones con indicaciones y herramientas configurables.
Lo destacado
6
✨ Nuevo5
Los adjuntos pasan a mostrarse dentro del composer con previews inline y subida autenticada por servidor.
El input desktop deja de romperse al combinar adjuntos y herramientas activas gracias a un grid corregido y mas compacto.
El sync de modelos ya no pisa display_name editados manualmente en admin.
Automatizaciones anade indicaciones de ejecucion y herramientas activables por tarea.
Admin gana navegacion movil dedicada y el selector de modelos evita claves duplicadas y grupos repetidos.
💎 Mejorado1
Ollama usa endpoints normalizados, no exige API key y deja de mezclarse visualmente con modelos Meta.
Cambios detallados18 · 4
Composer y adjuntos
5
Nueva API /api/files/upload para subir archivos desde el chat de forma autenticada y registrar file_id real antes de enviar el mensaje.
Los adjuntos se renderizan inline dentro del composer en lugar de abrir una tarjeta separada sobre el input.
Desktop composer reorganizado para soportar correctamente la combinacion de texto, adjuntos y herramientas activas sin solapar filas ni chips.
Miniaturas de adjuntos mas compactas, boton de eliminar mas limpio y badge de herramientas duplicado eliminado en desktop.
Validacion de layout con typecheck para evitar regresiones del textarea colapsado en el shell minimalista.
Modelos y proveedores
5
El sync de modelos conserva display_name personalizados cuando el admin ya ha renombrado un modelo.
Nueva utilidad central de endpoints AI para normalizar rutas OpenAI-compatible y Ollama.
Ollama prueba modelos con la ruta correcta, deja de enviar Authorization si no hay API key y usa /v1/chat/completions y /api/tags donde corresponde.
El selector de modelos deduplica opciones para evitar warnings de React por keys repetidas como openai o meta.
La clasificacion visual prioriza provider_type, de modo que los modelos Ollama dejan de aparecer en el grupo Meta.
Chat y vista movil
4
Header PC y header movil actualizados a la version 7.2.0.
Deep Research inline viewport se ajusta mejor al flujo movil y reduce dependencias del popup flotante.
ChatArea y MessageBubble limpian mejor estados residuales para reducir mensajes fantasma al terminar respuestas o cambiar de contexto.
Store de modelos y chat refinados para resolver mejor el modelo activo por config_id, slug publico o provider_model_id.
Automatizaciones y admin
4
La seccion Tareas se presenta como Automatizaciones en la interfaz de ajustes.
Cada automatizacion editable incorpora indicaciones/instructions y lista de herramientas habilitadas para la ejecucion.
Task execution y mutaciones preservan prompt, instrucciones y enabled_tools dentro de execution_json.
Nueva navegacion admin movil mas adaptada, con header y accesos tactiles dedicados sin tocar la experiencia desktop.
La version 7.1.0 convierte el calendario en un modulo operativo con eventos persistidos en Supabase, vistas dia/semana/mes/lista, edicion completa, integracion Google Calendar y creacion desde mensajes del chat. Tambien incorpora comparacion directa entre varios modelos desde el composer.
Lo destacado
6
✨ Nuevo6
Nueva pagina /calendar con agenda real, modal avanzado de eventos y vistas Dia, Semana, Mes y Lista.
Los eventos dejan de depender de localStorage y pasan a guardarse en Supabase con la tabla calendar_events.
Integracion con Google Calendar para importar eventos, crear eventos desde GIA y consultar disponibilidad.
Crear evento al clicar un dia y editar evento al clicar una tarjeta del calendario.
Accion Crear evento desde mensajes del chat para convertir texto con fecha/hora en borrador de calendario.
Nuevo comparador multi-modelo para seleccionar 2-4 modelos y recibir una respuesta comparativa trazable.
Cambios detallados38 · 7
Calendario persistente
5
Nueva migracion 074_calendar_events.sql con owner_id, categoria, fuente, recurrencia, recordatorios, asistentes, enlaces, metadata y RLS por usuario.
Nueva API /api/calendar/events para listar y crear eventos sincronizados por usuario.
Nueva API /api/calendar/events/[id] para editar y borrar eventos propios.
Eventos ordenados por fecha y filtrados por rango visible para mantener la agenda rapida.
Las tareas pendientes con due_at se proyectan dentro del calendario como eventos de tipo tarea.
Interfaz de calendario
7
Nueva vista Dia para revisar todos los eventos de una jornada concreta.
Nueva vista Semana con columnas por dia y creacion directa desde cada dia.
Vista Mes redisenada con chips de eventos, contador de overflow y seleccion visual del dia actual.
Vista Lista para agenda futura compacta.
Click en un dia vacio abre el modal de creacion preconfigurado con esa fecha.
Click en un evento abre el modal de edicion con todos sus datos cargados.
Boton flotante movil para crear evento rapidamente y modal tipo bottom sheet en pantallas pequenas.
Modal avanzado de eventos
7
Campos para titulo, descripcion, ubicacion, fecha, hora de inicio, hora de fin y todo el dia.
Categorias con color: Trabajo, Reunion, Foco, Personal, IA, Google, Proyecto y Tarea.
Recordatorios: sin aviso, 10 minutos, 30 minutos, 1 hora o 1 dia antes.
Recurrencia diaria, semanal o mensual con expansion visual en el rango activo.
Asistentes internos y enlaces/archivos relacionados guardados como JSON.
Modo privado o compartido preparado para futuras funciones colaborativas.
Eliminacion de eventos propios desde el modal de edicion.
Google Calendar
5
Nuevos scopes OAuth calendar.readonly y calendar.events dentro de la conexion Google.
Endpoint /api/calendar/google/import para importar eventos del calendario principal de Google.
Endpoint /api/calendar/google/freebusy para consultar disponibilidad del dia seleccionado.
Opcion para crear un evento tambien en Google Calendar al guardarlo desde GIA.
Los eventos importados de Google guardan source_id, enlace htmlLink y metadata de sincronizacion.
Eventos desde IA y chat
5
Input inteligente en /calendar que interpreta frases como "manana reunion con Alex a las 17:00".
Detector local de fecha, dia de la semana, hora, titulo y categoria probable antes de guardar.
Accion de mensaje "Anadir al calendario" en escritorio.
Accion movil "Crear evento" dentro del menu por presion larga de mensajes propios.
Apertura de /calendar?draft=... para transformar contenido del chat en borrador editable.
Comparador multi-modelo
5
Nuevo modo Comparar modelos dentro del composer de chat.
Selector de 2 a 4 modelos visibles respetando permisos y configuracion publica.
Nueva API /api/chat/compare para resolver modelos por configuracion segura y generar comparativas.
Insercion de mensaje de usuario y respuesta assistant con metadata de comparacion.
Soporte para proveedores OpenAI-compatible, Gemini-compatible, Anthropic y Ollama-style segun configuracion existente.
Version y navegacion
4
Header PC actualizado a la version 7.1.0.
Header movil actualizado a la version 7.1.0.
Acceso a Calendario desde el menu de foto de usuario en PC.
Acceso a Calendario desde el menu de tres puntos en movil.
Welcome editable, calendario inteligente y admin reorganizado
21 de abril de 2026
La version 7.0.0 convierte la pagina Welcome en una experiencia configurable desde admin, anade saludos especiales por festivos y ocasiones, soporta variables dinamicas y HTML seguro, y reorganiza el panel admin para que sea mas facil mantener la plataforma.
Lo destacado
7
✨ Nuevo7
Nueva tab Welcome en Admin para editar los textos permanentes de la pantalla de bienvenida por idioma.
Nueva tab Calendario en Admin para gestionar festivos, Sant Jordi y saludos especiales por pais, region o ciudad.
Soporte para variables dinamicas en Welcome: nombre, dia, hora, parte del dia, estado de actividad y rol admin/usuario.
Nueva variable {countdown} configurable desde Admin Welcome con fecha objetivo, estilos, colores y preview en vivo.
Las variables ahora se aplican en todos los textos del Welcome: saludo, frases animadas, input, disclaimer, accesos y sugerencias.
HTML y CSS inline seguro en los mensajes de Welcome, con sanitizado para bloquear scripts, eventos peligrosos y estilos inseguros.
Menu admin reorganizado por bloques Principal, IA, Datos y Experiencia para reducir el desorden operativo.
Cambios detallados33 · 6
Welcome configurable
6
Nueva API publica para cargar mensajes de bienvenida configurados desde app_settings sin exponer permisos admin.
Nueva API admin para leer, editar y restaurar los mensajes de Welcome por idioma.
Edicion de saludo principal, frases animadas, placeholder del input, disclaimer, accesos rapidos moviles y sugerencias guardadas.
Preview dentro del panel admin para validar rapidamente como quedaran los textos antes de guardar.
Panel Welcome ampliado hasta 1580px, con preview lateral, mapa de edicion y bloques mas legibles.
La pantalla Welcome conserva fallback local si la configuracion publica no esta disponible.
Variables dinamicas
8
Anadidas variables {name}, {weekday}, {time}, {partOfDay}, {activityStatus}, {isAdmin} y {countdown}.
{time} inserta la hora local actual del usuario.
{partOfDay} resuelve manana/tarde/noche segun la hora y el idioma activo.
{activityStatus} muestra el estado de actividad del usuario cuando esta disponible.
{isAdmin} permite diferenciar mensajes para usuarios admin o usuarios normales.
{countdown} inserta una cuenta atras viva que se actualiza cada segundo y puede usarse en cualquier campo del Welcome.
El placeholder del input resuelve variables como texto plano seguro para evitar etiquetas HTML dentro del campo.
Las frases animadas y el disclaimer renderizan las mismas variables que el saludo principal.
Countdown configurable
5
Nueva configuracion countdown por idioma dentro del JSON de Welcome, sin migracion adicional.
Admin permite activar/desactivar countdown, elegir fecha objetivo, texto de etiqueta y texto expirado.
Estilos disponibles: glass premium, azul suave, oscuro y minimal.
Personalizacion de tamano, redondeado, color de acento, fondo, texto y borde.
Render visual redisenado con capsula responsive, unidades separadas por dias/horas/minutos/segundos y mejor integracion dentro del titulo grande.
HTML seguro
4
Nuevo renderer SafeRichText reutilizable para renderizar contenido enriquecido sin ejecutar JavaScript.
Sanitizador propio para permitir HTML basico, emojis y estilos inline controlados.
Bloqueo explicito de script, style, iframe, object, embed, form, inputs, handlers on* y URLs javascript/vbscript.
Las frases animadas con HTML se muestran como frase completa para evitar romper etiquetas durante el typewriter.
Calendario inteligente
5
Nueva tabla calendar_occasions con fecha, recurrencia anual, categoria, pais, region, ciudad, prioridad, saludos por idioma y estado activo.
Endpoint publico /api/calendar/welcome para resolver el mejor saludo especial segun fecha, idioma y ubicacion.
Endpoint admin CRUD para crear, editar, activar, desactivar y borrar ocasiones especiales.
Sincronizador anual con Nager.Date y semillas locales para ocasiones como Sant Jordi.
La WelcomeScreen puede sustituir el saludo normal por mensajes especiales como Bon Sant Jordi cuando corresponde.
Admin y base de datos
5
Navegacion admin agrupada por Principal, IA, Datos y Experiencia tanto en sidebar como en menu movil.
Welcome y Calendario quedan dentro de Experiencia para separar configuracion visual de gestion operativa.
Nueva migracion 072_calendar_occasions.sql para calendario y saludos especiales.
Nueva migracion 073_welcome_messages_settings.sql para persistir la configuracion editable de Welcome.
Tipos TypeScript ampliados para calendar occasions y configuraciones de Welcome.
Carpetas como workspaces y herramientas por defecto
20 de abril de 2026
La version 6.9.0 convierte Carpetas en un workspace visual mas claro: nueva pantalla principal, modales premium, sidebar refinado y una tab Herramientas que permite activar herramientas por defecto para los chats nuevos creados dentro de cada carpeta.
Lo destacado
5
✨ Nuevo2
Nueva tab Herramientas en configuracion de carpeta para definir herramientas activas por defecto.
Los chats nuevos dentro de una carpeta heredan automaticamente herramientas como Web, Deep Research, Unidad de red, Imagen, Documentos, Excel, Code Interpreter e integraciones.
💎 Mejorado3
Pantalla de carpeta redisenada como workspace con cabecera premium, metricas de chats, documentos, memoria y knowledge.
Crear y configurar carpetas ahora usa modales mas limpios, responsive y consistentes con el diseno minimalista actual.
Sidebar PC y movil muestran carpetas con iconos consistentes, mejor jerarquia visual y acciones mas discretas.
Cambios detallados19 · 5
Workspace de carpetas
4
La vista de carpeta deja de ser una lista basica y pasa a funcionar como un workspace con identidad visual propia.
Cabecera con icono, nombre, descripcion, acciones limpias y metricas de chats, documentos, memoria y colecciones knowledge.
Estado vacio mejorado con llamada clara para crear el primer chat o preparar contexto.
Lista de chats de carpeta con icono, modelo usado, fecha, badges de fijado y compartido.
Herramientas por defecto
4
Nueva columna default_tools_json para guardar herramientas predeterminadas por carpeta.
Nueva tab Herramientas en el modal de configuracion de carpeta.
Soporte para activar por defecto Cerca web, Deep Research, Unidad de red, Generar imagen, Generar document, Excel/CSV, Code Interpreter, Base de datos, Google, Spotify y Microsoft 365.
ChatInput carga esas preferencias al abrir una carpeta sin chat activo y respeta permisos de modelo, rol y colaboracion.
Modales y creacion
4
Modal de crear carpeta redisenado con bottom sheet movil, preview de carpeta, selector de iconos y CTA principal mas claro.
Modal de configuracion reorganizado con navegacion lateral en PC y tabs horizontales en movil.
General, Prompt, Herramientas, Documentos, Knowledge y Memoria tienen jerarquia visual mas clara.
Documentos, knowledge y memoria mantienen sus acciones existentes con tarjetas y estados mas legibles.
Sidebar y header
4
Nuevo sistema compartido de iconos para carpetas que elimina emojis corruptos y mantiene consistencia visual.
Sidebar PC reduce ruido: acciones de carpeta aparecen al hover, drop state mas claro y boton de crear primer chat si esta vacia.
Sidebar movil muestra cada carpeta como workspace con icono, subtitulo y chevron.
Chip de carpeta activa en header actualizado a un estilo blanco minimalista con icono consistente.
Base de datos y estabilidad
3
Anadida migracion 071_folder_default_tools.sql para persistir herramientas por defecto en Supabase.
Tipos TypeScript actualizados con Folder.default_tools_json.
La version 6.8.0 refina la experiencia movil con menu de usuario mas completo, Spotify en reproduccion con progreso, modo voz adaptado a pantalla pequena, herramientas con logos oficiales y varios fixes de estabilidad que eliminan warnings y parpadeos visuales.
Lo destacado
5
✨ Nuevo3
Spotify muestra portada, artista, progreso y tiempo de reproduccion en el menu movil sin ocupar espacio cuando no hay musica sonando.
Menu de herramientas usa logos oficiales a color para Google, Spotify y Microsoft tanto en PC como en movil.
Correcciones de estabilidad: hydration warning mitigado, scroll button sin bucle de updates, sugerencias sin errores ruidosos y eliminado onSelectStart no soportado.
💎 Mejorado2
Menu movil de tres puntos con perfil de usuario, corona admin, estado activo, acceso a changelog/admin y Spotify solo cuando hay reproduccion activa.
Modo voz movil redisenado como card liquid glass con temporizador, avatar GIA, transcripcion centrada y botones grandes de silenciar/colgar.
Cambios detallados20 · 5
Header y menu movil
4
El menu de tres puntos movil incorpora bloque de perfil con avatar, email, estado online/typing/read/offline y badge admin con corona.
Se anaden accesos directos a Changelog y Panel Admin cuando el usuario tiene permisos.
La tarjeta Spotify se oculta si no hay reproduccion activa para mantener el menu limpio.
Cuando Spotify esta sonando, se muestra portada, cancion, artista, barra de progreso y tiempo actual / duracion.
Voz movil
5
Nueva interfaz movil para modo conversacion: card inferior liquid glass adaptada a safe area y barra de navegacion.
Temporizador visible arriba a la derecha y estado contextual TU, GIA, BUSCANDO, CONECTANDO o ESCUCHANDO.
Avatar GIA centrado con reaccion visual al audio y transcripcion grande centrada.
Botones tactiles de silenciar y colgar con estilo de llamada movil y haptics existentes conservados.
La version PC del modal de voz queda intacta.
Composer y herramientas
4
El menu de herramientas movil adopta la estructura compacta tipo ChatGPT usada en PC.
Google, Spotify y Microsoft usan logos SVG de marca a color en menus, chips activos y version movil.
El input movil elimina el borde azul nativo al enfocar y mantiene el estilo glass limpio.
El menu por presion larga de mensajes moviles ya no aplica fondo gris pesado sobre el chat.
Estabilidad
5
RootLayout usa suppressHydrationWarning para evitar ruido por atributos inyectados por extensiones o el cliente.
El boton de bajar al final del chat evita setState repetidos y corrige el error Maximum update depth exceeded.
Follow-up suggestions deja de lanzar errores de consola cuando la API devuelve error o no hay sugerencias.
El hook useLongPress elimina onSelectStart porque React lo ignora y generaba warning en consola.
Se mantiene typecheck y build de produccion pasando con Next.js 16.1.6.
Documentacion
2
Anadido documento de analisis completo del proyecto en Markdown y DOCX para auditar capacidades, arquitectura y modulos.
Incluido script local para regenerar el DOCX del analisis del proyecto.
La experiencia de escritorio gana una capa visual mas cuidada: sidebar con profundidad sutil, renombrado de chats integrado, menu de herramientas estilo ChatGPT y header actualizado a la version 6.7.0. Tambien se limpian indicadores redundantes sobre el input y se corrige la apertura del selector de modelo movil.
Lo destacado
5
✨ Nuevo4
Renombrar chat en el sidebar PC pasa a una capsula integrada con guardar/cancelar y sin borde azul nativo.
Sidebar de escritorio refinado con fondo degradado suave, panel superior flotante, busqueda elevada y estados activos mas claros.
Menu de herramientas PC reorganizado en formato compacto tipo ChatGPT con acciones principales y subpanel Mas.
El header de PC muestra la version 6.7.0 y el selector de modelo movil se abre arriba sin tapar el input.
💎 Mejorado1
Menu contextual de chats PC con posicion fija, blur, sombras limpias y mejor comportamiento al hacer scroll o redimensionar.
Cambios detallados12 · 3
Sidebar PC
5
Nuevo tratamiento visual con gradiente suave, bordes finos, sombras controladas y botones activos con ring discreto.
Renombrado de chats convertido en formulario inline premium con icono, seleccion automatica del texto, boton de confirmar y boton de cancelar.
Filas de conversacion con hover mas suave, active state blanco elevado y mejor separacion entre grupos.
Carpetas, secciones y sidebar colapsado ajustados para mantener una jerarquia visual consistente.
Menu de tres puntos renderizado con posicion fija para evitar cortes dentro del scroll del sidebar.
Composer y herramientas
4
Menu de herramientas de escritorio redisenado en una lista compacta con acciones prioritarias: adjuntar, generar imagen, Deep Research y busqueda web.
Submenu Mas para integraciones y herramientas avanzadas sin saturar el primer nivel.
Picker de knowledge dentro del menu PC con seleccion clara, estado de carga y opcion de limpiar colecciones.
Eliminado el indicador redundante de estado de IA encima del input para reducir ruido visual.
Header y movil
3
Header PC actualizado para mostrar version 6.7.0 en el enlace de changelog.
Selector de modelo movil reforzado con z-index y pointer-events correctos para abrirse encima del contenido y no sobre el input.
El panel movil de modelos queda anclado debajo del header y con scrim funcional.
La interfaz de escritorio adopta una direccion mas limpia tipo ChatGPT: header flotante sin ruido, input mas equilibrado, sidebar plano y menus contextuales coherentes. En movil se ajusta el header, el selector de modelo y el welcome para evitar solapes y mejorar la navegacion.
Lo destacado
5
✨ Nuevo4
Input de escritorio refinado con botones sin brillos, tooltips personalizados y chip de herramientas activas con cierre rapido.
Header de PC simplificado con acciones flotantes y version visible de nuevo, moviendo notificaciones/sonido a ajustes.
Header movil con selector de modelo compacto, acciones alineadas a la derecha y panel de modelos anclado arriba para no tapar el input.
Welcome movil ajustado para bajar contenido y evitar solapes con el header liquid glass.
💎 Mejorado1
Sidebar de PC redisenado completo con fondo plano, filas limpias, grupos sin emojis y menus contextuales solidos.
Cambios detallados16 · 4
Interfaz PC
4
Rediseno minimalista de escritorio guardando copia del estilo anterior en style-backups/legacy-pc-style-v6.5.0.
Header de escritorio sin barra pesada: controles flotantes, version visible y menos elementos permanentes.
Composer PC reorganizado con altura estable, transiciones mas suaves y estados activos menos agresivos.
Botones de voz, microfono y envio sin brillos/glows ni sombras circulares innecesarias.
Sidebar PC
5
Fondo plano #f7f7f8, borde derecho fino y eliminacion de glass, blur, gradientes y sombras pesadas.
Controles superiores simplificados: nuevo chat, busqueda, imagenes, canales, proyectos, apps y nueva carpeta en lista clara.
Filas de conversacion planas con active state gris, hover suave, shared badge discreto y menu de tres puntos solo en hover.
Grupos de chats sin emojis, contadores discretos y secciones Carpetas/Chats con jerarquia mas sobria.
Sidebar colapsado rehecho con ancho 60px, botones centrados, active gris y resize handle casi invisible.
Input y tooltips
3
Tooltips nativos del navegador reemplazados por tooltips personalizados en acciones principales del composer.
El chip de herramientas activas muestra una X al pasar el raton para desactivar todas las herramientas de una vez.
El estado de herramienta activa evita fondos pesados y mantiene una estetica mas limpia dentro del input.
Movil
4
Header movil cambia la capsula central a selector de modelo compacto.
Botones de nuevo chat y mas opciones quedan agrupados a la derecha.
El panel de modelos movil se abre arriba, debajo del header, evitando tapar el input inferior.
Welcome movil baja su contenido para no quedar pegado ni tapado por el header flotante.
Generacion de imagenes con ventana viva en el chat
13 de abril de 2026
La generacion de imagenes pasa a sentirse integrada en la conversacion: aparece una card inline tipo ChatGPT mientras se crea la imagen, muestra progreso visual y se transforma en resultado final con acciones rapidas.
Lo destacado
4
✨ Nuevo2
El backend emite un evento interno cuando la imagen queda lista o falla para actualizar la card sin mostrar texto tecnico en el chat.
Chats compartidos muestran una card de generacion cuando otro participante lanza una imagen, en lugar de un placeholder generico.
💎 Mejorado2
Nueva card inline de generacion de imagenes con estado vivo, fases visuales, barra de progreso y preview placeholder.
El resultado final de imagen usa la misma experiencia visual con acciones para abrir, descargar, copiar y crear una variante.
Cambios detallados9 · 3
Imagenes en chat
4
Nuevo componente ImageGenerationCard reutilizable para estados running, ready y error.
Estado efimero imageGenerationRun en el store UI para controlar la ventana viva de generacion sin ensuciar mensajes persistidos.
La respuesta visible limpia los eventos image_generation_event para que no aparezcan como texto Markdown.
La card final conserva prompt, modelo y acciones rapidas sobre la imagen generada.
Backend y streaming
3
El flujo /api/chat emite image_generation_event con status ready/error, image_url, prompt y modelo.
Se mantiene la persistencia actual en Supabase Storage y meta_json.image_url / meta_json.image_prompt.
La experiencia es compatible con gpt-image-1.5 sin depender de partial images no garantizadas por el modelo actual.
Chats compartidos
2
Los placeholders live de generacion de imagen se renderizan como card visual para el otro usuario.
La card evita duplicar el bloque generico de pensando mientras la imagen se esta generando.
Estabilidad visual movil y cierre fiable del streaming
13 de abril de 2026
La version movil del chat corrige los parpadeos mas visibles al finalizar respuestas de IA, mejora el handoff entre streaming y mensaje persistido, y reduce saltos de scroll y overflow en pantallas pequenas.
Lo destacado
6
✨ Nuevo4
La respuesta de la IA ya no desaparece unos segundos al terminar el streaming si Supabase tarda en devolver el mensaje final.
Fallback local optimista para respuestas finales, reemplazado automaticamente por el mensaje persistido cuando llega desde la base de datos.
Welcome movil recuperada para entrar o crear un chat sin generar conversaciones vacias antes del primer mensaje.
Header movil liquid glass ya no tapa el welcome ni el primer mensaje: el contenido baja segun la altura real del header.
💎 Mejorado1
Chats compartidos sincronizan mejor el evento assistant-done para que el receptor cambie antes de la tarjeta live al mensaje real.
🐛 Arreglado1
Composer movil con posicion inferior mas robusta y tablas Markdown mas seguras en pantallas estrechas.
Cambios detallados13 · 3
Chat movil
7
Handoff visual mas estable entre streamingContent y el mensaje final de assistant.
Autoscroll movil menos agresivo durante chunks de streaming para evitar saltos acumulados.
Correccion del calc() del composer inferior para respetar nav movil y safe area en navegadores moviles.
Tablas Markdown con ancho minimo reducido en movil para prevenir overflow horizontal excesivo.
Nuevo chat en movil vuelve a mostrar WelcomeScreen y crea la conversacion solo al enviar el primer mensaje.
WelcomeScreen adaptada a movil con espaciado dinamico del composer/nav y layout mas compacto.
Padding superior dinamico conectado al header movil para evitar solapes en welcome y conversaciones recien abiertas.
Streaming y persistencia
3
Respuesta assistant optimista local cuando el stream termina antes de que el mensaje persistido llegue al store.
Merge del store mejorado con optimistic_client_stream_id y shared_stream_id para retirar el fallback sin duplicados.
Limpieza mas robusta de marcadores internos del stream como TITLE_UPDATED y eventos de research en el contenido visible.
Chats compartidos
3
Sincronizacion silenciosa inmediata al recibir assistant-done por realtime.
Filtro live ajustado para no ocultar mensajes assistant persistidos durante el cierre del stream local.
Follow-ups calculados sobre mensajes combinados para convivir mejor con mensajes live y optimistas.
Colaboracion avanzada en chats compartidos y cabecera movil simplificada
08 de abril de 2026
Los chats compartidos pasan a una capa colaborativa mucho mas completa, con settings por conversacion, presencia y trabajo compartido sobre mensajes, mientras la experiencia movil se limpia con una cabecera iOS-like y un flujo de inicio mas estable.
Lo destacado
4
✨ Nuevo2
Chats compartidos con reglas por conversacion: memoria, solo lectura, tools permitidas, comments, assignments y links vivos.
Modal de compartir ampliado con gestion real de links, revocacion, caducidad y opciones de colaboracion.
💎 Mejorado2
Base nueva para presencia, cola visual de prompts, live runs y estados colaborativos de IA mucho mas gobernables.
Header movil rediseñado con estructura mas limpia: menu lateral, capsula central del chat y acciones compactas.
Cambios detallados10 · 3
Chats compartidos
4
Nuevos tipos y endpoints para collaboration, presence, read receipts, comments y assignments sobre conversaciones compartidas.
Links de acceso en vivo con mas control operativo, incluyendo revocacion, expiracion y metadatos adicionales.
Ampliacion del control de acceso y de las reglas de colaboracion por conversacion para evitar usos incoherentes.
Mejor base para ownership visual de prompts, estados de ejecucion y coordinacion entre participantes.
Interfaz colaborativa
3
ConversationCollaboratorsModal ampliado para gestionar personas, links y reglas del chat desde un mismo flujo.
MessageBubble y ChatArea preparados para capas colaborativas como comments, assignments y estados live.
ChatInput y WelcomeScreen ajustados para convivir con el nuevo modelo compartido sin romper el flujo inicial.
Movil
3
Cabecera movil rehacida en un patron mucho mas limpio y cercano a iOS: menu circular, titulo en capsula y acciones compactas.
Mejor integracion visual de chats compartidos dentro del header mostrando el avatar del propietario cuando aplica.
Composer movil y textos de soporte refinados para acompasar el nuevo header sin ruido extra.
Chats compartidos en vivo y colaboracion mucho mas rapida
08 de abril de 2026
Se incorpora colaboracion en tiempo real estilo ChatGPT para chats propios, con invites y enlaces vivos, typing y streaming de IA compartidos, y una base movil mas refinada para trabajar en equipo.
Lo destacado
4
✨ Nuevo3
Chats propios compartidos en tiempo real con participantes, roles y enlace de acceso vivo.
Mensajes, typing y respuestas de la IA mucho mas rapidos para el otro usuario, con placeholder live y streaming persistido.
Sidebar compartido con avatar del propietario y badge SHARE tanto para owner como para invitado.
💎 Mejorado1
Mejoras fuertes de UX movil: menus contextuales iOS-like, quote por gesto, haptics best-effort y composer mas limpio.
Cambios detallados12 · 3
Chats compartidos
4
Invitacion por usuario con roles owner, editor y viewer sobre conversaciones normales.
Enlace autenticado de acceso en vivo para entrar al mismo chat compartido.
Typing en tiempo real, mensajes remotos optimistas y streaming de IA visible para todos los participantes.
Persistencia del estado live en messages para no depender solo del broadcast efimero.
Realtime y experiencia de chat
4
Placeholder assistant persistido antes del stream para que el otro usuario vea antes el estado de respuesta.
Polling silencioso y resincronizacion corta para cerrar huecos de Supabase Realtime.
Aislamiento de identidad en chats compartidos para no mezclar memoria ni nombres entre participantes.
Avatar y nombre del autor humano visibles en burbujas y elementos colaborativos.
Movil
4
Long press premium en sidebar y mensajes con menus contextuales tipo iOS.
Swipe suave para citar mensajes y preview de reply antes de enviar.
Composer movil simplificado con acceso rapido por + y mejor gestion de adjuntos.
Buscador movil, estados vacios y feedback visual tactil mucho mas pulidos.
Bloqueo temporal de usuarios, modelos más sólidos y canales móviles refinados
01 de abril de 2026
Se corrigen fallos reales en canales, se habilita el bloqueo temporal con página dedicada, se arregla la visibilidad de modelos y se mejora la experiencia móvil en admin, settings y canales.
Lo destacado
4
✨ Nuevo2
Bloqueo temporal de usuarios con enforcement global y página bloqueado de estilo premium.
Botón ocultar modelos reparado con PATCH parcial real y modal de modelos más sólido en móvil.
💎 Mejorado2
Canales más estables: el mensaje ya no desaparece tras enviar y el perfil del usuario vuelve a resolverse correctamente.
Acceso al panel admin desde settings móvil y más optimización general en canales para pantallas pequeñas.
Cambios detallados9 · 3
Seguridad y acceso
3
Bloqueo temporal o indefinido por usuario desde admin.
Middleware global que redirige al usuario bloqueado a una página dedicada.
Página /blocked con tiempo restante, fecha de fin y motivo del bloqueo.
Canales
3
El envío ya no se pierde por reinicios de estado al resolver el usuario actual.
El backend devuelve el mensaje insertado incluso si fallan tareas no críticas después del insert.
Optimizaciones móviles: header sticky, input con safe area, hoja de perfil más natural y toolbar hover oculta en móvil.
Admin y modelos
3
Ocultar/mostrar modelos corregido con PATCH parcial real.
Modal de modelos en móvil con scroll bloqueado detrás del overlay.
Nueva entrada Admin dentro del settings modal para acceder al panel desde móvil.
Deep Research visual con Playwright y viewport persistente
30 de marzo de 2026
Deep Research incorpora navegacion visual real con Playwright, viewport incrustado en el chat, historial persistente por conversacion y una experiencia de investigacion mucho mas trazable.
Lo destacado
4
✨ Nuevo3
Live Viewport incrustado en el chat y ventana flotante con capturas en tiempo real.
Playwright con navegacion interna, clicks reales, scroll mas util y aceptacion de banners de cookies.
Persistencia del historial de investigacion al cambiar de chat y volver.
💎 Mejorado1
Mejoras de query focus, fallback visual y bloqueo de frames inutiles como CAPTCHA de Google.
Cambios detallados9 · 3
Deep Research
3
Viewport en vivo dentro del chat con miniaturas, breadcrumb y modo seguir en vivo.
Ventana flotante sincronizada con el mismo historial de investigacion.
Historial rehidratado por conversacion para no perder capturas ni eventos al navegar entre chats.
Playwright y navegacion visual
3
Browser pass determinista con scroll, extraccion, clicks internos y recorrido de paginas relevantes.
Aceptacion automatica de banners de cookies en motores y webs visitadas.
Fallback visual cuando Google bloquea, evitando mostrar capturas inutiles como frame principal.
Calidad de respuesta
3
Consultas de investigacion con query foco para reducir busquedas absurdas.
Priorizacion mas clara de fuentes deportivas y paginas de resultados cuando la consulta lo requiere.
Eventos en vivo y evidencia visual mas consistente para auditar cada paso de la investigacion.