@@ -9,6 +9,62 @@ listed under a **Changed** or **Removed** heading.
99
1010## [ Unreleased]
1111
12+ ## [ 0.8.1] - 2026-09-08
13+
14+ A chart that was not moving stopped saying so twelve times a second, and the
15+ suite gained the check that tells it whether any of its other assertions can
16+ be trusted.
17+
18+ ### Fixed
19+
20+ - ** An idle chart repainted on a timer, whether or not anything had changed**
21+ (#102 ). ` app.redraw ` gated only the full clear, not the draw beneath it, so
22+ the loop bracketed and drew on every 80 ms tick for the life of the process:
23+ a DEC 2026 open/close pair on the wire about twelve and a half times a
24+ second for a picture nobody was changing. Measured at 244 repaints over a
25+ twenty-second idle wait, against 2 immediately after load; now 0.
26+
27+ It draws when something changed instead — input, the full-clear flag, or a
28+ fetch landing, which is the one model change no event announces and is
29+ detected by watching ` Load::Loading ` leave. The loading spinner is the
30+ exception that shapes the guard: it turns off the frame counter with no
31+ event behind it, so a fetch in flight keeps the loop painting.
32+
33+ Nothing on screen differs. The one accepted cost is that ` today() ` reads the
34+ clock when ` --today ` is absent, so a chart left open across midnight no
35+ longer corrects itself on the next tick — any key does it, and the
36+ alternative was a wakeup every 80 ms forever.
37+
38+ ### Changed
39+
40+ - ** The ` termlens ` dev-dependency moves to 0.9 → 0.10.1** , with the ` regex `
41+ and ` serde ` features. The upgrade cost three call sites: ` drag ` now takes
42+ four column-first arguments instead of two coordinate pairs, so a transposed
43+ ` find ` result cannot be handed to it by mistake. Nothing that ships is
44+ touched.
45+
46+ - ** ` tests/emulation.rs ` pins what the emulator drops** , which is the
47+ invariant every other test here rests on. Each of them asserts against a
48+ grid a VT emulator produced from mossaic's bytes, so a sequence that
49+ emulator does not implement makes the grid quietly wrong and every
50+ assertion in the repository a claim about a plausible-looking fiction.
51+ 0.10 made it checkable, and the answer is the same in all three rendering
52+ modes — text cells, kitty and sixel: one ` SGR 59 ` , underline colour, which
53+ changes no cell. Pinned exactly, because anything joining that list might
54+ change one.
55+
56+ - ** ` tests/cli.rs ` drives ` termlens-cli ` ** against mossaic's own screens —
57+ saved, rendered to SVG with every truecolour the chart chose still in it,
58+ and diffed. ` #[ignore] ` d, because a ` cargo test ` that installs a tool
59+ behind a contributor's back is a surprise this crate should not spring; CI
60+ runs it by name, as it already does for the tests needing ` gh ` .
61+
62+ - ** The vendored termlens skill is refreshed to 0.10.1** , and
63+ ` check-skill-version.sh ` now fails when that copy and the dependency
64+ disagree on major.minor. Nothing can diff the copy against upstream — the
65+ published crate does not ship the skill — but the two versions agreeing is
66+ exactly the drift that happens.
67+
1268## [ 0.8.0] - 2026-09-06
1369
1470One finding, filed from the repository that consumes this one: the tracker
@@ -1114,7 +1170,8 @@ there was none.
11141170
11151171[ termlens ] : https://github.com/vyncint/termlens
11161172
1117- [ Unreleased ] : https://github.com/vyncint/mossaic/compare/v0.8.0...HEAD
1173+ [ Unreleased ] : https://github.com/vyncint/mossaic/compare/v0.8.1...HEAD
1174+ [ 0.8.1 ] : https://github.com/vyncint/mossaic/compare/v0.8.0...v0.8.1
11181175[ 0.8.0 ] : https://github.com/vyncint/mossaic/compare/v0.7.0...v0.8.0
11191176[ 0.7.0 ] : https://github.com/vyncint/mossaic/compare/v0.6.3...v0.7.0
11201177[ 0.6.3 ] : https://github.com/vyncint/mossaic/compare/v0.6.2...v0.6.3
0 commit comments