github arsfeld/reel v0.4.0
v0.4.0 - Reactive Architecture & SeaORM Migration

latest releases: v0.5.0-alpha2, v0.5.0-alpha1
2 days ago

🎉 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.

Don't miss a new reel release

NewReleases is sending notifications on new releases.