- Create new endpoint to handle duration updates for playlist content items
- Validates duration is at least 1 second
- Updates duration in playlist_content association table
- Increments playlist version for sync tracking
- Fixes issue where duration spinner buttons were returning save errors
- Implement Docker image-based deployment (Option 1)
* Code immutable in image, no volume override
* Eliminated init-data.sh manual step
* Simplified deployment process
- Unified persistence in data/ folder
* Moved nginx.conf and nginx-custom-domains.conf to data/
* All runtime configs and data in single location
* Clear separation: repo (source) vs data/ (runtime)
- Archive legacy features
* Groups blueprint and templates removed
* Legacy playlist routes redirected to content area
* Organized in old_code_documentation/
- Added network migration support
* New migrate_network.sh script for IP changes
* Regenerates SSL certs for new IP
* Updates database configuration
* Tested workflow: clone → deploy → migrate
- Enhanced deploy.sh
* Creates data directories
* Copies nginx configs from repo to data/
* Validates file existence before deployment
* Prevents incomplete deployments
- Updated documentation
* QUICK_DEPLOYMENT.md shows 4-step workflow
* Complete deployment workflow documented
* Migration procedures included
- Production ready deployment workflow:
1. Clone & setup (.env configuration)
2. Deploy (./deploy.sh)
3. Migrate network (./migrate_network.sh if needed)
4. Normal operations (docker compose restart)
- Changed ownership of all files to scheianu:scheianu
- Set directories to 755 permissions (rwxr-xr-x)
- Set files to 644 permissions (rw-r--r--)
- Made shell scripts executable (755)
- Allows development without requiring sudo for file modifications
- Improves development workflow and security
- Detect actual HTTPS status from current request (scheme + X-Forwarded-Proto)
- Auto-sync database when HTTPS status mismatch is detected
- Show real-time connection info (protocol, host, port)
- Display helpful message when accessing via HTTPS but config shows disabled
- Add CSS styling for detection status display
- Users now see accurate HTTPS status even if database wasn't in sync
- Added auto-creation of PlayerUser records from player metadata (user_card_data)
- Fixed player_user table schema (removed player_id, made user_code unique globally)
- Created admin page for managing editing users (view, update names, delete)
- Updated permissions: normal users can now access admin panel, editing users, and leftover media
- Admin-only access: user management, system dependencies, logo customization
- Fixed edited media workflow to preserve original files
- Content.filename now points to edited_media folder, keeping originals intact
- Added user display names in edited media page (shows name if set, code otherwise)
- Fixed leftover media file size calculation (handle None values)
- Split editing users into separate card on admin panel with description
- Optimized delete modal for light/dark modes with modern gradients
- Added edit_count tracking to media library with warnings in delete confirmation
- Enhanced PlayerEdit model with CASCADE delete on foreign keys
- Improved player management page to show latest 3 edited files with image previews
- Created new edited_media route and template with full version history
- Implemented horizontal expandable cards with two-column layout
- Added interactive version selection with thumbnail grid
- Included original file in versions list with source badge
- Fixed deletion workflow to clean up PlayerEdit records and edited_media folders
- Enhanced UI with smooth animations, hover effects, and dark mode support
- Added PlayerEdit model to track edited media history
- Created /api/player-edit-media endpoint for receiving edited files from players
- Implemented versioned storage: edited_media/<content_id>/<filename_vN.ext>
- Automatic playlist update when edited media is received
- Updated content.filename to reference versioned file in playlist
- Added 'Edited Media on the Player' card to player management page
- UI shows version history grouped by original file
- Each edit preserves previous versions in archive folder
- Includes dark mode support for new UI elements
- Documentation: PLAYER_EDIT_MEDIA_API.md
- Added edit_on_player_enabled column to playlist_content table
- Updated playlist model to track edit enablement per content item
- Added UI checkbox on upload media page to enable/disable editing
- Added toggle column on manage playlist page for existing content
- Updated API endpoint to return edit_on_player_enabled flag to players
- Fixed docker-entrypoint.sh to use production config
- Supports PDF, Images, and PPTX content types
Features:
- Dockerfile for containerized deployment
- Docker Compose configuration with health checks
- Automated database initialization via entrypoint script
- Quick start script for easy Docker deployment
- Comprehensive Docker deployment documentation (DOCKER.md)
- Complete README with installation and usage instructions
- .dockerignore for optimized image builds
Improvements:
- PDF conversion now preserves orientation (portrait/landscape)
- PDF rendering at 300 DPI for sharp quality
- Maintains aspect ratio during conversion
- Compact media library view with image thumbnails
- Better media preview with scrollable gallery
Docker Features:
- Multi-stage build for smaller images
- Non-root user for security
- Health checks for container monitoring
- Volume mounts for persistent data
- Production-ready Gunicorn configuration
- Support for Redis caching (optional)
Features added:
- Leftover media management page in admin panel with delete functionality for images and videos
- Individual file delete buttons for leftover media
- PDF to PNG conversion (each page becomes a separate image at Full HD resolution)
- Delete functionality for leftover video files
- Enhanced playlist management with duration editing for all content types
- Improved dark mode support for playlist management page
- Content type badges with color coding
- Better styling for duration input fields with save functionality
- Fixed URL generation for duration update endpoint
- Added comprehensive dark mode styling to all pages:
* Dashboard (workflow guide, secondary text, log items)
* Admin panel with user management system
* Content/playlist management page
* Upload media page
* Add player page
- Implemented user management system:
* Create/edit/delete users
* Two role types (user/admin)
* Reset password functionality
* Role-based permissions
- Replaced group assignment with playlist assignment:
* Players now directly assigned to playlists
* Updated add player form and backend
* Removed group selection from player creation
- Fixed bugs:
* Updated instance_path configuration for SQLite
* Fixed import path in app factory
* Updated dependencies (Pillow 11.0.0, removed gevent)
- Added start.sh script for easy development server launch
- Created 10 SVG icon files in app/static/icons/ (Feather Icons style)
- Updated base.html with SVG icons in navigation and dark mode toggle
- Updated dashboard.html with icons in stats cards and quick actions
- Updated content_list_new.html (playlist management) with SVG icons
- Updated upload_media.html with upload-related icons
- Updated manage_player.html with player management icons
- Icons use currentColor for automatic theme adaptation
- Removed emoji dependency for better Raspberry Pi compatibility
- Added ICON_INTEGRATION.md documentation