diff --git a/CHANGELOG.md b/CHANGELOG.md index 40685a8..e272657 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,62 @@ listed under a **Changed** or **Removed** heading. ## [Unreleased] +## [0.8.1] - 2026-09-08 + +A chart that was not moving stopped saying so twelve times a second, and the +suite gained the check that tells it whether any of its other assertions can +be trusted. + +### Fixed + +- **An idle chart repainted on a timer, whether or not anything had changed** + (#102). `app.redraw` gated only the full clear, not the draw beneath it, so + the loop bracketed and drew on every 80 ms tick for the life of the process: + a DEC 2026 open/close pair on the wire about twelve and a half times a + second for a picture nobody was changing. Measured at 244 repaints over a + twenty-second idle wait, against 2 immediately after load; now 0. + + It draws when something changed instead — input, the full-clear flag, or a + fetch landing, which is the one model change no event announces and is + detected by watching `Load::Loading` leave. The loading spinner is the + exception that shapes the guard: it turns off the frame counter with no + event behind it, so a fetch in flight keeps the loop painting. + + Nothing on screen differs. The one accepted cost is that `today()` reads the + clock when `--today` is absent, so a chart left open across midnight no + longer corrects itself on the next tick — any key does it, and the + alternative was a wakeup every 80 ms forever. + +### Changed + +- **The `termlens` dev-dependency moves to 0.9 → 0.10.1**, with the `regex` + and `serde` features. The upgrade cost three call sites: `drag` now takes + four column-first arguments instead of two coordinate pairs, so a transposed + `find` result cannot be handed to it by mistake. Nothing that ships is + touched. + +- **`tests/emulation.rs` pins what the emulator drops**, which is the + invariant every other test here rests on. Each of them asserts against a + grid a VT emulator produced from mossaic's bytes, so a sequence that + emulator does not implement makes the grid quietly wrong and every + assertion in the repository a claim about a plausible-looking fiction. + 0.10 made it checkable, and the answer is the same in all three rendering + modes — text cells, kitty and sixel: one `SGR 59`, underline colour, which + changes no cell. Pinned exactly, because anything joining that list might + change one. + +- **`tests/cli.rs` drives `termlens-cli`** against mossaic's own screens — + saved, rendered to SVG with every truecolour the chart chose still in it, + and diffed. `#[ignore]`d, because a `cargo test` that installs a tool + behind a contributor's back is a surprise this crate should not spring; CI + runs it by name, as it already does for the tests needing `gh`. + +- **The vendored termlens skill is refreshed to 0.10.1**, and + `check-skill-version.sh` now fails when that copy and the dependency + disagree on major.minor. Nothing can diff the copy against upstream — the + published crate does not ship the skill — but the two versions agreeing is + exactly the drift that happens. + ## [0.8.0] - 2026-09-06 One finding, filed from the repository that consumes this one: the tracker @@ -1114,7 +1170,8 @@ there was none. [termlens]: https://github.com/vyncint/termlens -[Unreleased]: https://github.com/vyncint/mossaic/compare/v0.8.0...HEAD +[Unreleased]: https://github.com/vyncint/mossaic/compare/v0.8.1...HEAD +[0.8.1]: https://github.com/vyncint/mossaic/compare/v0.8.0...v0.8.1 [0.8.0]: https://github.com/vyncint/mossaic/compare/v0.7.0...v0.8.0 [0.7.0]: https://github.com/vyncint/mossaic/compare/v0.6.3...v0.7.0 [0.6.3]: https://github.com/vyncint/mossaic/compare/v0.6.2...v0.6.3 diff --git a/Cargo.lock b/Cargo.lock index 7ea5b1d..3149485 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -789,7 +789,7 @@ dependencies = [ [[package]] name = "mossaic" -version = "0.8.0" +version = "0.8.1" dependencies = [ "chrono", "libc", diff --git a/Cargo.toml b/Cargo.toml index 73eea36..1d804a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "mossaic" -version = "0.8.0" +version = "0.8.1" edition = "2021" # Minimum supported Rust version. Verified by the `msrv` CI job, which reads this # field; bumping it is a minor (not patch) change. diff --git a/action/README.md b/action/README.md index b6cf633..22a0c7e 100644 --- a/action/README.md +++ b/action/README.md @@ -17,7 +17,7 @@ jobs: runs-on: ubuntu-latest steps: - id: art - uses: vyncint/mossaic/action@v0.8.0 + uses: vyncint/mossaic/action@v0.8.1 with: text: VYNCINT year: "2027" @@ -84,7 +84,7 @@ drawn. The rest are the same either way. ```yaml - id: art - uses: vyncint/mossaic/action@v0.8.0 + uses: vyncint/mossaic/action@v0.8.1 with: template: dragon year: "2027" @@ -236,7 +236,7 @@ on 290 days of the year is a job nobody reads. ## Notes -- **Two knobs, two jobs.** The ref you pin (`@v0.8.0`, `@main`) chooses the +- **Two knobs, two jobs.** The ref you pin (`@v0.8.1`, `@main`) chooses the *action's steps* — the glue that runs the tracker and shapes the outputs. The `version` input chooses the *tracker itself*, straight from crates.io. The default, `latest`, is fine for a daily report; pin a number when you diff --git a/action/action.yml b/action/action.yml index 743f740..c4d98ac 100644 --- a/action/action.yml +++ b/action/action.yml @@ -118,7 +118,7 @@ inputs: default: "true" version: description: >- - Which mossaic release runs the tracking, e.g. "0.8.0". The default, + Which mossaic release runs the tracking, e.g. "0.8.1". The default, `latest`, installs the newest release on crates.io each run — fine for tracking, since the report format is versioned with the crate. Pin a number if you want the tracker to change only when you say so. diff --git a/action/track.example.yml b/action/track.example.yml index e74afae..0460ccb 100644 --- a/action/track.example.yml +++ b/action/track.example.yml @@ -29,7 +29,7 @@ jobs: runs-on: ubuntu-latest steps: - id: art - uses: vyncint/mossaic/action@v0.8.0 + uses: vyncint/mossaic/action@v0.8.1 with: text: VYNCINT year: "2027" @@ -46,7 +46,7 @@ jobs: # the failure notification you already get does the reminding. fail-on: never # Which mossaic release does the tracking. The default, latest, - # follows crates.io; pin a number ("0.8.0") to freeze it. + # follows crates.io; pin a number ("0.8.1") to freeze it. # version: latest # ----------------------------------------------------------------- issue diff --git a/docs/ART.md b/docs/ART.md index d554629..6c433c6 100644 --- a/docs/ART.md +++ b/docs/ART.md @@ -552,7 +552,7 @@ arrive rather than be asked for: ```yaml - id: art - uses: vyncint/mossaic/action@v0.8.0 + uses: vyncint/mossaic/action@v0.8.1 with: text: VYNCINT year: "2027"