Skip to content

CHANGELOG.md

3.3.0 (2026-04-05)

✨ New Features

VPN Proxy Monitoring • New VPN Proxy page with connection status, protocol info, and server details • VPN Proxy Monitor page with real-time connection tracking • Dashboard VPN Map component with geographic server visualization • Dashboard VPN Table with active connection overview • Backend API endpoint for VPN/proxy data aggregation

Posterizarr Integration • New Posterizarr page for poster management • Backend API for Posterizarr service communication

External Apps • New External Apps page supporting external application links and monitoring • Backend model extension for external app service types

Push Notifications • Push notification system with backend notification service • New notifications API endpoint for managing notification preferences • Frontend notification settings integration

Dashboard Enhancements • Tabbed view mode with new DashboardServiceTable component • List view mode with new DashboardServiceListItem component • Added active uploads and downloads stat cards • Compact dashboard stats card layout • Alphabetical sorting for traffic chart entries

Settings Overhaul • Major Settings page redesign with expanded configuration sections • Personal theme customization support • Improved settings UI layout and organization

🎨 UI/UX Improvements

Sidebar • Improved sidebar scrolling behavior • Updated sidebar styling and navigation structure

Restyled Pages • VPN Proxy page with styled connection cards • Arr Activity page improvements with pagination and history view • Uploader page layout refinements • Invites Manager UI updates • User Accounts page styling enhancements • VOD Portal and VOD Streams visual updates • Storage page with separated UnionFS and RAID/ZFS sections

General UI • Updated dropdown components (Custom, Language, Theme) • Improved service card and modal styling • Enhanced About page layout • Refined Traffic page with WebSocket-based real-time updates

🔧 Backend Improvements

• Added Traffic WebSocket support for real-time data streaming • Improved service monitor with enhanced health check logic • Extended Overseerr API integration • Updated traffic API with additional data endpoints • Expanded config module with new service settings • Updated requirements with new dependencies

🌐 Localization

• Added German and English translations for VPN Proxy, Posterizarr, External Apps, and Notifications • Updated existing translation keys for restyled pages

🐳 Infrastructure

• Updated Dockerfile build configuration • Updated docker-compose.yml with new service ports and configuration • Bumped project version to 3.3.0 across backend, frontend, and release metadata

3.2.0 (2026-01-14)

🎨 UI/UX Improvements

Colored Table HeadersUnified table styling across all pages ◦ Added colored headers with icons and badges to all major tables ◦ Uploader: Blue (active), Purple (queue), Green (completed), Red (failed) ◦ InvitesManager: Purple themed invites table ◦ UserAccounts: Blue themed users table ◦ VODPortal: Blue (users), Green (add user form) ◦ ArrActivity: Purple (Sonarr), Blue (Radarr) with error state styling ◦ VODStreams: Purple (library scans), Green (downloads/streams)

Empty State ImprovementsTraffic Page ◦ Enhanced empty state with Activity icon and descriptive text ◦ Added "Setup Traffic Agent" button linking to documentation ◦ Consistent styling with other empty states

Storage Page ◦ Improved empty state for no storage agents connected ◦ Added separate empty state for search with no results ◦ Clear Search button for easy filter reset

Dashboard Traffic Cards ◦ Updated empty state with better messaging ◦ Added setup guide link button

VODStreams EnhancementsLibrary Scans Section ◦ Separated library scans from stream activities ◦ New dedicated purple-themed table for active scans ◦ Added Library Scans stat card with pulse animation ◦ Proper scan type detection (library.scanner, media.generate, etc.)

Stats & Filters ◦ Grid layout updated from 6 to 7 columns for new scan stat ◦ All filter counts now correctly exclude scan activities

InvitesManager • Reordered stats cards: Total Invites now first in the row • Purple themed header with Mail icon and count badge

🌐 Localization

• Added uploader.sections.* translations (active, queue, completed, failed) • Added traffic.emptyState.* translations (title, description, setupGuide) • Added storage.emptyState.* translations for empty states • Added vodStreams.libraryScans.* translations for scan section • Added vodStreams.downloads.* translations for downloads section • Added vodStreams.stats.scanning and vodStreams.badges.scanning • Added vodPortal.addUserTitle translation • Added arrActivity.downloads and arrActivity.error translations • All translations available in English and German


3.1.0 (2025-12-24)

🎨 UI/UX Improvements

ArrActivity Page EnhancementsEnhanced 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 ImprovementsSection reorganization ◦ Reordered settings cards: Auth → General → Plex → VoDWisharr → *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 VoDWisharr 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 endpointsGET /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 endpointsPOST /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 utilitiesinvite_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