Hacer sonar el premio de la Ruleta Bits en OBS
El overlay reanuda el audio antes de reproducir el sonido al revelar el ganador.
Notas de versión
Mantente al día con los cambios pensados para hacer que la integración y el uso de nuestras APIs sea más claro, rápido y estable.
El overlay reanuda el audio antes de reproducir el sonido al revelar el ganador.
La ruleta queda en /dashboard/bits/roulette. En el overlay se elige el sonido, el estilo de la tarjeta y cuántos segundos se queda el ganador.
Cada login fuerza el consentimiento de Twitch con los scopes actuales. El aviso y la notificacion se ocultan si el permiso ya esta concedido.
CTA reutilizable en la sección y en notificaciones; mensaje de error más claro cuando falta el permiso de bits.
Inicio, analíticas y reportes quedan fijos. El resto se abre y cierra y recuerda lo que dejaste. El aviso de rotar la API key pasa a un estilo más discreto.
Premios y umbral van en la URL del overlay. En el panel activas la escucha, pruebas en OBS y eliges si el canal escribe el premio al terminar. La ruleta entra y sale con pop, y el expandir del sidebar queda bajo el logo.
Al estilo Netlify, al encoger el menú el brand se mantiene visible y el control para volver a abrir pasa junto a la cuenta.
El panel avisa cuando /health falla. Actualizar permisos abre un sheet claro y solo fuerza re-consent en ese flujo. En Seguridad ves último uso de bots y un aviso a los 90 días sin regenerar.
Si el overlay deja de recibir datos, puedes reintentar el poll; si el token caducó, avisa regenerar el enlace. Se elimina el fallback plaintext de API keys. Iconos de Docs/Discord sin cajita.
La API key ya no abre sesión del dashboard; regenerar/exportar/revelar clave y Discord requieren cookie. El overlay OBS usa solo overlayToken (7 días) y hace menos polling en idle.
Migra a openai/gpt-oss-120b tras el retiro de llama-3.3; iconos de Duelo/Preguntas más legibles, Ruleta Rusa de prueba más compacta y reels de Slots sin fondo tan negro.
Las variables del mensaje se insertan al clic; Reportes deja de refrescarse solo; el usuario del sidebar es franja con chevron; tooltips más legibles y el título del selector ya no abre el menú.
El sheet explica Reportes con preguntas claras (sin “vs” ni “foto”) y el indicador deja de quedar en Inicio al abrir Ajustes, sin parpadeo al colapsar.
Sin iconos con fondo ni botón Entendido; Requiere StreamElements usa el mismo estilo secondary.
Lista simple con divisores e iconos redondeados como los botones; se mantiene el sheet lateral.
Sale del sheet lateral; las tarjetas e iconos usan el mismo redondeo que los botones.
Aclara que no es Analíticas en vivo y que reiniciar datos no borra los informes.
Los reportes son archivo del mes cerrado y se conservan; solo se eliminan con la cuenta.
La pastilla se oculta durante el pliegue/despliegue y usa el mismo redondeo que los botones.
Vuelve la pastilla ancha con tinte primary; solo se mueve al cambiar de sección.
El desplegable HTML/CSV ya no incluye la flecha. La pastilla del menú lateral es compacta y sin tinte primary.
La pastilla activa recorre el sidebar (abierto, plegado y móvil) en vez de saltar de un ítem a otro.
En Reportes y Ajustes el formato se elige en la franja del lado y el botón grande descarga.
Ajustes, Twitch, docs, Discord, apoyar y cerrar sesión alineados con el resto de la nav.
Sin colores rojo/ámbar hardcodeados; alineados con Copiar y Cerrar sesiones.
Badge EN VIVO traducido, filtros de tipo alineados y empty sin duplicar el onboarding.
Copy de exportación aclarado para no confundirlo con el informe mensual.
Con notificaciones leídas muestra «Notificaciones», no «Sin notificaciones».
Reset en ámbar, eliminar en rojo, y fechas desconocidas con i18n.
Carga de charts más clara y estados vacíos alineados al marco del historial.
El panel muestra un borrador tipo informe mientras carga, también en el skeleton de sesión.
Carta archivada con descarga; copy y UI distintos del panel en vivo.
El historial mantiene el marco vacío y anima el cambio de sección; las barras del skeleton de Actividad Hoy quedan centradas.
Resumen del mes anterior con descarga CSV/HTML; se genera al abrir el panel.
El bot se elige en cada comando; el default global en Ajustes ya no hace falta.
Elige tu bot por defecto en Preferencias (solo comandos nuevos). Si la prueba falla por auth o cuota, el panel enlaza a la doc.
Los placeholders de carga imitan Home, Ajustes, comandos, tools y Clips. ErrorBoundary y overlays usan textos i18n.
Si no hay actividad, Home guía al primer comando. Si el panel no carga, puedes reintentar sin recargar toda la página.
Puedes enviar feedback sin identidad, cerrar todas las sesiones desde Zona de peligro, y en Datos el export elige HTML/CSV en un solo control.
Quita el UUID duplicado bajo la API key y completa la descripción vacía de Plan y cuota.
El UUID interno se adjunta al feedback, se muestra en el registro de seguridad y queda etiquetado junto a la API key como referencia de cuenta.
Cada cuenta tiene un UUID estable distinto del de Twitch, visible y copiable en General, listo para soporte sin exponer el Helix id.
Las preferencias de privacidad (actividad / API key) salen al exportar, y la fila de Datos vuelve a verse limpia.
El panel deja de listar atajos fijos largos y muestra el top 3 según el uso de tu cuenta, para que Inicio no haga scroll.
El top de usuarios y el gráfico respetan el rango de 30 días; la landing lee el idioma guardado y deja de hardcodear CTAs/nav/recursos.
Exportación y borrado con scopes (actividad aparte), rango 30 días en analytics, avisos al copiar la API key, docs de sesión/panel, landing i18n y arranque de sesión más resistente. Jest sin forceExit.
Guarda respuesta, latencia e idioma en los eventos, muestra el resumen sin tarjetas duplicadas y copia event.json sin revelar secretos.
El menú se abre desde el footer del sidebar (arriba o a la derecha según estado), sin portal flotante. Toggle del rail con chevrons y items de cuenta solo con texto.
Fondo con blur para que no se mezcle al scroll; la espada apunta como en Twitch.
Focus mode con Escape, cuenta en el footer, menús bien encima del overlay e historial de Preguntas.
Menos scroll, barras delgadas, toggle Hoy↔7d con animación y empty states con subtítulo.
source=roulette en /send-message; si Discord cae el feedback responde 503; se quita message del export.
El botón de feedback pasa al header; Discord se deshabilita si no está vinculado. También limpia sheets/modales, menú de cuenta, logs de auditoría y el badge de confirmación.
Unifica el shell y los diálogos del panel con botón primario a la izquierda y sin iconos decorativos.
El modal usa el mismo shell que el resto, el FAB queda outline morado y se elimina /dashboard/feedback del menú y rutas.
El botón y el modal usan los colores del tema y textos en es/en/pt; queda un poco más arriba para no tapar el footer.
Las notificaciones van en el header; la cuenta abajo a la izquierda con Feedback, Docs y Comunidad en el menú. Landing: lazy-load del logo del chat.
Banner dismissible en Inicio y Clips: cierra sesión y vuelve a entrar para desbloquear el permiso nuevo.
Los modales entran y salen alineados con el resto del panel. El tema anima el cambio y el sidebar deja el soporte abajo.
El rol y la fecha de primer ingreso se conservan. En Seguridad ves logins y acciones; en Datos puedes bajar analytics en CSV.
Usa la API oficial de Twitch. Hay que volver a iniciar sesión para conceder el permiso nuevo.
Muestra la pregunta actual y la cola en escena. Color y escala van en la URL copiada, sin peticiones extra a Vercel.
- Ahora, si la URL del overlay tiene una api_key, OBS consulta directamente a api.henrikdev.xyz saltándose el servidor Vercel. - Esto reduce dramáticamente la carga del servidor, latencia y uso de caché. - Si no hay api_key, sigue usando el servidor Vercel como proxy protector.
- Añadido efecto PokemonStatEffect para simular caída de estadísticas - Mejorado el timing del contador de números - Añadida animación popIn para textos de victoria/derrota - Fijado el ancho del panel derecho del widget para evitar saltos en la interfaz - Limpieza de CSS sin usar y corrección de tipos en utilidades
Gráfico de tráfico a ancho completo, listas Nightbot, estados vacíos, Geist self-hosted y CTA Empezar/Panel estable antes del paint.
La landing muestra la descripción pública de Twitch saneada (sin URLs/invites, truncada) con fallback si queda vacía.
Muestra streamers activos pioneros (sin bios Twitch), enlaces a docs/Discord, legal alineado con cookie de sesión y métricas Vercel, y página 404 renovada.
El panel ya no te desloguea si falla el refresh del token (~4h); renueva antes de vencer y no reutiliza tokens vencidos.
Hero, simulador de chat, FAQ y Discord en el header. La carga del panel usa una barra continua, sin halo.
Persiste preguntas en Supabase, permite reiniciar stats e historial por separado, respeta plan/cuota de la DB al iniciar sesión, corrige el toast de logout y estabiliza dropdowns/settings. Incluye partición de módulos grandes (auth, commands, system, UI).
Restaura /dashboard/(.*) → index.html; :path* no atrapaba nested paths con trailingSlash.
El select nativo pintaba opciones casi negras sobre fondo oscuro; vuelve el menú custom con contraste del tema.
Supabase apply_rls castea auth.uid() a uuid; el id de Twitch ya no va en sub.
Tambor atómico, límites Nightbot, plantillas con replaceAll y rate limit tras autenticar sin mensajes 500 filtrados.
Publicación overlay latest-wins, TMI más robusto, keywords exactos, lang en pruebas y retries solo en métodos seguros.
KPIs desde stats diarias, timezones IANA válidas, leaderboard agregado y exportación sin filtrar la API key.
OAuth state obligatorio, revocación de sesión más fiable y API keys hasheadas en almacenamiento.
Minijuego Slots y herramienta Preguntas (sustituye Sorteos); hardenings (OAuth sin apiKey, SSRF Nightbot, XSS actividad, rate limit feedback); analíticas con colores por tema; footer alineado con la franja del sidebar; reorg FE/BE minigames/tools y caché L1 más segura.
- SidebarForm: las dos tarjetas separadas ahora son una sola con secciones - Personalización oculta bajo un acordeón para no abrumar al usuario - Botón de descarga movido de vuelta al panel derecho debajo del QR - QRPreview: el canvas ocupa todo el ancho del panel en la parte superior - Diseño más limpio y organizado visualmente
- Implementado hook useQRPreview para renderizar el QR en tiempo real en el cliente sin consumir el servidor - Separada la lógica de preview (cliente) y descarga en alta resolución (servidor/rate limit) - Añadidos contadores de caracteres y vista previa de logo en el formulario - Solucionado problema de concurrencia en Redis (pipeline atómico INCR+TTL) para evitar rate limits huérfanos - Añadidos
- Implementación del componente Sheet para vistas detalladas (Historial de Actividad, Overlay). - Actualización de estilos globales en modales (bordes redondeados, sombras mejoradas). - Nuevas animaciones de carga (pulse) para los Skeletons. - Rediseño de tarjetas en la sección de Ajustes y Zona de Peligro. - Unificación del layout y espaciado del Dashboard para mejor integración del menú lateral.
Separa ajustes, API Key/zona de peligro y Discord con URLs propias (/dashboard/settings/...). Actualiza la documentacion del panel.
Quita el bloqueo que exigia API key del mismo canal y deja probar cualquier follower.
Acorta el poll de seguridad del realtime, sincroniza actividad entre pestanas y evita borrar contadores por fecha obsoleta.
Cada rol escala req/min, endpoints pesados (clips/chatters) y frescura/retención de caché; docs y panel alineados.
En Vercel el void tras la respuesta se cortaba y el bot no recibía login/logout.
El foco va al panel en vez del CTA, igual que se evito con la X.
Si tienes Discord vinculado, el bot te avisa por DM (y log en el server) al login/logout.
Twitch a veces devuelve data vacía con total alto aunque el token tenga scope; el probe confirma si realmente podemos listar followers.
Tras OAuth se limpia validKeysCache; el L1 guarda el accessToken renovado; validateToken 401 fuerza refresh.
Si Twitch devuelve data vacia, valida moderator:read:followers y pide volver a entrar. OAuth usa force_verify.
Twitch devuelve data vacia con total>0 sin scope/mod; ahora se informa claro y se renueva el token en 401. Los comandos ya creados en Nightbot/SE no cambian.
El login Twitch ya no borra el vínculo Discord, y la prueba de followage acepta tu canal o uno donde seas moderador.
Evita consultas a canales ajenos y corrige la prueba del panel cuando los campos van al revés.
La prueba ya no muestra éxito sin texto, y el overlay solo pide copiar la URL sin la cajita enmascarada.
El toaster usa top layer (popover) para que no quede tapado por dialog showModal.
Actualiza el invite de la comunidad a https://discord.gg/PJbExZe7Tp.
Actualiza el invite de la comunidad a https://discord.gg/PJbExZe7Tp en panel, landing, legal y docs.
Puedes enviar feedback anónimo, como Twitch, o como Discord si está vinculado. El modal ya no enfoca la X al abrirse.
El aviso lista /cuenta /limite /status /ayuda y sugiere ticket para ayuda personalizada. Al abrir, el foco va a Entendido en lugar de la X.
Reiniciar estadisticas y eliminar cuenta quedan en la misma tarjeta, separados por un divisor.
Misma estructura: texto claro, checklist con iconos y CTAs mas claros en vincular, desvincular, resultado y regenerar key.
invalidateUserCache revocaba la cookie lp_sess por defecto; Discord link/unlink lo disparaba y user-info devolvia 401. Ahora no revoca y limpia el flag auth:revoke si quedo activo.
Al vincular o desvincular Discord solo se invalida el perfil/usuario. Antes se vaciaba Helix, overlay y stats, y eso podia tumbar el panel.
Los seguidores y el estado en directo son datos secundarios: si Twitch falla (por ejemplo, si al token le falta el permiso para leer seguidores) el perfil sigue cargando y muestra un guion en vez de romperse con error 401. Antes, al desvincular Discord se invalidaba la cache y el panel quedaba en bucle de error.
Rellena el vacio del primer viewport con 3 pasos cortos y un hint para scrollear al flujo.
La sesión del panel ahora usa cookies HttpOnly en lugar de guardar secretos en el navegador. Si tenías sesión antigua, tendrás que volver a conectar tu cuenta de Twitch una vez.
Alinea variables con Fossabot, StreamElements y Wizebot, y añade soporte para Streamlabs Cloudbot en el generador.
Mejoramos la página principal con animaciones y un diseño más moderno. Además, puedes simular respuestas de la API en la terminal sin registrarte. Las configuraciones de cuenta quedan en la pestaña Ajustes.
La API de Valorant ya vive en vlr.losperris.dev, independiente del proxy. Rutas nuevas: / (landing), /docs y /api/rank|match|today|stats|summary|system/stats. La URL antigua /api/valorant ya no se usa.
El generador de códigos QR ahora vive en qr.losperris.dev, independiente del proxy de losperris.dev. Nuevas rutas: / (generador), /docs y POST /api/generate. La URL antigua /api/qr ya no se usa.
Nuevos overlays para OBS: Ruleta y Tendencias, con enlace seguro, guía de configuración en el panel y visibilidad inteligente (se ocultan en reposo). Función en beta: puede recibir ajustes mientras la probamos.
Detección de sesión activa para cambiar automáticamente el botón a 'Ir al Panel'. Se agregaron etiquetas de comando a la sección de minijuegos.
Arreglos finales de contraste y subrayado en el footer, logrando una puntuación perfecta de 100 en Google Lighthouse.
Se agregó el parámetro '?format=text' a las URLs generadas para que la API pueda retornar texto plano, facilitando la integración con bots.
Se resolvieron solapamientos de z-index en los dropdowns, se sincronizaron los textos de ejemplo y se invirtió el orden de formatos (Rango + Puntos por defecto).
Las regiones LATAM y BR ahora se mapean correctamente a NA para el historial de MMR. Se reparó el comando de estadísticas del día.
No se encontraron actualizaciones para estos filtros.