diff --git a/README.md b/README.md index e0fcc744..7d9f50a4 100644 --- a/README.md +++ b/README.md @@ -94,7 +94,7 @@ curl -X POST http://your-pi-ip:5000/api/v3/plugins/install \ | [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)* | | -| [Masters Tournament](./plugins/masters-tournament/) | Live Masters golf leaderboard, hole tracking, player cards | | +| [Masters Tournament](./plugins/masters-tournament/) | Live Masters golf leaderboard, hole tracking, player cards | masters-tournament on an LED panel | | [NFL Draft](./plugins/nfl-draft/) | Projected & live NFL draft picks from ESPN | nfl-draft on an LED panel | | [March Madness](./plugins/march-madness/) | NCAA tournament bracket tracker with round branding and live scores | march-madness on an LED panel | | [Odds Ticker](./plugins/odds-ticker/) | Betting odds & lines across NFL, NBA, MLB, NHL, NCAA | | diff --git a/docs/assets/masters-tournament/hero.png b/docs/assets/masters-tournament/hero.png new file mode 100644 index 00000000..726ad650 Binary files /dev/null and b/docs/assets/masters-tournament/hero.png differ diff --git a/docs/assets/masters-tournament/offseason-modes.png b/docs/assets/masters-tournament/offseason-modes.png new file mode 100644 index 00000000..5f9f56b6 Binary files /dev/null and b/docs/assets/masters-tournament/offseason-modes.png differ diff --git a/docs/assets/masters-tournament/panel-sizes.png b/docs/assets/masters-tournament/panel-sizes.png new file mode 100644 index 00000000..d088ccbb Binary files /dev/null and b/docs/assets/masters-tournament/panel-sizes.png differ diff --git a/docs/assets/masters-tournament/shots.json b/docs/assets/masters-tournament/shots.json new file mode 100644 index 00000000..6797a41c --- /dev/null +++ b/docs/assets/masters-tournament/shots.json @@ -0,0 +1,1122 @@ +{ + "plugin": "masters-tournament", + "_comment": "The plugin ships a mock_data mode, so these render offline with no seeding. Which modes are available depends on the tournament phase: the eight in tournament-modes render during Masters week and are blank outside it, and the six in offseason-modes are the other way round. The shots pin the clock to each phase accordingly.", + "defaults": { + "width": 128, + "height": 32, + "scale": 6, + "freeze_time": "2026-04-09T18:00:00+00:00", + "config": { + "enabled": true, + "mock_data": true + } + }, + "shots": [ + { + "name": "hero", + "config": { + "enabled": true, + "mock_data": true, + "display_modes": { + "leaderboard": { + "enabled": true + }, + "player_cards": { + "enabled": false + }, + "hole_by_hole": { + "enabled": false + }, + "live_action": { + "enabled": false + }, + "course_tour": { + "enabled": false + }, + "amen_corner": { + "enabled": false + }, + "featured_holes": { + "enabled": false + }, + "schedule": { + "enabled": false + }, + "past_champions": { + "enabled": false + }, + "tournament_stats": { + "enabled": false + }, + "fun_facts": { + "enabled": false + }, + "countdown": { + "enabled": false + }, + "field_overview": { + "enabled": false + }, + "course_overview": { + "enabled": false + } + } + }, + "freeze_time": "2026-04-09T18:00:00+00:00" + }, + { + "name": "t-leaderboard", + "config": { + "enabled": true, + "mock_data": true, + "display_modes": { + "leaderboard": { + "enabled": true + }, + "player_cards": { + "enabled": false + }, + "hole_by_hole": { + "enabled": false + }, + "live_action": { + "enabled": false + }, + "course_tour": { + "enabled": false + }, + "amen_corner": { + "enabled": false + }, + "featured_holes": { + "enabled": false + }, + "schedule": { + "enabled": false + }, + "past_champions": { + "enabled": false + }, + "tournament_stats": { + "enabled": false + }, + "fun_facts": { + "enabled": false + }, + "countdown": { + "enabled": false + }, + "field_overview": { + "enabled": false + }, + "course_overview": { + "enabled": false + } + } + }, + "freeze_time": "2026-04-09T18:00:00+00:00", + "standalone": false + }, + { + "name": "t-player_cards", + "config": { + "enabled": true, + "mock_data": true, + "display_modes": { + "leaderboard": { + "enabled": false + }, + "player_cards": { + "enabled": true + }, + "hole_by_hole": { + "enabled": false + }, + "live_action": { + "enabled": false + }, + "course_tour": { + "enabled": false + }, + "amen_corner": { + "enabled": false + }, + "featured_holes": { + "enabled": false + }, + "schedule": { + "enabled": false + }, + "past_champions": { + "enabled": false + }, + "tournament_stats": { + "enabled": false + }, + "fun_facts": { + "enabled": false + }, + "countdown": { + "enabled": false + }, + "field_overview": { + "enabled": false + }, + "course_overview": { + "enabled": false + } + } + }, + "freeze_time": "2026-04-09T18:00:00+00:00", + "standalone": false + }, + { + "name": "t-live_action", + "config": { + "enabled": true, + "mock_data": true, + "display_modes": { + "leaderboard": { + "enabled": false + }, + "player_cards": { + "enabled": false + }, + "hole_by_hole": { + "enabled": false + }, + "live_action": { + "enabled": true + }, + "course_tour": { + "enabled": false + }, + "amen_corner": { + "enabled": false + }, + "featured_holes": { + "enabled": false + }, + "schedule": { + "enabled": false + }, + "past_champions": { + "enabled": false + }, + "tournament_stats": { + "enabled": false + }, + "fun_facts": { + "enabled": false + }, + "countdown": { + "enabled": false + }, + "field_overview": { + "enabled": false + }, + "course_overview": { + "enabled": false + } + } + }, + "freeze_time": "2026-04-09T18:00:00+00:00", + "standalone": false + }, + { + "name": "t-amen_corner", + "config": { + "enabled": true, + "mock_data": true, + "display_modes": { + "leaderboard": { + "enabled": false + }, + "player_cards": { + "enabled": false + }, + "hole_by_hole": { + "enabled": false + }, + "live_action": { + "enabled": false + }, + "course_tour": { + "enabled": false + }, + "amen_corner": { + "enabled": true + }, + "featured_holes": { + "enabled": false + }, + "schedule": { + "enabled": false + }, + "past_champions": { + "enabled": false + }, + "tournament_stats": { + "enabled": false + }, + "fun_facts": { + "enabled": false + }, + "countdown": { + "enabled": false + }, + "field_overview": { + "enabled": false + }, + "course_overview": { + "enabled": false + } + } + }, + "freeze_time": "2026-04-09T18:00:00+00:00", + "standalone": false + }, + { + "name": "t-featured_holes", + "config": { + "enabled": true, + "mock_data": true, + "display_modes": { + "leaderboard": { + "enabled": false + }, + "player_cards": { + "enabled": false + }, + "hole_by_hole": { + "enabled": false + }, + "live_action": { + "enabled": false + }, + "course_tour": { + "enabled": false + }, + "amen_corner": { + "enabled": false + }, + "featured_holes": { + "enabled": true + }, + "schedule": { + "enabled": false + }, + "past_champions": { + "enabled": false + }, + "tournament_stats": { + "enabled": false + }, + "fun_facts": { + "enabled": false + }, + "countdown": { + "enabled": false + }, + "field_overview": { + "enabled": false + }, + "course_overview": { + "enabled": false + } + } + }, + "freeze_time": "2026-04-09T18:00:00+00:00", + "standalone": false + }, + { + "name": "t-schedule", + "config": { + "enabled": true, + "mock_data": true, + "display_modes": { + "leaderboard": { + "enabled": false + }, + "player_cards": { + "enabled": false + }, + "hole_by_hole": { + "enabled": false + }, + "live_action": { + "enabled": false + }, + "course_tour": { + "enabled": false + }, + "amen_corner": { + "enabled": false + }, + "featured_holes": { + "enabled": false + }, + "schedule": { + "enabled": true + }, + "past_champions": { + "enabled": false + }, + "tournament_stats": { + "enabled": false + }, + "fun_facts": { + "enabled": false + }, + "countdown": { + "enabled": false + }, + "field_overview": { + "enabled": false + }, + "course_overview": { + "enabled": false + } + } + }, + "freeze_time": "2026-04-09T18:00:00+00:00", + "standalone": false + }, + { + "name": "t-tournament_stats", + "config": { + "enabled": true, + "mock_data": true, + "display_modes": { + "leaderboard": { + "enabled": false + }, + "player_cards": { + "enabled": false + }, + "hole_by_hole": { + "enabled": false + }, + "live_action": { + "enabled": false + }, + "course_tour": { + "enabled": false + }, + "amen_corner": { + "enabled": false + }, + "featured_holes": { + "enabled": false + }, + "schedule": { + "enabled": false + }, + "past_champions": { + "enabled": false + }, + "tournament_stats": { + "enabled": true + }, + "fun_facts": { + "enabled": false + }, + "countdown": { + "enabled": false + }, + "field_overview": { + "enabled": false + }, + "course_overview": { + "enabled": false + } + } + }, + "freeze_time": "2026-04-09T18:00:00+00:00", + "standalone": false + }, + { + "name": "t-field_overview", + "config": { + "enabled": true, + "mock_data": true, + "display_modes": { + "leaderboard": { + "enabled": false + }, + "player_cards": { + "enabled": false + }, + "hole_by_hole": { + "enabled": false + }, + "live_action": { + "enabled": false + }, + "course_tour": { + "enabled": false + }, + "amen_corner": { + "enabled": false + }, + "featured_holes": { + "enabled": false + }, + "schedule": { + "enabled": false + }, + "past_champions": { + "enabled": false + }, + "tournament_stats": { + "enabled": false + }, + "fun_facts": { + "enabled": false + }, + "countdown": { + "enabled": false + }, + "field_overview": { + "enabled": true + }, + "course_overview": { + "enabled": false + } + } + }, + "freeze_time": "2026-04-09T18:00:00+00:00", + "standalone": false + }, + { + "name": "o-countdown", + "config": { + "enabled": true, + "mock_data": true, + "display_modes": { + "leaderboard": { + "enabled": false + }, + "player_cards": { + "enabled": false + }, + "hole_by_hole": { + "enabled": false + }, + "live_action": { + "enabled": false + }, + "course_tour": { + "enabled": false + }, + "amen_corner": { + "enabled": false + }, + "featured_holes": { + "enabled": false + }, + "schedule": { + "enabled": false + }, + "past_champions": { + "enabled": false + }, + "tournament_stats": { + "enabled": false + }, + "fun_facts": { + "enabled": false + }, + "countdown": { + "enabled": true + }, + "field_overview": { + "enabled": false + }, + "course_overview": { + "enabled": false + } + } + }, + "freeze_time": "2026-01-15T18:00:00+00:00", + "standalone": false + }, + { + "name": "o-past_champions", + "config": { + "enabled": true, + "mock_data": true, + "display_modes": { + "leaderboard": { + "enabled": false + }, + "player_cards": { + "enabled": false + }, + "hole_by_hole": { + "enabled": false + }, + "live_action": { + "enabled": false + }, + "course_tour": { + "enabled": false + }, + "amen_corner": { + "enabled": false + }, + "featured_holes": { + "enabled": false + }, + "schedule": { + "enabled": false + }, + "past_champions": { + "enabled": true + }, + "tournament_stats": { + "enabled": false + }, + "fun_facts": { + "enabled": false + }, + "countdown": { + "enabled": false + }, + "field_overview": { + "enabled": false + }, + "course_overview": { + "enabled": false + } + } + }, + "freeze_time": "2026-01-15T18:00:00+00:00", + "standalone": false + }, + { + "name": "o-course_overview", + "config": { + "enabled": true, + "mock_data": true, + "display_modes": { + "leaderboard": { + "enabled": false + }, + "player_cards": { + "enabled": false + }, + "hole_by_hole": { + "enabled": false + }, + "live_action": { + "enabled": false + }, + "course_tour": { + "enabled": false + }, + "amen_corner": { + "enabled": false + }, + "featured_holes": { + "enabled": false + }, + "schedule": { + "enabled": false + }, + "past_champions": { + "enabled": false + }, + "tournament_stats": { + "enabled": false + }, + "fun_facts": { + "enabled": false + }, + "countdown": { + "enabled": false + }, + "field_overview": { + "enabled": false + }, + "course_overview": { + "enabled": true + } + } + }, + "freeze_time": "2026-01-15T18:00:00+00:00", + "standalone": false + }, + { + "name": "o-hole_by_hole", + "config": { + "enabled": true, + "mock_data": true, + "display_modes": { + "leaderboard": { + "enabled": false + }, + "player_cards": { + "enabled": false + }, + "hole_by_hole": { + "enabled": true + }, + "live_action": { + "enabled": false + }, + "course_tour": { + "enabled": false + }, + "amen_corner": { + "enabled": false + }, + "featured_holes": { + "enabled": false + }, + "schedule": { + "enabled": false + }, + "past_champions": { + "enabled": false + }, + "tournament_stats": { + "enabled": false + }, + "fun_facts": { + "enabled": false + }, + "countdown": { + "enabled": false + }, + "field_overview": { + "enabled": false + }, + "course_overview": { + "enabled": false + } + } + }, + "freeze_time": "2026-01-15T18:00:00+00:00", + "standalone": false + }, + { + "name": "o-course_tour", + "config": { + "enabled": true, + "mock_data": true, + "display_modes": { + "leaderboard": { + "enabled": false + }, + "player_cards": { + "enabled": false + }, + "hole_by_hole": { + "enabled": false + }, + "live_action": { + "enabled": false + }, + "course_tour": { + "enabled": true + }, + "amen_corner": { + "enabled": false + }, + "featured_holes": { + "enabled": false + }, + "schedule": { + "enabled": false + }, + "past_champions": { + "enabled": false + }, + "tournament_stats": { + "enabled": false + }, + "fun_facts": { + "enabled": false + }, + "countdown": { + "enabled": false + }, + "field_overview": { + "enabled": false + }, + "course_overview": { + "enabled": false + } + } + }, + "freeze_time": "2026-01-15T18:00:00+00:00", + "standalone": false + }, + { + "name": "o-fun_facts", + "config": { + "enabled": true, + "mock_data": true, + "display_modes": { + "leaderboard": { + "enabled": false + }, + "player_cards": { + "enabled": false + }, + "hole_by_hole": { + "enabled": false + }, + "live_action": { + "enabled": false + }, + "course_tour": { + "enabled": false + }, + "amen_corner": { + "enabled": false + }, + "featured_holes": { + "enabled": false + }, + "schedule": { + "enabled": false + }, + "past_champions": { + "enabled": false + }, + "tournament_stats": { + "enabled": false + }, + "fun_facts": { + "enabled": true + }, + "countdown": { + "enabled": false + }, + "field_overview": { + "enabled": false + }, + "course_overview": { + "enabled": false + } + } + }, + "freeze_time": "2026-01-15T18:00:00+00:00", + "standalone": false + }, + { + "name": "size-64x32", + "width": 64, + "height": 32, + "config": { + "enabled": true, + "mock_data": true, + "display_modes": { + "leaderboard": { + "enabled": true + }, + "player_cards": { + "enabled": false + }, + "hole_by_hole": { + "enabled": false + }, + "live_action": { + "enabled": false + }, + "course_tour": { + "enabled": false + }, + "amen_corner": { + "enabled": false + }, + "featured_holes": { + "enabled": false + }, + "schedule": { + "enabled": false + }, + "past_champions": { + "enabled": false + }, + "tournament_stats": { + "enabled": false + }, + "fun_facts": { + "enabled": false + }, + "countdown": { + "enabled": false + }, + "field_overview": { + "enabled": false + }, + "course_overview": { + "enabled": false + } + } + }, + "freeze_time": "2026-04-09T18:00:00+00:00", + "standalone": false + }, + { + "name": "size-128x32", + "width": 128, + "height": 32, + "config": { + "enabled": true, + "mock_data": true, + "display_modes": { + "leaderboard": { + "enabled": true + }, + "player_cards": { + "enabled": false + }, + "hole_by_hole": { + "enabled": false + }, + "live_action": { + "enabled": false + }, + "course_tour": { + "enabled": false + }, + "amen_corner": { + "enabled": false + }, + "featured_holes": { + "enabled": false + }, + "schedule": { + "enabled": false + }, + "past_champions": { + "enabled": false + }, + "tournament_stats": { + "enabled": false + }, + "fun_facts": { + "enabled": false + }, + "countdown": { + "enabled": false + }, + "field_overview": { + "enabled": false + }, + "course_overview": { + "enabled": false + } + } + }, + "freeze_time": "2026-04-09T18:00:00+00:00", + "standalone": false + }, + { + "name": "size-128x64", + "width": 128, + "height": 64, + "config": { + "enabled": true, + "mock_data": true, + "display_modes": { + "leaderboard": { + "enabled": true + }, + "player_cards": { + "enabled": false + }, + "hole_by_hole": { + "enabled": false + }, + "live_action": { + "enabled": false + }, + "course_tour": { + "enabled": false + }, + "amen_corner": { + "enabled": false + }, + "featured_holes": { + "enabled": false + }, + "schedule": { + "enabled": false + }, + "past_champions": { + "enabled": false + }, + "tournament_stats": { + "enabled": false + }, + "fun_facts": { + "enabled": false + }, + "countdown": { + "enabled": false + }, + "field_overview": { + "enabled": false + }, + "course_overview": { + "enabled": false + } + } + }, + "freeze_time": "2026-04-09T18:00:00+00:00", + "standalone": false + }, + { + "name": "size-256x32", + "width": 256, + "height": 32, + "config": { + "enabled": true, + "mock_data": true, + "display_modes": { + "leaderboard": { + "enabled": true + }, + "player_cards": { + "enabled": false + }, + "hole_by_hole": { + "enabled": false + }, + "live_action": { + "enabled": false + }, + "course_tour": { + "enabled": false + }, + "amen_corner": { + "enabled": false + }, + "featured_holes": { + "enabled": false + }, + "schedule": { + "enabled": false + }, + "past_champions": { + "enabled": false + }, + "tournament_stats": { + "enabled": false + }, + "fun_facts": { + "enabled": false + }, + "countdown": { + "enabled": false + }, + "field_overview": { + "enabled": false + }, + "course_overview": { + "enabled": false + } + } + }, + "freeze_time": "2026-04-09T18:00:00+00:00", + "standalone": false + } + ], + "composites": [ + { + "name": "tournament-modes", + "columns": 2, + "cells": [ + { + "shot": "t-leaderboard", + "label": "leaderboard" + }, + { + "shot": "t-player_cards", + "label": "player_cards" + }, + { + "shot": "t-live_action", + "label": "live_action" + }, + { + "shot": "t-amen_corner", + "label": "amen_corner" + }, + { + "shot": "t-featured_holes", + "label": "featured_holes" + }, + { + "shot": "t-schedule", + "label": "schedule" + }, + { + "shot": "t-tournament_stats", + "label": "tournament_stats" + }, + { + "shot": "t-field_overview", + "label": "field_overview" + } + ] + }, + { + "name": "offseason-modes", + "columns": 2, + "cells": [ + { + "shot": "o-countdown", + "label": "countdown" + }, + { + "shot": "o-past_champions", + "label": "past_champions" + }, + { + "shot": "o-course_overview", + "label": "course_overview" + }, + { + "shot": "o-hole_by_hole", + "label": "hole_by_hole" + }, + { + "shot": "o-course_tour", + "label": "course_tour" + }, + { + "shot": "o-fun_facts", + "label": "fun_facts" + } + ] + }, + { + "name": "panel-sizes", + "columns": 2, + "cells": [ + { + "shot": "size-64x32", + "label": "64 x 32" + }, + { + "shot": "size-128x32", + "label": "128 x 32" + }, + { + "shot": "size-128x64", + "label": "128 x 64" + }, + { + "shot": "size-256x32", + "label": "256 x 32" + } + ] + } + ] +} diff --git a/docs/assets/masters-tournament/tournament-modes.png b/docs/assets/masters-tournament/tournament-modes.png new file mode 100644 index 00000000..347be6c1 Binary files /dev/null and b/docs/assets/masters-tournament/tournament-modes.png differ diff --git a/plugins.json b/plugins.json index 8e4fca02..dd6a2f38 100644 --- a/plugins.json +++ b/plugins.json @@ -484,10 +484,10 @@ "plugin_path": "plugins/masters-tournament", "stars": 0, "downloads": 0, - "last_updated": "2026-08-05", + "last_updated": "2026-09-03", "verified": true, "screenshot": "", - "latest_version": "2.5.5" + "latest_version": "2.5.6" }, { "id": "mqtt-notifications", diff --git a/plugins/masters-tournament/README.md b/plugins/masters-tournament/README.md index 3e16fdd7..7934a14e 100644 --- a/plugins/masters-tournament/README.md +++ b/plugins/masters-tournament/README.md @@ -1,5 +1,12 @@ # Masters Tournament LED Display Plugin +![The leaderboard on a 128x32 panel: a gold LEADERBOARD header over the Augusta +green, with four players, their scores to par and holes +played](../../docs/assets/masters-tournament/hero.png) + +*Every image in this README is real plugin output, rendered at the true panel +size using the plugin's own `mock_data` mode, so they reproduce offline.* + A high-polish Augusta National Masters Tournament display plugin for LEDMatrix with course imagery, live leaderboards, player stats, hole maps, and maximum Masters branding. Works year-round with engaging off-season content. ## Features @@ -145,6 +152,99 @@ Customize Masters visual elements: } ``` +### Top level + +| Key | Default | Notes | +|---|---|---| +| `enabled` | `true` | Enable or disable the Masters Tournament plugin. | +| `display_duration` | `20` | Duration in seconds to display each mode before rotating (5–300). | +| `update_interval` | `30` | How often to fetch new data in seconds (30s during tournament, 3600s off-season) (10–3600). | +| `player_card_duration` | `8` | Seconds each player card is shown before rotating to the next player in the player card display mode (1–300). | +| `hole_display_duration` | `15` | Seconds between hole advances in course tour and hole-by-hole display modes (1–300). | +| `page_display_duration` | `15` | Seconds between page advances in paginated modes (leaderboard, champions, tournament stats, schedule, course overview) (1–300). | +| `scroll_card_width` | `128` | Width in pixels of each card when rendered in Vegas scroll mode (the horizontally-scrolling ticker). Set lower to pack more cards into a long panel; set higher for more detail per card. Card height always matches the display height (32–256). | +| `post_tournament_display_days` | `1` | Number of days after the final round to continue showing tournament results (leaderboard, player cards, etc.) before switching to countdown mode. Set to 0 to switch immediately after the tournament ends, or higher to extend the post-tournament display window (0–14). | +| `mock_data` | `false` | Use mock tournament data for testing (useful when Masters isn't live). | +| `favorite_players` | *(empty)* | List of favorite player names (e.g., ['Scottie Scheffler', 'Rory McIlroy']). | + +### Display modes + +Each of the fourteen modes takes `enabled`; a few carry extra keys. + +| Key | Default | Notes | +|---|---|---| +| `display_modes.leaderboard.enabled` | `true` | Show live leaderboard. | +| `display_modes.leaderboard.top_n` | `10` | Number of players to show on leaderboard (1–50). | +| `display_modes.leaderboard.show_favorites_always` | `true` | Always include favorite players even if outside top N. | +| `display_modes.leaderboard.duration` | `25` | Display duration for leaderboard (seconds) (5–120). | +| `display_modes.player_cards.enabled` | `true` | Show individual player spotlight cards. | +| `display_modes.player_cards.show_headshots` | `true` | Display player headshot photos. **Not implemented**. | +| `display_modes.player_cards.duration_per_player` | `15` | Time to show each player card (seconds) (5–60). **Not implemented**. | +| `display_modes.course_tour.enabled` | `true` | Show rotating hole maps with course imagery. | +| `display_modes.course_tour.show_animations` | `true` | Enable transitions and animations. **Not implemented**. | +| `display_modes.course_tour.duration_per_hole` | `15` | Time to show each hole (seconds) (5–60). **Not implemented**. | +| `display_modes.course_tour.show_divider` | `true` | Show the vertical divider line between the hole info and map columns. Set to false for a cleaner single-cell look. | +| `display_modes.course_tour.featured_holes` | `[12, 13, 16]` | Featured holes to highlight (Amen Corner, par 3s). **Not implemented**. | +| `display_modes.hole_by_hole.enabled` | `true` | Show hole-by-hole scores for favorite players. | +| `display_modes.hole_by_hole.duration` | `20` | Display duration (seconds) (5–120). | +| `display_modes.live_action.enabled` | `true` | Show real-time birdie/eagle notifications. | +| `display_modes.live_action.duration` | `10` | Notification display duration (seconds) (3–30). | +| `display_modes.amen_corner.enabled` | `true` | Dedicated display for holes 11-13 (Amen Corner). | +| `display_modes.amen_corner.duration` | `20` | Display duration (seconds) (5–120). | +| `display_modes.featured_holes.enabled` | `true` | Show scoring on signature holes (12, 16). | +| `display_modes.featured_holes.duration` | `15` | Display duration (seconds) (5–120). | +| `display_modes.schedule.enabled` | `true` | Show tee times and pairings. | +| `display_modes.schedule.duration` | `20` | Display duration (seconds) (5–120). | +| `display_modes.past_champions.enabled` | `true` | Show historical Masters winners. | +| `display_modes.past_champions.duration` | `20` | Display duration (seconds) (5–120). | +| `display_modes.tournament_stats.enabled` | `true` | Show tournament records and statistics. | +| `display_modes.fun_facts.enabled` | `true` | Show Masters and Augusta National fun facts. | +| `display_modes.countdown.enabled` | `true` | Show countdown to next Masters Tournament. | +| `display_modes.field_overview.enabled` | `true` | Show field breakdown (under/over/even par counts). | +| `display_modes.course_overview.enabled` | `true` | Show Augusta National front nine / back nine overview. | + +### Settings that do nothing + +Neither of these blocks is read anywhere in the plugin or the core — no +`config.get("notifications")`, no `config.get("branding")`. They are in the +schema and the web UI, and changing them has no effect. Tracked in +[issue #418](https://github.com/ChuckBuilds/ledmatrix-plugins/issues/418), +along with the five `display_modes` leaves marked above. + +| Key | Default | +|---|---| +| `notifications.practice_round_alerts.enabled` | `true` | +| `notifications.practice_round_alerts.interrupt_display` | `true` | +| `notifications.practice_round_alerts.duration` | `15` | +| `notifications.favorite_player_alerts.enabled` | `true` | +| `notifications.favorite_player_alerts.interrupt_display` | `true` | +| `notifications.favorite_player_alerts.duration` | `10` | +| `notifications.tournament_start_alert.enabled` | `true` | +| `notifications.tournament_start_alert.interrupt_display` | `false` | +| `branding.show_masters_logo` | `true` | +| `branding.show_green_jacket` | `true` | +| `branding.show_azaleas` | `true` | +| `branding.color_scheme` | `"classic"` | + + +### What the modes look like + +Which modes are available depends on where you are in the tournament calendar. +During Masters week these eight render and the off-season set is blank: + +![The eight tournament-week modes](../../docs/assets/masters-tournament/tournament-modes.png) + +Outside it, that reverses — these six render and the tournament set is blank: + +![The six off-season modes](../../docs/assets/masters-tournament/offseason-modes.png) + +Enabling only an off-season mode during Masters week therefore shows nothing; +that is the phase gate, not a fault. On a 128-wide panel Amen Corner packs +three hole names against their par and yardage, so the two columns sit very +close together. + +![The leaderboard on four panel sizes](../../docs/assets/masters-tournament/panel-sizes.png) + ## Data Source This plugin uses the **ESPN Golf API** (free, no API key required): diff --git a/plugins/masters-tournament/manifest.json b/plugins/masters-tournament/manifest.json index 1d655261..4f928750 100644 --- a/plugins/masters-tournament/manifest.json +++ b/plugins/masters-tournament/manifest.json @@ -1,7 +1,7 @@ { "id": "masters-tournament", "name": "Masters Tournament", - "version": "2.5.5", + "version": "2.5.6", "description": "Broadcast-quality Masters Tournament display with real ESPN player headshots, accurate Augusta National hole layouts, fun facts, past champions, live leaderboards, and pixel-perfect LED matrix rendering", "author": "ChuckBuilds", "class_name": "MastersTournamentPlugin", @@ -43,6 +43,12 @@ "height": 64 }, "versions": [ + { + "version": "2.5.6", + "released": "2026-09-03", + "notes": "Documentation. None of the 51 settings had a named key in the README; they were described in prose and JSON examples. All 51 are now documented at the paths the schema expects. Seventeen of them do nothing: the notifications block (8) and the branding block (4) are never read by the plugin or the core, and five leaves inside display_modes are read nowhere either, yet the README had sections presenting notifications and branding as features (#418). Adds real rendered screenshots of all fourteen display modes, produced with the plugin's own mock_data mode, split by tournament phase because eight render only during Masters week and six only outside it.", + "ledmatrix_min_version": "2.0.0" + }, { "version": "2.5.5", "released": "2026-08-19", @@ -172,7 +178,7 @@ "ledmatrix_min_version": "2.0.0" } ], - "last_updated": "2026-08-05", + "last_updated": "2026-09-03", "compatible_versions": [ ">=2.0.0" ]