Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 58 additions & 1 deletion CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -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.
Expand Down
6 changes: 3 additions & 3 deletions action/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down Expand Up @@ -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"
Expand Down Expand Up @@ -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
Expand Down
2 changes: 1 addition & 1 deletion action/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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.
Expand Down
4 changes: 2 additions & 2 deletions action/track.example.yml
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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
Expand Down
2 changes: 1 addition & 1 deletion docs/ART.md
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down