mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-08-13 14:48:06 +00:00
Live content used to preempt Vegas outright: while any plugin reported live priority the display controller refused to run the ticker at all and showed a full-screen scoreboard instead. Keeping the marquee meant not seeing live scores; seeing live scores meant losing the marquee. Two changes, both off by default. vegas_scroll.live_in_ticker keeps the ticker running through a live game. Three places assumed the takeover and all three now honour it: the controller's gate, the coordinator's per-frame pause, and the rotation switch that would otherwise move current_mode_index underneath a ticker that never yields. And the rotation is no longer a strict round robin. It was one slot per plugin per cycle, so with a dozen plugins enabled a live score came round once a lap and could be minutes old on screen. A plugin can now hold several slots, placed by Smooth Weighted Round-Robin -- the same scheduler the sports plugins already use to rotate their own games. The property that matters is that repeats are spread through the cycle rather than clumped: three in a row and then silence would be worse than no boost at all. Weight comes from the plugin first, via a new optional get_vegas_priority_weight(), then from the core: live content earns live_weight, everything else 1. So existing plugins gain the behaviour without changes, and the hook exists for the one thing the core cannot work out -- the core can see that a game is live but not whose, so only the plugin can say a favorite is playing. Documented in ADVANCED_FEATURES (worked example, why weights are per plugin not per game, and that frequency is not freshness), CONFIG_REFERENCE, PLUGIN_API_REFERENCE, and the config template. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Udr6MfaFLUPhX5Fgo67Jf5
180 lines
5.0 KiB
JSON
180 lines
5.0 KiB
JSON
{
|
|
"web_display_autostart": true,
|
|
"schedule": {
|
|
"enabled": false,
|
|
"mode": "per-day",
|
|
"start_time": "07:00",
|
|
"end_time": "23:00",
|
|
"days": {
|
|
"monday": {
|
|
"enabled": false,
|
|
"start_time": "07:00",
|
|
"end_time": "23:00"
|
|
},
|
|
"tuesday": {
|
|
"enabled": false,
|
|
"start_time": "07:00",
|
|
"end_time": "23:00"
|
|
},
|
|
"wednesday": {
|
|
"enabled": false,
|
|
"start_time": "07:00",
|
|
"end_time": "23:00"
|
|
},
|
|
"thursday": {
|
|
"enabled": false,
|
|
"start_time": "07:00",
|
|
"end_time": "23:00"
|
|
},
|
|
"friday": {
|
|
"enabled": false,
|
|
"start_time": "07:00",
|
|
"end_time": "23:00"
|
|
},
|
|
"saturday": {
|
|
"enabled": false,
|
|
"start_time": "07:00",
|
|
"end_time": "23:00"
|
|
},
|
|
"sunday": {
|
|
"enabled": false,
|
|
"start_time": "07:00",
|
|
"end_time": "23:00"
|
|
}
|
|
}
|
|
},
|
|
"dim_schedule": {
|
|
"enabled": false,
|
|
"dim_brightness": 30,
|
|
"mode": "global",
|
|
"start_time": "20:00",
|
|
"end_time": "07:00",
|
|
"days": {
|
|
"monday": {
|
|
"enabled": false,
|
|
"start_time": "20:00",
|
|
"end_time": "07:00"
|
|
},
|
|
"tuesday": {
|
|
"enabled": false,
|
|
"start_time": "20:00",
|
|
"end_time": "07:00"
|
|
},
|
|
"wednesday": {
|
|
"enabled": false,
|
|
"start_time": "20:00",
|
|
"end_time": "07:00"
|
|
},
|
|
"thursday": {
|
|
"enabled": false,
|
|
"start_time": "20:00",
|
|
"end_time": "07:00"
|
|
},
|
|
"friday": {
|
|
"enabled": false,
|
|
"start_time": "20:00",
|
|
"end_time": "07:00"
|
|
},
|
|
"saturday": {
|
|
"enabled": false,
|
|
"start_time": "20:00",
|
|
"end_time": "07:00"
|
|
},
|
|
"sunday": {
|
|
"enabled": false,
|
|
"start_time": "20:00",
|
|
"end_time": "07:00"
|
|
}
|
|
}
|
|
},
|
|
"timezone": "America/New_York",
|
|
"target_fps": 100,
|
|
"location": {
|
|
"city": "Tampa",
|
|
"state": "Florida",
|
|
"country": "US"
|
|
},
|
|
"display": {
|
|
"hardware": {
|
|
"rows": 32,
|
|
"cols": 64,
|
|
"chain_length": 2,
|
|
"parallel": 1,
|
|
"brightness": 90,
|
|
"hardware_mapping": "adafruit-hat",
|
|
"scan_mode": 0,
|
|
"pwm_bits": 9,
|
|
"pwm_dither_bits": 1,
|
|
"pwm_lsb_nanoseconds": 130,
|
|
"disable_hardware_pulsing": false,
|
|
"inverse_colors": false,
|
|
"show_refresh_rate": false,
|
|
"led_rgb_sequence": "RGB",
|
|
"limit_refresh_rate_hz": 100,
|
|
"pixel_mapper_config": "",
|
|
"row_address_type": 0,
|
|
"multiplexing": 0,
|
|
"panel_type": ""
|
|
},
|
|
"runtime": {
|
|
"gpio_slowdown": 3,
|
|
"rp1_rio": 0
|
|
},
|
|
"double_sided": {
|
|
"enabled": false,
|
|
"copies": 2,
|
|
"axis": "horizontal"
|
|
},
|
|
"display_durations": {},
|
|
"plugin_rotation_order": [],
|
|
"use_short_date_format": true,
|
|
"vegas_scroll": {
|
|
"live_in_ticker": false,
|
|
"live_weight": 3,
|
|
"favorite_live_weight": 5,
|
|
"enabled": false,
|
|
"scroll_speed": 50,
|
|
"separator_width": 32,
|
|
"plugin_order": [],
|
|
"excluded_plugins": [],
|
|
"target_fps": 125,
|
|
"buffer_ahead": 2,
|
|
"intra_plugin_gap": 8,
|
|
"render_width_pct": 100,
|
|
"min_content_separation": 24,
|
|
"min_cut_gap": 6,
|
|
"continuous_scroll": true,
|
|
"smooth_scroll": true,
|
|
"extend_threshold_screens": 2.0,
|
|
"auto_trim": true,
|
|
"trim_threshold": 10,
|
|
"content_padding": 8,
|
|
"min_plugin_width": 8,
|
|
"lead_in_width": 0,
|
|
"plugins_per_cycle": 6,
|
|
"max_plugin_width_ratio": 0.0,
|
|
"overflow_mode": "rotate",
|
|
"dynamic_duration_enabled": true,
|
|
"min_cycle_duration": 60,
|
|
"max_cycle_duration": 240,
|
|
"frame_based_scrolling": true,
|
|
"scroll_delay": 0.02
|
|
}
|
|
},
|
|
"sync": {
|
|
"role": "standalone",
|
|
"port": 5765,
|
|
"follower_position": "left"
|
|
},
|
|
"plugin_system": {
|
|
"plugins_directory": "plugin-repos",
|
|
"auto_discover": true,
|
|
"auto_load_enabled": true,
|
|
"development_mode": false
|
|
},
|
|
"web-ui-info": {
|
|
"enabled": true,
|
|
"display_duration": 10
|
|
}
|
|
}
|