* Fix leaderboard timing issues with comprehensive improvements
- Add maximum display time cap (120s) to prevent hanging
- Implement dynamic scroll speed tracking with runtime measurements
- Simplify complex timing logic that was causing hangs
- Add enhanced progress tracking and logging
- Add configurable safety buffer (10s)
- Update config template with new timing options
- Add comprehensive test suite for timing logic
Fixes the 30-second hanging issue reported in PR #53 by providing
multiple layers of protection against time overestimation.
* Simplify leaderboard timing to use long timeout with exception-based ending
- Remove complex dynamic duration calculations
- Remove safety buffer complexity
- Remove scroll speed tracking and measurements
- Use simple 10-minute timeout (600s) for both display_duration and max_display_time
- Let content determine when display is complete via existing StopIteration logic
- Update display controller to use simplified duration approach
- Clean up config template to remove unused timing settings
This approach is much more reliable than trying to predict content duration
and eliminates the hanging issues reported in PR #53.
* Fix configuration structure to use centralized display_durations
- Remove redundant display_duration from leaderboard section
- Use main display_durations.leaderboard (300s) for fixed duration mode
- Update leaderboard manager to read from centralized config
- Increase leaderboard default duration from 60s to 300s for better content coverage
- Maintain dynamic_duration option for user choice between fixed/dynamic modes
- Add comprehensive scroll behavior analysis and testing
This completes the leaderboard timing improvements with proper config structure.
* scroll every frame to be smoother like the stock ticker instead of waiting per subsecond
* leaderboard block api calls while scrolling
* leaderboard debugging
* added leaderboard fps logging
* leaderboard frame control and optimizations
* background update memory leak for scrolling text found and first solution applied
* tuning scroll speeds
* working display scrolls
* revert scroll delay to 0.01 (about 100fps)
* revert min duration of leaderboard
* remove onetime test scripts
- Add all sports managers to background updates in display_controller.py
- Add all sports managers to deferred updates when scrolling
- Fix hardcoded update intervals in NHL, NBA, NCAA Basketball, and NCAA Hockey managers
- Use config values for recent_update_interval and upcoming_update_interval
- Ensure all sports managers update continuously in background
- Only NFL managers had the season fetching issue, others were already optimized
- Add proper timezone support to _check_schedule() method
- Use configured timezone instead of system local time
- Add pytz import for timezone handling
- Ensures schedule respects America/Chicago timezone setting
- Fixes issue where display wouldn't turn off at configured end_time
* Fix NFL live update interval not being respected
- Add NFL managers to _update_modules() method in display_controller.py
- NFL managers now update continuously in background instead of only when displayed
- Fixes issue where NFL live data would only fetch once and never update
- NFL live manager now properly respects 30-second live_update_interval setting
- Also add NFL managers to deferred updates when display is scrolling
* Fix NFL Recent and Upcoming managers to use correct update intervals
- NFL Recent Manager now uses recent_update_interval (3600 seconds) instead of hardcoded 300
- NFL Upcoming Manager now uses upcoming_update_interval (3600 seconds) instead of hardcoded 300
- Ensures proper update intervals: Live=30s, Recent=3600s, Upcoming=3600s
- All managers respect their respective config intervals
* Fix NCAAFB managers to use correct update intervals and add to background updates
- NCAAFB Recent Manager now uses recent_update_interval (3600 seconds) instead of hardcoded 300
- NCAAFB Upcoming Manager now uses upcoming_update_interval (3600 seconds) instead of hardcoded 300
- Add NCAAFB managers to _update_modules() method in display_controller.py
- NCAAFB managers now update continuously in background instead of only when displayed
- Add NCAAFB managers to deferred updates when display is scrolling
- Ensures proper update intervals: Live=30s, Recent=3600s, Upcoming=3600s
* Fix NFL live manager to use cached data for fresh updates
- Change NFL Live Manager to use cache=True instead of cache=False
- NFL Live Manager was bypassing cache and not getting fresh data from background service
- Background service fetches and caches data, but live manager was ignoring the cache
- This fixes the issue where NFL live display shows stale data despite successful background fetches
- Live manager now gets fresh data from the background service cache
* Fix NFL live manager to force fresh data fetch when update interval passes
- NFL Live Manager now forces fresh fetch when update interval (30s) has passed
- Uses cache for immediate response but bypasses cache for fresh updates
- Adds logging to show when fresh fetch is forced
- This ensures live game data updates every 30 seconds with fresh scores/clock
- Fixes issue where live display was showing stale data despite background fetches
* Fix NFL live manager to always fetch fresh data from API
- NFL Live Manager now always fetches fresh data directly from ESPN API
- No cache usage for live games - ensures real-time scores and clock updates
- Live games should always show the latest information, not cached data
- This ensures live display updates every 30 seconds with current game state
* Fix NFL live manager to use synchronous API fetch for real-time updates
- NFL Live Manager now uses _fetch_nfl_api_data_sync() for direct API calls
- Bypasses background service and cache for immediate fresh data
- Ensures live games get real-time scores and clock updates every 30 seconds
- Direct API calls are faster and more reliable for live game data
* Fix NFL live manager to fetch only current games instead of entire season
- Create _fetch_current_nfl_games() method for live updates
- Only fetches current week's games, not entire 2025 season (335 events)
- Much faster API calls - only gets relevant live games
- Reduces API load and improves performance for live updates
- NFL Live Manager now fetches ~10-15 current games instead of 335 season games
* ensure live games aren't pulling whole season
* bugbot catches
- Resolved conflicts in src/logo_downloader.py:
- Combined NCAA hockey endpoint with soccer league endpoints
- Updated directory mappings to use ncaa_logos for NCAA sports
- Added support for multiple soccer leagues (Premier League, La Liga, etc.)
- Resolved conflicts in src/ncaa_fb_managers.py:
- Combined immediate fetch approach with background fetch strategy
- Maintained both immediate response and comprehensive data fetching
- Preserved caching functionality for improved performance
- Includes all development branch features:
- Soccer league support with team logos
- Enhanced NCAA football data fetching
- Improved logo downloader with multiple league support
- Updated wiki documentation and configuration
* Add emulator
* Update limit for ESPM API
* use params
* Add NCAA Mens Hockey Manager
* Add NCAA Hockey to leader board
* update logos
---------
Co-authored-by: Alex Resnick <adr8282@gmail.com>