# Changelog All notable changes to the Wedding Phone project are documented in this file. ## [1.2.0] - 2025-01-24 ### Added - **USB Backup System with CRC32 Verification** - Automatic backup to multiple USB drives - CRC32 checksum verification for data integrity - Configurable backup paths in config.json - Web interface for monitoring USB drive status - Test backup functionality - Automatic cleanup of corrupted backups - `setup_usb.sh` script for easy USB drive setup with proper permissions - **Systemd Service Support** - `wedding-phone.service` systemd service file - `install_service.sh` automated service installer - Auto-start on boot capability - Automatic restart on failure - Service log viewing with journalctl - **UV Package Manager Integration** - Makefile for simplified commands (`make start`, `make test`, `make sync`) - UV-based dependency management - No-build direct script execution - Faster, more reliable installation - **Greeting Delay Feature** - Configurable delay (0-10 seconds) before greeting plays - Web interface slider for real-time adjustment - Useful for giving guests time to position phone - **Extra Button Support** - Optional GPIO button for playing sounds during recording - Button sound only plays during recording phase (not greeting) - Separate PyAudio instance prevents blocking - Configurable button sound upload via web interface ### Changed - **Immediate Hook Detection** - Playback and recording now check GPIO directly for instant response - No more delays when handset is hung up - Greeting stops immediately when phone is hung up - Recording stops immediately when phone is hung up - **Recording Improvements** - Minimum 1-second duration required to save recording - Recordings shorter than 1 second are automatically deleted - Aborted recordings are cleaned up automatically - No more empty or accidental recordings - **Volume Control Enhancement** - Real-time volume adjustment (0-100%) - Volume persists in user_config.json - Applies to both greetings and button sounds - **Configuration System Overhaul** - Separated system config (config.json) from runtime config (user_config.json) - No hardcoded paths (e.g., /home/berwn) - All GPIO pins configurable - All paths configurable (relative or absolute) - Backup settings in configuration - **Python Version Requirement** - Updated from Python 3.7+ to Python 3.8+ (Flask requirement) ### Fixed - **USB Backup Permissions** - Fixed "Permission denied" errors on USB backup - Better error messages with fix suggestions - Proper permission checking for user-mounted drives - No longer requires running as root - **UV Build Issues** - Removed hatchling build system (not needed for scripts) - Uses `--no-project` mode for direct execution - Simplified dependency installation - No more build errors - **Extra Button Sound Playback** - Fixed button sound not playing during recording - Uses separate PyAudio instance to prevent stream conflicts - Button sound plays completely without interruption - Recording continues while button sound plays - **Template Regeneration** - Templates now regenerate when deleted - New features appear after template deletion - Documented template regeneration process ### Security - **Service Hardening** - NoNewPrivileges enabled - PrivateTmp enabled - Runs as regular user (not root) - GPIO and audio group access configured ### Documentation - **Comprehensive README Updates** - Added USB backup guide with mounting instructions - Added systemd service installation guide - Added Makefile usage documentation - Added greeting delay documentation - Added extra button operation guide - Added troubleshooting section expansions - Updated Python version requirements - Added UV installation and usage guide - **New Documentation Files** - `CHANGELOG.md` - This file - `setup_usb.sh` - USB drive setup script ### API Endpoints Added - `GET /api/backup/status` - Get USB backup drive status - `POST /api/backup/test` - Test backup to all USB drives - `GET /api/greeting_delay` - Get current greeting delay - `POST /api/greeting_delay` - Set greeting delay - `GET /api/volume` - Get current volume - `POST /api/volume` - Set volume ### Configuration Changes New sections in `config.json`: ```json { "backup": { "enabled": true, "usb_paths": ["/media/usb0", "/media/usb1"], "verify_crc": true, "backup_on_write": true }, "gpio": { "extra_button_enabled": true, "extra_button_pin": 27, "extra_button_pressed_state": "LOW" }, "system": { "greeting_delay_seconds": 0, "volume": 70 } } ``` ## [1.0.0] - Initial Release ### Features - Rotary phone hookswitch detection via GPIO - Custom greeting message playback - Voice recording after greeting - Web interface for file management - HiFiBerry DAC+ADC Pro support - Dial tone generation - Basic configuration via config file --- ## Upgrade Notes ### Upgrading from 1.0.0 to 1.2.0 1. **Update Python version** ```bash python3 --version # Must be 3.8 or higher ``` 2. **Update configuration file** - Copy `config.example.json` to see new options - Add `backup` section if using USB backup - Add `gpio.extra_button_*` if using extra button - Add `system.greeting_delay_seconds` and `system.volume` 3. **Install UV (recommended)** ```bash curl -LsSf https://astral.sh/uv/install.sh | sh ``` 4. **Install dependencies** ```bash make sync ``` 5. **Delete old templates** (to get new web features) ```bash rm -rf templates/ ``` 6. **Optional: Install as service** ```bash ./install_service.sh ``` 7. **Optional: Setup USB backup** ```bash sudo ./setup_usb.sh ``` --- ## Known Issues - Template files must be manually deleted to get UI updates (this is by design) - USB drives must be mounted with proper user permissions for backup to work - PyAudio installation may require system packages: `sudo apt-get install python3-pyaudio portaudio19-dev` --- ## Future Enhancements Potential features for future releases: - Web-based configuration editor - Multiple language support - Email notifications for new recordings - Cloud backup integration - Mobile app for remote management - Recording transcription - Guest photo capture - QR code generation for easy access