From d6b77a43d20b8646b62d2445a0f497798eea8bbe Mon Sep 17 00:00:00 2001 From: Chuck <33324927+ChuckBuilds@users.noreply.github.com> Date: Wed, 2 Sep 2026 13:20:54 -0400 Subject: [PATCH 1/2] docs(afl-scoreboard): document every setting, with real finals-series renders Re-lands #356, which merged but never reached main: I based it on docs/7-segment-clock-readme so it could use the render tooling before that tooling existed on main, and #355 squash-merged that branch to main *before* at since. This is the same content, cut from main instead. Documentation only; no behaviour change. 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. 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. Four dead ends are recorded, each verified rather than assumed: show_odds is a no-op for AFL because ESPN publishes no odds block for the league (a full finals-week payload contains zero) though it still issues one odds request per selected game; show_ranking has no poll to read; and dynamic_duration.min_duration_seconds and background_service.max_workers are in the schema but never applied. Re-verified against main rather than assumed still-current: every documented default still matches config_schema.json after #353 and #354, and the committed images re-render byte-identical against main's sports.py, which those PRs changed. The harness passes 24/24. Version bumped from main's current 1.19.0 rather than the 1.17.3 the stranded branch carried. 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/afl-scoreboard/README.md | 778 ++++++++++++------ plugins/afl-scoreboard/manifest.json | 9 +- 13 files changed, 1056 insertions(+), 256 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/afl-scoreboard/README.md b/plugins/afl-scoreboard/README.md index 8993c9c1..a2fa9830 100644 --- a/plugins/afl-scoreboard/README.md +++ b/plugins/afl-scoreboard/README.md @@ -1,203 +1,208 @@ ------------------------------------------------------------------------------------ -### 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) + - [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) + - [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/ - ------------------------------------------------------------------------------------ - -# AFL Scoreboard Plugin - -A plugin for LEDMatrix that displays live, recent, and upcoming **AFL (Australian -Football League)** games with real-time scores and game status. - -## Features - -- **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 - -## Display Modes - -The plugin exposes three display modes: - -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 - -During a live game the status area shows: - -- **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 - -## Configuration +```json +{ + "afl-scoreboard": { + "enabled": true, + "favorite_teams": ["CARL", "GEEL"] + } +} +``` -AFL is a single league, so all settings live at the top level of the plugin -config (there is no per-league nesting). +A fuller example — favourites first, but other games still get a look in: ```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 + "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 } + } + } } ``` -### 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). | +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. -### 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. +## How Games Are Picked -## Team Names & Abbreviations +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. -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. +### The three selection modes -> **Tip:** If you're unsure of an abbreviation, enable debug logging — the plugin -> logs `home_abbr` and `away_abbr` for every game it processes. +**1. No favourites configured** (`favorite_teams: []`) -## Team Logos +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. -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. +**2. Favourites, exclusively** (`favorite_teams` set, `show_favorite_teams_only: true`) -## Data Source +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. -Game data is fetched from ESPN's public AFL scoreboard endpoint (no API key -required): +**3. Favourites first, then others** (`favorite_teams` set, `show_favorite_teams_only: false`) -``` -https://site.api.espn.com/apis/site/v2/sports/australian-football/afl/scoreboard -``` +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. -## Dependencies +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. -This plugin requires the main LEDMatrix installation and uses the plugin system -base classes. +> **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". -## Installation +### What the "games to show" numbers mean -The easiest way is the Plugin Store in the LEDMatrix web UI: +`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: -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 +| 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 | -Manual install: copy this directory into your LEDMatrix `plugins_directory` -(default `plugin-repos/`) and restart the display service. +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. -## Testing +`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. -- `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`). +### Which games exist to pick from -## Favorite Team Result Colors +Selection can only choose from games the plugin actually fetched. The fetch +window is controlled by two settings: -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. +- `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. -```json -{ - "customization": { - "favorite_result_colors": { - "enabled": true, - "win_color": [0, 255, 0], - "loss_color": [255, 0, 0], - "tie_color": [255, 200, 0] - } - } -} -``` +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`. -- 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. +### Live games and priority -## Troubleshooting +The live screen has its own selection: -- **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. +- 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. -## Vegas ticker: seeing live games more often +### 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 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: +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 { @@ -213,12 +218,12 @@ the marquee scrolling and still see scores, set this in the core config: 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 +weights let this scoreboard claim several slots per cycle, spaced evenly through it rather than bunched together. -`live_weight` applies whenever this scoreboard has a live game. +`live_weight` applies whenever this scoreboard has any 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 +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*. @@ -226,120 +231,385 @@ 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. + 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 this plugin's own live update interval. + fresh, which is governed by `live_update_interval` above. + +--- + +## 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): -## 🎯 Which Games Get Shown +```json +{ + "customization": { + "score_text": { "font_size": 12, "text_color": [255, 220, 0] } + } +} +``` + +`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. -**`upcoming_games_to_show` is not "how many cards you see".** It is the size of a *pool*. The panel cycles through that pool one card at a time and keeps its place between visits, so a pool of 3 means the board rotates through the same 3 games until the schedule moves on. Making the number bigger gives you a *longer lap*, so any one game comes round **less** often. +### Timezone -Which mode you are in depends on whether `favorite_teams` is set and whether `show_favorite_teams_only` is on: +| Option | Default | What it does | +|--------|---------|--------------| +| `timezone` | `""` | **Advanced.** IANA timezone for start times, e.g. `Australia/Melbourne` | -| `favorite_teams` | `show_favorite_teams_only` | What you get | -|---|---|---| -| empty | either | The next N games league-wide, chronologically. Every game shown is a non-favorite game, so the two filters below apply to all of them. | -| set | **on** | Only your teams. The limit is a budget **per team**. | -| set | **off** | **Your teams first, then other games to fill.** Both limits are **totals**. | +Resolution order, first match wins: -The third row is what most people want, and it did not exist before: with the flag off, favorites used to be ignored *entirely*. +1. `timezone` in this plugin's config +2. The global LEDMatrix `timezone` setting +3. The system timezone -### The settings +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. -| Option | Default | Description | -|---|---|---| -| `upcoming_games_to_show` | varies | How many **favorite** upcoming games to show. | -| `recent_games_to_show` | varies | The same, for finished games. | -| `other_upcoming_games_to_show` | matches `upcoming_games_to_show` | How many **non-favorite** upcoming games to add. `0` gives you favorites only. | -| `other_recent_games_to_show` | matches `recent_games_to_show` | The same, for finished games. | -| `other_rotation_interval_seconds` | `1800` | How often the non-favorite slice advances. `0` pins it. | -| `other_games_min_quality` | `ranked` | Which non-favorite games qualify: `ranked`, `broadcast`, or `any`. | -| `other_games_divisions` | `["fbs"]` | Which divisions non-favorite games may come from. College football only — see the note below. | +--- -**Your favorite teams are never filtered by the last two** — follow a smaller-division team and its games always appear. Those settings only decide what fills the *remaining* slots. +## Panel Sizes -Within the other-games pool, **the better matchup leads**, and each team appears once. The pool is each team's *next* game ordered by the best poll position of either side, so a top-five matchup sits in the first window rather than whichever kicks off soonest — and the #1 team's whole season does not sort above everyone else's opener. Ties fall back to kickoff order, and a league with no poll keeps chronological order. Your favorite teams are ordered by when they play, not by rank -- for your own team the next game is the point. +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. -### Variety comes from turnover +![The same final rendered on 64x32, 128x32, 128x64 and 256x32 +panels](../../docs/assets/afl-scoreboard/panel-sizes.png) -Rather than widening the pool, the non-favorite slice **moves**: the window advances by its own width every `other_rotation_interval_seconds`, so consecutive windows do not overlap and the board works through the schedule instead of resampling the front of it. Your favorites are not rotated — for upcoming games the soonest ones are the point. +- **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. -Both filters **fail open**: if the data behind them cannot be fetched, the game is allowed through. A board showing filler is a poor board; a board showing nothing is a broken one. +--- -They fail open a second time, as a set: if the filters between them leave **nothing at all** — your teams idle and every other game rejected — the unfiltered list is used instead. Setting `other_upcoming_games_to_show` or `other_recent_games_to_show` to `0` is the one way to ask for an empty slate, and that is honoured. +## Team Abbreviations -> Both `other_games_min_quality` and `other_games_divisions` are inert in this plugin. `ranked` needs a national poll and the division filter needs ESPN's FBS/FCS group rosters; this league has neither, so every game passes both, and neither costs a request — no poll is fetched and no division lookup is made. +`favorite_teams` and `exclude_teams` take the ESPN abbreviation, not the club +name: -## Matchup separator and the upcoming card middle +| 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 | -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. +ESPN's team list also exposes a stale `GCFC` entry mislabelled as "Sydney +Swans". Use `SUNS` for Gold Coast. -| 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. +## Known Limitations -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. +These are real, verified against the live ESPN feed — they are documented here +rather than left for you to discover on the panel. -Example: +**`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. -```json -{ - "scroll_card": { - "vs_text": "@", - "switch_upcoming_center": "vs", - "date_format": "weekday" - } -} +**`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. + +**`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. + +**`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 + +**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 ``` -### Text Colours +`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). -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. +### Data source -| 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 | +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. -Colours are `[r, g, b]` or `"#RRGGBB"`, and every default is white, so a display -nobody has recoloured looks exactly as it did. +### Regenerating the images in this README -```json -{ - "customization": { - "score_text": { "text_color": [255, 200, 0] }, - "status_text": { "text_color": "#00A0FF" } - } -} +Every screenshot is produced from a declarative shot list against archived ESPN +payloads and a frozen clock, so re-rendering is reproducible: + +```bash +python scripts/render_docs_assets.py --plugin afl-scoreboard ``` -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. +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. + +--- + +## Support + +- 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/) + +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 157f8056..d341ebac 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.19.1", + "version": "1.19.2", "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.19.2", + "released": "2026-09-02", + "ledmatrix_min_version": "3.2.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.19.1", "released": "2026-09-02", From e29b505d703109f9d53999320e615762f4fb3263 Mon Sep 17 00:00:00 2001 From: Chuck <33324927+ChuckBuilds@users.noreply.github.com> Date: Wed, 2 Sep 2026 13:22:26 -0400 Subject: [PATCH 2/2] chore(afl-scoreboard): re-bump to 1.19.2 after the logo fix landed #357 took the plugin to 1.19.1 while this was open, so the docs bump moves to 1.19.2 and sits on top of it. Images re-verified byte-identical after the rebase; plugins.json regenerated. Co-Authored-By: Claude Opus 5 --- plugins.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins.json b/plugins.json index 66a6e479..610c1736 100644 --- a/plugins.json +++ b/plugins.json @@ -1048,7 +1048,7 @@ "downloads": 0, "verified": true, "screenshot": "", - "latest_version": "1.19.1", + "latest_version": "1.19.2", "last_updated": "2026-09-02" }, {