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_passwordyconfirm_password_resetrevertían el nuevo hash de contraseña. El flujo cargaba el usuario, llamaba arepository.update_password(que guardaba el hash nuevo), y luego ejecutabauser.save()sobre la copia en memoria desactualizada, restaurando el hash anterior. En la práctica, las contraseñas no cambiaban realmente. Fix:update_passwordahora actualiza el hash ypassword_changed_atatómicamente en el mismosave(). - Tests de
streaming_integrationactualizados: las aserciones esperaban403cuandoHTTPBearerya devuelve401por defecto en FastAPI 0.128+. tests/conftest.pyregistra 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_limiteryaccount_lockoutentre tests, evitando que logins acumulados de una suite previa bloquearan fixtures posteriores. tests/test_openai_models.py: la funcióntest_model(script ejecutable, no test) renombrada arun_model_checkpara quepytestno 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,cargocomo.build-depsvirtuales (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).