Este mes llegó la app nativa de Android, rediseñamos las extensiones, completamos el spotlight del mercado y limpiamos varias cosas por dentro. Aquí está el detalle de lo que cambió y por qué.
📱 App Android nativa (taso-android)
Es una app nativa escrita en Kotlin + Jetpack Compose (con Glance para componentes de pantalla de inicio). Consume únicamente taso-api, igual que el resto del ecosistema.
Calculadora de tasas. Usa las tasas que ya están en la app. La fuente por defecto es El Toque (USD), pero puedes elegir cualquier otra. Escribes un monto, por ejemplo 20 USD, y lo ves convertido a varias monedas a la vez, estilo factura. Tiene botón para invertir la conversión.
Barra inferior flotante. Ahora es solo la cápsula con iconos, sin el fondo que cubría toda la parte de abajo. El efecto de vidrio está inspirado en la librería AndroidLiquidGlass.
Transiciones entre secciones. Se reescribieron con un paginador interno para que el deslizamiento sea más fluido (v0.8.0).
Encabezado colapsable en Tasas y Blog (v0.8.1). La fila del título se esconde al bajar y reaparece en cuanto empiezas a subir. Las fuentes y cuentas se quedan fijas arriba, y el gesto horizontal solo cambia el contenido de debajo.
Fix de instalación en algunos Samsung (v0.7.1). Llegó por un reporte de error de instalación.
🧩 Extensiones: Chromium y Firefox
Los cambios se aplicaron por igual en taso-ext (v0.5.2.1) y taso-extmf (v0.1.10.1), con las mismas clases e IDs, sin tocar el HTML ni el JS.
Rediseño "Quiet Glass". Un solo acento (índigo
#6c81ffen oscuro y#4a63e0en claro). Quitamos los blobs animados del fondo, bajamos el blur y el glow, y pasamos a bordes finos y tarjetas que se elevan sutilmente al pasar el cursor. La tipografía sigue igual (Space Grotesk + JetBrains Mono).Barrido de luz en las tarjetas de tasas. Es CSS puro, con un pseudo-elemento y una animación de 1.9 s que se repite mientras el cursor esté encima.
Esquinas más redondeadas. Subimos los radios globales (14/22/28 px en el popup).
Modo claro más suave. Reemplazamos el blanco puro por un gris azulado: fondo
#e8eaf0y texto#2b2c3a. Los rojos y verdes se desaturaron un poco.Banderas visibles en Windows. Windows no incluye banderas en su fuente de emoji (Segoe UI Emoji), y Firefox sí trae la suya. Ahora las banderas de país (dos regional indicators) se resuelven a SVG de Twemoji desde jsDelivr (
[email protected]). El resto de símbolos se queda como texto, y si la imagen falla en cargar, se vuelve al emoji.Además: panel Combustible, widget "Frase del día", sección Ticker en Opciones con checklist de cripto y layout responsive de 3 columnas.
🤖 Bot de Telegram (taso-bot)
/tspl: spotlight más completo
El encabezado del digest suma dominancia de BTC, variación del market cap en 24 h y Altcoin Season Index.
Las noticias vienen de NewsData.io (que solo da título y descripción, nunca el artículo completo). Por eso el párrafo por noticia pasó de "2-4 frases" a "2-5 sin rellenar".
Consistencia entre
/tsply/tspl blog. Antes la caché del digest duraba 20 h y el cron corre cada 24 h, así que quedaba un hueco de unas 4 h en el que se regeneraba con la IA y las noticias cambiaban. Ahora dura 25 h./tspl bloggenera Markdown estándar, sin HTML embebido. Se entrega como mensaje de Telegram (tap para copiar) si cabe en el límite, y como archivo.txtsi no cabe. En el blog las viñetas usan-y en Telegram•, porque el editor del blog interpreta-como lista real.
IA más estable
Los comandos /ta, /p, /spl y /tspl usan openai/gpt-oss-120b en Groq. Ese modelo razona de forma predeterminada con esfuerzo medium, y esos tokens de razonamiento compiten por el mismo presupuesto que la respuesta, lo que provocaba JSON truncado. Cambiamos:
reasoning_effort: "low"en los cuatro prompts, porque son tareas de redacción y curación.max_tokenspormax_completion_tokens, ya que Groq deprecó el primero.Timeout de 15 a 25 s.
📡 Gestión de Grupos (taso-gcg)
Bluesky como fuente de
/addfeed. Nuevo módulomodules/rss/bluesky.py(BlueskyClient) que usa la API pública oficial (AT Protocol), con la misma interfaz que el resolver y el parser existentes. Detecta enlaces de perfil de Bluesky y el botón pasó de "X/Twitter" a "Social".Nitter. Es frágil desde que se descontinuó oficialmente, y desde nuestro VPS varias instancias devuelven 403. Quitamos 6 muertas (4 sin DNS y 2 con TLS roto), añadimos
nitter.kareem.oney refrescamos la lista de instancias confirmadas.Observabilidad. En
fetch_content(), los fallos HTTP 403/429/503 sin excepción de red no se registraban. Ahora sí./connection. Ahora lista todos los chats donde el bot es admin (combinando la caché de admins con el historial de/connect), no solo los conectados manualmente. También corregimos un fallo silencioso: el texto literal/connection <n>.conparse_mode=HTMLhacía que Telegram rechazara el mensaje completo, y a los títulos de feeds RSS externos se les aplicahtml.escape().
🔧 Por dentro
Seguridad de la base de datos. Activamos Row Level Security en las 17 tablas del esquema
publicen Supabase.taso-apise conecta directo con SQLAlchemy/asyncpg como dueño de las tablas (que ignora RLS), así que para ustedes no cambió nada.Rotación de logs. En los cuatro servicios con log propio bajamos el límite a 2 MB por archivo con 4 archivos de respaldo, o sea 5 por servicio, y mantenemos el prefijo por fecha.
CMC AI. Dejamos lista la integración con los insights de CoinMarketCap AI como contexto adicional para la IA. Está desactivada hasta que haya acceso, porque nuestro plan actual (Basic) no la incluye.
👀 Lo que viene
/qp2p. Queremos traer al bot las órdenes P2P reales de QvaPay (no solo promedios), con filtros por tipo, moneda y ratio, por ejemplo/qp2p sell cup > 900, y alertas cuando aparezca una oferta que cumpla tu umbral.Webhook en vez de long-polling. Las desconexiones de red del bot ocurren solo en
get_updates(), es decir, en la espera larga del polling. El código para modo webhook ya existe y estamos evaluando activarlo.
¿Encontraste un error o tienes una idea? Escríbenos por el bot usando el comando /tkt. Cada sugerencia ayuda a que TASALO sea más útil. 🙌