mirror of
https://github.com/ChuckBuilds/LEDMatrix.git
synced 2026-10-04 06:15:09 +00:00
chore: prepare the 3.8.0 release (#709)
* chore(deprecation): remove the 35 APIs deprecated for 3.8.0 The usage scan (docs/DEPRECATIONS_3.8.md, regenerated 2026-10-01 and committed here) finds no call or override of any of them in the 46 monorepo plugins or the 8 third-party plugins plugins.json lists; the only core callers were other deprecated methods removed alongside. - CacheManager: 13 methods, plus the private helpers only has_data_changed used (_has_*_changed, _is_market_open). - DisplayManager: 7 methods, plus WEATHER_COLORS and the private _draw_sun/_cloud/_rain/_snow/_storm helpers only the icon methods used. - FontManager: 14 methods, plus size_tokens, _save_overrides and _clear_plugin_font_cache. font_overrides and _load_overrides stay: resolve_font() still applies config/font_overrides.json. performance_stats stays: get_font() keeps it and tests read it. - PluginManager.get_enabled_plugins. test_deprecation.py pins only the two 3.9.0 markers now; the scanner tests run against a stand-in core instead of the real markers. The memory-tier tests read stats through log_memory_cache_stats() and the component, and the test of the removed _clear_plugin_font_cache goes. Docs drop the removed methods' reference entries; the Deprecated APIs table becomes "Removed in 3.8.0". CHANGELOG gains a Removed section. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore(deprecation): drop the test harness's copies of the removed icon methods VisualTestDisplayManager still drew weather icons that DisplayManager no longer has, so a plugin's visual tests could pass on calls that raise AttributeError on the real display. Its draw_sun/draw_cloud/draw_rain/ draw_snow/draw_weather_icon/draw_text_with_icons, WEATHER_COLORS and the private helpers go, with the tests that exercised them. The CHANGELOG's Deprecations entries no longer say nothing is removed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore: prepare the 3.8.0 release Bumps src.__version__ to 3.8.0 and turns Unreleased into ## 3.8.0, with a summary and a New modules list (vegas_elements, testing.vegas, sports_vegas; display_watchdog, plugin_catalog, plugin_runtime) for plugins flooring on 3.8.0. Adds the CHANGELOG line #701's second commit lacked (blocks laid out off the render thread). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore: 3.8.0 also ships what landed on main since the prep #703, #705, #706 and #693 merged after this branch was cut; their CHANGELOG entries now sit under 3.8.0. The summary and New modules list name them (sports consolidation stage 4's four modules, src/ipc, field_model), stage 4's section says to floor on 3.8.0, and src/common/README.md marks its four modules 3.8.0 instead of Unreleased. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+41
-4
@@ -17,7 +17,37 @@ release that ships it.
|
||||
accepts both, but the store flags the old spelling as deprecated
|
||||
(`store_manager.py`) and only the new one is in `schema/manifest_schema.json`.
|
||||
|
||||
## Unreleased
|
||||
## 3.8.0
|
||||
|
||||
Live Vegas elements: plugin content that keeps changing while it scrolls
|
||||
(scores on the scoreboards' cards, the flight map's gliding aircraft, the
|
||||
weather radar's loop), with live games kept in the ticker by default. Also
|
||||
stable/beta update channels, the display control socket, the systemd
|
||||
display watchdog, optional web login, ES-module web UI pages, sports
|
||||
consolidation stage 4, and the removal of the 35 plugin APIs deprecated
|
||||
since 3.5.0 (see Removed).
|
||||
|
||||
### New modules
|
||||
|
||||
A plugin may import these via `src.*` once it floors on 3.8.0 (and should
|
||||
guard the import, since the loader's version check is advisory).
|
||||
|
||||
- `src/plugin_system/vegas_elements.py` -- `VegasElement`, the unit a
|
||||
plugin's `get_vegas_elements()` returns (also re-exported from
|
||||
`base_plugin`). See "Live Vegas elements" below.
|
||||
- `src/plugin_system/testing/vegas.py` -- the harness for those hooks:
|
||||
`render_vegas_elements`, `check_vegas_elements`, `render_vegas_timeline`.
|
||||
- `src/common/sports_vegas.py` -- what a scoreboard needs for live cards:
|
||||
`game_key`, `game_fingerprint`, `dedupe_games`, `VegasCardCache`,
|
||||
`StickyOdds`, `finished_games`.
|
||||
- `src/common/sports_plugin_host.py`, `sports_live_scroll.py`,
|
||||
`sports_display_rules.py` and `sports_font_path.py` -- sports
|
||||
consolidation stage 4; see "New modules (sports consolidation stage 4)"
|
||||
below.
|
||||
- `src/display_watchdog.py`, `src/plugin_system/plugin_catalog.py`,
|
||||
`src/plugin_system/plugin_runtime.py`, `src/plugin_system/field_model.py`
|
||||
and the `src/ipc/` package -- new core modules (described below) that
|
||||
plugins do not normally import.
|
||||
|
||||
### Web UI: ES modules and one form model (stage 1)
|
||||
|
||||
@@ -509,6 +539,14 @@ read any of them:
|
||||
twice. Assigning `cached_image` still stores exactly what was assigned.
|
||||
New `ScrollHelper.has_strip()` says whether there is a strip without
|
||||
building its image; the frame path and Vegas use it.
|
||||
- The frame after a Vegas strip extension is no longer late on a Pi 4. The
|
||||
render thread also laid out every plugin block of the new group (joining
|
||||
its rows, measuring the separation between each pair) and pasted the
|
||||
blocks into one image, about 37ms on hdpi against ~3.75ms of slack. The
|
||||
thread that fetches the group now does that as each plugin arrives, and
|
||||
the extension only writes the prepared pixels into the strip
|
||||
(`ScrollHelper.append_content` takes RGB arrays): 3.2ms. In a 4 x 8 minute
|
||||
A/B soak, extension frames went from 10 of 10 late to 3 of 10.
|
||||
|
||||
### Tooling
|
||||
|
||||
@@ -616,12 +654,11 @@ plugin that still calls one gets an `AttributeError`;
|
||||
|
||||
### New modules (sports consolidation stage 4)
|
||||
|
||||
A plugin may import these via `src.*` once it floors on the release that
|
||||
ships them (the first release cut from this section). All four hold code the
|
||||
A plugin may import these via `src.*` once it floors on 3.8.0. All four hold code the
|
||||
scoreboard plugins carry as identical copies (checked at ledmatrix-plugins
|
||||
`56c4f15`), moved without behaviour change under the plugins' own names;
|
||||
each docstring lists what the host class must provide. Nothing in core uses
|
||||
them yet. The plugins delete their copies when they floor on that release.
|
||||
them yet. The plugins delete their copies when they floor on 3.8.0.
|
||||
|
||||
- `src/common/sports_plugin_host.py` — `SportsPluginHostMixin`, ten helpers
|
||||
of the scoreboard plugin class (`manager.py`) identical in all nine:
|
||||
|
||||
+1
-1
@@ -4,5 +4,5 @@ LEDMatrix Display System
|
||||
Core source package for the LED Matrix Display project.
|
||||
"""
|
||||
|
||||
__version__ = "3.7.0"
|
||||
__version__ = "3.8.0"
|
||||
|
||||
|
||||
@@ -40,13 +40,13 @@ Rules for the package:
|
||||
| [`sports_card`](#sports_card) | Scoreboard card settings, colours, fonts, dates | Yes (scoreboards) | 3.3.0 |
|
||||
| [`sports_card_wrappers`](#sports_card_wrappers) | The game renderer's `sports_card` delegations | Yes (scoreboards) | 3.7.0 |
|
||||
| [`sports_celebration`](#sports_celebration) | Draw a scoreboard's score/win celebration | Yes (scoreboards) | 3.7.0 |
|
||||
| [`sports_display_rules`](#sports_display_rules) | Which games a scoreboard shows, for how long, and its scorebug date line | Yes (scoreboards) | Unreleased |
|
||||
| [`sports_display_rules`](#sports_display_rules) | Which games a scoreboard shows, for how long, and its scorebug date line | Yes (scoreboards) | 3.8.0 |
|
||||
| [`sports_fetch`](#sports_fetch) | Scoreboard season fetch, lookback and live-odds decisions | Yes (scoreboards) | 3.7.0 |
|
||||
| [`sports_font_path`](#sports_font_path) | Find a scoreboard's bundled font whatever the cwd | Yes (scoreboards) | Unreleased |
|
||||
| [`sports_font_path`](#sports_font_path) | Find a scoreboard's bundled font whatever the cwd | Yes (scoreboards) | 3.8.0 |
|
||||
| [`sports_game_renderer`](#sports_game_renderer) | Scoreboard scroll/Vegas card geometry | Yes (scoreboards) | 3.3.0 |
|
||||
| [`sports_helpers`](#sports_helpers) | Small helpers every scoreboard `sports.py` copies | Yes (scoreboards) | 3.5.0 |
|
||||
| [`sports_live_scroll`](#sports_live_scroll) | Rebuild a live scroll strip mid-cycle without moving it | Yes (scoreboards) | Unreleased |
|
||||
| [`sports_plugin_host`](#sports_plugin_host) | Helpers of a scoreboard's plugin class (`manager.py`) | Yes (scoreboards) | Unreleased |
|
||||
| [`sports_live_scroll`](#sports_live_scroll) | Rebuild a live scroll strip mid-cycle without moving it | Yes (scoreboards) | 3.8.0 |
|
||||
| [`sports_plugin_host`](#sports_plugin_host) | Helpers of a scoreboard's plugin class (`manager.py`) | Yes (scoreboards) | 3.8.0 |
|
||||
| [`sports_scroll`](#sports_scroll) | Scoreboard scroll-display orchestration | Yes (scoreboards) | 3.2.0 |
|
||||
| [`sports_shared`](#sports_shared) | Sport-independent `sports.py` methods | Yes (scoreboards) | 3.3.0 |
|
||||
| [`sports_vegas`](#sports_vegas) | Live Vegas cards: keys, card cache, sticky odds, finished games | Yes (scoreboards) | 3.8.0 |
|
||||
|
||||
Reference in New Issue
Block a user