Skip to content

Commit 40caf58

Browse files
authored
release: v0.6.3 — the things a new user hits first (#71)
A review of mossaic from the outside: install it, run it, read what it prints. Five things it got wrong, all of them on the paths somebody meets in the first minute. The one shipped template warned on every year. `--template dragon` printed `note: 6 cell(s) fell outside 2027 and were dropped` for 2025 through 2029, and all six were blank margin — Canvas::place counted every cell that fell outside the year rather than every cell that would have been drawn. The flagship path, warning about nothing, teaching people that notes here are noise. It now counts only lit cells. Counts did not read as English. Twenty-nine of them: `1 template(s)`, `6 cell(s)`, `59 day(s)` — the first line of `--list-templates` and the markdown the GitHub Action posts to a pull request. `plural` takes both forms rather than appending an `s`, so verbs agree too: "1 day is short", "2 days are short", and the number's own formatting stays at the call site where the widths and separators live. `mossaic-art --help` was thirty flags in one flat list, with a paragraph of colour theory inside `--background`. Grouped now — what to draw, where it goes, tracking, making the commits, output — with usage and seven examples first. The colour theory moved to docs/ART.md, which had room for it already. 93 lines against 113, and no flag dropped. A missing `--file` in a script blamed the terminal. The chart claims the terminal before it reads the calendar, so a typo'd path in CI came back as `needs an interactive terminal`: true, and no help in finding the typo. Only that case changed — with a terminal the error is still shown *in* the chart with `r` to retry, which is the better answer, and the first attempt at this broke that. `--font` told everyone who ran it to edit `src/art.rs`. The catalogue was a catalogue of one, which is what `--template NAME` offered. Three more: wave, pulse, invader — 51 columns each, so no lit day lands in a partial week, and `{0, 2, 4}` each, the only three shades that are all clearly distinct. That last part is why two gates come with them, and they matter now that #57 invites contributed art. `every_template_reads_clearly` measures the closest pair of shades in every template: art using 2 and 3 looks two-toned in the file, because the digits differ, and reads as one flat colour on github.com. `no_template_overhangs_the_year` fails a template that loses a lit day off either end of any year. Both were run against art planted to break them, and both did. Also: the description never said mossaic was a terminal program, and the action refs in the docs had been pinned at v0.6.0 for two releases. 213 tests, fmt, clippy and rustdoc clean. Signed-off-by: Vyncint Ng <115854244+vyncint@users.noreply.github.com>
1 parent 26733b6 commit 40caf58

21 files changed

Lines changed: 490 additions & 194 deletions

CHANGELOG.md

Lines changed: 57 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,63 @@ listed under a **Changed** or **Removed** heading.
99

1010
## [Unreleased]
1111

12+
## [0.6.3] - 2026-08-24
13+
1214
### Added
1315

16+
- **Three more templates**, so the catalogue is a catalogue: `wave` (one clean
17+
sine across the year), `pulse` (a heartbeat trace, a spike every few weeks)
18+
and `invader` (a space invader, centred). Each is 51 columns, which keeps
19+
every lit day clear of the two partial weeks at the ends of a year, and each
20+
is drawn in `{0, 2, 4}` — the only three shades no reader has to squint at.
21+
22+
- **Two gates on template art**, which matter now that
23+
[#57](https://github.com/vyncint/mossaic/issues/57) invites contributions.
24+
`every_template_reads_clearly` measures the closest pair of shades in every
25+
template and fails anything that is not *clear*: a picture using `2` and `3`
26+
looks two-toned in the `.art` file, because the digits differ, and reads as
27+
one flat colour on github.com. `no_template_overhangs_the_year` fails a
28+
template that loses a lit day off either end of any year. Both were checked
29+
against art planted to break them.
30+
31+
### Changed
32+
33+
- **`mossaic-art --help` is grouped rather than a list of thirty flags.** The
34+
options now sit under *what to draw*, *where it goes*, *tracking*, *making
35+
the commits* and *output*, with the usage and seven examples first. The
36+
colour-theory paragraph that lived inside `--background` moved to
37+
[docs/ART.md](docs/ART.md), where there is room to say it properly. Shorter
38+
overall (93 lines against 113) and no flag was dropped.
39+
40+
- **Counts read as English.** Every user-facing count said `1 template(s)`,
41+
`6 cell(s)`, `59 day(s)` — twenty-nine of them, on the first lines a new
42+
user reads and in the markdown the GitHub Action posts. They now agree with
43+
their number, verb included: *1 day is short*, *2 days are short*.
44+
45+
- **The description says what mossaic is.** It never mentioned the terminal.
46+
47+
### Fixed
48+
49+
- **The one shipped template no longer warns on every single year.** Drawing
50+
`--template dragon` printed `note: 6 cell(s) fell outside 2027 and were
51+
dropped` for 2025 through 2029 — and all six were *blank* margin, so nothing
52+
was lost. `Canvas::place` counted every cell that fell outside the year,
53+
lit or not. It now counts only the cells that would have been drawn, so the
54+
note appears when a shade is genuinely lost and stays quiet otherwise.
55+
56+
Found by running the flagship path and reading what it printed.
57+
58+
- **A missing `--file` in a script names the file, not the terminal.** The
59+
chart claims the terminal before it reads the calendar, so
60+
`mossaic --file typo.json` in CI reported `needs an interactive terminal`
61+
true, and no help at all in finding the typo. With a terminal the behaviour
62+
is unchanged: the error is shown *in* the chart with `r` to retry, which is
63+
better than exiting.
64+
65+
- **`--font` no longer tells its readers to edit `src/art.rs`.** It printed a
66+
note meant for contributors to everyone who ran it.
67+
68+
1469
- **`brew install vyncint/tap/mossaic`.** The formula is generated by the
1570
release itself from the checksums the archives produced, so it cannot
1671
describe an archive that was never built, and a hand-edit in the tap is
@@ -861,7 +916,8 @@ there was none.
861916

862917
[termlens]: https://github.com/vyncint/termlens
863918

864-
[Unreleased]: https://github.com/vyncint/mossaic/compare/v0.6.2...HEAD
919+
[Unreleased]: https://github.com/vyncint/mossaic/compare/v0.6.3...HEAD
920+
[0.6.3]: https://github.com/vyncint/mossaic/compare/v0.6.2...v0.6.3
865921
[0.6.2]: https://github.com/vyncint/mossaic/compare/v0.6.1...v0.6.2
866922
[0.6.1]: https://github.com/vyncint/mossaic/compare/v0.6.0...v0.6.1
867923
[0.6.0]: https://github.com/vyncint/mossaic/compare/v0.5.0...v0.6.0

Cargo.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
[package]
22
name = "mossaic"
3-
version = "0.6.2"
3+
version = "0.6.3"
44
edition = "2021"
55
# Minimum supported Rust version. Verified by the `msrv` CI job, which reads this
66
# field; bumping it is a minor (not patch) change.
77
#
88
# 1.88 is dictated by ratatui 0.30. Everything else in the tree needs less: the
99
# graphics and colour code is plain std.
1010
rust-version = "1.88"
11-
description = "Plan and track GitHub contribution art — what today owes to draw your name by December, and whether the year can still be drawn at all"
12-
keywords = ["github", "contributions", "contribution-art", "sixel", "kitty"]
11+
description = "Draw pixel art in your GitHub contribution graph — a terminal chart, an editor, and a planner that says what today owes"
12+
# `tui` earns its place over `contributions`, which `contribution-art` already
13+
# covers: the chart, the designer and the glyph viewer are all terminal UIs, and
14+
# that is how someone looking for one searches.
15+
keywords = ["github", "contribution-art", "tui", "sixel", "kitty"]
1316
categories = ["command-line-utilities", "visualization"]
1417
license = "MIT OR Apache-2.0"
1518
repository = "https://github.com/vyncint/mossaic"

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,9 @@ That is `--template dragon` on 2027 — 146 days, 442 commits — drawn by the s
289289
rasteriser that draws the chart, so it is what the graph will actually look
290290
like rather than an impression of it.
291291

292+
Four templates ship with it — `dragon`, `wave`, `pulse` and `invader` — and
293+
each is a seven-line text file you can copy and edit.
294+
292295
```sh
293296
mossaic-art --list-templates # what there is, with thumbnails
294297
mossaic-art --template dragon --year 2027 # draw one, and see what it costs

action/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
runs-on: ubuntu-latest
1818
steps:
1919
- id: art
20-
uses: vyncint/mossaic/action@v0.6.0
20+
uses: vyncint/mossaic/action@v0.6.3
2121
with:
2222
text: VYNCINT
2323
year: "2027"
@@ -84,7 +84,7 @@ drawn. The rest are the same either way.
8484

8585
```yaml
8686
- id: art
87-
uses: vyncint/mossaic/action@v0.6.0
87+
uses: vyncint/mossaic/action@v0.6.3
8888
with:
8989
template: dragon
9090
year: "2027"
@@ -216,7 +216,7 @@ on 290 days of the year is a job nobody reads.
216216

217217
## Notes
218218

219-
- **Two knobs, two jobs.** The ref you pin (`@v0.6.0`, `@main`) chooses the
219+
- **Two knobs, two jobs.** The ref you pin (`@v0.6.3`, `@main`) chooses the
220220
*action's steps* — the glue that runs the tracker and shapes the outputs.
221221
The `version` input chooses the *tracker itself*, straight from crates.io.
222222
The default, `latest`, is fine for a daily report; pin a number when you

action/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ inputs:
118118
default: "true"
119119
version:
120120
description: >-
121-
Which mossaic release runs the tracking, e.g. "0.6.0". The default,
121+
Which mossaic release runs the tracking, e.g. "0.6.3". The default,
122122
`latest`, installs the newest release on crates.io each run — fine for
123123
tracking, since the report format is versioned with the crate. Pin a
124124
number if you want the tracker to change only when you say so.

action/track.example.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
runs-on: ubuntu-latest
2323
steps:
2424
- id: art
25-
uses: vyncint/mossaic/action@v0.6.0
25+
uses: vyncint/mossaic/action@v0.6.3
2626
with:
2727
text: VYNCINT
2828
year: "2027"
@@ -39,7 +39,7 @@ jobs:
3939
# the failure notification you already get does the reminding.
4040
fail-on: never
4141
# Which mossaic release does the tracking. The default, latest,
42-
# follows crates.io; pin a number ("0.6.0") to freeze it.
42+
# follows crates.io; pin a number ("0.6.3") to freeze it.
4343
# version: latest
4444

4545
# ----------------------------------------------------------------- issue

art/templates/invader.art

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# name: Invader
2+
# author: @vyncint
3+
# description: A space invader, centred on the year
4+
5+
000000000000000000000040000400000000000000000000000
6+
000000000000000000000004444000000000000000000000000
7+
000000000000000000000044044400000000000000000000000
8+
000000000000000000004444444444000000000000000000000
9+
000000000000000000004044444404000000000000000000000
10+
000000000000000000004040000404000000000000000000000
11+
000000000000000000000004004000000000000000000000000

art/templates/pulse.art

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# name: Pulse
2+
# author: @vyncint
3+
# description: A heartbeat trace across the year: a quiet line, a spike every few weeks
4+
5+
000000004400000000000000044000000000000000440000000
6+
000000004400000000000000044000000000000000440000000
7+
000004204404200000000042044042000000000420440420000
8+
222224244424222222222242444242222222222424442422222
9+
000000044420000000000000444200000000000004442000000
10+
000000000420000000000000004200000000000000042000000
11+
000000000000000000000000000000000000000000000000000

art/templates/wave.art

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
# name: Wave
2+
# author: @vyncint
3+
# description: One clean sine wave rolling across the whole year
4+
5+
000000000444444444000000000000000000000000000000000
6+
000004444400000004444400000000000000000000000000000
7+
004444000000000000000444400000000000000000000000000
8+
444000000000000000000000444400000000000000000000044
9+
000000000000000000000000000444400000000000000044440
10+
000000000000000000000000000000444440000000444440000
11+
000000000000000000000000000000000044444444400000000

0 commit comments

Comments
 (0)