📝 Changelog
Todos los cambios notables en este proyecto se documentan en este archivo.
El formato está basado en Keep a Changelog, y este proyecto sigue Semantic Versioning.
[1.5.4] - 2026-06-26
🎉 Agregado
- Event Bus y Sistema de Filtros Avanzados: Nuevo módulo
todus/events/con dispatcher centralizado de eventos: - ✅
EventBus: Gestor thread-safe con prioridades y control de propagación - ✅
Filter+build_filter: Filtros declarativos (from_phone, contains_keyword, regex, custom, etc.) - ✅ Decorador
@client.events.on(event_type, **filters)para handlers limpios - ✅ Handlers wildcard (
'*') que capturan todos los eventos - ✅ Despacho automático de 7 tipos:
message,presence,receipt,iq,tdack,deleted,chat_state - ✅ Método
handle_parsed_stanza()para procesar stanzas - ✅ Documentación completa en
docs/events/overview.md
📝 Cambiado
ToDusClientahora inicializa automáticamenteself.events = EventBus()_listen_looprefactorizada para usar EventBus y despachar eventos- Actualización de mkdocs.yml: nueva sección "🎯 Event Bus y Filtros"
- Nuevo ejemplo: "Bot Reactivo con EventBus" en ejemplos avanzados
🔧 Corregido
- Thread-safety en dispatch con
RLock - Manejo robusto de excepciones (logging sin ruptura)
🧪 Tests
- ✅ 5 tests en
test_events.py(filtros, prioridades, wildcard) - ✅ Integración cliente en
test_client_events.py(7 tipos de eventos)
[1.5.3] - 2026-06-21
🎉 Agregado
- Message Queue System: Nuevo módulo
todus/cache/con almacenamiento persistente SQLite: MessageStore: CRUD thread-safe con índices optimizadosMessageQueue: Cola con reintentos automáticos y backoff exponencialMessageQueueMixin: Mixin para cualquier clienteToDusClientWithQueue: Cliente completo con queue integrado- Ciclo de vida: pending → sent → delivered → read/failed
- Callbacks de evento:
on_message_sent,on_message_delivered,on_message_read,on_message_failed - Método
get_queue_stats()para monitoreo
📝 Cambiado
- Optimización en
ToDusClient2: eliminadas ~200 líneas de código duplicado listen_messagessoportamax_retriesconfigurable con backoff exponencial- Nuevo
__all__entodus/__init__.pycon MessageQueue exports
🔧 Corregido
- Bug SQL: escapada columna
"to"en queries - Thread-safety mejorada con RLock en MessageStore
- Limpieza automática de mensajes antiguos (30+ días)
[1.5.2] - 2026-06-20
🎉 Agregado
- Sistema de Mensajes Programados (Scheduler):
send_later(to, body, delay): envío con retrasoschedule_daily(to, body, hour, minute): mensajes diariosschedule_interval(to, body, interval): intervalos regularescancel_task(task_id): cancelar tareasget_scheduler_stats(): estadísticas- Verificación SSL configurable: Nuevo parámetro
verify_ssl - Backoff exponencial con jitter: reconexiones inteligentes (1s → 60s max)
📝 Cambiado
- Refactorización de
ToDusClient2con método interno_send_to_target - Seguridad SSL mejorada (activable)
🔧 Corregido
- Reconexiones más eficientes (backoff vs sleep fijo)
- Eliminación de duplicación de código
[1.5.1] - 2024-06-20
🔧 Corregido
- Corrección de la rama de la documentación
[1.5.0] - 2024-06-20
🎉 Agregado
- Cobertura 100% de la API de ToDus:
- Privacidad (
ToDusPrivacyMixin):get_profile_privacy,set_profile_privacy - Bloqueos (
ToDusBlockMixin):block_user,unblock_user,get_block_list - Última Conexión (
ToDusLastMixin):get_last_seen - Ubicación (
ToDusLocationMixin):set_location,get_people_near - Llamadas (
ToDusCallMixin):start_call,pickup_call,end_call
[1.4.7] - 2026-06-20
🎉 Agregado
- Estados / Historias de ToDus (
ToDusStatusMixin): publish_status: publicar historiasdelete_status: eliminar estadofollow_user/unfollow_user: gestión de seguidoresget_followers,get_following: consultar red
[1.4.6] - 2026-06-20
🎉 Agregado
- Canales de ToDus (
ToDusChannelMixin): create_channel: crear canalesget_my_channels: listar canales del usuariopublish_to_channel: publicar mensajessubscribe_channel,leave_channel: gestión
🔧 Corregido
- Problema en actualización de perfil (nombre/alias)
[1.4.5] - 2026-06-20
🔧 Corregido
- Test automatizado
test_upload_avatar_uses_session
[1.4.4] - 2026-06-20
🔧 Corregido
TypeErrorenupload_avatar
[1.4.3] - 2026-06-20
🎉 Agregado
- Método
set_todus_idenToDusProfileMixin
[1.4.2] - 2026-06-20
📝 Cambiado
- Reescritura de
update_profilecon Protobuf - Inyección de JWT sin prefijo Bearer
[1.4.1] - 2026-06-20
🎉 Agregado
- Namespaces XMPP
x11,x13,x14para grupos get_members,set_member_role,kick_memberget_invite_link,revoke_invite_link
[1.4.0] - 2026-06-20
🎉 Agregado
- Administración de grupos MUC Light:
set_name,set_subject,set_avatar- Gestión de miembros y roles
[1.3.9] - 2026-06-20
🔧 Corregido
- Atributo
toen stanzas (vso) - Atributo
xmlns='jc'en video_message
[1.3.8] - 2026-06-20
🔧 Corregido
- Parámetro
captionen stanzas de grupos - Actualización de versión (AUTH_VERSION_NAME = "2.1.2")
[1.3.7] - 2026-06-20
🔧 Corregido
- Normalización de teléfono automática
- Serialización dinámica de protobuf (evita 400 Bad Request)
[1.3.6] - 2026-06-20
🔧 Corregido
- Desactivación de verificación SSL para compatibilidad
- Silenciamiento de advertencias
InsecureRequestWarning
[1.3.5] - 2026-06-20
🔧 Corregido
- Optimización de badges en README
📝 Cambiado
- Migración a Trusted Publishing (OIDC) en GitHub Actions
[1.3.4] - 2026-06-20
🔧 Corregido
- Proxy en subida de archivos y avatares
- Tests unitarios para comportamiento de proxy
[1.3.3] - 2026-06-19
📝 Cambiado
- Renombrado paquete a
toDus-API
[1.3.2] - 2026-06-19
🔧 Corregido
- Flujo de publicación en GitHub Actions
[1.3.1] - 2026-06-19
🎉 Agregado
- Soporte para proxy HTTP y SOCKS5
[1.3.0] - 2026-06-19
🎉 Agregado
- ✅ Soporte completo para grupos MUC Light (
GroupClient) - ✅ Roles de grupo y eventos
- ✅ Auto-detección de destino privado/grupo
- ✅ Mensajes de ubicación y eventos
- ✅ Callbacks por grupo
- ✅ Modulo
stanzas/reorganizado - ✅ Modulo
client/con mixins - ✅
pyproject.tomlmoderno (PEP 621) - ✅ Tests unitarios con pytest
- ✅ CI/CD con GitHub Actions
[1.2.0] - 2026-06-01
🎉 Agregado
- Envío de stickers, contactos, botones interactivos
- Edición y eliminación de mensajes
- Parser incremental (
IncrementalParser)
[1.1.0] - 2026-05-15
🎉 Agregado
- Envío de imágenes y videos con metadata
- Subida/descarga de archivos
- Perfil de usuario (alias, bio, avatar)
- Utilidades:
format_size,get_image_dimensions
[1.0.0] - 2026-05-01
🎉 Agregado
- ✅ Cliente básico XMPP para ToDus
- ✅ Cliente stateful con auto-login
- ✅ Autenticación por SMS + JWT
- ✅ Envío/recepción de mensajes
- ✅ Excepciones personalizadas
- ✅ Constantes del protocolo