TodoNuevoMejoradoCorregido
Corregido

Acceso cross-origin restringido en la API

Hemos restringido el acceso cross-origin para que solo foura.ai pueda llamar a la API con credenciales. También hemos reforzado un filtro de entrada en el endpoint de métricas y eliminado un secreto de respaldo exclusivo para desarrollo. Las integraciones existentes no cambian.

Corregido

Las reglas de validación personalizadas cuentan como éxito

Si has configurado validate.status.accept en un request, el motor trata un no 200 aceptado como un éxito limpio. Activity seguía etiquetando estos casos como fallos, lo que descuadraba tus estadísticas de uso. Ahora los resultados siguen tu veredicto de validación, por lo que un 403 aceptado aparece como éxito, no como App Fail.

Mejorado

Las etiquetas de Actividad coinciden con el Resumen

Actividad solía mostrar cadenas de resultado sin procesar como Application_fail, mientras que Resumen utilizaba etiquetas descriptivas (App Fail) con los colores correctos. Actividad ahora utiliza las mismas etiquetas y colores, por lo que ambas vistas se leen igual.

Corregido

Las páginas no UTF-8 ahora se decodifican correctamente

Si estaba haciendo scraping de páginas en cirílico, chino, japonés u otras páginas no UTF-8 a través de Single, el cuerpo solía devolverse como mojibake. Forzábamos la decodificación de cada respuesta como UTF-8 antes de que pudiera ver los bytes sin procesar. Ahora leemos el charset de la respuesta (Content-Type, luego <meta charset>, y fallback de UTF-8) y lo decodificamos correctamente. Gracias a Alexandar Kanchev (Sensika) por reportar esto.

Corregido

Detectamos proxies falsos que hacen eco de tu request

Algunos proxies en la red en realidad no reenvían tu request. Lo devuelven como un eco en forma de volcado de servidor en texto plano e intentan extraer lo que hay dentro. Ahora detectamos ese patrón antes de que la response llegue a tu código, por lo que Single, Browser y Proxy Finder devuelven un fallo honesto (o un reintento) en lugar de basura.

Nuevo

Reproduce cualquier fila de Activity en el Playground

Ahora se puede hacer clic en cada fila de Activity con un payload almacenado: el diálogo muestra el request y la response completos (formateados, con botones para copiar y mensajes claros para los requests que fallaron antes de generar un cuerpo). Haz clic en 'Open in Playground' para volver a cargar esa llamada exacta en el formulario con su response archivada ya renderizada, de modo que puedas ajustar los parámetros y volver a ejecutarla sin tener que reconstruirla. Los payloads almacenados se conservan durante 24 horas, limitados a los últimos 200 por key.

Mejorado

Cada response de la API incluye un request ID

Las llamadas autenticadas ahora devuelven un header X-Foura-Request-Id. Almacénalo en tus propios logs y podrás asociar cualquier request con su fila en Activity, o dárselo a soporte para que podamos verificar exactamente qué ocurrió de nuestro lado.

Mejorado

Cancelar requests en curso del playground

Presiona el nuevo botón Cancelar mientras se carga un request del playground y lo abortamos de forma limpia. El panel regresa al estado inactivo con una nota de 'Request cancelado' en lugar de un error de red alarmante.

Nuevo

Revelar claves de API después de su creación

Las claves creadas a partir de hoy se pueden revelar en cualquier momento, tanto en la página de API Keys como dentro del reproductor de curl del playground. Haga clic en el ojo, confirme y la clave completa se mostrará durante 15 segundos antes de ocultarse automáticamente (cada revelación queda registrada en el log de auditoría). Las claves anteriores siguen siendo de visualización única; regenere cualquier clave antigua para que se pueda revelar.

Mejorado

Proxy Finder verifica el pool más rápido

La cola de verificación ahora se vacía en días en lugar de semanas. Redujimos el tiempo para seleccionar cada proxy a probar de aproximadamente 2 segundos a unos 10 ms, por lo que el pool se mantiene más fresco bajo carga. Menos IPs muertas en rotación, y cada llamada a Single y Proxy Finder funciona con un conjunto más saludable.

Mejorado

El pool de proxies se actualiza más rápido

Tras eliminar el límite por ejecución de ayer, la actualización seguía atascándose cada vez que un gran bloque de proxies se apoderaba de la cola. Ahora distribuimos cada lote entre subredes distintas, de modo que cada ejecución utiliza el presupuesto total de concurrencia. El pool de Proxy Finder se renueva de 5 a 10 veces más rápido y las entradas obsoletas se eliminan en cuestión de horas.

Corregido

Los proxies recién descubiertos llegan más rápido al pool

Corregimos una ralentización que hacía esperar a los proxies recién descubiertos antes de ser validados. Proxy Finder ahora los verifica de inmediato, por lo que el pool se mantiene más actualizado con más proxies activos y operativos en rotación.

Mejorado

Playground ahora funciona en móviles

Por debajo de 768px, la fila de la URL se divide en dos filas, las pestañas de response se desplazan horizontalmente y la tabla de cookies se convierte en una cuadrícula de tarjetas. Los tooltips de ayuda se abren al hacer tap en lugar de hover; el iPhone SE (por debajo de 374px) obtiene una reducción de tamaño adicional. El botón Send se centra correctamente y una URL larga ya no desplaza la página horizontalmente.

Mejorado

La expansión del playground ahora es una superposición a pantalla completa

Antes, la función de expandir estiraba la tarjeta de respuesta dentro del flujo de la página, por lo que los paneles altos añadían desplazamiento al body y alteraban el diseño. Ahora es una superposición fija entre la barra lateral y el borde del viewport, con paneles que crecen para llenar el viewport. Escape la cierra; un helper gestiona las rutas de clics y teclas.

Corregido

Las cookies de Playground siguen las reglas host-only de la RFC 6265

Las cookies host-only se estaban filtrando a los subdominios. Ahora rastreamos el atributo Domain correctamente y añadimos una etiqueta HO en la vista Parsed para el caso (poco común) de host-only. La vista Raw coincide con lo que envió el upstream: Domain=.example.com para las cookies de dominio, sin línea Domain= para host-only.