Releases: rjpr/snappass
Releases · rjpr/snappass
v2.0.0
SnapPass 2.0.0 Release Notes
This is a modernized fork of the original Pinterest SnapPass with significant UI/UX improvements and enhanced functionality.
New Features
UI & Theming
- Modern UI with Pico CSS framework, dark mode support, and 20 built-in color themes
- Theme customization via
THEME_COLORandTHEME_MODEenvironment variables - Automatic dark mode detection based on system preferences
- Customizable site title via
SITE_TITLE - Configurable default TTL via
DEFAULT_TTL(hour, day, week, two weeks) - Optional GitHub link visibility control via
HIDE_GITHUB_LINK
Security Enhancements
- APIs disabled by default - Set
ENABLE_API=Trueto enable programmatic access - Configurable maximum secret length via
MAX_SECRET_LENGTH(defaults to 150KB) - Enhanced security headers (CSP, X-Frame-Options, X-Content-Type-Options)
- Secure session cookies (HttpOnly, Secure, SameSite)
- Redis authentication enabled in production configurations
Additional Configuration & Compatibility
- URL token customization with
TOKEN_PREFIXfor backwards compatibility
Technical Improvements
Frontend
- Removed: Bootstrap 3.x, Font Awesome, jQuery (~12,000 lines)
- Added: Pico CSS v2 (minimal, classless framework)
- Reduced static asset size by ~95%
- SVG icons replace font-based icons
- Improved clipboard integration with visual feedback
- Better mobile experience and accessibility
Backend
- Updated to Python 3.9+ (tested through 3.13)
- All dependencies updated to latest versions:
- Flask 3.1.0
- cryptography 44.0.2
- redis 5.2.1
- Werkzeug 3.1.3
- flask-babel 4.0.0
- waitress 3.0.2
- Enhanced error handling and validation
- Improved configuration system with environment variables
Infrastructure
- Docker-first deployment approach with official images on Docker Hub and GHCR
- Multi-platform Docker support (AMD64 and ARM64)
- Production-ready
docker-compose.example.ymlwith comprehensive configuration - Redis persistence with volume mounting
- Automated CI/CD with GitHub Actions
- Complete documentation converted to Markdown
Migration from Original
Fully backwards compatible when configured properly:
- Use the same Redis instance (existing data preserved)
- Set
TOKEN_PREFIX=snappassfor URL compatibility - Keep
REDIS_PREFIX=snappass(default) - Update Docker image to
rjpr/snappass
See README.md for detailed migration instructions.
Docker Deployment
Recommended deployment using Docker Compose:
-
Download the example configuration:
curl -o docker-compose.yml https://raw.githubusercontent.com/rjpr/snappass/master/docker-compose.example.yml
-
Edit
docker-compose.ymland change:SECRET_KEYto a secure random valueCHANGE_REDIS_PASSWORDto a secure password (in two places)
-
Start the services:
docker compose up -d
SnapPass will be accessible at http://localhost:5000
Alternative using Docker run:
docker run -d --name redis redis:latest
docker run -d --name snappass --link redis:redis -p 5000:5000 \
-e REDIS_HOST=redis -e SECRET_KEY=your-secret-key-here \
rjpr/snappassBreaking Changes
- Minimum Python version raised to 3.9
- Bootstrap completely replaced with Pico CSS
- APIs disabled by default (set
ENABLE_API=Trueto enable)