From 819156ad23fe4debf8361938beef05b5e8b2c703 Mon Sep 17 00:00:00 2001 From: Chuck <33324927+ChuckBuilds@users.noreply.github.com> Date: Wed, 2 Sep 2026 12:02:16 -0400 Subject: [PATCH 1/2] docs(afl-scoreboard): document every setting, with real finals-series renders Documentation only; no plugin behaviour changes. The README covered roughly fifteen of the plugin's 120-odd settings, had no images, and its "Key settings" table had drifted from the schema -- it listed show_favorite_teams_only as defaulting to false (it is true), display_duration as 30 (it is 15), and showed show_odds: false in an example labelled as the defaults. It is rewritten around real rendered output and now documents every option, grouped by what you would be trying to achieve. Game selection gets its own section, because it is the part that surprises people. There are three distinct code paths -- no favourites, favourites exclusively, and favourites-first-then-others -- and which one runs depends on whether favorite_teams is empty and whether show_favorite_teams_only is on. Most importantly, upcoming_games_to_show and recent_games_to_show mean a per-team budget in the exclusive path and a total in the other two, so three favourites and a value of 3 is nine cards or three depending on one unrelated checkbox. That is now a table rather than something to discover on the panel. Four dead ends are recorded, each verified rather than assumed: - show_odds defaults to true but ESPN publishes no odds block for any AFL fixture -- a full finals-week payload contains zero, and the rendered card is identical either way. It is not free: the plugin still issues one odds request per selected game per update, so the README tells AFL users to turn it off. - show_ranking has no poll to read for this league. - dynamic_duration.min_duration_seconds is in the schema with a default of 30 but is never read; only max_duration_seconds is. - background_service.max_workers is in the schema with a default of 3 but the service is constructed with a single worker regardless. Also documents the missing-logo failure mode found while rendering: a failed logo download is cached as a sub-kilobyte placeholder that is never retried, so the team stays a grey text box until the stub file is deleted. Screenshots come from archived ESPN payloads of the 2026 finals series with a frozen clock, so they are reproducible and `--check` verifies them. The live card is that same real data with one match rewound to three-quarter time and its score set to the real cumulative three-quarter total (Carlton 56, Melbourne 52), so it shows a moment that genuinely happened rather than an invented scoreline. Co-Authored-By: Claude Opus 5 --- README.md | 2 +- .../afl-scoreboard/date-time-formats.png | Bin 0 -> 29058 bytes docs/assets/afl-scoreboard/display-modes.png | Bin 0 -> 33367 bytes .../afl-scoreboard/favorite-result-colors.png | Bin 0 -> 36772 bytes .../afl-scoreboard/fixtures/finals-week.json | 1 + .../fixtures/live-three-quarter-time.json | 1 + docs/assets/afl-scoreboard/hero.png | Bin 0 -> 7059 bytes docs/assets/afl-scoreboard/panel-sizes.png | Bin 0 -> 43171 bytes docs/assets/afl-scoreboard/shots.json | 521 ++++++++++++ docs/assets/afl-scoreboard/show-records.png | Bin 0 -> 24045 bytes .../assets/afl-scoreboard/upcoming-center.png | Bin 0 -> 29603 bytes plugins.json | 4 +- plugins/afl-scoreboard/README.md | 767 ++++++++++++------ plugins/afl-scoreboard/manifest.json | 11 +- 14 files changed, 1053 insertions(+), 254 deletions(-) create mode 100644 docs/assets/afl-scoreboard/date-time-formats.png create mode 100644 docs/assets/afl-scoreboard/display-modes.png create mode 100644 docs/assets/afl-scoreboard/favorite-result-colors.png create mode 100644 docs/assets/afl-scoreboard/fixtures/finals-week.json create mode 100644 docs/assets/afl-scoreboard/fixtures/live-three-quarter-time.json create mode 100644 docs/assets/afl-scoreboard/hero.png create mode 100644 docs/assets/afl-scoreboard/panel-sizes.png create mode 100644 docs/assets/afl-scoreboard/shots.json create mode 100644 docs/assets/afl-scoreboard/show-records.png create mode 100644 docs/assets/afl-scoreboard/upcoming-center.png diff --git a/README.md b/README.md index 71a5dae1..13432c47 100644 --- a/README.md +++ b/README.md @@ -90,7 +90,7 @@ curl -X POST http://your-pi-ip:5000/api/v3/plugins/install \ | [Soccer Scoreboard](./plugins/soccer-scoreboard/) | Premier League, La Liga, Bundesliga, Serie A, Ligue 1, MLS | | | [Lacrosse Scoreboard](./plugins/lacrosse-scoreboard/) | NCAA lacrosse live scores and schedules | | | [Cricket Scoreboard](./plugins/cricket-scoreboard/) | Live, recent & upcoming international (Test/ODI/T20I) and major domestic cricket | | -| [AFL Scoreboard](./plugins/afl-scoreboard/) | Australian Football League live, recent & upcoming games | | +| [AFL Scoreboard](./plugins/afl-scoreboard/) | Australian Football League live, recent & upcoming games | afl-scoreboard on an LED panel | | [NRL Scoreboard](./plugins/nrl-scoreboard/) | National Rugby League live, recent & upcoming games | | | [F1 Scoreboard](./plugins/f1-scoreboard/) | Formula 1 race results, schedules, and standings | | | [UFC Scoreboard](./plugins/ufc-scoreboard/) | UFC/MMA live fights, fighter headshots, records, odds & results — *by [LegoGuy1000](https://github.com/legoguy1000)* | | diff --git a/docs/assets/afl-scoreboard/date-time-formats.png b/docs/assets/afl-scoreboard/date-time-formats.png new file mode 100644 index 0000000000000000000000000000000000000000..fb326ab4323ad59bdaecca6d9167a825fd998a21 GIT binary patch literal 29058 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 literal 0 HcmV?d00001 diff --git a/docs/assets/afl-scoreboard/display-modes.png b/docs/assets/afl-scoreboard/display-modes.png new file mode 100644 index 0000000000000000000000000000000000000000..02ba14f32cc3722b5d7fc38d1d963cc3b96ad56d GIT binary patch literal 33367 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 W5_z{RM)qYc7swc5M84wo=zjo&cTc(i literal 0 HcmV?d00001 diff --git a/docs/assets/afl-scoreboard/panel-sizes.png b/docs/assets/afl-scoreboard/panel-sizes.png new file mode 100644 index 0000000000000000000000000000000000000000..b35b59147450ac4e9c1c333ffbe48c38a9a77b4a GIT binary patch literal 43171 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 literal 0 HcmV?d00001 diff --git a/plugins.json b/plugins.json index 0465cc43..8732aa40 100644 --- a/plugins.json +++ b/plugins.json @@ -1048,8 +1048,8 @@ "downloads": 0, "verified": true, "screenshot": "", - "latest_version": "1.17.2", - "last_updated": "2026-08-13" + "latest_version": "1.17.3", + "last_updated": "2026-09-02" }, { "id": "tidbyt-baseball-scoreboard", diff --git a/plugins/afl-scoreboard/README.md b/plugins/afl-scoreboard/README.md index da902db3..de19d942 100644 --- a/plugins/afl-scoreboard/README.md +++ b/plugins/afl-scoreboard/README.md @@ -1,305 +1,574 @@ ------------------------------------------------------------------------------------ -### Connect with ChuckBuilds +# AFL Scoreboard + +Live, recent, and upcoming **AFL (Australian Football League)** games on your LED +matrix — real-time scores, the quarter and running clock, club logos, and start +times in your own timezone. + +![Carlton 74 def. Melbourne 55, shown on a 128x32 panel with both club logos and +the match date](../../docs/assets/afl-scoreboard/hero.png) + +*Every image in this README is real plugin output, rendered at the true panel +size from archived ESPN data and then scaled up so the pixels stay pixels. +Nothing here is a mockup — the scores, logos, records and start times are the +real 2026 finals series.* + +--- + +## Table of Contents + +1. [What's On Screen](#whats-on-screen) +2. [Quick Start](#quick-start) +3. [How Games Are Picked](#how-games-are-picked) + - [The three selection modes](#the-three-selection-modes) + - [What the "games to show" numbers mean](#what-the-games-to-show-numbers-mean) + - [Which games exist to pick from](#which-games-exist-to-pick-from) + - [Live games and priority](#live-games-and-priority) +4. [Configuration Reference](#configuration-reference) + - [Teams and filtering](#teams-and-filtering) + - [Display modes and rotation](#display-modes-and-rotation) + - [How long things stay on screen](#how-long-things-stay-on-screen) + - [How often data is fetched](#how-often-data-is-fetched) + - [What appears on the card](#what-appears-on-the-card) + - [Card layout and text](#card-layout-and-text) + - [Celebrations](#celebrations) + - [Fonts, colours and offsets](#fonts-colours-and-offsets) + - [Timezone](#timezone) +5. [Panel Sizes](#panel-sizes) +6. [Team Abbreviations](#team-abbreviations) +7. [Known Limitations](#known-limitations) +8. [Troubleshooting](#troubleshooting) +9. [Development](#development) +10. [Support](#support) + +--- + +## What's On Screen + +The plugin provides three display modes. Each is a separate entry in your +LEDMatrix rotation, and each can be turned on or off independently. + +![The three display modes on a 128x32 panel: afl_live showing Q3 and a running +score, afl_recent showing a final score, afl_upcoming showing a date and start +time](../../docs/assets/afl-scoreboard/display-modes.png) + +| Mode | Shows | Status area | +|------|-------|-------------| +| `afl_live` | Games in progress | `Q1`–`Q4` plus the running clock, or `HALF` at the main break | +| `afl_recent` | Completed games | `Final`, the score, and the match date | +| `afl_upcoming` | Scheduled games | The date and start time, in your timezone | + +The away team's logo is always on the left and the home team's on the right, so +a separator like `at` or `@` reads correctly as "away at home". + +--- + +## Quick Start + +The minimum useful configuration is your teams: -- Show support on Youtube: https://www.youtube.com/@ChuckBuilds -- Stay in touch on Instagram: https://www.instagram.com/ChuckBuilds/ -- Want to chat or need support? Reach out on the ChuckBuilds Discord: https://discord.com/invite/uW36dVAtcT -- Feeling Generous? Support the project: - - Github Sponsorship: https://github.com/sponsors/ChuckBuilds - - Buy Me a Coffee: https://buymeacoffee.com/chuckbuilds - - Ko-fi: https://ko-fi.com/chuckbuilds/ +```json +{ + "afl-scoreboard": { + "enabled": true, + "favorite_teams": ["CARL", "GEEL"] + } +} +``` + +A fuller example — favourites first, but other games still get a look in: + +```json +{ + "afl-scoreboard": { + "enabled": true, + "favorite_teams": ["CARL", "GEEL"], + "show_favorite_teams_only": false, + "upcoming_games_to_show": 2, + "other_upcoming_games_to_show": 2, + "recent_games_to_show": 2, + "timezone": "Australia/Melbourne", + "show_odds": false, + "display_modes": { + "live": true, + "recent": true, + "upcoming": true, + "live_display_mode": "switch", + "recent_display_mode": "switch", + "upcoming_display_mode": "switch" + }, + "customization": { + "favorite_result_colors": { "enabled": true } + } + } +} +``` + +You can set all of this from the web UI instead — the settings form is generated +from `config_schema.json`, which is the source of truth for every default listed +below. + +--- ------------------------------------------------------------------------------------ +## How Games Are Picked -# AFL Scoreboard Plugin +This is the part that surprises people, so it is worth reading once. The plugin +does not simply show "the next game". It runs a selection pass every update, +separately for each mode, and which of three code paths it takes depends +entirely on two settings: whether `favorite_teams` is empty, and whether +`show_favorite_teams_only` is on. -A plugin for LEDMatrix that displays live, recent, and upcoming **AFL (Australian -Football League)** games with real-time scores and game status. +### The three selection modes -## Features +**1. No favourites configured** (`favorite_teams: []`) -- **Live Game Tracking**: Real-time scores, quarter (Q1–Q4), and running clock -- **Recent Games**: Recently completed games with final scores -- **Upcoming Games**: Scheduled games with start times -- **Favorite Teams**: Prioritize (or exclusively show) games involving your favorite teams -- **Switch or Scroll**: Show one game at a time, or scroll all games horizontally -- **Dynamic Duration & Live Priority**: Spend more time on live games; let live games interrupt the rotation -- **Background Data Fetching**: Efficient API calls without blocking the display -- **Favorite Team Result Colors**: Optionally show a finished game's score in green when your favorite team won and red when it lost +The next *N* games league-wide, sorted by start time. `N` is +`upcoming_games_to_show` (or `recent_games_to_show` for the recent screen). +Simple, and the right setting for a neutral scoreboard. -## Display Modes +**2. Favourites, exclusively** (`favorite_teams` set, `show_favorite_teams_only: true`) -The plugin exposes three display modes: +Only games involving your teams. The plugin walks the schedule in time order and +keeps a per-team counter: each favourite team gets up to `upcoming_games_to_show` +games. A game between two of your favourites counts toward **both** teams' +budgets. Once every favourite team has hit its budget, selection stops early. -1. **afl_live** — currently active games (quarter + clock) -2. **afl_recent** — recently completed games with final scores -3. **afl_upcoming** — scheduled upcoming games with start times +**3. Favourites first, then others** (`favorite_teams` set, `show_favorite_teams_only: false`) -During a live game the status area shows: +This is the middle setting most people actually want. Your favourites' games are +taken first — up to `upcoming_games_to_show` of them — and then the list is +topped up with `other_upcoming_games_to_show` non-favourite games. The combined +list is then **re-sorted by start time**, so the cards still read as a schedule: +tonight's neutral game appears before next week's game involving your club. -- **Q1 / Q2 / Q3 / Q4** — the current quarter, followed by the running clock (e.g. `Q3 12:45`) -- **HALF** — the main break after the second quarter -- **Final** — completed game -- the scheduled start time for upcoming games +The non-favourite games are not the same handful every time. They come from a +window that advances through the schedule every +`other_rotation_interval_seconds` (default 30 minutes), so over an evening the +board works through the round rather than resampling the front of it. Set +`other_upcoming_games_to_show: 0` to get favourites only while still leaving +`show_favorite_teams_only` off. -## Configuration +> **Edge case worth knowing.** If `show_favorite_teams_only` is `true` but +> `favorite_teams` is empty, the favourites filter is skipped entirely and you +> get mode 1 — every game. An empty favourites list never means "show nothing". -AFL is a single league, so all settings live at the top level of the plugin -config (there is no per-league nesting). +### What the "games to show" numbers mean + +`upcoming_games_to_show` and `recent_games_to_show` change meaning depending on +which selection mode you are in. This is the single most confusing thing in the +plugin's configuration: + +| Selection mode | `upcoming_games_to_show` means | +|----------------|-------------------------------| +| No favourites | A **total** across the league | +| Favourites, exclusively | A budget **per favourite team** | +| Favourites first, then others | A **total** for the favourites portion only | + +So with three favourite teams and `upcoming_games_to_show: 3`, exclusive mode +can produce up to nine cards, while the other two modes produce three. + +`exclude_teams` is applied on top of all of this and beats everything — a team +listed there is hidden from the live rotation and from recent scores even if it +is also a favourite. That is what makes it useful for spoiler protection. + +### Which games exist to pick from + +Selection can only choose from games the plugin actually fetched. The fetch +window is controlled by two settings: + +- `schedule_lookback_days` (default `14`) — how far back the recent screen can see. +- `schedule_lookahead_days` (default `7`) — how far ahead the upcoming screen can see. + +A fixture beyond the lookahead horizon is never fetched, so it cannot appear no +matter how high you set `upcoming_games_to_show`. If your upcoming screen looks +empty during a bye or between finals weeks, this is usually why — raise +`schedule_lookahead_days`. + +### Live games and priority + +The live screen has its own selection: + +- By default it shows only live games involving your favourite teams. Set + `filtering.show_all_live: true` to include every live game regardless. +- `filtering.favorite_live_boost` (default `2`) gives your favourite's live game + that many turns in the live rotation for every one turn another live game + gets, and queues it first whenever the rotation refreshes. Set it to `1` for + an even rotation. +- `live_priority` (default `true`) lets a live game interrupt the normal mode + rotation rather than waiting its turn. + +--- + +## Configuration Reference + +Every option below is real and read by the plugin unless explicitly marked +otherwise. Options marked **advanced** are hidden behind the "advanced" toggle +in the web UI; they are safe to ignore. + +### Teams and filtering + +| Option | Default | What it does | +|--------|---------|--------------| +| `enabled` | `true` | Whether the plugin takes part in the rotation at all | +| `favorite_teams` | `[]` | Team abbreviations to prioritise, e.g. `["CARL", "GEEL"]`. See [Team Abbreviations](#team-abbreviations) | +| `exclude_teams` | `[]` | Teams to always hide, from live *and* recent screens. Beats `favorite_teams` and `show_all_live` | +| `show_favorite_teams_only` | `true` | Restrict to games involving `favorite_teams`. See [the three selection modes](#the-three-selection-modes) | +| `filtering.show_all_live` | `false` | Show every live game, not just favourites' | +| `filtering.favorite_live_boost` | `2` | **Advanced.** Turns your favourite's live game gets per turn for other live games | + +`favorite_teams` also does more than filter. It decides whose result the +[favourite result colours](#what-appears-on-the-card) apply to, and which team's +score triggers a [celebration](#celebrations). + +> **A default worth checking.** The schema default for +> `show_favorite_teams_only` is `true`, which is what the web UI shows and what a +> store install gets. If you hand-write `config.json` and leave the key out +> entirely, the plugin's own fallback is `false` instead. Set it explicitly if +> you edit config by hand. + +### Display modes and rotation + +| Option | Default | What it does | +|--------|---------|--------------| +| `display_modes.live` | `true` | Enable the live screen | +| `display_modes.recent` | `true` | Enable the recent screen | +| `display_modes.upcoming` | `true` | Enable the upcoming screen | +| `display_modes.live_display_mode` | `switch` | `switch` = one full-screen game at a time; `scroll` = all games scrolling horizontally | +| `display_modes.recent_display_mode` | `switch` | As above, for recent games | +| `display_modes.upcoming_display_mode` | `switch` | As above, for upcoming games | +| `live_priority` | `true` | Let live games interrupt the normal rotation | + +**`switch` vs `scroll`.** Switch mode is the full-screen scoreboard shown +throughout this README: two large logos with the score or start time between +them. Scroll mode instead draws a compact card per game and scrolls the whole +strip sideways, which fits more games on a long panel at the cost of size. The +`scroll_card` and `scroll_settings` groups only affect scroll mode, except for +the handful of `switch_*` keys called out below. + +### How long things stay on screen + +| Option | Default | What it does | +|--------|---------|--------------| +| `display_duration` | `15` | Seconds each mode holds the panel | +| `live_game_duration` | `20` | Seconds per live game before rotating to the next | +| `recent_game_duration` | `15` | **Advanced.** Seconds per recent game | +| `upcoming_game_duration` | `15` | **Advanced.** Seconds per upcoming game | +| `game_display_duration` | `15` | **Advanced.** Generic per-game duration within a mode | +| `non_favorite_live_game_duration` | `0` | **Advanced.** Separate, usually shorter duration for live games with no favourite in them. `0` means "use `live_game_duration` for everything" | +| `mode_durations.live_mode_duration` | `null` | **Advanced.** Fixed total duration for the whole live mode, overriding the per-game maths | +| `mode_durations.recent_mode_duration` | `null` | **Advanced.** As above, for recent | +| `mode_durations.upcoming_mode_duration` | `null` | **Advanced.** As above, for upcoming | +| `dynamic_duration.enabled` | `false` | **Advanced.** Size a mode's duration from how many games it actually has | +| `dynamic_duration.max_duration_seconds` | `null` | **Advanced.** Cap for the above | +| `dynamic_duration.modes..enabled` | `false` | **Advanced.** Per-mode override of `dynamic_duration.enabled` | + +`non_favorite_live_game_duration` is the setting to reach for when four games +are on at once and you only care about one: set `live_game_duration: 30` and +`non_favorite_live_game_duration: 8`, and your club's game gets most of the +airtime while the others still tick past. + +### How often data is fetched + +All of these are **advanced** — the defaults are tuned for a Raspberry Pi that is +also driving a panel, and raising the polling rate rarely helps. + +| Option | Default | What it does | +|--------|---------|--------------| +| `update_interval_seconds` | `3600` | Base fetch interval for schedule data | +| `live_update_interval` | `30` | Fetch interval while a game is live | +| `recent_update_interval` | `3600` | Fetch interval for the recent screen | +| `upcoming_update_interval` | `3600` | Fetch interval for the upcoming screen | +| `no_data_interval_seconds` | `300` | How long to wait between live checks when nothing is on. Backs off further the longer nothing is found | +| `live_idle_max_interval_seconds` | `900` | Ceiling for that back-off. Raise it out of season; lower it to notice the first game of the night sooner | +| `schedule_lookback_days` | `14` | How far back the recent screen can see | +| `schedule_lookahead_days` | `7` | How far ahead the upcoming screen can see | +| `background_service.enabled` | `true` | Fetch in a background thread so the panel never stalls on the network | +| `background_service.request_timeout` | `30` | Seconds before a fetch gives up | +| `background_service.max_retries` | `3` | Retries per failed fetch | +| `background_service.priority` | `2` | Queue priority against other plugins' fetches | + +### What appears on the card + +| Option | Default | What it does | +|--------|---------|--------------| +| `recent_games_to_show` | `1` | How many recent games — see [what the numbers mean](#what-the-games-to-show-numbers-mean) | +| `upcoming_games_to_show` | `1` | How many upcoming games — same caveat | +| `other_recent_games_to_show` | `1` | **Advanced.** Non-favourite recent games, in "favourites first" mode | +| `other_upcoming_games_to_show` | `1` | **Advanced.** Non-favourite upcoming games, in "favourites first" mode | +| `other_rotation_interval_seconds` | `1800` | **Advanced.** How often the non-favourite window advances | +| `show_records` | `false` | **Advanced.** Draw each team's season record in the bottom corners | +| `show_ranking` | `false` | **Advanced.** Draw a rank badge. AFL publishes no poll, so this shows nothing | +| `show_odds` | `true` | Draw the betting line. **ESPN publishes no odds for AFL** — see [Known Limitations](#known-limitations) | +| `customization.favorite_result_colors.enabled` | `false` | Colour a finished game's score by whether your favourite won | +| `customization.favorite_result_colors.win_color` | `[0, 255, 0]` | **Advanced.** Colour for a win | +| `customization.favorite_result_colors.loss_color` | `[255, 0, 0]` | **Advanced.** Colour for a loss | +| `customization.favorite_result_colors.tie_color` | `[255, 200, 0]` | **Advanced.** Colour for a draw | + +![The same Carlton-Melbourne final three times: score in white with the feature +off, green with Carlton as the favourite, red with Melbourne as the +favourite](../../docs/assets/afl-scoreboard/favorite-result-colors.png) + +Favourite result colours only apply to *finished* games, and only when one of +the two teams is in `favorite_teams`. A neutral game is always drawn in the +normal score colour, which is why the feature is invisible until you set your +teams. + +![The same upcoming card with show_records off and on; with it on, each team's +record appears in the bottom corners](../../docs/assets/afl-scoreboard/show-records.png) + +### Card layout and text + +These control what sits between the two logos and how dates and times are +written. `switch_*` keys apply to the full-screen scoreboard; the others apply to +scroll mode. + +| Option | Default | Values | +|--------|---------|--------| +| `scroll_card.switch_upcoming_center` | `date_time` | `date_time`, `vs`, `none`, `inherit` | +| `scroll_card.upcoming_center` | `vs` | `vs`, `date_time`, `none` | +| `scroll_card.vs_text` | `VS` | Any short string — `VS`, `@`, `at`, `v`. Blank draws nothing | +| `scroll_card.switch_date_format` | `numeric` | `numeric` (9/4), `abbrev` (Sep 4), `day_first` (4 Sep), `numeric_day_first` (4/9), `weekday` (Fri Sep 4), `inherit` | +| `scroll_card.date_format` | `abbrev` | Same set, minus `inherit` | +| `scroll_card.time_format` | `12h` | `12h` (7:40PM) or `24h` (19:40) | +| `scroll_card.show_date` | `true` | Draw the date at all | +| `scroll_card.show_time` | `true` | Draw the start time at all | +| `scroll_card.swap_date_time` | `false` | Put the time above the date instead of below | +| `scroll_card.center_gap` | *(auto)* | Fixed pixel gap in the middle of a scroll card | +| `scroll_card.center_gap_ratio` | `0.28` | **Advanced.** Gap as a fraction of card width, when `center_gap` is unset | +| `scroll_card.center_gap_min` | `22` | **Advanced.** Floor for the computed gap | +| `scroll_card.center_gap_max` | `40` | **Advanced.** Ceiling for the computed gap | + +![Four upcoming cards showing the centre as date_time, VS, at, and +nothing](../../docs/assets/afl-scoreboard/upcoming-center.png) + +Note how `at` reads correctly in the third panel: the away team is on the left, +so "Carlton at Geelong" is what the card actually says. + +![Four upcoming cards comparing 12-hour against 24-hour time, and numeric +against abbreviated and weekday date +formats](../../docs/assets/afl-scoreboard/date-time-formats.png) + +Scroll-mode-only settings: + +| Option | Default | What it does | +|--------|---------|--------------| +| `scroll_settings.scroll_speed` | `1.0` | **Advanced.** Pixels per step | +| `scroll_settings.scroll_delay` | `0.01` | **Advanced.** Seconds between steps. Lower is faster and costs more CPU | +| `scroll_settings.gap_between_games` | `48` | **Advanced.** Blank pixels between cards | +| `scroll_settings.game_card_width` | `128` | **Advanced.** Width of one card | +| `scroll_settings.show_league_separators` | `true` | **Advanced.** Divider between leagues (single-league here, so rarely visible) | +| `scroll_settings.dynamic_duration` | `true` | **Advanced.** Let the scroll run as long as one full pass takes | + +### Celebrations + +| Option | Default | What it does | +|--------|---------|--------------| +| `celebration_enabled` | `true` | Show a takeover screen when a favourite scores or wins a live game | +| `celebration_duration` | `8` | **Advanced.** Seconds the celebration holds the panel | +| `celebrate_opponent_goals` | `false` | **Advanced.** Also celebrate the opponent's goals | + +Celebrations need `favorite_teams` to be set — with no favourites there is +nobody to celebrate for. + +### Fonts, colours and offsets + +Every text element on the card can be restyled independently. All of these are +**advanced**, and the defaults are tuned to be legible at 128×32. + +| Group | Font default | Size | Colour | +|-------|--------------|------|--------| +| `customization.score_text` | `PressStart2P-Regular.ttf` | `10` | `[255, 255, 255]` | +| `customization.period_text` | `PressStart2P-Regular.ttf` | `8` | `[255, 255, 255]` | +| `customization.team_name` | `PressStart2P-Regular.ttf` | `8` | `[255, 255, 255]` | +| `customization.status_text` | `4x6-font.ttf` | `6` | `[255, 255, 255]` | +| `customization.detail_text` | `4x6-font.ttf` | `6` | `[255, 255, 255]` | +| `customization.rank_text` | `PressStart2P-Regular.ttf` | `10` | `[255, 255, 255]` | + +Each group takes `font`, `font_size` and `text_color` (an RGB array): ```json { - "enabled": true, - "favorite_teams": ["COLL", "GEEL", "RICH"], - "exclude_teams": [], - "show_favorite_teams_only": false, - "display_modes": { - "live": true, - "recent": true, - "upcoming": true, - "live_display_mode": "switch", - "recent_display_mode": "switch", - "upcoming_display_mode": "switch" - }, - "display_duration": 30, - "live_game_duration": 20, - "non_favorite_live_game_duration": 0, - "recent_game_duration": 15, - "upcoming_game_duration": 15, - "recent_games_to_show": 5, - "upcoming_games_to_show": 10, - "update_interval_seconds": 300, - "live_update_interval": 30, - "show_records": false, - "show_odds": false, - "live_priority": false, - "celebration_enabled": true, - "celebration_duration": 8 + "customization": { + "score_text": { "font_size": 12, "text_color": [255, 220, 0] } + } } ``` -### Key settings - -| Setting | Default | Effect | -|---|---|---| -| `favorite_teams` | `[]` | AFL team abbreviations to prioritize (e.g. `COLL`, `GEEL`, `RICH`). | -| `exclude_teams` | `[]` | Teams to always hide — from both the live rotation and recent/final scores (spoiler protection). | -| `show_favorite_teams_only` | `false` | Only show games involving `favorite_teams`. | -| `display_modes.*_display_mode` | `switch` | `switch` shows one game at a time; `scroll` scrolls all games horizontally. | -| `display_duration` | `30` | How long each display mode stays on screen before cycling. | -| `live_game_duration` | `20` | Seconds each live game stays on screen. | -| `non_favorite_live_game_duration` | `0` | Shorter dwell for live games with no favorite team (0 = off). | -| `live_priority` | `false` | Let live AFL games interrupt the recent/upcoming rotation. | -| `dynamic_duration` | off | Size a mode's total on-screen time to the number of games it has. | -| `mode_durations` | null | Fix the total duration of each mode (overrides dynamic calculation). | +`customization.layout` nudges individual elements by a pixel offset, for panels +where something sits slightly wrong. Each entry takes `x_offset` and `y_offset`, +both defaulting to `0`: `home_logo`, `away_logo`, `score`, `status_text`, `date`, +`time` and `odds`. The `records` entry takes `away_x_offset`, `home_x_offset` +and `y_offset` instead, since the two records are positioned separately. ### Timezone -- `timezone` (Advanced): IANA name used to display event start times, e.g. - `America/Chicago`. Leave blank (the default) to follow the LEDMatrix global - timezone; if that isn't set, the host system's timezone is used, and only if - neither is available do times fall back to UTC. +| Option | Default | What it does | +|--------|---------|--------------| +| `timezone` | `""` | **Advanced.** IANA timezone for start times, e.g. `Australia/Melbourne` | -## Team Names & Abbreviations +Resolution order, first match wins: -The `favorite_teams` / `exclude_teams` fields require the **ESPN API -abbreviation** for each team (e.g. `"COLL"` for Collingwood, `"GEEL"` for -Geelong). Full team names are not supported. +1. `timezone` in this plugin's config +2. The global LEDMatrix `timezone` setting +3. The system timezone -> **Tip:** If you're unsure of an abbreviation, enable debug logging — the plugin -> logs `home_abbr` and `away_abbr` for every game it processes. +For AFL specifically this matters more than for most sports: matches are played +across three Australian timezones, and ESPN reports every start time in UTC. +Leave it blank unless you want this plugin to differ from the rest of your board. -## Team Logos +--- -Team logos are downloaded automatically from ESPN's CDN on first use and cached to -disk — no manual asset work is required. If a logo can't be fetched, a generated -text-abbreviation placeholder is drawn instead. +## Panel Sizes -## Data Source +The scoreboard lays itself out from the panel dimensions rather than assuming a +size. Logos scale to the available height, and the score keeps the centre. -Game data is fetched from ESPN's public AFL scoreboard endpoint (no API key -required): +![The same final rendered on 64x32, 128x32, 128x64 and 256x32 +panels](../../docs/assets/afl-scoreboard/panel-sizes.png) -``` -https://site.api.espn.com/apis/site/v2/sports/australian-football/afl/scoreboard -``` +- **64×32** is tight. The logos are drawn behind the text rather than beside it, + and the score takes priority. It works, but a longer panel is much easier to + read across a room. +- **128×32** is the size everything is tuned for. +- **128×64** gives the logos real estate and separates the status line, score and + date into three bands. +- **256×32** keeps the same element sizes and simply centres them, so a long + chain buys width rather than a bigger scoreboard. Scroll mode is what makes a + long panel pay off, since it can show several cards at once. -## Dependencies +--- -This plugin requires the main LEDMatrix installation and uses the plugin system -base classes. +## Team Abbreviations -## Installation +`favorite_teams` and `exclude_teams` take the ESPN abbreviation, not the club +name: -The easiest way is the Plugin Store in the LEDMatrix web UI: +| Abbrev | Club | Abbrev | Club | +|--------|------|--------|------| +| `ADEL` | Adelaide Crows | `MELB` | Melbourne | +| `BL` | Brisbane Lions | `NMFC` | North Melbourne | +| `CARL` | Carlton | `PORT` | Port Adelaide | +| `COLL` | Collingwood | `RICH` | Richmond | +| `ESS` | Essendon | `STK` | St Kilda | +| `FRE` | Fremantle | `SUNS` | Gold Coast Suns | +| `GEEL` | Geelong Cats | `SYD` | Sydney Swans | +| `GWS` | GWS Giants | `WB` | Western Bulldogs | +| `HAW` | Hawthorn | `WCE` | West Coast Eagles | -1. Open `http://your-pi-ip:5000` -2. Open the **Plugin Manager** tab -3. Find **AFL Scoreboard** in the **Plugin Store** section and click **Install** -4. Open the plugin's tab in the second nav row to configure favorite teams and - display modes +ESPN's team list also exposes a stale `GCFC` entry mislabelled as "Sydney +Swans". Use `SUNS` for Gold Coast. -Manual install: copy this directory into your LEDMatrix `plugins_directory` -(default `plugin-repos/`) and restart the display service. +--- -## Testing +## Known Limitations -- `python test_afl_plugin.py` — standalone smoke tests (display modes, mode - routing, live content, AFL quarter parsing). No network or host required. -- `test/harness.json` — a deterministic fixture (one live, one recent, one - upcoming game) for the core plugin safety harness - (`LEDMatrix/scripts/check_plugin.py`). +These are real, verified against the live ESPN feed — they are documented here +rather than left for you to discover on the panel. -## Favorite Team Result Colors +**`show_odds` does nothing for AFL.** The setting defaults to `true`, but ESPN +publishes no odds block for any AFL fixture — a full finals-week payload +contains zero. The card is byte-identical with the setting on or off. It is not +free, though: with it on, the plugin still issues one odds request per selected +game on every update. **Set `show_odds: false`** to save those calls. -A run of games against the same opponent is hard to read at a glance: in scroll -and Vegas mode the same two logos go past several times and only the digits -change. Turn on **Customization -> Favorite Team Result Colors** to color a -finished game's score by how your favorite team did - green for a win, red for -a loss. +**`show_ranking` does nothing for AFL.** The AFL publishes no poll, so the rank +badge has nothing to draw. The setting exists because this plugin shares its +rendering code with the college-sport scoreboards, where it does work. -```json -{ - "customization": { - "favorite_result_colors": { - "enabled": true, - "win_color": [0, 255, 0], - "loss_color": [255, 0, 0], - "tie_color": [255, 200, 0] - } - } -} -``` +**`dynamic_duration.min_duration_seconds` is not applied.** The schema exposes it +with a default of `30`, but only `max_duration_seconds` is read. Setting a +minimum has no effect. -- Off by default. Until you enable it the score keeps exactly the color it has - today. -- Only finished games are colored. Live and upcoming cards are untouched. -- A game needs exactly one favorite team. If neither side is a favorite, or both - are, the score keeps its normal color. -- Applies to both the one-game-at-a-time switch view and the scroll/Vegas - ticker. -- The three colors are Advanced settings; leave them alone for the defaults - above. +**`background_service.max_workers` is not applied.** The schema exposes it with a +default of `3`, but the plugin creates its background service with a single +worker regardless. + +--- ## Troubleshooting -- **Start times look like UTC** (a 6:45pm Central start showing as 11:45PM): - the plugin couldn't read your global timezone. Set `timezone` under the - plugin's Advanced Settings to your IANA zone, e.g. `America/Chicago`. -- **No games showing**: Confirm the ESPN endpoint is reachable and that at least - one display mode is enabled. -- **Missing team logos**: The plugin auto-downloads logos; check the display's - internet access and logo cache directory permissions. -- **Slow updates**: Adjust `update_interval_seconds` / `live_update_interval`. -- **API errors**: Check your internet connection and ESPN API availability. +**The upcoming screen is empty, but I know there are fixtures.** +The most likely cause is the fetch window: `schedule_lookahead_days` defaults to +`7`, and during a bye or between finals weeks the next fixture can sit beyond +that. Raise it to `14`. The second most likely cause is +`show_favorite_teams_only: true` with favourites who are not playing this round. + +**I see far more games than I asked for.** +`upcoming_games_to_show` is a *per-team* budget when `show_favorite_teams_only` +is on. Three favourites and a value of 3 is up to nine cards. See +[what the numbers mean](#what-the-games-to-show-numbers-mean). + +**A team shows as a grey box with text instead of a logo.** +Logos are downloaded on demand and cached under +`assets/sports/afl_logos/` in your LEDMatrix install. A failed download is +cached as a tiny placeholder file that is never retried, so the team stays +logo-less. Delete the undersized file (a real logo is tens of kilobytes; a +placeholder is well under 1 KB) and restart to force a fresh download. + +**Start times are wrong by hours.** +Check `timezone`. ESPN reports every AFL start time in UTC and the plugin +converts on display, so an unset or wrong timezone shifts every card. + +**The score is white even though I enabled favourite result colours.** +The feature only applies to finished games in which one of the two teams is in +`favorite_teams`. Check the abbreviation matches the table above exactly. + +**Nothing updates during a live game.** +Check `display_modes.live` is on and that the game involves a favourite, or set +`filtering.show_all_live: true`. + +--- + +## Development + +### File structure + +```text +afl-scoreboard/ +├── manifest.json # Metadata and version history +├── manager.py # AflScoreboardPlugin: mode rotation and config plumbing +├── afl_managers.py # AFL-specific fetching and cache keys +├── sports.py # Shared sports engine: selection, extraction, rendering +├── game_renderer.py # Card drawing +├── scroll_display.py # Scroll-mode display +├── config_schema.json # Settings schema; source of truth for defaults +└── test_*.py # Standalone regression tests +``` -## Vegas ticker: seeing live games more often +`sports.py`, `game_renderer.py` and `scroll_display.py` are **shared copies** +carried by every sports scoreboard in this monorepo. A fix in one must be +ported to its siblings in the same change — see +[docs/plugin-development/08-shared-sports-code.md](../../docs/plugin-development/08-shared-sports-code.md). -By default a live game **takes over** the display: the Vegas ticker stops and -this scoreboard shows full screen until the game ends. If you would rather keep -the marquee scrolling and still see scores, set this in the core config: +### Data source -```json -{ - "display": { - "vegas_scroll": { - "live_in_ticker": true, - "live_weight": 3, - "favorite_live_weight": 5 - } - } -} -``` +ESPN's public `australian-football/afl` scoreboard API. No key required, and no +account needed. The plugin fetches one date-range request per update and shares +the result across all three modes, rather than one request per mode. -The ticker is otherwise a strict round robin — every plugin appears once per -cycle — so with a dozen plugins enabled a score comes round once a lap. These -weights let this plugin claim several slots per cycle, spaced evenly through -it rather than bunched together. - -`live_weight` applies whenever this scoreboard has a live game. -`favorite_live_weight` applies when one of your `favorite_teams` is playing, so -your team's game comes round more often than other live games. That distinction -has to be made here rather than in the core, which can tell *that* a game is -live but not *whose*. - -Two things to keep in mind: - -- The weight is per **plugin**, not per game. With four games live this - scoreboard still occupies one slot at a time and picks between its own games - using `favorite_live_boost`; these weights control how often the scoreboard - itself comes round. -- More slots make the cycle **longer**, not faster — everything else appears - proportionally less often. And appearing more often only helps if the data is - fresh, which is governed by this plugin's own live update interval. - -## Matchup separator and the upcoming card middle - -The **Matchup Card Layout** section (advanced) controls what sits between the -two team logos before a game starts, and how the date and time are written. -These settings now apply to every display mode -- the scroll ticker, the Vegas -ticker, and the full-screen scoreboard -- rather than only the tickers. - -| Setting | Key | Default | What it does | -|---|---|---|---| -| Matchup Separator | `vs_text` | `VS` | Text drawn between the teams: `VS`, `@`, `at`, `v`. The away team is always on the left, so `@` and `at` read as "away at home". Blank draws nothing. | -| Middle of an Upcoming Card | `upcoming_center` | `vs` | Scroll and Vegas cards: the separator, the date and time stacked, or nothing. | -| Middle of a Full-Screen Upcoming Scoreboard | `switch_upcoming_center` | `date_time` | The same choice for the full-screen scoreboard, plus `inherit` to follow the setting above. It defaults to the stacked date and time, which is what this display has always shown, so nothing changes until you pick something else. | -| Date Format | `date_format` | `abbrev` | How the scroll and Vegas cards write the date: `Sep 19`, `9/19`, `19 Sep`, `19/9`, or `Fri Sep 19`. | -| Full-Screen Date Format | `switch_date_format` | `numeric` | The same choice for the full-screen scoreboard, plus `inherit` to follow the row above. It has its own default because the two displays disagree about what is normal: the cards have always written `Sep 19` and the full-screen scoreboard `9/19`, so a single shared default would restyle one of them. | -| Time Format | `time_format` | `12h` | 12- or 24-hour clock. | -| Show Date / Show Time | `show_date`, `show_time` | `true` | Drop either line. | -| Swap Date and Time | `swap_date_time` | `false` | Swap the two lines over. Each display starts from its own order, so this flips them rather than forcing one: the scroll and Vegas cards put the time on top, the full-screen date/time stack puts the date on top. | - -Choosing the separator for the full-screen scoreboard moves the date and time -out of the middle and onto the top and bottom rows, the same way the scroll -card lays them out; the "Next Game" header gives up the top row to them. - -The center-gap settings in the same section size the scroll and Vegas card's -middle strip only -- the full-screen scoreboard pins its logos to the panel -edges and is unaffected. - -Example: +### Regenerating the images in this README -```json -{ - "scroll_card": { - "vs_text": "@", - "switch_upcoming_center": "vs", - "date_format": "weekday" - } -} -``` +Every screenshot is produced from a declarative shot list against archived ESPN +payloads and a frozen clock, so re-rendering is reproducible: -### Text Colours +```bash +python scripts/render_docs_assets.py --plugin afl-scoreboard +``` -Each text element in the **Customization** section carries a colour, and it now -applies to the text drawn in that element's face — on the full-screen scoreboard -and on the scroll and Vegas cards alike. Until this version the picker changed -only which font was loaded; every string was drawn white. +The fixtures under `docs/assets/afl-scoreboard/fixtures/` are real ESPN +responses from the 2026 finals series. The live-mode fixture is that same real +data with one match's status rewound to three-quarter time and its score set to +the real cumulative three-quarter total, so the live card shows a moment that +genuinely happened rather than an invented one. -| Element | Key | Colours | -|---|---|---| -| Score | `score_text` | The score, and the matchup separator on an upcoming card | -| Period / clock | `period_text` | The clock, period, and the date and time on an upcoming scoreboard | -| Team name | `team_name` | Team names and abbreviations | -| Status | `status_text` | Status lines such as "Next Game" | -| Detail | `detail_text` | Small detail lines | -| Ranking | `rank_text` | Team rankings drawn in the ranking face | +--- -Colours are `[r, g, b]` or `"#RRGGBB"`, and every default is white, so a display -nobody has recoloured looks exactly as it did. +## Support -```json -{ - "customization": { - "score_text": { "text_color": [255, 200, 0] }, - "status_text": { "text_color": "#00A0FF" } - } -} -``` +- YouTube: +- Instagram: +- Discord: +- Sponsor: [GitHub Sponsors](https://github.com/sponsors/ChuckBuilds) · + [Buy Me a Coffee](https://buymeacoffee.com/chuckbuilds) · + [Ko-fi](https://ko-fi.com/chuckbuilds/) -Two things keep their own colours on purpose: the betting-odds figures, which -are coloured by which side is favoured, and a finished game's score when -**Favorite Team Result Colors** is on — that tint wins, and your score colour -shows on every other game. Records and rankings drawn in the small fixed face -stay white; no element in the schema owns that face. +Released under the GNU General Public License v3.0 — see [LICENSE](LICENSE). diff --git a/plugins/afl-scoreboard/manifest.json b/plugins/afl-scoreboard/manifest.json index 40163bec..15b3b323 100644 --- a/plugins/afl-scoreboard/manifest.json +++ b/plugins/afl-scoreboard/manifest.json @@ -1,7 +1,7 @@ { "id": "afl-scoreboard", "name": "AFL Scoreboard", - "version": "1.17.2", + "version": "1.17.3", "author": "ChuckBuilds", "description": "Live, recent, and upcoming AFL (Australian Football League) games with real-time scores and game status.", "category": "sports", @@ -18,6 +18,13 @@ "afl_upcoming" ], "versions": [ + { + "version": "1.17.3", + "released": "2026-09-02", + "ledmatrix_min_version": "2.0.0", + "notes": "Documentation only, no behaviour change. Rewrites the README around real rendered screenshots of the 2026 finals series and documents every configuration option. Writes down the game-selection logic in full: the three selection paths, and that upcoming_games_to_show/recent_games_to_show mean a per-team budget under show_favorite_teams_only but a total otherwise. Records four verified dead ends so they stop costing people time: show_odds is a no-op for AFL because ESPN publishes no odds block for the league (though it still issues one odds request per selected game), show_ranking has no poll to draw, dynamic_duration.min_duration_seconds is never read, and background_service.max_workers is ignored in favour of a single worker. Also corrects README defaults that had drifted from the schema (show_favorite_teams_only, display_duration, show_odds).", + "changelog": "Documentation only, no behaviour change. Rewrites the README around real rendered screenshots of the 2026 finals series and documents every configuration option. Writes down the game-selection logic in full: the three selection paths, and that upcoming_games_to_show/recent_games_to_show mean a per-team budget under show_favorite_teams_only but a total otherwise. Records four verified dead ends so they stop costing people time: show_odds is a no-op for AFL because ESPN publishes no odds block for the league (though it still issues one odds request per selected game), show_ranking has no poll to draw, dynamic_duration.min_duration_seconds is never read, and background_service.max_workers is ignored in favour of a single worker. Also corrects README defaults that had drifted from the schema (show_favorite_teams_only, display_duration, show_odds)." + }, { "version": "1.17.2", "released": "2026-08-31", @@ -252,7 +259,7 @@ "ledmatrix_min": "2.0.0" } ], - "last_updated": "2026-08-13", + "last_updated": "2026-09-02", "stars": 0, "downloads": 0, "verified": true, From 87ed3eb02e1b04d33341a3e89a5355a7cfd4a7d5 Mon Sep 17 00:00:00 2001 From: Chuck <33324927+ChuckBuilds@users.noreply.github.com> Date: Wed, 2 Sep 2026 12:03:16 -0400 Subject: [PATCH 2/2] docs(afl-scoreboard): restore the Vegas ticker weighting section The rewrite dropped it. It documents core config (display.vegas_scroll.*) rather than plugin config, which is exactly why it is worth keeping here: a live game takes over the panel by default, and the settings that instead keep the marquee running and weight this scoreboard's slots are somewhere the reader would not think to look. Reworded to name filtering.favorite_live_boost and live_update_interval by their full paths, so it lines up with the reference sections above it. Co-Authored-By: Claude Opus 5 --- plugins/afl-scoreboard/README.md | 41 ++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/plugins/afl-scoreboard/README.md b/plugins/afl-scoreboard/README.md index de19d942..a2fa9830 100644 --- a/plugins/afl-scoreboard/README.md +++ b/plugins/afl-scoreboard/README.md @@ -23,6 +23,7 @@ real 2026 finals series.* - [What the "games to show" numbers mean](#what-the-games-to-show-numbers-mean) - [Which games exist to pick from](#which-games-exist-to-pick-from) - [Live games and priority](#live-games-and-priority) + - [Seeing live games more often in the Vegas ticker](#seeing-live-games-more-often-in-the-vegas-ticker) 4. [Configuration Reference](#configuration-reference) - [Teams and filtering](#teams-and-filtering) - [Display modes and rotation](#display-modes-and-rotation) @@ -196,6 +197,46 @@ The live screen has its own selection: - `live_priority` (default `true`) lets a live game interrupt the normal mode rotation rather than waiting its turn. +### Seeing live games more often in the Vegas ticker + +By default a live game **takes over** the display: the Vegas ticker stops and +this scoreboard goes full screen until the game ends. If you would rather keep +the marquee scrolling and still see scores, the relevant settings live in the +**core** LEDMatrix config rather than in this plugin: + +```json +{ + "display": { + "vegas_scroll": { + "live_in_ticker": true, + "live_weight": 3, + "favorite_live_weight": 5 + } + } +} +``` + +The ticker is otherwise a strict round robin — every plugin appears once per +cycle — so with a dozen plugins enabled a score comes round once a lap. These +weights let this scoreboard claim several slots per cycle, spaced evenly through +it rather than bunched together. + +`live_weight` applies whenever this scoreboard has any live game. +`favorite_live_weight` applies when one of your `favorite_teams` is playing, so +your club's game comes round more often than other live games. That distinction +has to be made here rather than in the core, which can tell *that* a game is +live but not *whose*. + +Two things to keep in mind: + +- The weight is per **plugin**, not per game. With four games live this + scoreboard still occupies one slot at a time and picks between its own games + using `filtering.favorite_live_boost`; these weights control how often the + scoreboard itself comes round. +- More slots make the cycle **longer**, not faster — everything else appears + proportionally less often. And appearing more often only helps if the data is + fresh, which is governed by `live_update_interval` above. + --- ## Configuration Reference