CHANGELOG.md¶
3.1.0 (2025-12-24)¶
π¨ UI/UX Improvements¶
ArrActivity Page Enhancements β’ Enhanced download table β¦ Added Quality and Protocol columns for better download visibility β¦ Moved Progress column to end for consistent layout with VOD monitor β¦ Added episode info display for Sonarr (S01E05 format with episode title) β¦ Removed icons from title columns for cleaner appearance
β’ Activity status badges β¦ Replaced plain text status with colored badges matching VOD monitor style β¦ Downloading (green), Importing (blue), Completed (green), Warning (yellow), Failed (red), Queued (gray) β¦ First letter capitalized for consistent presentation
β’ Progress bar standardization β¦ Changed all progress bars to green across ArrActivity, VODStreams, and Uploader β¦ Unified progress bar layout: label, percentage, and bar consistently styled β¦ Protocol badge now uses blue color scheme for visual consistency
Settings Page Improvements β’ Section reorganization β¦ Reordered settings cards: Auth β General β Plex β Overseerr β *arr β Uploader β API β¦ Logical grouping for better user experience
β’ Auto-test on load β¦ Added automatic connection testing for Uploader service on settings page load β¦ Added automatic connection testing for all *arr instances on settings page load β¦ Feature parity with Plex and Overseerr connection testing β¦ Immediate feedback on service health without manual testing
β’ Unsaved changes warning β¦ Removed auto-save functionality for better user control β¦ Added browser warning when leaving page with unsaved changes β¦ Save button shows warning message and disabled state when no changes pending β¦ Prevents accidental data loss
π Bug Fixes¶
β’ Fixed icon mismatch in Settings page (*arr and Uploader sections) β’ Fixed missing closing brace in validateArrInstancesOnLoad function β’ Resolved syntax errors preventing frontend compilation
3.0.0 (2025-12-19)¶
β‘ Caching & Performance¶
β’ Redis coverage expanded
β¦ Plex sessions cached with 10s TTL to reduce repeated /status/sessions calls
β¦ Live stats cached for 30s and standard stats cached for 60s to avoid redundant Plex hits
β¦ Recent media cached for 5 minutes to cut expensive library fetches
β¦ Cache warming now preloads sessions, stats, live stats, and recent media
β’ Cache transparency & control
β¦ /api/plex/cache/stats reports the expected Redis keys for quick verification
β¦ Cache clear/warm endpoints now manage the new Redis keys alongside in-memory caches
β¦ Manual watch-history sync clears its Redis entry to prevent stale data
π§ Release & Versioning¶
β’ Bumped project version to 3.0.0 across backend, frontend, and release metadata
2.5.0 (2025-12-15)¶
π Performance: Enterprise-Grade Caching System¶
Phase 1: Plex Activities Cache
β’ activities-cache: In-memory caching with 5s TTL β¦ Reduces Plex API calls by 83% during active monitoring β¦ Module-level cache dictionary with timestamp-based expiry β¦ Automatic stale cache fallback on API errors β¦ Hit/miss tracking for cache performance monitoring β¦ Cache age reporting for debugging
Phase 2: Watch History & Library Caching
β’ watch-history-cache: 5-minute database query cache β¦ Reduces database queries by 80% for watch history endpoint β¦ Automatic invalidation on manual sync operations β¦ Prevents redundant database scans during dashboard loads
β’ library-cache: 5-minute library type cache β¦ Caches Plex library sections by server URL + token β¦ Eliminates repeated library API calls during invite workflows β¦ Improves invite creation and library selection performance
Phase 3: Background Stats & Cache Warming
β’ stats-aggregation: Background statistics service
β¦ Pre-calculates dashboard stats every 60 seconds
β¦ /api/plex/stats/dashboard returns instant cached results
β¦ Aggregates service health, Plex library counts, and traffic stats
β¦ Eliminates expensive multi-database queries on dashboard loads
β¦ Background asyncio task integrated into FastAPI lifespan
β’ cache-warming: Automatic cache refresh service β¦ Proactively refreshes caches at 80% TTL threshold β¦ Prevents cold cache states during normal operation β¦ Checks every 2 seconds for stale caches β¦ Warms activities and watch history caches automatically β¦ Ensures consistent sub-second response times
β’ redis-support: Optional distributed cache layer
β¦ Redis integration for multi-instance deployments
β¦ Automatic fallback to in-memory cache if Redis unavailable
β¦ Graceful degradation maintains system reliability
β¦ Configurable via REDIS_ENABLED environment variable
β¦ Full CRUD operations: set, get, delete, clear
Cache Management Endpoints
β’ GET /api/plex/cache/stats - Enhanced cache statistics β¦ Per-cache hit/miss rates and TTL information β¦ Background stats service status and last update time β¦ Redis connection status and key count β¦ Cache age tracking for debugging
β’ POST /api/plex/cache/clear - Clear all caches β¦ Invalidates activities, watch history, and library caches β¦ Resets hit/miss counters for fresh metrics β¦ Useful for testing and troubleshooting
β’ POST /api/plex/cache/warm - Manual cache warming β¦ Force-refreshes all cache layers on demand β¦ Useful after Plex server changes or updates β¦ Ensures caches contain latest data
β’ GET /api/plex/stats/dashboard - Pre-calculated stats β¦ Returns dashboard stats from background aggregation β¦ Sub-second response time vs 2-5s without caching β¦ Services online/offline counts β¦ Plex library totals (movies, shows, episodes, seasons) β¦ Traffic statistics (30-day total)
Performance Impact
β’ Plex activities endpoint: 5s β sub-second response (80% hit rate) β’ Watch history endpoint: 2-3s β sub-second response (cached) β’ Dashboard stats: 3-5s β <100ms response (pre-calculated) β’ API call reduction: 83% fewer Plex API requests β’ Database query reduction: 80% fewer watch history queries β’ Cache hit rates: 80% during normal operation with rapid requests
π Documentation Updates¶
β’ CACHE_IMPLEMENTATION.md - Complete implementation details β¦ All three phases documented with code examples β¦ Architecture diagrams and data flow β¦ Performance benchmarks and metrics
β’ PHASE3_QUICKSTART.md - Quick start guide for Phase 3 β¦ Redis setup instructions (optional) β¦ Environment variable configuration β¦ Testing procedures with curl examples β¦ Troubleshooting common issues
β’ API Documentation - New cache endpoints documented β¦ Complete endpoint reference in docs/api/plex.md β¦ Request/response examples β¦ Cache statistics interpretation guide
π§ Technical Details¶
β’ In-memory cache dictionaries at module level β’ Datetime-based TTL checking (no external dependencies) β’ Background asyncio tasks with proper lifecycle management β’ Graceful shutdown with task cancellation β’ Thread-safe cache operations β’ Comprehensive error handling with stale cache fallback β’ Optional Redis with automatic failover
2.4.1 (2025-12-07)¶
π― Invites Management Enhancements¶
New Features
β’ invite-status: Multi-badge status system β¦ Invites can now display multiple status badges simultaneously β¦ "Redeemed" badge (green) shows when invite has active users β¦ Additional "Expired" (red) and "Used Up" (orange) badges appear when applicable β¦ Badge priority: Disabled > Redeemed (+ expired/used) > Expired/Used > Active β¦ Better visual clarity of invite states at a glance
β’ invite-filters: Redeemed filter tab β¦ New "Redeemed" filter tab in invites manager β¦ Shows all invites that have been claimed by users β¦ Filter positioned between "Active" and "Expired" tabs β¦ Active invites stat card now shows redeemed count: "X (Y redeemed)" β¦ Redeemed status card removed in favor of filter tab
β’ invite-redemption: Re-invitation support β¦ Users can now be re-invited after being removed from Plex β¦ OAuth flow skips "already a member" check β¦ Allows seamless user re-additions without errors β¦ Improved invite redemption flow for previously removed users
β’ invite-cleanup: Automatic orphan deletion β¦ Invites automatically deleted when last associated user is removed β¦ Prevents orphaned invite codes cluttering the dashboard β¦ Delete user action now checks for remaining users on invite β¦ Cascade deletion keeps invite database clean
π¨ UI/UX Improvements¶
Navigation Updates
β’ nav: Plex-specific naming β¦ "VOD Activity" renamed to "Plex Activity" β¦ "User Accounts" renamed to "Plex User Accounts" β¦ "User History" renamed to "Plex User Stats" β¦ Clearer indication of Plex integration throughout UI
Dashboard Refinements
β’ traffic-cards: Carousel improvements β¦ Removed green activity indicator dots from traffic cards β¦ Fixed grid layout to prevent second row wrapping β¦ Cards now properly overflow with horizontal scroll β¦ Cleaner, more consistent visual presentation
β’ invite-stats: Refined counter logic β¦ Active invites counter properly filters expired/exhausted states β¦ Stats endpoint returns accurate counts for dashboard β¦ Redeemed count only includes active (non-expired, non-exhausted) invites
π Documentation¶
API Documentation
β’ swagger-ui: Dark mode with proper OpenAPI schema
β¦ Custom OpenAPI schema generation ensures version field
β¦ Swagger UI accessible at /docs endpoint
β¦ Vite proxy configured for /docs and /openapi.json
β¦ Dark mode theme with inverted colors for readability
β¦ Fixed "Unable to render this definition" error
β’ about-page: Fixed API docs link
β¦ API Documentation link in About section now works correctly
β¦ Links to /docs with proper proxy routing
β¦ Removed favicon 404 error from Swagger HTML
π Internationalization¶
Translation Updates
β’ locales: New translation keys β¦ Added "redeemed" status translations (EN: "Redeemed", DE: "EingelΓΆst") β¦ Added "redeemed" filter translations β¦ Updated "totalRedemptions" to just "Redemptions" (EN/DE) β¦ Plex-specific navigation labels updated in both languages
π§ Technical Improvements¶
Backend
β’ openapi: Custom schema generation
β¦ Explicit OpenAPI version "3.1.0" in schema
β¦ Custom custom_openapi() function ensures proper spec format
β¦ Swagger UI compatible with generated schema
Frontend
β’ vite-config: Extended proxy configuration
β¦ Added /docs proxy for Swagger UI
β¦ Added /openapi.json proxy for OpenAPI schema
β¦ Ensures dev environment works with backend documentation
π Bug Fixes¶
β’ invites: Fixed filter logic for redeemed invites β¦ Redeemed count in stats card now excludes expired/used invites β¦ Only active redeemed invites counted in stat display β¦ Filter logic matches display logic for consistency
β’ oauth: Fixed re-invitation blocking β¦ Previously removed users can now redeem invites again β¦ OAuth flow simplified to allow duplicate invitations β¦ Plex handles duplicate prevention automatically
2.4.0 (2025-12-01)¶
π Watch History & User Analytics¶
New Features
β’ watch-history: Complete Plex watch history tracking β¦ New User History page with comprehensive viewing analytics β¦ Real-time sync of Plex watch history to local database β¦ Track movies, TV episodes, and music playback per user β¦ View progress, duration, view count, and ratings for all content β¦ Background sync service fetches up to 200 most recent history items β¦ Automatic account mapping with Plex system accounts β¦ Persistent storage in SQLite database (WatchHistoryDB model) β¦ Support for thumbnails, studio, genres, and content ratings
β’ user-analytics: Advanced filtering and search β¦ Filter by time period: All Time, Today, This Week, This Month β¦ Filter by content type: All, Movies, TV Episodes, Music β¦ Search across username, email, and content titles β¦ User statistics with total views, favorite content type, and last activity β¦ Per-user detailed history with play progress indicators β¦ Responsive card layout with media type icons and badges β¦ Real-time data refresh with optimized caching (15-minute stale time)
β’ api: Watch history endpoints
β¦ GET /api/plex/watch-history - Retrieve all watch history from database
β¦ Background service automatically syncs every 15 minutes
β¦ Efficient database queries with indexed lookups
β¦ Support for duplicate detection using rating_key + viewed_at
π¨ UI/UX Enhancements¶
New Features
β’ carousel: Traffic and media carousel navigation β¦ DashboardTrafficCards now displays traffic data in paginated carousel β¦ Auto-scrolling carousel for top bandwidth consumers β¦ Previous/Next navigation arrows with smooth transitions β¦ Pagination dots showing current position β¦ Configurable items per page (default: 5 services) β¦ InviteRedemption page features auto-scrolling Plex media showcase β¦ Horizontal scroll animation for poster images
β’ badges: Enhanced visual indicators β¦ Expiration badges on User Accounts cards showing time until expiry β¦ "Expires in X days" display with color coding (red < 7 days, yellow < 30 days) β¦ "Expired" badge for users past expiration date β¦ Badge counters on Services tab showing active service count β¦ User count badges in sidebar navigation
β’ sidebar: Improved navigation β¦ User History menu item with Activity icon β¦ Dynamic badge counts for Services and User Accounts β¦ Responsive collapsing on mobile devices β¦ Active route highlighting with theme colors
π§ Invite System Improvements¶
New Features
β’ invite-editing: Full CRUD operations for invites β¦ Edit existing invites with modal dialog β¦ Update usage limits, expiration dates, and permissions β¦ Modify library access after invite creation β¦ Real-time validation and error handling β¦ Confirmation dialogs for destructive actions
β’ library-selection: Enhanced library picker β¦ Fixed individual library selection in multi-select dropdown β¦ Support for Movies, TV Shows, Music, and All Libraries β¦ Visual checkboxes for selected libraries β¦ "All Libraries" option properly toggles individual selections
β’ expiration-picker: Time selection for expiry dates β¦ Added time picker to expiration date selector β¦ Support for hour and minute precision on invite expiration β¦ User expiration date editor with time selection β¦ Default time set to end of day (23:59) for better UX
π Traffic Agent Improvements¶
New Features
β’ persistence: Traffic data persistence across restarts
β¦ State file saves total upload/download counters to disk
β¦ Automatic state restoration on agent startup
β¦ JSON-based state storage in traffic_state.json
β¦ Prevents data loss when agent restarts
β¦ load_state() and save_state() methods for state management
β¦ State file created automatically on first run
π Bug Fixes¶
β’ refresh: Fixed user refresh button states β¦ Individual refresh buttons now show loading spinner during operation β¦ Disabled state prevents multiple concurrent refreshes β¦ Proper error handling with toast notifications β¦ RefreshCw icon animates during refresh
β’ oauth: Improved Plex OAuth flow β¦ Better error messages for OAuth failures β¦ Automatic email collection for new users β¦ Fixed account mapping with Plex system accounts
β’ services: Service tab count accuracy β¦ Fixed service count badge showing incorrect numbers β¦ Real-time updates when services added/removed β¦ Proper filtering of active vs inactive services
π Documentation¶
β’ localization: Updated translations β¦ Added German translations for User History page β¦ English translations for watch history features β¦ Filter labels, time periods, and content types β¦ Statistics and analytics terminology
π Database Schema Updates¶
β’ models: New watch history schema β¦ WatchHistoryDB table with comprehensive metadata β¦ Fields: user_id, email, username, type, title, viewed_at, duration, progress β¦ Support for TV show hierarchy (grandparent_title, parent_index, index) β¦ Rating, year, thumb, content_rating, studio, summary, genres β¦ Unique constraint on rating_key + viewed_at for duplicate prevention β¦ Indexed columns for fast queries (user_id, email, viewed_at, type)
2.3.0 (2025-11-26)¶
π Plex Invite Management System¶
New Features
β’ invites: Complete Plex invitation system β¦ Create custom invite codes with usage limits and expiration dates β¦ Library-specific access control (Movies, TV Shows, Music, or All) β¦ Permission management (Sync, Live TV/Channels, Plex Home) β¦ OAuth-based redemption flow (Wizarr-style) β¦ Automatic user provisioning to Plex Media Server β¦ Support for both Plex Friends and Plex Home invitations
β’ user-accounts: Advanced user management β¦ View all redeemed Plex users with detailed information β¦ User avatars/thumbnails from Plex profiles β¦ Individual user expiration dates (independent from invite expiration) β¦ Edit user expiration dates via modal dialog β¦ Refresh user information from Plex server on-demand β¦ Delete/remove users from Plex server β¦ Library and permission badges for each user β¦ Real-time statistics (Total Users, Redeemed Invites, Plex Server Name) β¦ Search functionality across username, email, and invite codes β¦ Skeleton loading states matching card layouts
β’ invites-manager: Comprehensive invite administration β¦ Create invites with library selection (multi-select dropdown) β¦ Set usage limits (1-100 or unlimited) β¦ Configure expiration dates for invites β¦ Toggle permissions: Allow Sync, Allow Channels/Live TV, Plex Home β¦ View invite statistics and redemption status β¦ Copy invite links with one click β¦ Active/Expired/Exhausted status indicators β¦ Batch delete and edit capabilities β¦ Real-time invite validation
β’ oauth: Wizarr-style Plex OAuth flow β¦ Secure OAuth PIN-based authentication β¦ Automatic Plex account detection β¦ Email collection for new users β¦ Seamless invitation acceptance β¦ Success/failure redirect handling
β’ api: RESTful invite endpoints
β¦ POST /api/invites/ - Create new invite
β¦ GET /api/invites/ - List all invites with users
β¦ GET /api/invites/{id} - Get specific invite details
β¦ PUT /api/invites/{id} - Update invite settings
β¦ DELETE /api/invites/{id} - Delete invite
β¦ POST /api/invites/validate - Validate invite code
β¦ POST /api/invites/redeem - Redeem invite (OAuth)
β¦ GET /api/invites/stats - Invite statistics
β¦ GET /api/invites/plex/config - Plex server config & libraries
β¦ GET /api/invites/users - List all Plex users
β¦ POST /api/invites/users/{id}/refresh - Refresh user info from Plex
β¦ DELETE /api/invites/users/{id} - Remove user from Plex
β¦ PUT /api/invites/users/{id}/expiration - Update user expiration
π¨ UI/UX Improvements¶
β’ skeleton-loading: Enhanced loading states β¦ Replaced spinner loaders with skeleton cards across UserAccounts page β¦ Skeleton cards match actual card layouts (avatar, text, badges, buttons) β¦ Smooth pulse animation for better perceived performance β¦ Consistent with loading patterns in other pages
β’ user-cards: Beautiful user display β¦ Plex-themed background watermark on user cards β¦ Color-coded library badges (Movies=blue, TV=purple, Music=pink, All=cyan) β¦ Permission badges with icons (Sync, Channels, Plex Home) β¦ Active status indicators with green pulse animation β¦ Hover effects and smooth transitions β¦ Responsive grid layout (½/3 columns)
β’ invite-cards: Rich invite visualization β¦ Usage progress bars showing redemption percentage β¦ Status badges (Active, Expired, Exhausted, Inactive) β¦ Library icons and names displayed inline β¦ Copy invite link button with success feedback β¦ Edit and delete actions with confirmation dialogs
π§ Backend Enhancements¶
β’ database: Extended schema for invites β¦ InviteDB model with SQLite storage β¦ PlexUserDB model with user metadata β¦ Foreign key relationships between invites and users β¦ User expiration field (expires_at) separate from invite expiration β¦ Thumbnail/avatar storage for user profiles β¦ Last seen tracking for user activity
β’ plex-integration: PlexAPI utilities
β¦ invite_plex_friend() - Invite users as Plex Friends
β¦ invite_plex_home() - Invite users to Plex Home
β¦ remove_plex_user() - Remove users from Plex server
β¦ get_plex_libraries() - Fetch available libraries
β¦ refresh_plex_user() - Update user info from Plex API
β¦ Library access control via library IDs
β¦ Permission flags (sync, channels, camera upload)
π Documentation¶
β’ invites: New invite system documentation β¦ Complete guide for creating and managing invites β¦ OAuth redemption flow explanation β¦ Library and permission configuration β¦ API endpoint reference β¦ Troubleshooting common issues
β’ README: Updated feature list β¦ Added Plex Invite Management section β¦ User Accounts management description β¦ OAuth flow documentation β¦ Updated technology stack
π Bug Fixes¶
β’ user-refresh: Fixed concurrent refresh operations β¦ Added refreshingUsers state to track in-progress refreshes β¦ Disabled refresh button during operation β¦ Proper loading spinner on individual user refresh
β’ event-propagation: Fixed copy button click handling β¦ Prevented card navigation when copying invite links β¦ Added stopPropagation to copy button clicks β¦ Success feedback with checkmark icon
2.2.0 (2025-11-25)¶
π¨ Traffic Visualization Enhancement¶
New Features
β’ dashboard: Circular progress traffic cards β¦ Complete redesign of traffic visualization with circular progress indicators β¦ Top 5 services by bandwidth displayed with 200px diameter circular progress rings β¦ Percentage calculated using configured MAX_BANDWIDTH (realistic 3 Gbps = 375 MB/s) β¦ Color-coded service cards: pink, violet, cyan, emerald, amber rotation β¦ Removed line charts in favor of cleaner circular progress design β¦ Active indicator: green pulsing dot on top-right of cards β¦ Centered layout using flexbox (flex flex-wrap justify-center gap-8) β¦ Responsive grid fallback for smaller screens
β’ traffic: Enhanced bandwidth display box β¦ Two-row layout showing both real-time speeds AND cumulative data β¦ Row 1: Current speeds (Upload: blue, Download: green, Total: purple) β¦ Row 2: Total transferred (Uploaded: orange, Downloaded: cyan, Combined: amber) β¦ formatBandwidth(): Handles MB/s and KB/s for current speeds β¦ formatData(): Displays GB with automatic TB conversion for values β₯1000 GB β¦ Mono font for consistent number alignment β¦ Border separator between speed and data rows
β’ traffic-agent: MAX_BANDWIDTH configuration β¦ Added MAX_BANDWIDTH = 375.0 (3 Gbps connection = 375 MB/s) β¦ Backend stores max_bandwidth from agent updates β¦ TrafficMetrics model includes max_bandwidth field β¦ Percentage calculation: (serviceBandwidth / max_bandwidth) Γ 100 β¦ Fallback to relative percentages if max_bandwidth not configured β¦ Comment guide: 125 MB/s = 1 Gbps, 1250 MB/s = 10 Gbps, 12.5 MB/s = 100 Mbps
Bug Fixes
β’ services: Fixed copy button interaction β¦ Service card copy button now properly stops event propagation β¦ handleCopyClick uses e.preventDefault() and e.stopPropagation() β¦ Prevents card link navigation when copying service ID β¦ Copy feedback shows Check icon for 2 seconds after successful copy
π Documentation¶
β’ traffic: Updated monitoring documentation β¦ Documented circular progress visualization approach β¦ Added MAX_BANDWIDTH configuration examples β¦ Bandwidth calculation formulas and percentage logic β¦ Color scheme documentation for service cards
2.1.0 (2025-11-24)¶
βοΈ Configuration Management¶
New Features
β’ config: Unified configuration system β¦ Simplified configuration to two-tier system (environment variables + config.json) β¦ Removed .env file complexity - only HOST, PORT, DEBUG, CORS_ORIGINS needed β¦ All application settings (auth, logging, timezone, API tokens, Plex) managed via config.json β¦ Settings UI provides unified interface for runtime configuration changes β¦ Created comprehensive CONFIGURATION.md documentation β¦ Priority order: config.json > environment variables > hardcoded defaults
β’ config: Settings API with Plex integration β¦ Added /api/settings endpoint with GET/POST operations β¦ Pydantic models for LoggingSettings, GeneralSettings, APISettings, PlexSettings β¦ Moved Plex configuration from database to config.json (server_url, server_token, server_name) β¦ Database now only stores peak_concurrent statistic β¦ Live statistics (movies/shows/users) fetched directly from Plex API β¦ Migration function handles automatic DB β config.json transition
β’ config: Enhanced Settings UI β¦ Unified Settings page with single "Save Settings" button β¦ Sections for Auth, Plex, Logging, General, and API configuration β¦ Added GitHub token and TMDB API key fields for invite redemption flow β¦ Plex validation button to test server connection β¦ All settings load from /api/settings endpoint β¦ Removed separate Plex save - integrated into main settings save
Bug Fixes
β’ plex: Fixed OAuth redemption flow β¦ Updated invite_plex_user_oauth to use settings instead of database β¦ Fixed 'PlexStatsDB' object has no attribute 'server_url' errors β¦ Removed all database field references (server_url, server_token, server_name) β¦ Invites endpoints now use settings.PLEX_SERVER_NAME instead of database query β¦ get_plex_stats endpoint loads config from config.json and fetches live stats
β’ docker: Cleaned up environment variables β¦ Removed application settings from docker-compose.yml (LOG_LEVEL, CORS_ORIGINS, etc.) β¦ Kept only essential container params (PGID, PUID, TZ, TERM, HOST, PORT, DEBUG) β¦ CORS moved back to environment variables (deployment-level security setting) β¦ Simplified .env.example to server parameters only with migration comments
π¨ UI/UX Improvements¶
New Features
β’ monitor: Clickable service cards β¦ Service cards now link directly to service URLs β¦ Removed separate URL badge - entire card is clickable β¦ Added hover effects: border highlights to theme-primary color β¦ Service name changes color on hover for visual feedback β¦ Maintained target="_blank" for security
β’ dashboard/services/traffic: Consistent hover effects β¦ Applied clickable card pattern across all pages β¦ DashboardServiceCard, ServiceCard, and Traffic cards now clickable β¦ Unified hover styling: border-theme-primary + shadow-lg β¦ Action buttons preventDefault to avoid navigation conflicts β¦ Consistent user experience across the application
π Authentication & Security Improvements¶
Bug Fixes
β’ auth: fixed Basic Auth popup with ENABLE_AUTH=false
β¦ Added HTTPBasic(auto_error=False) to prevent automatic authentication challenge
β¦ Changed credentials parameter to Optional[HTTPBasicCredentials] in require_auth dependency
β¦ Fixed browser Basic Auth popup appearing on /api/invites/plex/config endpoint
β¦ Authentication now properly skips when ENABLE_AUTH=false without triggering login prompts
β¦ Added proper credential validation check when auth is enabled
β’ ui: authentication settings always visible β¦ Removed conditional rendering of auth settings based on ENABLE_AUTH state β¦ Auth toggle and credentials form now always visible in Settings page β¦ Allows dual-layer security: Authelia/Traefik + optional Komandorr Basic Auth β¦ Dynamic warning message adapts based on auth enabled/disabled state β¦ Users can enable additional security layer on top of external authentication
Documentation
β’ authelia: reference configuration β¦ Created complete Authelia configuration file (authelia-config.yml) β¦ Proper access control rule ordering (specific domains before wildcards) β¦ API endpoint bypass rules for /api/_ paths β¦ Public invite page bypass rules for /invite/_, /invites, /redeem β¦ NTP time synchronization configuration β¦ Complete session, regulation, storage, and notifier settings
β’ traefik: docker-compose labels β¦ Updated docker-compose.yml with Traefik routing configuration β¦ Three-router setup: API (priority 100), public invites (priority 90), main app (priority 10) β¦ API routes bypass Authelia for frontend functionality β¦ Public invite redemption pages accessible without authentication β¦ Main application protected by Authelia middleware
2.0.0 (2025-11-23)¶
π Major Release - VOD Invites System¶
New Features
β’ invites: Complete VOD invite management system β¦ New InvitesManager component with full CRUD operations β¦ Create invite codes with customizable settings (usage limits, expiration, permissions) β¦ Copy invite links with one-click feedback toast notifications β¦ Real-time invite statistics: total invites, active invites, total users, active users β¦ Permission control: allow_sync, allow_camera_upload, allow_channels toggles β¦ iOS-style toggle switches for permission settings in create modal β¦ Library selection support (all libraries or specific ones) β¦ 24-hour time format for all timestamps β¦ Permission badges display on invite cards (shows "None" when no permissions set)
β’ invites: Backend API endpoints β¦ POST /api/invites/ - Create new invite with validation β¦ GET /api/invites/ - List all invites with users β¦ GET /api/invites/{invite_id} - Get single invite details β¦ PUT /api/invites/{invite_id} - Update invite settings β¦ DELETE /api/invites/{invite_id} - Delete invite β¦ POST /api/invites/redeem - Redeem invite code and create Plex user β¦ POST /api/invites/validate - Validate invite code before redemption β¦ GET /api/invites/stats - Get aggregate invite statistics β¦ Plex server name integration from PlexStatsDB
β’ invites: Database schema
β¦ New invites table with code, expiration, usage limits, permissions
β¦ New plex_users table for tracking invited users
β¦ Foreign key relationships between invites and users
β¦ Automatic invite code generation (8-character alphanumeric)
β¦ Soft delete support with is_active flag
β’ ui: Unified stats card styling β¦ Traffic page style applied to Dashboard and Invites pages β¦ Consistent layout: small icon + label on left, large icon on right β¦ Left-aligned values for better readability β¦ Rounded-lg borders with shadow-sm hover effects β¦ Theme-consistent colors and spacing
β’ plex: Server name display β¦ Fetch Plex server name from /api/plex/stats endpoint β¦ Display real server name (e.g., "StreamNet VOD") on invite cards β¦ Fallback to "Plex Server" if name not available β¦ Automatic server name fetching on component mount
β’ navigation: VOD Invites menu item β¦ New sidebar navigation entry: "VOD Invites" β¦ Accessible at /invites route β¦ Film icon for visual consistency
Technical Improvements
β’ backend: Enhanced Pydantic models β¦ Invite, InviteCreate, InviteUpdate, InviteWithUsers models β¦ PlexUser model for user tracking β¦ RedeemInviteRequest and ValidateInviteResponse models β¦ Proper serialization with model_dump() support
β’ frontend: Component architecture β¦ Reusable toast notifications via ToastContext β¦ API service abstraction for invite endpoints β¦ Real-time data fetching and state management β¦ Internationalization ready with i18next integration
β’ security: Invite validation β¦ Expiration checking (date-based) β¦ Usage limit enforcement β¦ Active status validation β¦ Duplicate email prevention
Bug Fixes
β’ Fixed Pydantic model serialization excluding plex_server field β’ Fixed console logging showing undefined plex_server values β’ Fixed stats card alignment issues across different pages β’ Fixed permission badges not showing when no permissions selected β’ Fixed JSX syntax errors from duplicate code blocks
1.8.0 (2025-11-21)¶
Features¶
β’ ui: modern premium card design β¦ Complete visual redesign of DashboardServiceCard and ServiceCard components β¦ Gradient backgrounds: from-theme-card via-theme-card to-theme-hover β¦ Enhanced shadows with colored glows on hover (shadow-theme-primary/10) β¦ Rounded-xl corners (12px) for modern aesthetic β¦ Icon glow effects with scale animations on hover β¦ Smooth 300ms transitions throughout
β’ ui: redesigned service cards β¦ Clickable card containers linking directly to service URLs β¦ Removed URL section for cleaner layout β¦ Action buttons (Check, Edit, Delete) moved to header, right-aligned below status badges β¦ All buttons use consistent theming with hover effects β¦ Stats displayed in responsive grid (4 columns with traffic, 2 columns without) β¦ Enhanced typography: bold headings, semibold badges, uppercase labels
β’ ui: enhanced status badges β¦ Gradient backgrounds for status indicators β¦ Shadow colors matching status (green/red/yellow with 20% opacity) β¦ Improved text contrast with -400 color variants β¦ Larger padding and font sizes for better readability
β’ ui: modern traffic chart β¦ Complete redesign of DashboardTrafficChart component β¦ SVG glow filters for chart lines β¦ Grid background pattern with 20px squares β¦ Animated pulse indicators on active services β¦ Card-based legend layout with gradient backgrounds β¦ Info overlay with animated Activity icon β¦ Enhanced color scheme with primary/glow properties
β’ ui: improved modal dropdowns β¦ ServiceModal type dropdown now uses custom styled dropdown β¦ Matches group dropdown theme: bg-theme-card, border-theme, shadow-lg β¦ Selected items highlighted with theme-primary background β¦ Check icon for selected item, hover effects on options β¦ Click outside to close functionality
β’ database: Plex configuration migration β¦ Created PlexStatsDB table with server_url, server_token, server_name, peak_concurrent fields β¦ Migrated Plex config from JSON file to SQLite database β¦ New API endpoints: GET /api/plex/stats, POST /api/plex/stats/peak, POST /api/plex/stats/reset β¦ Migration script (migrate_plex_to_db.py) created for one-time data transfer β¦ Automatic migration on server startup checks for JSON file and migrates to database β¦ Backup created during migration process
β’ vod: enhanced peak concurrent tracking β¦ Peak concurrent counter now persists in database instead of localStorage β¦ Uses React refs to prevent stale closure issues and decreasing values β¦ Functional setState for accurate peak tracking β¦ Database persistence enables multi-user sync and centralized stats
Changed¶
β’ ui: dynamic stats grid β¦ Response and Checked boxes take full width (2 columns) when no traffic data β¦ Expands to 4 columns when upload/download traffic values are present β¦ Better use of available space based on data availability
β’ ui: card spacing adjustments β¦ Increased spacing between service name and type/description badges (mb-2 β mb-3) β¦ Better visual hierarchy in card headers
Fixed¶
β’ dashboard: traffic chart "ALL" tab filtering β¦ Fixed chart not displaying data on "ALL" tab β¦ Added special case check: if activeTab === "ALL" show all services β¦ Previously tried to match "ALL" as a group name
β’ docs: changelog edit link redirect β¦ Fixed changelog page edit link to point to root CHANGELOG.md β¦ Previously pointed to docs/changelog.md (copy) instead of source file β¦ Added template override in docs/overrides/main.html
1.7.0 (2025-11-20)¶
Features¶
β’ ui: 4-column grid layout β¦ Service cards now display in 4 columns on large screens (xl:grid-cols-4) β¦ Applied to Dashboard, Services, Monitor, and Traffic pages β¦ Improved information density and screen space utilization
β’ ui: compact service cards β¦ Reduced padding, margins, and font sizes across all service cards β¦ ServiceCard: p-6βp-4, text-lgβtext-base, optimized spacing β¦ Traffic cards: p-6βp-4, stats padding p-3βp-2, text-xlβtext-base β¦ More services visible on screen with less scrolling
β’ ui: problem badges on service cards β¦ Added "Slow" badge to services with response_time > 1000ms β¦ Yellow warning badge displays on Dashboard, Services, and Monitor pages β¦ Visual indicator for performance issues alongside status badges
β’ monitoring: average response time card β¦ Added cumulative average response time stat card to Monitor page β¦ Displays aggregated response time across all services β¦ Blue color scheme with Zap icon, consistent with Dashboard
β’ navigation: clickable stats cards
β¦ Dashboard stats cards now navigate to relevant pages on click
β¦ Upload/Download/Total Transfer β Traffic page
β¦ Avg Response/Active (5min) β Monitor page
β¦ VOD Streams β VOD Monitor page
β¦ All cards have cursor-pointer for better UX
β’ i18n: updated navigation labels β¦ "Services" β "Servers" β¦ "Monitor" β "Response Monitor" β¦ "Traffic" β "Traffic Monitor" β¦ "VOD Streams" β "VOD Monitor" β¦ Updated in both English and German translations
Changed¶
β’ ui: download color scheme β¦ Changed download traffic color from indigo to green β¦ Upload remains blue for better visual distinction β¦ Applied across Dashboard total transfer card
β’ settings: removed duplicate controls β¦ Removed theme and language settings from Settings page β¦ Settings now accessible only via navbar dropdowns β¦ Cleaner settings page focused on core configuration
Fixed¶
β’ dashboard: problem card filtering β¦ Fixed problem filter to correctly check response_time > 1000ms β¦ Previously only checked status === "problem" β¦ Now properly filters services with slow response times
β’ traffic: tab filtering β¦ Added "ALL" tab to Traffic, Monitor, Services, and Dashboard β¦ Fixed tab filtering to actually filter services by selected tab β¦ Tab counts now accurate and filtering works as expected
β’ services: missing variable errors β¦ Fixed groupedServices undefined error in Services.jsx β¦ Added missing servicesInActiveGroup calculation in Traffic.jsx β¦ Resolved all console errors related to undefined variables
1.6.0 (2025-11-14)¶
Features¶
β’ backend: SQLite database storage
β¦ Migrated from JSON file storage to SQLite database for better scalability
β¦ Implemented SQLAlchemy ORM with three tables: services, response_history, traffic_history
β¦ Automatic database initialization on first run
β¦ Stores up to 1000 historical data points per service (vs 100 in memory)
β¦ Single database file: backend/data/komandorr.db
β’ migration: automatic JSON to SQLite import
β¦ Created migration script migrate_to_sqlite.py to import existing services
β¦ Preserves all service data including status, history, and traffic metrics
β¦ Automatically backs up original JSON file as .json.backup
β¦ Smooth upgrade path for existing installations
β’ database: efficient history management β¦ Keeps last 100 data points in memory for fast API responses β¦ Stores up to 1000 points in database for long-term history β¦ Automatic cleanup of old data points to prevent database bloat β¦ Timezone-aware datetime handling with naive UTC storage
Changed¶
β’ storage: replaced JSON with SQLite
β¦ Services no longer stored in services.json file
β¦ All service data now persisted in komandorr.db database
β¦ Improved query performance for historical data
β¦ Better concurrent access handling
β’ dependencies: added SQLAlchemy
β¦ Added sqlalchemy>=2.0.0 to requirements.txt
β¦ Updated documentation with SQLite information
β¦ Added database schema documentation
β’ docs: updated for SQLite β¦ README now mentions SQLite storage location β¦ Added migration instructions for existing JSON users β¦ Updated configuration guide with database details β¦ Added database schema explanation
Fixed¶
β’ type checking: SQLAlchemy ORM type hints
β¦ Added # type: ignore comments for SQLAlchemy ORM operations
β¦ Updated pyrightconfig.json to suppress false positive type errors
β¦ Resolved Pylance warnings about Column type assignments
1.5.8 (2025-11-13)¶
Features¶
β’ ui: clickable stats card filters β¦ Stats cards now act as filter buttons on Dashboard, Services, and Monitor pages β¦ Click Total/Online/Offline/Problem cards to filter services by status β¦ Active filters show colored borders (green/red/yellow) without shadow effects β¦ All three pages have consistent filtering behavior
β’ ui: improved empty states β¦ Added contextual empty state messages when filtering shows no results β¦ Different icons per state: π’ for no online services, β for no offline/problem β¦ Themed messages using theme-primary color for better visibility β¦ Clear, reassuring messages like "All services are operational!"
β’ ui: redesigned stats cards β¦ Compact horizontal layout with labels and numbers side-by-side β¦ Large SVG icons on the right side of each card β¦ Uppercase labels with wider tracking for better readability β¦ Fully theme-aware design that adapts to light/dark modes β¦ Hover effects with shadow transitions
β’ docs: bootswatch slate theme β¦ Switched from MkDocs Material to mkdocs-bootswatch slate theme β¦ Dark theme with Bootstrap 4 styling β¦ Updated GitHub Actions workflow to use new theme β¦ Modern, clean design with better readability
Changed¶
β’ ui: stats cards are now interactive buttons β¦ Converted static stats displays to clickable filter controls β¦ Reduced gap spacing for more compact layout (gap-4) β¦ Removed hover scale effects in favor of cleaner interactions
β’ docs: theme dependencies β¦ Replaced mkdocs-material with mkdocs-bootswatch in requirements β¦ Updated docs deployment workflow with new theme package
1.5.7 (2025-11-13)¶
Features¶
β’ logging: enhanced logging system with colorama β¦ Implemented cross-platform colored console output using colorama library β¦ Added beautiful color-coded log levels (DEBUG=cyan, INFO=green, WARNING=yellow, ERROR=red, CRITICAL=magenta) β¦ Colored log messages that match their severity level for better readability β¦ Separate formatters for console (colored) and file (plain text) output β¦ Enhanced file logging with detailed timestamps and optional module/function/line tracking β¦ New logger.exception() method for automatic traceback logging β¦ New logger.set_level() method for dynamic log level changes at runtime β¦ Auto-delete log file on restart for fresh logging sessions
β’ configuration: extensive logging customization β¦ Added LOG_TO_FILE setting to enable/disable file logging (default: true) β¦ Added LOG_SHOW_TIMESTAMP setting for console timestamps (default: false) β¦ Added LOG_FILE_INCLUDE_LOCATION setting for module/function info in files (default: true) β¦ Improved Settings model to include all new logging configuration options β¦ Logger now reads from Pydantic Settings instead of raw environment variables β¦ Updated .env.example with comprehensive logging documentation
β’ traffic-agent: enhanced output formatting β¦ Created AgentLogger class with colored output for traffic monitoring agent β¦ Replaced all print statements with proper logging methods β¦ Color-coded traffic statistics and error messages β¦ Better visual separation with styled headers and separators
β’ documentation: comprehensive logging guides β¦ Created docs/configuration/logging.md with full logging documentation β¦ Added demo_logger.py script for interactive logging demonstrations β¦ Created LOGGER_IMPROVEMENTS.md with migration guide and examples β¦ Created .env.logging.example with configuration templates β¦ Documentation covers all log levels, configuration options, and best practices
Changed¶
β’ dependencies: added colorama β¦ Added colorama>=0.4.6 to backend/requirements.txt β¦ Added colorama>=0.4.6 to traffic/requirements.txt β¦ Cross-platform colored terminal support for Windows, macOS, and Linux
β’ logging: improved uvicorn integration β¦ Updated UvicornFormatter to use colorama instead of ANSI codes β¦ Consistent color scheme between application and server logs β¦ Better startup messages with styled output
β’ backend: configuration enhancements β¦ Settings class now includes LOG_TO_FILE, LOG_SHOW_TIMESTAMP, LOG_FILE_INCLUDE_LOCATION β¦ Logger singleton pattern ensures consistent configuration across application β¦ Backward compatible with existing logging code (100% compatibility)
Technical Details¶
β’ architecture: enhanced logger class β¦ ColoredConsoleFormatter class for terminal output with colorama β¦ DetailedFileFormatter class for structured file logging β¦ Singleton pattern prevents duplicate logger instances β¦ Timezone-aware timestamps using ZoneInfo β¦ UTF-8 encoding support for international characters β¦ Automatic log directory creation β¦ Graceful degradation to console-only if file logging fails
β’ benefits β¦ Easier debugging with color-coded severity levels β¦ Professional-looking console output β¦ Detailed file logs for troubleshooting and auditing β¦ Highly configurable without code changes β¦ Cross-platform consistency β¦ Zero breaking changes - fully backward compatible
1.5.6 (2025-11-10)¶
Features¶
β’ assets: upgraded logo and favicon to SVG format β¦ Replaced PNG logo and favicon files with scalable SVG versions β¦ Updated all frontend components to use SVG logo (/logo.svg) β¦ Updated frontend HTML to use SVG favicon with proper MIME type (image/svg+xml) β¦ Updated backend API documentation favicon reference to SVG β¦ Updated MkDocs configuration to use SVG assets for documentation β¦ Updated main README.md to reference SVG logo β¦ Updated documentation index.md to use SVG logo β¦ Copied SVG assets to all necessary directories (backend/icons/, docs/images/)
Changed¶
β’ quality: improved visual assets β¦ SVG format provides better scalability and quality at all sizes β¦ Smaller file sizes compared to PNG equivalents β¦ Vector graphics eliminate pixelation on high-DPI displays β¦ Future-proof format compatible with all modern browsers β¦ Maintained PNG versions as legacy backups
β’ documentation: updated asset references β¦ Updated docs/images/README.md to reflect both SVG and PNG versions β¦ Updated docs/README.md structure documentation β¦ All documentation now uses superior SVG format
1.5.5 (2025-11-09)¶
Features¶
β’ ui: comprehensive mobile responsiveness β¦ Optimized all pages for mobile devices with responsive layouts β¦ Reduced padding and spacing on small screens (px-3 sm:px-4, py-4 sm:py-6) β¦ Improved button layouts with proper flex wrapping and mobile-first sizing β¦ Smaller text sizes on mobile (text-xs sm:text-sm, text-2xl sm:text-3xl) β¦ Smaller icon sizes on mobile (size={16} to size={18}) β¦ Full-width buttons on mobile that adapt to inline on larger screens β¦ Responsive search inputs with proper mobile sizing β¦ Updated all main pages: Dashboard, Services, Monitor, Traffic, VOD Streams β¦ Updated Settings and About pages with mobile-optimized headers β¦ TopNavbar padding reduced for mobile (px-3 sm:px-6) β¦ Layout properly handles mobile width constraints
β’ ux: improved mobile interactions β¦ Buttons now use justify-center for better mobile alignment β¦ Action buttons expand to full width on mobile, inline on desktop β¦ Better touch targets with appropriate padding on mobile β¦ Responsive gap spacing (gap-2 sm:gap-3, gap-3 sm:gap-4) β¦ Proper text truncation on small screens β¦ Flexible button groups that wrap on mobile
Changed¶
β’ layout: mobile-first approach β¦ All pages now use responsive spacing utilities β¦ Consistent mobile breakpoint usage across all components β¦ Better utilization of screen real estate on mobile devices β¦ Improved readability with appropriate font scaling
1.5.1 (2025-11-09)¶
Features¶
β’ ui: group-based filtering across all pages β¦ Added group tabs to Monitor page with service filtering by selected group β¦ Added group tabs to Traffic page with service filtering by selected group β¦ Added group tabs to Services page with service filtering by selected group β¦ Tabs display group name and service count for each group β¦ Only visible when multiple groups exist β¦ Consistent tab styling across Dashboard, Monitor, Traffic, and Services pages
β’ ux: background refresh improvements β¦ Dashboard now preserves scroll position during automatic 30-second updates β¦ Dashboard maintains active group tab selection during background refresh β¦ Monitor preserves scroll position during automatic 10-second updates β¦ Monitor maintains active group tab selection during background refresh β¦ Traffic preserves scroll position during automatic 10-second updates β¦ Traffic maintains active group tab selection during background refresh β¦ Services preserves scroll position during automatic 30-second updates β¦ Services maintains active group tab selection during background refresh β¦ All pages update seamlessly without disrupting user's current view or context β¦ Loading states only shown on initial load, not during auto-refresh
Changed¶
β’ navigation: improved user experience β¦ All pages now support consistent group-based filtering β¦ Auto-refresh intervals maintained: Dashboard/Services (30s), Monitor/Traffic (10s) β¦ Scroll position and tab context preserved across all pages
1.5.0 (2025-11-09)¶
Features¶
β’ dashboard: comprehensive UI/UX improvements
β¦ Created dedicated DashboardServiceCard component for dashboard-specific service display
β¦ Added horizontal stats bar layout with individual stat boxes (Response Time, Last Check, Upload/Download Speed)
β¦ Removed Service ID display from dashboard cards for cleaner appearance
β¦ Integrated real-time traffic data directly into dashboard service cards
β¦ Stats now display with proper labels above values for consistent card sizing
β¦ Added conditional rendering for traffic data (only shows when available)
β¦ Created DashboardTrafficChart component with enhanced multi-service bandwidth visualization
- Traffic chart displays all active services with distinct colored wave lines
- Toggle between upload/download bandwidth views with pill-style switcher
- Last 60 data points with auto-scaling Y-axis and labeled values
- Service legend with color indicators and current bandwidth values
- 10 distinct colors for different services (blue, green, amber, red, violet, pink, cyan, emerald, orange, indigo)
- Gradient area fills under each service line for better visibility
- Auto-refresh every 30 seconds with dashboard traffic data
- Dedicated refresh button with spinning animation
- Total bandwidth display showing aggregate upload/download speed
- Sleek dark theme with thinner lines (1.2px) for professional appearance
- Subtle gradients (12% opacity) and minimal grid lines
- Y-axis labels with compact spacing for easy value reading
- Responsive legend grid layout (1-4 columns based on screen size)
- Service cards with hover effects and smooth transitions
- Group-based filtering: Chart positioned below group tabs and filters traffic by active group
- Dynamic filtering shows only services in the selected group tab
- Automatic refresh maintains group context
- Ultra-thin lines: Reduced to 0.25px for sleek, modern appearance matching design specifications
β¦ Dashboard Customization: Added comprehensive visibility and appearance controls
- New "Customize" button with Settings icon in dashboard header
- Modal popup interface with backdrop blur and smooth animations
- Toggle visibility of Statistics Card, Traffic Chart, and Service Cards independently
- Chart Line Thickness Control: Interactive slider to adjust traffic chart line width (0.1px - 2px)
- Real-time preview with current value display
- Color-coded slider progress bar
- Dynamic drop shadow scaling based on thickness
- Smooth transitions when changing values
- Settings persist in localStorage across sessions
- Eye/EyeOff icons indicate current visibility state (green/gray)
- iOS-style toggle switches replace checkboxes for modern appearance
- Organized layout with divider separating visibility and appearance settings
- Fully translated (English/German) with dashboard.customize, dashboardVisibility, showStatsCard, showTrafficChart, showServiceCards, chartLineThickness, thin, thick keys
β’ services: enhanced service card design
β¦ Redesigned ServiceCard component with modern badge-based layout
β¦ Added Service ID display with copy-to-clipboard functionality
β¦ Conditional icon display (only renders if service has custom icon)
β¦ Improved action button layout with primary "Check Now" button
β¦ Consistent badge styling across all service information
β’ about: improved release section β¦ Limited release display to 5 most recent releases for better performance β¦ Added "View All Releases" button in section header (right-aligned) β¦ Button only appears when more than 5 releases are available β¦ Direct link to GitHub releases page for full release history β¦ Added translations for "View All Releases" (English/German)
β’ about: enhanced documentation access β¦ Added direct link to documentation site (https://cyb3rgh05t.github.io/komandorr) β¦ Separated "Documentation" and "API Documentation" links for clarity β¦ Both links open in new tabs with proper external link icons
β’ ui: improved consistency and polish
β¦ Added skeleton loading animations across all pages (Dashboard, Monitor, Traffic, Services)
β¦ Standardized content width across all pages (removed inconsistent max-width constraints)
β¦ All icons now use solid colors (removed opacity/fade effects)
β¦ Consistent badge styling: px-2.5 py-1 bg-theme-hover border border-theme rounded-md
β¦ Progress bars now use solid theme colors throughout
β’ vodstreams: comprehensive timestamp tracking system β¦ Implemented localStorage-based activity timestamp tracking with persistence β¦ Added live timer badges showing elapsed time for active downloads β¦ Smart tracking logic: starts immediately for new activities (<2%), waits for 1% progress change for in-progress activities β¦ Timer states: undefined (new) β null (waiting) β number (tracking with timestamp) β¦ Fixed timer reset issues on page refresh with proper state management β¦ Added "Tracking..." state for activities waiting to start timing β¦ Real-time timer updates with live elapsed time display
Bug Fixes¶
β’ dashboard: fixed missing Search icon import β¦ Re-added Search icon to imports after cleanup β¦ Fixed ReferenceError when rendering search bar
β’ traffic: fixed refresh button functionality
β¦ Updated fetchTrafficData to accept isManualRefresh parameter
β¦ Fixed refresh button not showing animation during manual refresh
β¦ Prevented automatic interval updates from clearing refresh state
β’ backend: added traffic_history to API response
β¦ Modified /traffic/summary endpoint to include traffic_history field
β¦ Limited history to last 60 data points to optimize response size
β¦ Fixed dashboard traffic chart showing no data
Documentation¶
β’ docs: improved styling and readability
β¦ Darkened primary navbar color from #e97b2e to #c05d1a for better contrast
β¦ Updated accent color from #ff8c42 to #d9681f for more professional appearance
β¦ Fixed badge rendering in documentation home page
β¦ Converted markdown badge syntax to proper HTML with alignment attributes
β¦ Added CSS improvements for center-aligned content and badge spacing
β¦ Better visual hierarchy and spacing throughout documentation
Internationalization¶
β’ locales: added new translation keys β¦ Added "documentation" key to English and German locales β¦ Added "viewAllReleases" key for release section button β¦ Added "trafficChart" key for dashboard traffic overview β¦ Added "noData" and "noActiveTraffic" keys for traffic chart empty states β¦ English: "Documentation", "View All Releases", "Traffic Overview", "No traffic data available", "No active traffic" β¦ German: "Dokumentation", "Alle Releases anzeigen", "Traffic-Γbersicht", "Keine Traffic-Daten verfΓΌgbar", "Kein aktiver Traffic"
1.4.2 (2025-11-08)¶
Bug Fixes¶
β’ version: hardcoded fallback causing false update alerts β¦ Removed hardcoded version fallback from '1.4.0' to 'unknown' β¦ Fixed "Update Available" badge showing incorrectly when on latest version β¦ Version now properly read from release.txt in Docker containers
β’ monitoring: timezone issues in service check timestamps
β¦ Changed backend to use UTC timestamps (datetime.now(timezone.utc)) for all service checks
β¦ Fixed "Last Check" showing incorrect times (e.g., "1h ago" when just checked)
β¦ Improved formatDistanceToNow() with validation and edge case handling
β¦ Added null/undefined checks and invalid date handling
β¦ Timestamps now consistent across all timezones in Docker deployments
Features¶
β’ debug: version troubleshooting endpoint
β¦ Added /api/version/debug endpoint for diagnosing version detection issues
β¦ Shows environment type (docker/local), file paths, existence, and content
β¦ Helps troubleshoot path issues in containerized deployments
Documentation¶
β’ docs: cleaner appearance and proper branding β¦ Removed all emoji characters from documentation files β¦ Copied logo.png and favicon.png from frontend to docs/images β¦ Updated mkdocs.yml to use separate favicon.png file β¦ Replaced emoji bullets with plain text throughout documentation β¦ Changed 'Made with β€οΈ' to 'Made with love'
1.4.1 (2025-11-08)¶
Bug Fixes¶
β’ traffic: timestamp display and timezone handling
β¦ Fixed traffic last_updated timestamp not being loaded correctly from JSON storage
β¦ Added proper datetime deserialization for traffic metrics and history on service load
β¦ Changed backend to use UTC timestamps (datetime.now(timezone.utc)) for consistency
β¦ Updated frontend to display timestamps in 24-hour format (DD/MM/YYYY, HH:MM:SS)
β¦ Timestamps now automatically convert from UTC to user's local timezone
β¦ Added "Never" fallback when no traffic data has been received
β¦ Created formatDateTime() helper function for consistent datetime formatting across Traffic page
1.4.0 (2025-11-08)¶
Features¶
β’ vod streams: plex integration β¦ Added new "VOD Streams" sidebar tab for monitoring Plex Media Server activities β¦ Implemented Plex server configuration in Settings page with URL and token input β¦ Added validation for Plex server connection before saving configuration β¦ Real-time display of Plex downloads, streams, and transcode activities β¦ Activity cards show progress bars, type badges (download/stream/transcode/pause), and titles β¦ Monitor-style header with search functionality, LIVE indicator, and refresh button β¦ Auto-refresh every 10 seconds for real-time activity updates β¦ Three stat cards: Total activities, Online (downloads), Problem (errors) β¦ Pagination support (10 items per page) for large activity lists β¦ "Not configured" state with direct link to Settings when Plex is not set up β¦ Bilingual support (English/German) for all UI elements
β’ plex backend: comprehensive api
β¦ Created /api/plex/config endpoints (GET/POST) for Plex server configuration management
β¦ Added /api/plex/validate endpoint for testing Plex connection before saving
β¦ Implemented /api/plex/activities endpoint fetching from both /activities (downloads) and /status/sessions (streams)
β¦ Added /api/downloads alias endpoint for compatibility
β¦ JSON file storage for Plex configuration at backend/data/plex_config.json
β¦ Debug endpoint /api/plex/debug/raw-activities for troubleshooting
β¦ Proper error handling and logging for all Plex operations
β’ traffic monitoring: dashboard integration β¦ Added traffic data display to Dashboard service cards β¦ Shows upload/download speeds with color-coded icons (blue for upload, green for download) β¦ Auto-refresh traffic data every 30 seconds β¦ Traffic only displays when bandwidth > 0 for cleaner UI β¦ Maintains separate layouts for Dashboard (inline cards) and Services page (ServiceCard component)
β’ search functionality: vod streams β¦ Implemented real-time search filtering for VOD activities β¦ Search by title, subtitle, or activity type β¦ Auto-reset to page 1 when search query changes β¦ Clear search button when no results found β¦ Different empty state messages for no activities vs. no search results
β’ settings page: plex configuration β¦ Added Plex Server Settings section below Authentication settings β¦ Server URL and token input fields with validation β¦ Visual feedback: green button for validated connection, red for failed β¦ Loading spinner during validation process β¦ Help text for finding Plex token β¦ Theme-compatible button styling (smaller size, proper colors)
Fixed¶
β’ timezone: configuration bug
β¦ Fixed timezone always showing UTC in About page
β¦ Removed conflicting @property timezone that was checking for TZ environment variable
β¦ Now correctly reads TIMEZONE from .env file (e.g., Europe/Berlin)
β¦ Backend properly returns configured timezone via /api/config endpoint
β¦ Frontend dateUtils correctly fetches and caches timezone for all date formatting
β’ settings: duplicate authentication section β¦ Removed duplicate Authentication Settings section that appeared after Plex settings β¦ Proper order: Authentication β Plex β Language β Theme
β’ plex settings: button sizing β¦ Changed buttons from flex-1 (full width) to fixed width with px-6 padding β¦ Reduced button height (py-2 instead of py-3) and font size (text-sm) β¦ Smaller icons (16px instead of 20px, h-4 w-4 spinner)
Changed¶
β’ dateUtils: improved timezone fetching β¦ Added caching mechanism to prevent multiple simultaneous timezone fetches β¦ Console logging of loaded timezone for debugging β¦ Proper async handling with promise reuse during concurrent requests
Technical¶
β’ service layer: plex abstraction
β¦ Created frontend/src/services/plexService.js with clean API methods
β¦ Methods: testPlexConnection, getPlexConfig, savePlexConfig, fetchPlexActivities
β¦ Normalized data structure from different Plex endpoints
β¦ Proper error handling and user-friendly error messages
β’ translations: comprehensive coverage
β¦ Added vodStreams section to en.json and de.json
β¦ Added plex section with server settings, validation, and status messages
β¦ All UI elements fully translated in English and German
β’ dependencies: pydantic settings β¦ Added pydantic-settings package for proper configuration management β¦ Required for Pydantic v2 BaseSettings functionality
1.3.2 (2025-11-06)¶
Features¶
β’ service types: added server type β¦ Added "Server" as a new service type option in Add/Edit Service modal β¦ Server type available for traffic monitoring without health checks β¦ Added translations for server type in English and German
Changed¶
β’ Updated service type dropdown to include server option β’ Enhanced service type flexibility for different monitoring scenarios
1.3.1 (2025-11-06)¶
Features¶
β’ ui: logo integration β¦ Added Komandorr logo to sidebar, loading screen, and README β¦ Integrated favicon.png for browser tabs β¦ Sidebar logo displays at 48px height with auto-width β¦ Loading screen logo displays at 64px height β¦ README logo displays centered at 400px width
β’ ui: refresh button improvements β¦ Added smooth spin animation to all refresh buttons β¦ Renamed "Check Now" buttons to "Refresh" across all pages β¦ Added 500ms transition duration for smooth rotation β¦ Implemented disabled state during refresh operations
β’ ui: loading improvements β¦ Replaced in-app LoadingScreen with themed Loader2 spinner β¦ LoadingScreen now only used for initial app startup β¦ Added minimum display time (1 second) for smooth UX β¦ Implemented 300ms transition delay before hiding loading screen β¦ Monitor and Services pages now use simple Loader2 component
β’ ui: consistent page padding
β¦ Unified all page containers to use px-4 py-6 space-y-6
β¦ Removed inconsistent padding across Dashboard, Traffic, and other pages
β¦ All pages now have uniform spacing and alignment
β’ logging: colored and consistent output
β¦ Implemented ColoredFormatter with ANSI color codes for different log levels
β¦ Removed timestamps from console output for cleaner formatting
β¦ All log messages now follow format: LEVELNAME - message
β¦ Color scheme: DEBUG (Cyan), INFO (Green), WARNING (Yellow), ERROR (Red), CRITICAL (Magenta)
β¦ Created custom UvicornFormatter to match application logging style
β¦ Unified all uvicorn logs (startup, requests, errors) with consistent formatting
Changed¶
β’ traffic: header removal β¦ Removed header section from Traffic page for cleaner layout β¦ Traffic page now directly displays summary cards
β’ translations: updated labels β¦ Updated German translation: "Jetzt prΓΌfen" β "Aktualisieren" β¦ Updated English translation: "Check Now" β "Refresh"
Fixed¶
β’ ui: width consistency β¦ Fixed inconsistent page widths between Dashboard and other pages β¦ Standardized container padding across all page components
1.3.0 (2025-11-06)¶
Features¶
β’ ui: improved service card styling
β¦ Redesigned service cards with cleaner, more cohesive theme-based appearance
β¦ Removed gradient-style colored backgrounds and borders
β¦ Unified styling using bg-theme-card for consistent look across all themes
β¦ Added subtle shadows for better depth perception
β¦ Improved button hover states with theme-consistent backgrounds
β¦ Reduced icon sizes (18px to 16px) for cleaner appearance
β¦ Tightened button spacing for more compact design
β’ themes: enhanced theme consistency
β¦ Fixed theme variable inconsistencies between :root and [data-theme="dark"]
β¦ Unified background gradient application across default and dark themes
β¦ Improved theme variable definitions for better cross-theme compatibility
Changed¶
β’ dashboard: service grouping improvements β¦ Enhanced service grouping with tabbed interface for multiple groups β¦ Single group displays in simple grid layout without tabs β¦ Improved group header styling and count badges β¦ Better visual separation between grouped and ungrouped services
β’ services: consistent card styling β¦ Applied unified styling to ServiceCard component β¦ Improved icon container presentation with borders β¦ Enhanced badge styling for service descriptions and types β¦ Better visual hierarchy in service information display
1.2.2 (2025-11-06)¶
Documentation¶
β’ changelog: adopt vodwisharr format
β¦ Reformatted changelog to match vodwisharr style
β¦ Added compare links in version headers
β¦ Changed to bullet point format with β’ and β¦ symbols
β¦ Categorized sections with prefixes (settings:, auth:, docker:, etc.)
β’ traffic: improve agent documentation β¦ Clarified systemd service WorkingDirectory configuration β¦ Added recommended directory structure examples β¦ Included common installation paths and best practices
1.2.1 (2025-11-06)¶
Changed¶
β’ settings: default theme and language β¦ Default theme changed from Dark to Plex β¦ Default language set to English β¦ Authentication disabled by default
β’ version: improved version management β¦ Improved version reading from release.txt β¦ Fixed path resolution for both Docker and local development environments β¦ Better version comparison and update detection
Fixed¶
β’ auth: fix authentication bypass issues β¦ Fixed login screen appearing briefly when authentication is disabled β¦ Frontend now checks auth status before showing login screen β¦ Proper auth bypass when ENABLE_AUTH=false
β’ docker: container and deployment fixes β¦ Removed problematic USER directive that caused permission errors β¦ Made logger fault-tolerant for permission issues β¦ Fixed release.txt copy in Docker build process β¦ Corrected path resolution in containerized environment
β’ settings: timezone configuration β¦ Unified timezone configuration (removed duplicate TIMEZONE variable) β¦ Backend now reads TZ environment variable directly β¦ Fixed UTC display issue in About page
1.2.0 (2025-11-05)¶
Features¶
β’ traffic: complete traffic monitoring system
β¦ New Traffic page in sidebar with real-time bandwidth monitoring
β¦ Traffic summary cards showing active services and current bandwidth usage
β¦ Service-level traffic statistics with upload/download speeds
β¦ Traffic monitoring agent script for remote servers (traffic_agent.py)
β¦ API endpoints for traffic data collection and retrieval
β¦ Traffic metrics models (TrafficMetrics, TrafficDataPoint, TrafficUpdate)
β¦ Complete documentation (TRAFFIC_AGENT.md, TRAFFIC_SETUP.md, TRAFFIC_IMPLEMENTATION.md)
β’ services: service ID management β¦ Service ID display with copy-to-clipboard functionality in service cards β¦ Service ID visibility for easy agent configuration
1.1.1 (2024-XX-XX)¶
Bug Fixes¶
β’ version: version check improvements (commit)
1.1.0 (2024-XX-XX)¶
Features¶
β’ releases: add version check functionality (commit) β¦ Release and version check functionality
1.0.0 (2024-XX-XX)¶
Features¶
β’ dashboard: initial release β¦ Dashboard with service overview β¦ Service management (add, edit, delete services) β¦ Service monitoring with real-time status checks
β’ docker: container support β¦ Docker container support with compose configuration
β’ ui: theme and language support β¦ Multi-theme support (Dark, Plex, Jellyfin, Emby, etc.) β¦ Multi-language support (English, German)
β’ auth: authentication system β¦ Basic authentication support
β’ settings: configuration management β¦ Settings management interface β¦ About page with version information
β’ github: integration β¦ GitHub integration for update checks