From 2f13603a7f61724a0c6bd53e906b70bc4d231705 Mon Sep 17 00:00:00 2001 From: Chuck <33324927+ChuckBuilds@users.noreply.github.com> Date: Fri, 4 Sep 2026 02:31:52 -0400 Subject: [PATCH] docs(soccer-scoreboard): document all 636 settings, with real renders The README documented six of the ten leagues by pasting a near-identical config block for each, covered a fraction of the 636 settings, and had no images. It now documents every schema leaf -- verified by a token audit -- with six renders, and keeps the ChuckBuilds links block, the supported-league table, the custom-league codes, the World Cup section, the TEAMS.md pointer and the non-favorite dwell table. Ten league blocks, 53 leaves each, identical except enabled. One section collapses 477 of the 636 leaves. leagues..display_options does nothing. Nothing in this plugin or in the core reads it; _adapt_config_for_manager takes show_records, show_ranking and show_odds from the plugin config root instead. Proved by render in both directions -- toggling the per-league copy gives byte-identical panels, toggling the root key draws and removes the records. That is 30 settings, and it is the opposite precedence to every other scoreboard here, so a config pattern carried across sets the wrong one. Filed as #435; the README documents the behaviour that exists. scroll_settings in the same blocks looks equally unreferenced but is live -- scroll_display.py delegates to the core base class, which reads it. Grepping the core is what separated the two. Soccer has the richest status model of the set, and it was undocumented beyond a list in the World Cup section: 1H, 2H, HALF, ET1, ET2, ETH and PEN while live, then Final, F/ET or F/Pen. Both now have renders. check_plugin.py passes 24/24 with no FAIL. Carries the docs-tooling changes from #423, which this render depends on. Co-Authored-By: Claude Opus 5 --- .../soccer-scoreboard/display-modes.png | Bin 0 -> 42829 bytes .../assets/soccer-scoreboard/final-states.png | Bin 0 -> 40006 bytes docs/assets/soccer-scoreboard/hero.png | Bin 0 -> 11003 bytes docs/assets/soccer-scoreboard/panel-sizes.png | Bin 0 -> 49267 bytes .../soccer-scoreboard/period-states.png | Bin 0 -> 53672 bytes docs/assets/soccer-scoreboard/shots.json | 1311 +++++++++++++++++ .../assets/soccer-scoreboard/show-records.png | Bin 0 -> 27931 bytes plugins.json | 4 +- plugins/soccer-scoreboard/README.md | 926 +++++++----- plugins/soccer-scoreboard/manifest.json | 16 +- scripts/docs_render_support/sitecustomize.py | 55 +- scripts/render_docs_assets.py | 3 + 12 files changed, 1922 insertions(+), 393 deletions(-) create mode 100644 docs/assets/soccer-scoreboard/display-modes.png create mode 100644 docs/assets/soccer-scoreboard/final-states.png create mode 100644 docs/assets/soccer-scoreboard/hero.png create mode 100644 docs/assets/soccer-scoreboard/panel-sizes.png create mode 100644 docs/assets/soccer-scoreboard/period-states.png create mode 100644 docs/assets/soccer-scoreboard/shots.json create mode 100644 docs/assets/soccer-scoreboard/show-records.png diff --git a/docs/assets/soccer-scoreboard/display-modes.png b/docs/assets/soccer-scoreboard/display-modes.png new file mode 100644 index 0000000000000000000000000000000000000000..b8519aa8f7625b2920c5fd52f07bdd1e43413821 GIT binary patch literal 42829 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 ZU?}|d&jp literal 0 HcmV?d00001 diff --git a/docs/assets/soccer-scoreboard/final-states.png b/docs/assets/soccer-scoreboard/final-states.png new file mode 100644 index 0000000000000000000000000000000000000000..8d39fc9e9ffed6e99a6ff5eefadccb78033ee7d2 GIT binary patch literal 40006 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 E1C@YH`~Uy| literal 0 HcmV?d00001 diff --git a/docs/assets/soccer-scoreboard/hero.png b/docs/assets/soccer-scoreboard/hero.png new file mode 100644 index 0000000000000000000000000000000000000000..f51c9fe7305055976453a9e61c21fbe94cd4c0b5 GIT binary patch literal 11003 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%0Di-QP?F+4 zJkW#9k}+~|sF3t}kE`!fS1o0cPJSoVmEou$f1W7ClVL7s}Bp@E#}pAHj+As zYmok7hRcJKu#A`!BAte8zjm<8Y{sq-AB`Bvv&X^R8>$9E*;#%^xSu@hkZkwQc^Q^I z=V1GOZLwri+R2<03EIcgpW07R>%d9TY1QHjj+nJyQ_IoDqKRR|?!PaX{@I&>U~$dq zg+5+!wdV0{YHD}|yF1m1esl9HhB3=$z#E(wO#&{s zORKyKCKZ53gO<4f6ZmDSfbn1^{A3gE7JfHg_3UYCK499W@8MFDYv|w;FB*J&qcH|K zqW`9R?anRu5oa(*0bEG*X_h z^dm#dPUozg!t^u8V#E^R*^}PAyI!%t;Fl>3bsg?&r|-7fWRNk{9E&bVkdgp#~K=-ehPa6gp3Vb(ztLjb($DcG;d?KKPBHS9Xm*3z*|>o zULV@_?`hW>{DEhg20^5d;W8N*L6$rR=xdN^^sv8%pnTyYp2z-;lu1Gk>!)LUS(j~g zopDjPAclp3gG$E}dL+83!k%msxMtMoGVE|BLS1wEOSpAM*!CKgyQ(QDuIs7&m6Oq&5)VFHUG7c% zhlkVQ< zHm%KACO30~lJUm{?Q6tAzMOHQi(iWV2GMsTe24b@mp5RFyYLa{%`SPv(TWnYvCz5V z%y9R;Huad@yRPXPoTJ(SCS0AZ)&vf3$HEA=CUmFRS^3hOy}3=qvLubJZP@Pow_A+s z%WrmSlHKYa11U?G)dve-zz(6egZ}H}!$>Z^fS!=NOOKpNCaRz;ZK+mAUBsbRKuF(G5XoS*TzQi`>7mYG~ z=jqV9%bOBN5D${p*K90v$MU{UPY}nMeG!ctYC>`}tb6M`WCf{ic698eqbJQXNw!MU znPP{ls<4ZpbmLg%@^7@!gA2QGU!^8VSK+3rnB~weySoGdQs<>(%;cht^N8dSE^ksc zj$s)!RmTfHoajs`TS}Fq)tavw!_YGV#|5TG+G}fHIhk`iJmtb30rl})z7*P=DwE8h}JDq@&-$~O3k%Ij*INq-kB~);3 zAO$O>pjvhQ3s86)CWr77o~jptqJqJWh+TSdP;x#1An9%9Mio z^E(K_Vo5!V*4})VyjMV7dGr5GO|hL)>HJ5o=ieKGKkE_3zTaXio|~{;I&-uwk{KqB zOAi?4{NDToIoi3r<)0nbSUNsd945ZWkXPBJy)3?U55dUG(#uAKpNX%kKi+xBLuLzC zi(iXR$rx!T2}Ou|i&A2t%r4zX^`5O2Hz(^;knYS-a@2A_sy&+}EAf8l&O}39j7y5` z0W9T__XZogWm>=^E8%r@~9Dr_;-+iexNTY8byg1sr4{jS7 zG(Qu%JYSS9$&R;D+|vf6Wx`pssv?4#aln-t$^*~9&6Md2_Ck0F$I5zdO%TZRSIZxj z8hdty_pciM)GTX zC$Nh@({7F|M$t7~k80Y)ZilB%nO}sRT5t1C=#Yy5=Aa4;T<_v0^dmJNm!cI#16=>}1W!eP9eyfFGD4UiB<5Uj0&swP0?v`~X7)fDD zD`G*t@LCN@9ib!pJ%Zzq0}1>cUI^=Uy~(kxeVVde7g&{j8!w`hPB6YHzhmVi3E`2| zU^Kbg22&hpuPpztc`ku$X(h*;SWAsfy0Zn0MQ5zGhwwyUgc`$xnpeub0PQ#!xQ`k# zrMX9|23s4ldL=F)BXh&|^B?2zzgte^Fql(k6uYYA*HP!VV6stZD`9Hbm B4YdFO literal 0 HcmV?d00001 diff --git a/docs/assets/soccer-scoreboard/panel-sizes.png b/docs/assets/soccer-scoreboard/panel-sizes.png new file mode 100644 index 0000000000000000000000000000000000000000..ded027a022046080e09588afd728345e0beca9cb GIT binary patch literal 49267 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 syMOLq-CFN8UO$Q literal 0 HcmV?d00001 diff --git a/plugins.json b/plugins.json index f818927f..06863d74 100644 --- a/plugins.json +++ b/plugins.json @@ -1,6 +1,6 @@ { "version": "1.0.0", - "last_updated": "2026-09-03", + "last_updated": "2026-09-04", "plugins": [ { "id": "cricket-scoreboard", @@ -760,7 +760,7 @@ "last_updated": "2026-09-02", "verified": true, "screenshot": "", - "latest_version": "2.24.1" + "latest_version": "2.24.2" }, { "id": "static-image", diff --git a/plugins/soccer-scoreboard/README.md b/plugins/soccer-scoreboard/README.md index 343249c6..dbd1e00e 100644 --- a/plugins/soccer-scoreboard/README.md +++ b/plugins/soccer-scoreboard/README.md @@ -1,374 +1,576 @@ ------------------------------------------------------------------------------------ ### Connect with ChuckBuilds -- Show support on Youtube: https://www.youtube.com/@ChuckBuilds +- 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 +- Feeling generous? Support the project: + - GitHub Sponsors: https://github.com/sponsors/ChuckBuilds - Buy Me a Coffee: https://buymeacoffee.com/chuckbuilds - - Ko-fi: https://ko-fi.com/chuckbuilds/ + - Ko-fi: https://ko-fi.com/chuckbuilds/ + +--- + +# Soccer Scoreboard + +Live, recent, and upcoming soccer on your LEDMatrix display — ten leagues built +in, and any other league ESPN covers can be added. From ESPN's public API, no +API key required. + +![Premier League live scorebug](../../docs/assets/soccer-scoreboard/hero.png) + +## Contents + +- [Quick start](#quick-start) +- [Display modes](#display-modes) +- [Match states](#match-states) +- [Supported leagues](#supported-leagues) +- [Adding another league](#adding-another-league) +- [FIFA World Cup](#fifa-world-cup) +- [Team abbreviations](#team-abbreviations) +- [How games are chosen](#how-games-are-chosen) +- [Panel sizes](#panel-sizes) +- [Settings reference](#settings-reference) +- [Per-league settings](#per-league-settings) +- [Matchup separator and the upcoming card middle](#matchup-separator-and-the-upcoming-card-middle) +- [Fonts, colours and layout](#fonts-colours-and-layout) +- [Favorite team result colours](#favorite-team-result-colours) +- [Vegas ticker: seeing live games more often](#vegas-ticker-seeing-live-games-more-often) +- [Installation](#installation) +- [Troubleshooting](#troubleshooting) + +## Quick start + +1. Install **Soccer Scoreboard** from the LEDMatrix Plugin Store. +2. Turn on `enabled`, then the leagues you want. The seven domestic leagues are + on by default; the two UEFA competitions and the World Cup are off. +3. Add your clubs under each league's **Favorite Teams**, using ESPN + abbreviations. ------------------------------------------------------------------------------------ +```json +{ + "soccer-scoreboard": { + "enabled": true, + "show_records": true, + "leagues": { + "eng.1": { + "enabled": true, + "favorite_teams": ["LIV", "MCI", "ARS"], + "filtering": { "show_favorite_teams_only": false }, + "game_limits": { + "recent_games_to_show": 2, + "upcoming_games_to_show": 3 + } + }, + "esp.1": { + "enabled": true, + "favorite_teams": ["RMA", "BAR"] + } + } + } +} +``` -# Soccer Scoreboard Plugin +## Display modes -A plugin for LEDMatrix that displays live, recent, and upcoming soccer games across multiple leagues including Premier League, La Liga, Bundesliga, Serie A, Ligue 1, MLS, and FIFA World Cup. +Unlike the other scoreboards in this repo, soccer exposes **three modes in +total** — not three per league. Every enabled league feeds the same three +screens. -## Features +![The three display modes](../../docs/assets/soccer-scoreboard/display-modes.png) -- **Multiple League Support**: Premier League, La Liga, Bundesliga, Serie A, Ligue 1, MLS, Champions League, Europa League, and more -- **Live Game Tracking**: Real-time scores, match time, and half information -- **Recent Games**: Recently completed games with final scores -- **Upcoming Games**: Scheduled games with start times -- **Favorite Teams**: Prioritize games involving your favorite teams -- **Background Data Fetching**: Efficient API calls without blocking display -- **Favorite Team Result Colors**: Optionally show a finished game's score in green when your favorite team won and red when it lost +| Mode | Shows | +|---|---| +| `soccer_live` | Matches in progress across every enabled league | +| `soccer_recent` | Recently finished matches | +| `soccer_upcoming` | Scheduled matches | -## Configuration +Each mode renders as **switch** (one match at a time, timed) or **scroll** (all +matches scroll horizontally at high FPS), set per league and per mode with +`leagues..display_modes._display_mode`. -### Global Settings +The mode toggles are named `live`, `recent`, `upcoming` — no `show_` prefix, +unlike the football and basketball scoreboards. -- `display_duration`: How long to show each game (5-60 seconds, default: 15) -- `show_records`: Display team win-loss records (default: false) -- `show_ranking`: Display team rankings when available (default: false) -- `background_service`: Configure API request settings -- `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. +## Match states -### Per-League Settings +Soccer has the richest status model of any scoreboard here, because a knockout +tie can run past 90 minutes and finish on penalties. The status area shows: -#### Premier League Configuration +![Live states: 2H, HALF, ET2, PEN](../../docs/assets/soccer-scoreboard/period-states.png) -```json -{ - "leagues": { - "eng.1": { - "enabled": true, - "favorite_teams": ["MUN", "LIV", "ARS"], - "display_modes": { - "live": true, - "recent": true, - "upcoming": true - }, - "recent_games_to_show": 5, - "upcoming_games_to_show": 10 - } - } -} -``` +| While live | Meaning | +|---|---| +| `1H` / `2H` | First or second half | +| `HALF` | Half-time | +| `ET1` / `ET2` | Extra time, first or second half | +| `ETH` | Half-time of extra time | +| `PEN` | Penalty shootout in progress | -#### La Liga Configuration +![Final states: Final, F/ET, F/Pen](../../docs/assets/soccer-scoreboard/final-states.png) -```json -{ - "leagues": { - "esp.1": { - "enabled": true, - "favorite_teams": ["RM", "BAR", "ATM"], - "display_modes": { - "live": true, - "recent": true, - "upcoming": true - }, - "recent_games_to_show": 5, - "upcoming_games_to_show": 10 - } - } -} -``` +| Once finished | Meaning | +|---|---| +| `Final` | Decided inside 90 minutes | +| `F/ET` | Decided in extra time | +| `F/Pen` | Decided on penalties | -#### Bundesliga Configuration +No configuration is involved — the state comes from the feed. -```json -{ - "leagues": { - "ger.1": { - "enabled": true, - "favorite_teams": ["BAY", "BVB", "RBL"], - "display_modes": { - "live": true, - "recent": true, - "upcoming": true - }, - "recent_games_to_show": 5, - "upcoming_games_to_show": 10 - } - } -} -``` +## Supported leagues -#### Serie A Configuration +Ten leagues are built in, each with its own config block under `leagues`: -```json -{ - "leagues": { - "ita.1": { - "enabled": true, - "favorite_teams": ["JUV", "INT", "MIL"], - "display_modes": { - "live": true, - "recent": true, - "upcoming": true - }, - "recent_games_to_show": 5, - "upcoming_games_to_show": 10 - } - } -} -``` +| Slug | League | Enabled by default | +|---|---|---| +| `eng.1` | Premier League (England) | Yes | +| `esp.1` | La Liga (Spain) | Yes | +| `ger.1` | Bundesliga (Germany) | Yes | +| `ita.1` | Serie A (Italy) | Yes | +| `fra.1` | Ligue 1 (France) | Yes | +| `usa.1` | MLS (USA) | Yes | +| `por.1` | Liga Portugal | Yes | +| `uefa.champions` | UEFA Champions League | No | +| `uefa.europa` | UEFA Europa League | No | +| `fifa.world` | FIFA World Cup | No | + +**`enabled` is the only setting whose default differs between them** — all ten +blocks are otherwise identical, with the same 53 settings each. Everything under +[Per-league settings](#per-league-settings) applies to all ten. + +## Adding another league + +Any other league ESPN covers can be added under **Add More Leagues** +(`custom_leagues`). Click **Add Item**, then fill in **both** a display name and +the ESPN league code — a row with a blank name will not save. + +| Field | Type | Default | What it does | +|---|---|---|---| +| `custom_leagues[].name` | string, 1–100 chars | — | Display name, e.g. `Liga MX`. | +| `custom_leagues[].league_code` | string, 1–50 chars | — | ESPN code, lowercase and dot-separated, e.g. `mex.1`. | +| `custom_leagues[].priority` | 1–100 or `null` | `50` | Display order; lower shows first. | -#### Ligue 1 Configuration +Common codes: -```json -{ - "leagues": { - "fra.1": { - "enabled": true, - "favorite_teams": ["PSG", "OM", "OL"], - "display_modes": { - "live": true, - "recent": true, - "upcoming": true - }, - "recent_games_to_show": 5, - "upcoming_games_to_show": 10 - } - } -} -``` +| Code | League | +|---|---| +| `eng.2` | English Championship | +| `eng.3` | English League One | +| `eng.fa` | FA Cup | +| `eng.league_cup` | EFL (Carabao) Cup | +| `mex.1` | Liga MX | +| `arg.1` | Argentine Primera División | +| `bra.1` | Brasileirão Série A | +| `ned.1` | Eredivisie | +| `sco.1` | Scottish Premiership | +| `tur.1` | Turkish Süper Lig | +| `bel.1` | Belgian Pro League | +| `conmebol.libertadores` | Copa Libertadores | -#### MLS Configuration +Codes are exactly as they appear in ESPN's own URLs +(`espn.com/soccer/scoreboard/_/league/eng.2`). Per-league favorites, durations, +and display modes live behind the settings button on the league's row. -```json -{ - "leagues": { - "usa.1": { - "enabled": true, - "favorite_teams": ["LA", "SEA", "ATL"], - "display_modes": { - "live": true, - "recent": true, - "upcoming": true - }, - "recent_games_to_show": 5, - "upcoming_games_to_show": 10 - } - } -} -``` +## FIFA World Cup -## Display Modes +Enable the **FIFA World Cup** league (`fifa.world`) to track World Cup 2026 +(June 11 – July 19, USA/Canada/Mexico). -The plugin supports three display modes: +- **To follow every match:** enable `fifa.world` and leave + `filtering.show_favorite_teams_only` off. +- **To follow one country:** enable `fifa.world`, set `favorite_teams` to that + country's ESPN abbreviation (`USA`, `ENG`, `BRA`), and turn + `filtering.show_favorite_teams_only` on. -1. **soccer_live**: Shows currently active games -2. **soccer_recent**: Shows recently completed games -3. **soccer_upcoming**: Shows scheduled upcoming games +Knockout ties use the extra-time and penalty states in +[Match states](#match-states). -## 🎯 Which Games Get Shown +## Team abbreviations -**`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. +`favorite_teams` takes the **ESPN API abbreviation** for each club (`"LIV"`, +`"MCI"`). Full club names are not accepted. -Which mode you are in depends on whether `favorite_teams` is set and whether `show_favorite_teams_only` is on: +See **[TEAMS.md](TEAMS.md)** for a complete list across all supported leagues. + +```json +"favorite_teams": ["LIV", "MCI", "ARS"] +``` + +> If you are unsure of an abbreviation, enable debug logging — the plugin logs +> `home_abbr` and `away_abbr` for every match it processes. + +## How games are chosen + +**`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 +matches until the schedule moves on. A bigger number gives you a *longer lap*, +so any one match comes round **less** often. + +Which regime you are in depends on that league's `favorite_teams` and +`filtering.show_favorite_teams_only`: | `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**. | +| empty | either | The next N matches league-wide, chronologically. Every match is a non-favorite match, so the `other_*` filters apply to all of them. | +| set | **on** (default) | Only your clubs. The limit is a budget **per team**. | +| set | **off** | **Your clubs first, then other matches to fill.** Both limits are **totals**. | -The third row is what most people want, and it did not exist before: with the flag off, favorites used to be ignored *entirely*. +### The selection settings -### The settings +Per league, under `game_limits`: | 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. | +| `recent_games_to_show` | `1` | Pool size for finished matches. | +| `upcoming_games_to_show` | `1` | The same for scheduled matches. | +| `other_recent_games_to_show` | `1` | How many **non-favorite** finished matches to add. `0` gives favorites only. | +| `other_upcoming_games_to_show` | `1` | The same for scheduled matches. | | `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. | +| `other_games_min_quality` | `ranked` | Which non-favorite matches qualify: `any` or `ranked`. | +| `other_games_divisions` | `["fbs"]` | Which divisions non-favorite matches may come from. | -**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. +The same seven keys also exist at the **plugin level**. `game_limits` wins where +the key is present, then the flat per-league key, then the plugin-level one. -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. +**Your favorite clubs are never filtered by the last two.** Those settings only +decide what fills the *remaining* slots. + +> **Both are inert in soccer.** `ranked` needs a national poll and the division +> filter needs ESPN's FBS/FCS group rosters — a college *football* taxonomy — so +> every match passes both and neither costs a request. The schema's help text +> for `other_games_min_quality` also mentions a `broadcast` option the enum does +> not offer; it was retired. ### Variety comes from turnover -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. +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 matches the soonest ones are the point. -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. +Both filters **fail open**: if the data behind them cannot be fetched, the match +is allowed through. They fail open a second time as a set — if the filters +between them leave nothing at all, 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. -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. +### Live rotation and celebrations -> 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. +When several matches are live at once the rotation is weighted: a match +involving one of your clubs gets `filtering.favorite_live_boost` turns for every +one turn other live matches get, and is queued first whenever the rotation +refreshes. It never interrupts a match already on screen. Set it to `1` for even +rotation, and note it is independent of `live_priority`, which controls whether +live matches preempt the recent/upcoming rotation at all. +When a favorite club scores or wins a live match, the scorebug gives way to a +full-screen celebration — `celebration_enabled` (default on), +`celebration_duration` (default 8s), and `celebrate_opponent_goals` (default +off). -## Supported Leagues +A live match the API stops reporting for `stale_game_timeout` seconds is +dropped, so an abandoned match does not sit on the board forever. -The plugin supports the following soccer leagues: +### Shorter dwell for non-favorite live matches -- **eng.1**: Premier League (England) -- **esp.1**: La Liga (Spain) -- **ger.1**: Bundesliga (Germany) -- **ita.1**: Serie A (Italy) -- **fra.1**: Ligue 1 (France) -- **usa.1**: MLS (USA) -- **por.1**: Liga Portugal (Portugal) -- **uefa.champions**: UEFA Champions League -- **uefa.europa**: UEFA Europa League -- **fifa.world**: FIFA World Cup +`non_favorite_live_game_duration` (0–120, default `0` = off) gives live matches +involving **none** of your clubs a shorter turn. It only takes effect when +favorite teams are configured **and** non-favorite live matches are being shown +— `filtering.show_favorite_teams_only` off, or `filtering.show_all_live` on: -### Adding another league +| Favorites set? | Non-favorite matches shown? | Match has a favorite? | Duration used | +|---|---|---|---| +| No | — | — | `live_game_duration` | +| Yes | No | favorite | `live_game_duration` | +| Yes | Yes | favorite | `live_game_duration` | +| Yes | Yes | none | `non_favorite_live_game_duration`, when above `0` | -Any other league ESPN covers can be added under **Add More Leagues** in the plugin -settings. Click **Add Item**, then fill in **both** a display name and the ESPN -league code — a row with a blank name will not save. +`exclude_teams` hides clubs from **both** the live rotation and the +recent/final scores — useful when watching a match delayed. It always wins when +a club appears in both lists. -Common codes: +## Panel sizes -| Code | League | -| --- | --- | -| `eng.2` | English Championship | -| `eng.3` | English League One | -| `eng.fa` | FA Cup | -| `eng.league_cup` | EFL (Carabao) Cup | -| `mex.1` | Liga MX | -| `arg.1` | Argentine Primera División | -| `bra.1` | Brasileirão Série A | -| `ned.1` | Eredivisie | -| `sco.1` | Scottish Premiership | -| `tur.1` | Turkish Süper Lig | -| `bel.1` | Belgian Pro League | -| `conmebol.libertadores` | Copa Libertadores | +![Live card at four panel sizes](../../docs/assets/soccer-scoreboard/panel-sizes.png) -Codes are lowercase and dot-separated, exactly as they appear in ESPN's own URLs -(`espn.com/soccer/scoreboard/_/league/eng.2`). Per-league favorites, durations, -and display modes live behind the ⚙ button on the league's row. +The plugin passes the render-safety harness on all eight supported sizes. At +64x32 the two crests and the centre column share very little room; 128x32 or +wider is a much better fit. -## FIFA World Cup +## Settings reference -Enable the **FIFA World Cup** league from the plugin settings to track World Cup 2026 (June 11 – July 19, USA/Canada/Mexico). +Settings marked **Advanced** sit behind the *Advanced* toggle in the web UI. +Defaults are the schema defaults, which is what the web UI writes. -**To follow all games:** Enable `fifa.world` and leave `Show Favorite Teams Only` off. +### Plugin level -**To follow just your country:** Enable `fifa.world`, set `Favorite Teams` to your country's ESPN abbreviation (e.g. `USA`, `ENG`, `BRA`), and enable `Show Favorite Teams Only`. +| Key | Type | Default | What it does | +|---|---|---|---| +| `enabled` | boolean | `false` | Master on/off switch for the whole plugin. | +| `display_duration` | 5–60 s | `15` | Per-game on-screen time. | +| `game_display_duration` | 3–60 s | `15` | **Advanced.** Per-match time within a mode, where the league does not override it. | +| `live_game_duration` | 10–120 s | `30` | **Advanced.** Per-match time for live matches, where the league does not override it. | +| `show_records` | boolean | `false` | Draw win-draw-loss records in the bottom corners. | +| `show_ranking` | boolean | `false` | Draw table positions where available. | +| `show_odds` | boolean | `true` | Draw betting odds. | +| `show_favorite_teams_only` | boolean | `true` | Show only your clubs' matches, where the league does not override it. | +| `recent_games_to_show` | 1–20 | `1` | Pool size for finished matches, where the league does not override it. | +| `upcoming_games_to_show` | 1–20 | `1` | The same for scheduled matches. | +| `other_recent_games_to_show` | 0–20 | `1` | **Advanced.** Non-favorite finished matches to add. | +| `other_upcoming_games_to_show` | 0–20 | `1` | **Advanced.** The same for scheduled matches. | +| `other_rotation_interval_seconds` | 0–86400 s | `1800` | **Advanced.** How often the non-favorite slice advances. | +| `other_games_min_quality` | `any` \| `ranked` | `ranked` | **Advanced.** Inert in soccer — see above. | +| `other_games_divisions` | array | `["fbs"]` | **Advanced.** Inert in soccer — see above. | +| `update_interval_seconds` | 30–86400 s | `3600` | **Advanced.** Base data refresh cadence. | +| `live_update_interval` | 10–300 s | `30` | **Advanced.** Refresh cadence while a match is live. | +| `recent_update_interval` | 60–86400 s | `3600` | **Advanced.** Refresh cadence for finished matches. | +| `upcoming_update_interval` | 60–86400 s | `3600` | **Advanced.** Refresh cadence for the schedule. | +| `stale_game_timeout` | 60–3600 s | `300` | **Advanced.** Drop a live match the API has stopped updating. | +| `schedule_lookback_days` | 1–60 | `14` | **Advanced.** How far back to fetch for the Recent screen. | +| `schedule_lookahead_days` | 1–60 | `14` | **Advanced.** How far ahead to fetch for Upcoming. A fixture beyond this horizon is never fetched. | +| `no_data_interval_seconds` | 5–86400 s | `300` | **Advanced.** Wait between live checks when nothing is live. Backs off further the longer nothing is found. | +| `live_idle_max_interval_seconds` | 5–86400 s | `900` | **Advanced.** Ceiling for that back-off. Useful out of season. | +| `timezone` | string | `""` | **Advanced.** IANA zone for kick-off times, e.g. `Europe/London`. Blank follows the LEDMatrix global timezone, then the host system's, then UTC. | + +![show_records on and off](../../docs/assets/soccer-scoreboard/show-records.png) + +> **`show_records`, `show_ranking` and `show_odds` are read from the plugin +> level only.** Each of the ten league blocks also declares a `display_options` +> object with the same three keys, but nothing reads it — verified by render in +> both directions, and by grepping both this plugin and the LEDMatrix core. +> Setting the per-league copy has no effect; set the plugin-level key above. +> This is the **opposite** of every other scoreboard in this repo, where the +> per-league copy wins, so do not carry that pattern across. Tracked as +> [issue #435](https://github.com/ChuckBuilds/ledmatrix-plugins/issues/435). + +### Background service + +All **Advanced**; the defaults suit a Pi and rarely want changing. + +| Key | Type | Default | +|---|---|---| +| `background_service.enabled` | boolean | `true` | +| `background_service.max_workers` | 1–10 | `3` | +| `background_service.request_timeout` | 5–120 s | `30` | +| `background_service.max_retries` | 1–10 | `3` | +| `background_service.priority` | 1–5 | `2` | -During knockout rounds, the status area shows: -- **ET1** / **ET2** — Extra Time first / second half -- **ETH** — Halftime of Extra Time -- **PEN** — Penalty Shootout in progress -- **F/ET** — Final, decided in Extra Time -- **F/Pen** — Final, decided on Penalties +## Per-league settings -## Team Names & Abbreviations +Every table below exists ten times, once per slug under `leagues`, with +identical keys and defaults except `enabled`. `` stands for any slug — +`leagues.eng.1`, `leagues.esp.1`, and so on. -The `favorite_teams` config field requires the **ESPN API abbreviation** for each team (e.g. `"LIV"`, `"MCI"`). Full team names are not supported. +### Teams and priority -See **[TEAMS.md](TEAMS.md)** for a complete list of abbreviations for all supported leagues. +| Key | Type | Default | What it does | +|---|---|---|---| +| `.enabled` | boolean | see [Supported leagues](#supported-leagues) | Build this league's managers at all. | +| `.favorite_teams` | array | `[]` | Clubs to prioritise, by ESPN abbreviation. | +| `.exclude_teams` | array | `[]` | Clubs to always hide, from the live rotation and from finals alike. Takes precedence over `favorite_teams` and `show_all_live`. | +| `.live_priority` | boolean | `true` | Let this league's live matches interrupt the rotation and display immediately. | -Example: -```json -"favorite_teams": ["LIV", "MCI", "ARS"] -``` +### Display modes + +| Key | Type | Default | +|---|---|---| +| `.display_modes.live` | boolean | `true` | +| `.display_modes.recent` | boolean | `true` | +| `.display_modes.upcoming` | boolean | `true` | +| `.display_modes.live_display_mode` | `switch` \| `scroll` | `switch` | +| `.display_modes.recent_display_mode` | `switch` \| `scroll` | `switch` | +| `.display_modes.upcoming_display_mode` | `switch` \| `scroll` | `switch` | + +### Filtering -> **Tip:** If you're unsure of an abbreviation, enable debug logging — the plugin logs `home_abbr` and `away_abbr` for every game it processes. +| Key | Type | Default | What it does | +|---|---|---|---| +| `.filtering.show_favorite_teams_only` | boolean | `true` | Show only your clubs' matches. | +| `.filtering.show_all_live` | boolean | `false` | Show every live match regardless of favorites. `exclude_teams` still applies. | +| `.filtering.favorite_live_boost` | 1–5 | `2` | Turns a favorite's live match gets per one turn for other live matches. `1` is even rotation. | -## Filtering & Live Priority +### Game limits -Each league (and each custom league) has its own `filtering` block plus a couple of sibling settings: +See [The selection settings](#the-selection-settings). -| Setting | Default | Effect | +| Key | Type | Default | |---|---|---| -| `filtering.show_favorite_teams_only` | `true` | Only show games involving `favorite_teams`. | -| `filtering.show_all_live` | `false` | Overrides the above — show every live game, favorites or not. | -| `favorite_teams` | `[]` | Teams to prioritize (see above for abbreviation format). | -| `exclude_teams` | `[]` | Teams to always hide, from **both** the live rotation and Recent/Final scores — useful for spoiler protection if you're planning to watch a game delayed. Takes precedence over every other setting: an excluded team's games never show, even if `show_all_live` is on or the team is also listed in `favorite_teams`. | -| `filtering.favorite_live_boost` | `2` | How many turns your favorite's live game gets in the live rotation for every 1 turn other live games get. Your favorite's game is also always queued first the moment it goes live. Set to `1` for perfectly even rotation (no boost). Has no effect unless `favorite_teams` is configured and more than one game is live. | -| `non_favorite_live_game_duration` | `0` (off) | Seconds to show live games with **no** favorite team, so they flash by faster than your favorites (which keep `live_game_duration`). Only applies when `favorite_teams` is set **and** non-favorite live games are shown (`show_favorite_teams_only` off, or `show_all_live` on). `0` = every live game uses `live_game_duration` (no change). See below. | -| `live_priority` | varies | Lets this league's live games interrupt the recent/upcoming mode rotation (unrelated to which *specific* live game is shown — that's what `favorite_live_boost` controls). | - -Example: -```json -{ - "leagues": { - "eng.1": { - "favorite_teams": ["LIV"], - "exclude_teams": ["MUN"], - "filtering": { - "show_favorite_teams_only": false, - "show_all_live": false, - "favorite_live_boost": 3 - } - } - } -} -``` -With both `show_favorite_teams_only` and `show_all_live` off, all live games rotate evenly — except Liverpool's game shows 3× as often (and jumps to the front the instant it goes live) whenever they're playing, and Man United's games never appear in live or recent/final scores at all. +| `.game_limits.recent_games_to_show` | 1–20 | `1` | +| `.game_limits.upcoming_games_to_show` | 1–20 | `1` | +| `.game_limits.other_recent_games_to_show` | 0–20 | `1` | +| `.game_limits.other_upcoming_games_to_show` | 0–20 | `1` | +| `.game_limits.other_rotation_interval_seconds` | 0–86400 s | `1800` | +| `.game_limits.other_games_min_quality` | `any` \| `ranked` | `ranked` | +| `.game_limits.other_games_divisions` | array | `["fbs"]` | -### Shorter dwell for non-favorite live games +### Durations -`non_favorite_live_game_duration` (0-120, default 0 = off) gives live games that -involve **none** of your favorite teams a shorter on-screen turn than your -favorites. For example `live_game_duration: 30` with -`non_favorite_live_game_duration: 5` shows your teams for 30s each while everyone -else's games flash by in 5s. +| Key | Type | Default | What it does | +|---|---|---|---| +| `.live_game_duration` | number | `20` | Per-match time for live matches. Applies to matches with a favorite when a non-favorite duration is set. | +| `.non_favorite_live_game_duration` | number | `0` | Shorter turn for live matches with no favorite. `0` means use `live_game_duration` for everything. | +| `.recent_game_duration` | number | `15` | Per-match time on the Recent screen. | +| `.upcoming_game_duration` | number | `15` | Per-match time on the Upcoming screen. | -This **only takes effect** when favorite teams are configured **and** -non-favorite live games are being shown — `show_favorite_teams_only` off, or -`show_all_live` on (otherwise non-favorite games are never on screen to -shorten). Leave it at `0` to display every live game for `live_game_duration`. +### Update intervals -| Favorite teams set? | Non-favorite games shown? | Live game has a favorite? | Duration used | +| Key | Type | Default | What it does | |---|---|---|---| -| No | — | — | `live_game_duration` (unchanged) | -| Yes | No (`show_favorite_teams_only` on, `show_all_live` off) | favorite | `live_game_duration` | -| Yes | Yes (`show_favorite_teams_only` off, or `show_all_live` on) | favorite | `live_game_duration` | -| Yes | Yes (`show_favorite_teams_only` off, or `show_all_live` on) | none | `non_favorite_live_game_duration` (when > 0) | +| `.update_interval_seconds` | number | `3600` | This league's base fetch cadence. | +| `.live_update_interval` | number | `30` | How often live match data refreshes. | +| `.recent_update_interval` | number | `3600` | How often the finished-matches list is rebuilt. This also sets how soon a match that has just ended can appear. | +| `.upcoming_update_interval` | number | `3600` | How often the upcoming-matches list is rebuilt. Selection and the non-favorite rotation both run on the display side, so this governs only the fetch. | +| `.stale_game_timeout` | number | `300` | Drop a live match the API has stopped updating. | + +### Celebrations + +| Key | Type | Default | +|---|---|---| +| `.celebration_enabled` | boolean | `true` | +| `.celebration_duration` | number | `8` | +| `.celebrate_opponent_goals` | boolean | `false` | -## Background Service +### Display options -The plugin uses background data fetching for efficient API calls: +| Key | Type | Default | +|---|---|---| +| `.display_options.show_records` | boolean | `false` | +| `.display_options.show_ranking` | boolean | `false` | +| `.display_options.show_odds` | boolean | `true` | -- Requests timeout after 30 seconds (configurable) -- Up to 3 retries for failed requests -- Priority level 2 (medium priority) +> **These three do nothing.** Nothing in the plugin or the core reads +> `leagues..display_options`; the plugin-level `show_records`, +> `show_ranking` and `show_odds` are what reach the card. See the note under +> [Plugin level](#plugin-level) and +> [issue #435](https://github.com/ChuckBuilds/ledmatrix-plugins/issues/435). -## Data Source +### Mode durations -Game data is fetched from ESPN's public API endpoints for all supported soccer leagues. +How long the *whole mode* holds the board before the core rotates on. `null` +uses the dynamic calculation. -## Dependencies +| Key | Type | Default | +|---|---|---| +| `.mode_durations.live_mode_duration` | 10–600 s or `null` | `null` | +| `.mode_durations.recent_mode_duration` | 10–600 s or `null` | `null` | +| `.mode_durations.upcoming_mode_duration` | 10–600 s or `null` | `null` | -This plugin requires the main LEDMatrix installation and uses the plugin system base classes. +### Dynamic duration -## Installation +Sizes each mode's total time from how much there is to show. -The easiest way is the Plugin Store in the LEDMatrix web UI: +| Key | Type | Default | +|---|---|---| +| `.dynamic_duration.enabled` | boolean | `false` | +| `.dynamic_duration.min_duration_seconds` | 10–300 s | `30` | +| `.dynamic_duration.max_duration_seconds` | 60–600 s | — | +| `.dynamic_duration.modes.live.enabled` | boolean | `false` | +| `.dynamic_duration.modes.live.max_duration_seconds` | 60–600 s | — | +| `.dynamic_duration.modes.recent.enabled` | boolean | `false` | +| `.dynamic_duration.modes.recent.max_duration_seconds` | 60–600 s | — | +| `.dynamic_duration.modes.upcoming.enabled` | boolean | `false` | +| `.dynamic_duration.modes.upcoming.max_duration_seconds` | 60–600 s | — | + +### Scroll settings + +| Key | Type | Default | What it does | +|---|---|---|---| +| `.scroll_settings.scroll_speed` | number | `1.0` | Scroll speed in pixels per second. | +| `.scroll_settings.scroll_delay` | number | `0.01` | Frame delay; `0.01` is 100 FPS. Lower is smoother. | +| `.scroll_settings.gap_between_games` | number | `48` | Gap between match cards. | +| `.scroll_settings.show_league_separators` | boolean | `true` | Draw league icons between leagues. | +| `.scroll_settings.dynamic_duration` | boolean | `true` | Size the scroll duration from the content width. | +| `.scroll_settings.game_card_width` | number | `128` | Card width. Lower it on a multi-panel chain to fit more matches on screen at once. | -1. Open `http://your-pi-ip:5000` -2. Open the **Plugin Manager** tab -3. Find **Soccer Scoreboard** in the **Plugin Store** section and click - **Install** -4. Open the plugin's tab in the second nav row to configure leagues and - favorite teams +These are read through the LEDMatrix core's scroll base class rather than by +this plugin directly, which is why they do not appear in a grep of the plugin's +own `manager.py`. -Manual install: copy this directory into your LEDMatrix -`plugins_directory` (default `plugin-repos/`) and restart the display -service. +## Matchup separator and the upcoming card middle + +The **Matchup Card Layout** section (`scroll_card`) controls what sits between +the two crests before a match starts, and how the date and time are written. +Plugin-wide, not per league. -## Favorite Team Result Colors +| Setting | Key | Default | What it does | +|---|---|---|---| +| Matchup Separator | `scroll_card.vs_text` | `VS` | Text between the clubs: `VS`, `@`, `at`, `v`. The away side is always on the left, so `@` and `at` read as "away at home". Blank draws nothing. | +| Middle of an Upcoming Card | `scroll_card.upcoming_center` | `vs` | Scroll and Vegas cards: `vs`, `date_time`, or `none`. | +| Middle of a Full-Screen Upcoming Scoreboard | `scroll_card.switch_upcoming_center` | `date_time` | The same choice for the full-screen scoreboard, plus `inherit` to follow the row above. | +| Date Format | `scroll_card.date_format` | `abbrev` | Scroll and Vegas cards: `Sep 19`, `9/19`, `19 Sep`, `19/9`, or `Fri Sep 19`. | +| Full-Screen Date Format | `scroll_card.switch_date_format` | `numeric` | **Advanced.** The same for the full-screen scoreboard, plus `inherit`. It has its own default because the two displays disagree about what is normal. | +| Time Format | `scroll_card.time_format` | `12h` | 12- or 24-hour clock. | +| Show Date / Show Time | `scroll_card.show_date`, `scroll_card.show_time` | `true` | Drop either line. | +| Swap Date and Time | `scroll_card.swap_date_time` | `false` | Flip the two lines. Each display starts from its own order, so this flips rather than forces. | + +The centre-gap settings size the scroll and Vegas card's middle strip only — the +full-screen scoreboard pins its crests to the panel edges and is unaffected. + +| Key | Type | Default | What it does | +|---|---|---|---| +| `scroll_card.center_gap` | 0–64 px | unset | Pixels kept clear down the middle. Unset scales with card width; `0` restores edge-to-edge logos. | +| `scroll_card.center_gap_ratio` | 0.0–0.6 | `0.28` | **Advanced.** Fraction of card width used when the gap is not pinned. | +| `scroll_card.center_gap_min` | 0–64 px | `22` | **Advanced.** Floor for the scaled gap. | +| `scroll_card.center_gap_max` | 0–96 px | `40` | **Advanced.** Ceiling for the scaled gap. | -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. +## Fonts, colours and layout + +Seven text elements, each with `font`, `font_size`, and `text_color`, under +`customization.`. + +| Element | Default font | Default size | Draws | +|---|---|---|---| +| `score_text` | `PressStart2P-Regular.ttf` | `10` | The score, and the matchup separator on an upcoming card | +| `period_text` | `PressStart2P-Regular.ttf` | `8` | The half and clock, and the date/time on an upcoming scoreboard | +| `team_name` | `PressStart2P-Regular.ttf` | `8` | Club names and abbreviations | +| `status_text` | `4x6-font.ttf` | `6` | Status lines such as the league name | +| `detail_text` | `4x6-font.ttf` | `6` | Small detail lines | +| `rank_text` | `PressStart2P-Regular.ttf` | `10` | Table positions | +| `odds_text` | `4x6-font.ttf` | `6` | Betting odds (defaults to green, `[0, 255, 0]`) | + +Colours are `[r, g, b]` or `"#RRGGBB"`. Every default is white except +`odds_text`. Odds sizes snap to the face's pixel grid to stay crisp: +`4x6-font.ttf` to 7, 14, 21; press_start to 8, 16. Every +`customization.` object sets `additionalProperties: false`. + +```json +{ + "customization": { + "score_text": { "text_color": [255, 200, 0] }, + "status_text": { "text_color": "#00A0FF" } + } +} +``` + +### Layout offsets + +Nudge any element in pixels. All default to `0`, all under +`customization.layout.`, and all set `additionalProperties: false`. + +| Element | Keys | Measured from | +|---|---|---| +| `home_logo`, `away_logo` | `x_offset`, `y_offset` | Default logo position | +| `score` | `x_offset`, `y_offset` | Panel centre | +| `status_text` | `x_offset`, `y_offset` | Centre horizontally, top vertically | +| `date` | `x_offset`, `y_offset` | Centre horizontally, default position vertically | +| `time` | `x_offset`, `y_offset` | Centre horizontally, the date's position vertically | +| `records` | `away_x_offset`, `home_x_offset`, `y_offset` | Away from the left, home from the right, both from the bottom | +| `odds` | `x_offset`, `y_offset` | Default odds position | + +## Favorite team result colours + +A run of matches against the same opponent is hard to read at a glance: in +scroll and Vegas mode the same two crests go past several times and only the +digits change. Turn this on to colour a finished match's score by how your club +did. + +| Key | Type | Default | +|---|---|---| +| `customization.favorite_result_colors.enabled` | boolean | `false` | +| `customization.favorite_result_colors.win_color` | `[r, g, b]` | `[0, 255, 0]` | +| `customization.favorite_result_colors.loss_color` | `[r, g, b]` | `[255, 0, 0]` | +| `customization.favorite_result_colors.tie_color` | `[r, g, b]` | `[255, 200, 0]` | ```json { @@ -383,35 +585,20 @@ a loss. } ``` -- 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. +- Only finished matches are coloured; live and upcoming cards are untouched. +- A match needs **exactly one** favorite club. Neither side or both, and the + score keeps its normal colour. A draw uses `tie_color`, which soccer sees far + more of than the other sports. +- The three colours are Advanced settings. -## 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**: Check if leagues are enabled and API endpoints are accessible -- **Missing team logos**: Ensure team logo files exist in your assets/sports/soccer_logos/ directory -- **Slow updates**: Adjust the update interval in league configuration -- **API errors**: Check your internet connection and ESPN API availability - -## Advanced Configuration - -For more advanced users, you can add additional leagues by modifying the `ESPN_API_URLS` dictionary in the plugin code and updating the configuration schema accordingly. +This tint is applied by the LEDMatrix core rather than by the plugin, which is +why the keys do not appear in this plugin's source. ## Vegas ticker: seeing live games more often -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: +By default a live match **takes over** the display. To keep the marquee +scrolling and still see scores, set this in the **core** config — not in this +plugin's settings: ```json { @@ -426,94 +613,65 @@ 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 -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. +cycle. These weights let this plugin claim several slots per cycle, spaced +evenly through it. `live_weight` applies whenever this scoreboard has a live +match; `favorite_live_weight` when one of your clubs is playing. That +distinction has to be made here rather than in the core, which can tell *that* a +match is live but not *whose*. -## Matchup separator and the upcoming card middle +- The weight is per **plugin**, not per match. With four matches live this + scoreboard still occupies one slot at a time and picks between its own matches + using `favorite_live_boost`. +- More slots make the cycle **longer**, not faster. -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. +## Installation -| 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. | +From the Plugin Store in the LEDMatrix web UI: open `http://your-pi-ip:5000`, go +to **Plugin Manager**, find **Soccer Scoreboard** under **Plugin Store**, and +click **Install**. Then open the plugin's tab to pick your leagues and clubs. -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. +Match data comes from ESPN's public API. Crests download on first sight and +cache under `assets/sports/soccer_logos/`. The plugin requires the main +LEDMatrix installation and inherits from its soccer base classes. -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. +The documentation images come from `docs/assets/soccer-scoreboard/shots.json` +and re-render with `python scripts/render_docs_assets.py --plugin +soccer-scoreboard --check`. -Example: +## Troubleshooting -```json -{ - "scroll_card": { - "vs_text": "@", - "switch_upcoming_center": "vs", - "date_format": "weekday" - } -} -``` +**Nothing appears.** Check that `enabled` is on and at least one league's own +`enabled` is on. With `filtering.show_favorite_teams_only` at its default of +`true` and no `favorite_teams` set, there is nothing to select from. -### Text Colours +**Records, rankings or odds will not turn on.** You are probably setting the +per-league `display_options` copy, which nothing reads. Set the plugin-level +`show_records` / `show_ranking` / `show_odds` instead — +[issue #435](https://github.com/ChuckBuilds/ledmatrix-plugins/issues/435). -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. +**A club I follow never shows up.** `favorite_teams` needs the ESPN +abbreviation, not the club name — see [TEAMS.md](TEAMS.md). Enable debug logging +and the plugin prints `home_abbr` and `away_abbr` for every match it processes. -| 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 | +**A custom league will not save.** Both the name and the league code are +required; a row with a blank name is dropped. Codes are lowercase and +dot-separated, exactly as in ESPN's URLs. -Colours are `[r, g, b]` or `"#RRGGBB"`, and every default is white, so a display -nobody has recoloured looks exactly as it did. +**The same few matches keep repeating.** That is the pool cycling. Lower +`other_rotation_interval_seconds` for faster turnover rather than raising the +pool size — a larger pool makes the lap longer, so each match appears less +often, not more. -```json -{ - "customization": { - "score_text": { "text_color": [255, 200, 0] }, - "status_text": { "text_color": "#00A0FF" } - } -} -``` +**Start times look like UTC.** The plugin could not read your global timezone. +Set `timezone` under Advanced Settings to your IANA zone. + +**A finished match disappeared too soon.** Raise `schedule_lookback_days` +(default 14), or lower `recent_update_interval` if results are slow to appear. + +**A fixture I know about never appears.** It may be beyond +`schedule_lookahead_days` (default 14). A fixture outside that horizon is never +fetched. + +## License -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. +See `LICENSE`. diff --git a/plugins/soccer-scoreboard/manifest.json b/plugins/soccer-scoreboard/manifest.json index 6977cc39..dc2acaf4 100644 --- a/plugins/soccer-scoreboard/manifest.json +++ b/plugins/soccer-scoreboard/manifest.json @@ -1,7 +1,7 @@ { "id": "soccer-scoreboard", "name": "Soccer Scoreboard", - "version": "2.24.1", + "version": "2.24.2", "author": "ChuckBuilds", "description": "Live, recent, and upcoming soccer games across multiple leagues including Premier League, La Liga, Bundesliga, Serie A, Ligue 1, MLS, Liga Portugal, Champions League, Europa League, and FIFA World Cup", "category": "sports", @@ -26,6 +26,16 @@ "soccer_upcoming" ], "versions": [ + { + "version": "2.24.2", + "released": "2026-09-02", + "ledmatrix_min_version": "3.3.0", + "notes": "Fix every grid-snapped font rendering a pixel narrow. The shared code reads this plugin's config_schema.json to tell a default font size from one the user chose; a default gets snapped to the font's pixel grid, a choice is left alone. It located the schema by inspecting loaded modules, which fails under the real plugin loader -- the loader renames a plugin's modules and removes their original names, so nothing was left to inspect. The lookup returned nothing, every size then looked user-chosen, and the snap was skipped: 4x6-font.ttf drew at 6 instead of 7, which is 3-pixel-wide glyphs instead of 4. On a 256x64 panel the betting odds, team records and the date row were hard to read. The plugin now tells the shared code where it lives instead of leaving it to guess.", + "changelog": "Retry a team logo whose previous download failed, instead of showing a grey box forever. A failed download is cached by the core as a placeholder wearing the real logo's filename; the logo loader scans filename variations, found that stub, and so never called the downloader again. The loader now skips a placeholder that is stale enough to be worth retrying and lets the download run, which also picks up stubs already on disk. The retry is rate-limited by the core (6h), so this does not trade a permanent grey box for a request every frame. Needs a core carrying src.logo_downloader.is_placeholder_logo; against an older core the check is skipped and behaviour is unchanged. Ported byte-identically across every sports lineage.", + "changes": [ + "Rewrote the README as a complete settings reference covering all 636 settings, with rendered examples of every display mode and every match state." + ] + }, { "version": "2.24.1", "released": "2026-09-02", @@ -314,7 +324,7 @@ { "released": "2026-07-29", "version": "2.5.0", - "notes": "Corrected every team code in TEAMS.md against ESPN's live data — Manchester United is MAN (not MUN), Manchester City MNC (not MCI), Real Madrid RMA, and Ligue 1 had eight wrong codes. The plugin now also says why a league is empty: an unrecognised favorite team logs a warning naming the closest match, while a correct code in a league with no fixtures yet logs the date the season starts.", + "notes": "Corrected every team code in TEAMS.md against ESPN's live data \u2014 Manchester United is MAN (not MUN), Manchester City MNC (not MCI), Real Madrid RMA, and Ligue 1 had eight wrong codes. The plugin now also says why a league is empty: an unrecognised favorite team logs a warning naming the closest match, while a correct code in a league with no fixtures yet logs the date the season starts.", "ledmatrix_min": "2.0.0" }, { @@ -344,7 +354,7 @@ { "released": "2026-07-02", "version": "2.2.0", - "notes": "Add exclude_teams (hide specific teams from live rotation and recent/final scores — spoiler protection) and filtering.favorite_live_boost (tune how much more often your favorite's live game appears in rotation vs other live games) per league, including custom leagues.", + "notes": "Add exclude_teams (hide specific teams from live rotation and recent/final scores \u2014 spoiler protection) and filtering.favorite_live_boost (tune how much more often your favorite's live game appears in rotation vs other live games) per league, including custom leagues.", "ledmatrix_min": "2.0.0" }, { diff --git a/scripts/docs_render_support/sitecustomize.py b/scripts/docs_render_support/sitecustomize.py index 44eafa3a..64fbb438 100644 --- a/scripts/docs_render_support/sitecustomize.py +++ b/scripts/docs_render_support/sitecustomize.py @@ -89,12 +89,59 @@ def advance(seconds): _WANTED = _json.loads(_ATTRS) _TARGET = "src.plugin_system.plugin_loader" + def _resolve(instance, path): + """Walk a dotted path to the object that owns the final attribute. + + The sports scoreboards keep their per-mode state on sub-managers rather + than on the plugin -- self._managers["live"].current_game -- so a shot + that can only set top-level attributes cannot reach the game it wants + to draw. A segment is tried as a mapping key first, then as an + attribute, so both self._managers["live"] and self.live_manager work. + """ + parts = path.split(".") + target = instance + for part in parts[:-1]: + if hasattr(target, "get") and not hasattr(target, part): + nxt = target.get(part) + else: + nxt = getattr(target, part, None) + if nxt is None and hasattr(target, "get"): + nxt = target.get(part) + if nxt is None: + return None, None + target = nxt + return target, parts[-1] + + def _coerce(name, value): + """Turn JSON into the shapes the plugins actually hold. + + A shots file can only carry JSON, but plugin state is not all strings + and lists: colours are tuples throughout the core, and a logo field is + a pathlib.Path -- the sports renderers call logo_path.parent, so a + string there raises AttributeError and the card silently fails to draw. + """ + if isinstance(value, list) and len(value) == 3 and all( + isinstance(v, int) for v in value): + return tuple(value) # colours are tuples everywhere in the core + if isinstance(value, str) and name.endswith("_path") and value: + import pathlib as _pathlib + return _pathlib.Path(value) + if isinstance(value, dict): + return {k: _coerce(k, v) for k, v in value.items()} + if isinstance(value, list): + return [_coerce(name, v) for v in value] + return value + def _apply(instance): for name, value in _WANTED.items(): - if isinstance(value, list) and len(value) == 3 and all( - isinstance(v, int) for v in value): - value = tuple(value) # colours are tuples everywhere in the core - setattr(instance, name, value) + value = _coerce(name.rsplit(".", 1)[-1], value) + owner, attr = _resolve(instance, name) + if owner is None: + continue # the path does not exist on this plugin; leave it alone + if hasattr(owner, "__setitem__") and not hasattr(owner, attr): + owner[attr] = value + else: + setattr(owner, attr, value) return instance class _PatchingLoader: diff --git a/scripts/render_docs_assets.py b/scripts/render_docs_assets.py index fa38f5f9..2ca204e6 100644 --- a/scripts/render_docs_assets.py +++ b/scripts/render_docs_assets.py @@ -268,6 +268,9 @@ def render_shot( mock_path = resolve_mock_data(mock_spec, shot_list_dir, tmpdir, name) if mock_path: cmd += ["--mock-data", str(mock_path)] + display_mode = shot.get("display_mode", defaults.get("display_mode")) + if display_mode: + cmd += ["--display-mode", str(display_mode)] if shot.get("skip_update", defaults.get("skip_update", False)): cmd.append("--skip-update")