diff --git a/CHANGELOG.md b/CHANGELOG.md index 1cc6a860..f988bb17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,6 +19,40 @@ accepts both, but the store flags the old spelling as deprecated ## Unreleased +## 3.8.1 + +Smooth scrolling at the slower speeds, and the fixes and performance work +since 3.8.0. Highlights: the default 50 px/s and every other held-frame speed +now scroll cleanly (below), Raspberry Pi OS Bookworm is supported alongside +Trixie, updates refresh the systemd units, the display control socket gains +stages 2 and 3, the shared fetch service lands (stages 1 and 2), and a run of +web UI and Plugin Manager fixes. The new modules are core-internal and set no +`ledmatrix_min_version` floor. + +### Scroll speed + +These two entries were the reason for this release: on 3.8.0 a slow scroll +either stepped or showed a half-pixel tear across the middle of the panel, +so only speeds of one pixel per refresh looked right. + +- The Vegas Scroll Speed slider now says what the panel will do with the speed + it is on, and offers the nearest smooth ones to click. Only speeds that advance + a whole number of pixels per refresh look smooth, and which those are depends + on the panel (`GET /api/v3/config/scroll-speed-advice`, built on + `scroll_config.speed_advice()`; it uses the refresh the display measured, not + the `limit_refresh_rate_hz` cap). The slider steps by 1 px/s instead of 5. +- The default 50 px/s no longer snaps to a stepped 48 px/s (2 px every 5 + refreshes, 24 fps) on a 120 Hz panel: `solve_crisp()` now prefers 60 or 40 px/s, + which move one pixel at a time. 100 Hz panels are unaffected. (#710) +- A held-frame scroll (one pixel every two or more refreshes, such as 50 or + 60 px/s on a 100-120 Hz panel) no longer shows a half-pixel step across the + middle of the panel. Scan-order compensation ran only at one frame per + refresh; a held frame is now presented as a sequence of swaps + (`scan_order.refresh_plan()`), so the half of the panel that scans later + steps one refresh after the rest. It is skipped when a blit takes more than + half a refresh, since the second blit has to land before the next vsync. + (#711) + ### Fixed - The web preview and `/api/v3/display/current` no longer stay black for a @@ -1148,18 +1182,6 @@ guard the import, since the loader's version check is advisory). processes, or turns the socket off with `off`. A non-root dev run uses a private per-user path under the temp directory. -### Scroll speed - -- The Vegas Scroll Speed slider now says what the panel will do with the speed - it is on, and offers the nearest smooth ones to click. Only speeds that advance - a whole number of pixels per refresh look smooth, and which those are depends - on the panel (`GET /api/v3/config/scroll-speed-advice`, built on - `scroll_config.speed_advice()`; it uses the refresh the display measured, not - the `limit_refresh_rate_hz` cap). The slider steps by 1 px/s instead of 5. -- The default 50 px/s no longer snaps to a stepped 48 px/s (2 px every 5 - refreshes, 24 fps) on a 120 Hz panel: `solve_crisp()` now prefers 60 or 40 px/s, - which move one pixel at a time. 100 Hz panels are unaffected. - ### Update channels - Devices no longer pick up every merge to `main`. A new setting, diff --git a/src/__init__.py b/src/__init__.py index b181d528..9bf9335e 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.0" +__version__ = "3.8.1"