Changelog¶
All notable changes to milkcrate will be documented in this file.
[0.1.1] - 2025-02-15¶
Security¶
- Use timing-safe
hmac.compare_digest()for all plaintext password comparisons to prevent timing attacks - Remove
shell=Truefrom CLIrun_command()— commands are now parsed viashlex.split()and passed as lists tosubprocess.run() - Fail loudly when
SECRET_KEYis still set to a default value in production mode
Added¶
--yes/-yflag onmilkcrate init-dbto skip confirmation prompt- Confirmation prompt before
init-dbdestroys existing data - Database index on
deployed_apps.public_routefor faster route lookups - Migration code to add the
public_routeindex to existing databases - Logging for database schema migration failures (previously silently ignored)
Changed¶
- Extracted duplicated status-enrichment logic in
database.pyinto_apply_fallback_status(),_apply_enhanced_status(), and_enhance_app_status()helpers - Extracted duplicated container security policies in
deploy.pyinto_default_security_policies()function - Updated
test_security_policies_structuretest to import and verify the actual_default_security_policies()function
[0.1.0] - 2025-02-06¶
- Initial release
- Flask-based web UI for deploying and managing Docker containers
- Support for both Dockerfile and docker-compose.yml deployments
- Traefik reverse proxy integration with automatic PathPrefix routing
- HTTPS support via Let's Encrypt
- Volume management with file uploads
- Backup and restore functionality
- Unified CLI (
milkcrate) for setup, deployment, and maintenance - CSRF protection, rate limiting, and security headers
- Audit logging for admin actions