github jamcalli/Pulsarr v0.5.0

latest releases: v0.5.11, v0.5.11-beta.1, v0.5.11-beta.0...
26 days ago

Changes

🚀 New Features

Plex Label Sync System

  • Real-time Label Synchronization: Webhook-triggered automatic labeling of Plex content based on user watchlists and content requests
  • User-based Content Labels: Automatically label content with requesting user names using configurable format (e.g., "pulsarr:username")
  • Radarr/Sonarr Tag Integration: Sync tags from Arr instances directly to Plex labels for seamless content organization
  • Intelligent Pending Queue: Queue content for labeling when not yet available in Plex, with automatic retry logic and expiration management
  • Comprehensive Label Management UI: Full-featured admin interface for configuring, monitoring, and controlling label synchronization
  • Flexible Cleanup Modes: Three modes for handling removed users - delete labels, keep labels, or add special "removed" labels
  • Orphaned Label Cleanup: Automatic removal of labels for deleted users and expired content
  • Batch Operations: Full library synchronization with real-time progress tracking and detailed results reporting

Advanced Scheduling & Automation

  • Configurable Full Sync Scheduling: Cron-based scheduling for periodic full label synchronization with auto-reset options
  • Dynamic Watchlist Reconciliation: Enhanced periodic reconciliation with intelligent scheduling based on content activity
  • Session Monitoring Enhancements: Improved Plex session tracking with configurable inactivity reset periods

Enhanced User Interface

  • Progress Tracking System: Real-time progress indicators for all labeling operations with detailed statistics
  • Comprehensive Admin Controls: New Plex Labels page with configuration management, operation controls, and status monitoring
  • Improved Tag Creation Dialog: Enhanced validation, error handling, and response processing for tag creation
  • Streamlined Utility Pages: Refactored user interface components with improved loading states and error handling

🔧 Technical Implementation

Database Architecture

  • New Table: pending_label_syncs: Tracks content awaiting label synchronization with retry logic and webhook tag preservation
  • New Table: plex_label_tracking: Maintains label associations between users and Plex content with full GUID arrays for accurate matching
  • Cross-Database Compatibility: Full support for both SQLite and PostgreSQL with appropriate data types and constraints
  • Optimized Indexing: Strategic indexes for efficient label lookup and synchronization operations

Service Layer Expansion

  • PlexLabelSyncService: Complete 4,800+ line service handling all aspects of Plex label synchronization
  • PendingLabelSyncProcessorService: Manages queued label operations with retry logic and expiration handling
  • Enhanced PlexServerService: Improved Plex API integration with better error handling and label filtering
  • Database Methods Enhancement: New specialized methods for label tracking, sync operations, and configuration management

API & Schema Updates

  • New Labels API Routes: Complete REST API for label sync operations (/v1/labels/plex-labels/*)
  • Enhanced Configuration Schema: Comprehensive configuration options for label sync behavior, scheduling, and tag integration
  • Webhook Schema Updates: Extended webhook processing to handle tag synchronization and label operations
  • Type-Safe Implementations: Full TypeScript integration with Zod schema validation and direct type exports

Performance & Reliability

  • Configurable Concurrency Control: Adjustable concurrency limits for optimal performance during bulk operations
  • Exponential Backoff Retry Logic: Intelligent retry mechanisms for failed operations with progressive delays
  • Efficient GUID Matching: Advanced content matching using TMDB/TVDB identifiers with scoring algorithms
  • Memory-Optimized Processing: Bulk operations with pagination and efficient data structures

🎯 Integration Improvements

Webhook Processing Enhancement

  • Tag-Aware Webhook Handling: Extended webhook processing to capture and sync tags from Radarr/Sonarr events
  • Real-time Label Updates: Immediate label application when content becomes available in Plex
  • Enhanced Error Handling: Improved webhook processing with better error reporting and recovery

Content Router & Evaluation

  • Enhanced Metadata Handling: Improved content evaluation with better metadata extraction and processing
  • Streamlined Content Flow: Optimized content routing from Arr instances to Plex with label synchronization

User Management Integration

  • User-Centric Labeling: Deep integration with user management for personalized content labeling
  • Multi-User Content Support: Content can be labeled for multiple users when requested by multiple parties
  • User Cleanup Integration: Automatic label cleanup when users are removed from the system

📊 Impact Summary

Files Modified

  • 164 files changed across the entire codebase
  • 14,399 lines added, 5,355 lines removed (net +9,044 lines)
  • 25 new database methods for label and sync operations
  • 12 new API endpoints for label management
  • 5 new React components for label administration
  • 3 new database tables for comprehensive label tracking

Key Metrics

  • 41 feature commits implementing new functionality
  • 4 bug fix commits addressing issues
  • New Service: 4,873 lines of core label synchronization logic
  • Enhanced UI: 1,050+ lines of new admin interface components
  • Database Migrations: 3 comprehensive migrations with cross-database support

Documentation & Testing

  • Comprehensive Feature Documentation: Complete documentation for Plex Label Sync with usage examples
  • API Documentation Updates: Full OpenAPI specification updates for new endpoints
  • Enhanced Development Environment: Improved environment variable documentation and development setup

🔄 Migration Notes

Database Changes

  • Automatic Migration: All database changes are handled through standard migration system
  • Backwards Compatibility: Existing functionality remains unchanged
  • Configuration Updates: New optional configuration sections for label sync features

API Changes

  • Additive Changes: All API changes are non-breaking additions
  • Enhanced Webhook Processing: Existing webhooks now capture additional tag information
  • Extended Configuration: New configuration options with sensible defaults

This release represents a major enhancement to Pulsarr's automation capabilities, providing deep integration between user watchlists, Arr instances, and Plex labeling systems. The implementation focuses on reliability, performance, and user experience while maintaining full backwards compatibility with existing installations.

Docker

docker pull lakker/pulsarr:0.5.0

Contributors

@coderabbitai, @coderabbitai[bot] and @jamcalli

Don't miss a new Pulsarr release

NewReleases is sending notifications on new releases.