From 358911cb201f07abcbaa443018bc534fe301d147 Mon Sep 17 00:00:00 2001 From: Chuck <33324927+ChuckBuilds@users.noreply.github.com> Date: Thu, 8 Oct 2026 14:31:01 -0400 Subject: [PATCH] chore: prepare the 3.8.3 release (#784) Bumps src.__version__ to 3.8.3 and turns Unreleased into ## 3.8.3, adding entries for what merged since 3.8.2: the installer's desktop check (#780, #781) -- 3.8.2 stops fresh Raspberry Pi OS Lite installs with "Desktop environment detected", and the one-shot installer installs the newest release, so the fix only reaches users once it is tagged -- the ESPN scoreboard payload slimming (#749), the Vegas static-pause and store restart fixes (#753), and plugin-computed display modes in the web UI (#769). scripts/check_release_version.py v3.8.3 passes. Claude-Session: https://claude.ai/code/session_01VZNWFWprcFYGfuf1JAyrBJ Co-authored-by: Claude --- CHANGELOG.md | 58 ++++++++++++++++++++++++++++++++++++++++++++++++- src/__init__.py | 2 +- 2 files changed, 58 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index eed96cd3..5d98ee1d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,60 @@ accepts both, but the store flags the old spelling as deprecated ## Unreleased +## 3.8.3 + +Fresh installs on Raspberry Pi OS Lite work again: 3.8.2's installer reported +a desktop on Lite and stopped (#780, #781). Also lighter cached ESPN +scoreboard windows (#749), a Vegas static-pause fix and a store reinstall +restart prompt (#753), and display modes a plugin computes from its config in +the web UI (#769). + +### Install + +- The installer no longer stops Raspberry Pi OS Lite with "Desktop environment + detected". Its package check searched whole `dpkg -l` lines, and `.*kde` + matched inside `libblockdev` ("bloc**kde**v"), which Lite ships; it now + matches installed package names from their start (#780). Desktop + metapackages and session managers are matched as whole names, so + `gnome-keyring` and similar standalone parts no longer count, and the list + now includes Raspberry Pi OS Trixie's `rpd-wayland-core` / `rpd-x-core` + (which replaced `raspberrypi-ui-mods`), Debian's `task-*-desktop` and + multi-arch names (#781). +- Only a **running** desktop stops the install: a display manager that + `systemctl is-active` reports (`display-manager`, lightdm, gdm, sddm, + lxdm), with directions to boot to the console instead. Desktop packages or + session files on a Pi that boots to the console print a warning and the + install continues (#781). + +### Fixed + +- A Vegas static pause no longer ends at once for a plugin whose + `display_duration` is not a number (a string such as `"20"` or `null` from + config.json, as clock-simple, calendar and countdown return it). The pause + reads the duration the way the rotation does, with the same fallbacks: 30 s + for anything that is not a number, 15 s for zero or less. The helper moved + from `display_controller._finite_seconds` to `base_plugin.finite_seconds`, + unchanged (#753). +- Reinstalling an enabled plugin from the store now asks for a restart for + plugins that install under their manifest id (Weather as + `ledmatrix-weather`, Music, Stocks, Leaderboard): the route checked the + enabled flag under the registry id (#753). +- `/display/modes`, the on-demand dialog and `on-demand/start` by mode see the + modes a plugin computes from its config (soccer-scoreboard's custom + leagues), which no manifest can list. The display records the modes it + registered in the runtime snapshot, and the web catalog prefers them while + the plugin is loaded, falling back to the manifest otherwise. No manifest or + plugin change needed (#769, fixes #668). + +### Performance + +- `BackgroundDataService` drops the parts of an ESPN `/scoreboard` response no + scoreboard reads (stat leaders, athlete cards, links, headlines, highlights, + geo broadcasts) before caching it (`src/common/espn_payload.py`, + core-internal). Measured on one Pi (hdpi), the five scoreboard windows went + from 10.6 MB to 3.0 MB of JSON and ~40 MB to ~12 MB of parsed objects. + `submit_fetch_request(slim_payload=False)` caches a response whole (#749). + ### Tooling - `test/test_sports_helpers.py`'s parity tests pass again with @@ -27,7 +81,9 @@ accepts both, but the store flags the old spelling as deprecated (ledmatrix-plugins #563/#564), and the 19 tests still expected them. A copy that is gone now counts as adopted when the plugin imports `src.common.sports_helpers`, as the stage 3/4 and game-over parity tests - already do; a copy that remains must still match. + already do; a copy that remains must still match. (#777) +- `src/common/README.md` lists `espn_payload`, which + `test_common_readme_lists_every_module` requires (#782). ## 3.8.2 diff --git a/src/__init__.py b/src/__init__.py index add0e258..6623f60a 100644 --- a/src/__init__.py +++ b/src/__init__.py @@ -4,5 +4,5 @@ LEDMatrix Display System Core source package for the LED Matrix Display project. """ -__version__ = "3.8.2" +__version__ = "3.8.3"