🎉 Major Architectural Overhaul
This release introduces a complete rewrite of Reel's core architecture, migrating from a basic cache system to a production-ready reactive architecture with SeaORM. With over 26,000 lines added and 8,000 lines refactored, this is our biggest update yet.
🏗️ Core Architecture Changes
SeaORM Database Layer
- Replaced the crude caching system with proper SeaORM entities and repositories
- Type-safe database operations with structured migrations
- Three-tier caching strategy: Memory (LRU) → SQLite → Backend API
- Proper relationship handling between entities
Reactive Event System
- Central EventBus using Tokio channels for system-wide event broadcasting
- Event-driven ViewModels with observable properties
- Incremental UI updates during sync operations (no more full refreshes)
- Debounced refresh to prevent UI flicker
✨ New Features & Improvements
Authentication Flow
- 🎯 Visual progress indicators for Plex and Jellyfin authentication
- ✅ Success confirmation pages with status messages
- 🔄 Better error handling and recovery
Performance Boosts
- ⚡ Major UI performance improvements across the board
- 🚀 Background loading service with pagination and progress reporting
- 🔄 Synchronous property access for snappier UI responses
- 🎨 Increased image loader concurrency for faster thumbnail loading
- 📝 Virtual scrolling infrastructure (experimental, disabled by default)
Video & Playback
- 🎮 Experimental video upscaling shader support (needs more testing)
- 📺 Improved video widget handling in player
- 🖼️ Better aspect ratio management
Multi-Platform Groundwork
- 🖥️ Platform abstraction layer for future macOS support
- 📁 Cross-platform config path handling
- 🎯 Modular GTK implementation
🔄 Technical Improvements
- Direct media retrieval by source and backend ID
- Optimized logging (moved sync operations from info to trace)
- Better multi-backend coordination
- Modernized PlayerViewModel with cleaner state management
- Comprehensive test updates using Config and EventBus
- Major code cleanup and removal of dead code
⚠️ Breaking Changes
ID Format Change
Domain model IDs now use the full cache key format:
- Before:
item_id
- After:
backend_id:library_id:type:item_id
If you have any scripts or integrations, you'll need to update them to handle the new ID format. Split on ':' to extract individual components.
📊 By The Numbers
- Commits: 25 since v0.3.0
- Files changed: 121
- Lines added: 26,857
- Lines removed: 8,080
- Architecture migration: ~75% complete
📦 Installation
Package Managers
# Debian/Ubuntu
sudo dpkg -i reel-v0.4.0-amd64.deb
# Fedora/RHEL
sudo rpm -i reel-v0.4.0-x86_64.rpm
# AppImage
chmod +x reel-v0.4.0-x86_64.AppImage
./Reel-0.4.0.AppImage
From Source
nix develop
cargo build --release
📝 Full Changelog
See the complete diff for all changes.
Note: This is a major architectural release focusing on infrastructure improvements. While the UI should feel significantly snappier, some experimental features (virtual scrolling, video upscaling) are still being refined.