This is a comprehensive update that migrates Aphrodite's configuration storage from YAML files to a robust SQLite database while maintaining complete backward compatibility and user transparency.
Core Implementation
- New SQLite Schema: Structured database with settings, api_keys, badge_settings, and version tables
- SettingsService Class: Complete CRUD operations for database management with type-safe storage
- StandaloneSettingsService: Flask-independent database access for subprocess operations
- Automatic Migration: Silent conversion of existing YAML configurations to SQLite on startup
- Compatibility Layer: Transparent fallback system ensuring existing code continues to work unchanged
Key Features
- Zero User Impact: Completely automatic migration with no user intervention required
- Database-First Architecture: All settings now use SQLite with YAML fallback for legacy support
- Enhanced Performance: Faster settings access and reduced file I/O operations
- Data Integrity: Structured storage with proper validation and backup mechanisms
- Subprocess Compatibility: Full database access for both web interface and background operations
Migration Process
- Automatic Detection: System detects YAML files and migrates them seamlessly on startup
- Backup Creation: Original YAML files are preserved for safety and potential rollback
- Transparent Operation: Users experience no functional changes or interruptions
- Fallback Support: Maintains YAML compatibility during transition period
Technical Improvements
- Connection Check Enhancement: Real API testing for all services (Jellyfin, OMDB, TMDB, MDBList, AniDB)
- Unicode Handling: Fixed Windows subprocess encoding issues with UTF-8 support
- Docker Environment: Proper SQLite path handling for both Docker and local development
- Poster Manager Integration: Complete database integration for all poster operations
- Settings Persistence: All web interface changes now save to SQLite database
- Dashboard Simplification: Merged duplicate buttons into single "Poster Manager" entry point
Testing Status
- Migration Tested: Confirmed YAML to SQLite conversion works flawlessly
- Docker Compatibility: Tested in containerized environment with volume mounts
- User Experience: Zero disruption during upgrade process
- Performance: Improved settings loading and persistence
- Backward Compatibility: All existing functionality preserved
This migration establishes a solid foundation for future Aphrodite enhancements while ensuring a seamless transition for existing users. The database-first architecture improves performance, reliability, and maintainability across the entire application.
Files Changed
- Core Services:
settings_service.py
,standalone_settings_service.py
,settings_compat.py
- Web Interface: Dashboard button consolidation, Poster Manager description
- Configuration: Enhanced Docker support and automatic migration
- Documentation: Updated changelog with comprehensive feature documentation