You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
release: 0.4.2 — fix canvas rendering artifacts and scrub flicker
- Canvas.to_ansi_with_defaults: always emit SGR at col 0 so each row is
self-contained; prevents apply_bg_fill from bleeding the wrong bg into
the first character of rows where style carried unchanged from the
previous row
- Canvas_widget / Miaou Invaders: remove the 36-row cap on canvas height
so the game fills the full terminal, eliminating black bars on tall
terminals
- Matrix driver: stop calling force_render from the main loop (modal
transitions and periodic scrub now only call mark_all_dirty); this
eliminates the interleaved-write race that caused visible flicker
- Miaou Invaders rendering: all draw_text calls now carry an explicit bg
matching the current game or HUD background, fixing black horizontal
bars where sprites appeared
- Scrub interval default: 30 → 300 frames (5 s at 60 fps)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+10Lines changed: 10 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -5,6 +5,16 @@ All notable changes to this project will be documented in this file.
5
5
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
8
+
## [0.4.2] - Unreleased
9
+
10
+
### Fixed
11
+
12
+
-**Canvas ANSI row isolation**: `Canvas.to_ansi_with_defaults` now always emits an SGR sequence at column 0 of every row, making each row self-contained. Previously, style was carried across row boundaries as an optimisation; this caused `apply_bg_fill` to bleed the wrong background into the first character of rows where style happened to carry unchanged from the previous row.
13
+
-**Canvas widget fills full terminal height**: Miaou Invaders (and any `Canvas_widget` page) no longer shows black bars below the canvas on tall terminals. The 36-row cap on the canvas height has been removed so the game scales to the full terminal height.
14
+
-**Matrix driver scrub flicker**: `force_render` is no longer called from the main loop (neither on modal transitions nor during periodic scrub). Both cases now only call `mark_all_dirty`, letting the render domain (the sole terminal writer) pick up the change within one frame. This eliminates the interleaved-write race that caused visible flicker.
15
+
-**Miaou Invaders background**: All `draw_text` calls in the Invaders demo now carry an explicit `bg` matching the current game or HUD background. Previously, entities drawn with `bg=-1` clobbered the `fill_rect`-painted background, producing black horizontal bars wherever sprites appeared.
16
+
-**Periodic scrub interval**: Default `scrub_interval_frames` reduced from 30 frames (0.5 s at 60 fps) to 300 frames (5 s), making the occasional full-refresh nearly imperceptible.
0 commit comments