Saltar a contenido

0.5.6 (2026-05-25)

Hardening de seguridad: nueva imagen base Alpine, fix crítico en cambio de contraseña, y limpieza de la suite de tests.

🐛 Fixes

  • Crítico: change_password y confirm_password_reset revertían el nuevo hash de contraseña. El flujo cargaba el usuario, llamaba a repository.update_password (que guardaba el hash nuevo), y luego ejecutaba user.save() sobre la copia en memoria desactualizada, restaurando el hash anterior. En la práctica, las contraseñas no cambiaban realmente. Fix: update_password ahora actualiza el hash y password_changed_at atómicamente en el mismo save().
  • Tests de streaming_integration actualizados: las aserciones esperaban 403 cuando HTTPBearer ya devuelve 401 por defecto en FastAPI 0.128+.
  • tests/conftest.py registra los 11 modelos Beanie que faltaban (PlanInDB, SubscriptionInDB, DiagramInDB, FolderInDB, etc.), eliminando errores intermitentes en tests que dependían de esos documents.
  • Reset autouse del estado en memoria de login_rate_limiter y account_lockout entre tests, evitando que logins acumulados de una suite previa bloquearan fixtures posteriores.
  • tests/test_openai_models.py: la función test_model (script ejecutable, no test) renombrada a run_model_check para que pytest no la coleccione y falle por falta de fixtures.

⬆️ Upgrades

  • Imagen Docker base del backend: python:3.13-slim-trixie → python:3.13-alpine3.22. Reduce la superficie de CVEs eliminando paquetes Debian (util-linux, systemd, perl, shadow, tar, etc.) que no existen en Alpine.
  • Build de Alpine añade gcc, musl-dev, libffi-dev, openssl-dev, cargo como .build-deps virtuales (purgadas al final) para compilar wheels nativos (cryptography, bcrypt, pillow, uvloop, pydantic-core).

🔧 Internal

  • Suite completa en verde tras los fixes: 210 passed, 0 failed, 0 errors.
  • Verificada compatibilidad de todas las dependencias Python con musl libc (cp313/musllinux wheels).