Skip to content

release: v0.6.3 — the things a new user hits first - #71

Merged
vyncint merged 1 commit into
mainfrom
ux/0.6.3
Aug 24, 2026
Merged

release: v0.6.3 — the things a new user hits first#71
vyncint merged 1 commit into
mainfrom
ux/0.6.3

Conversation

@vyncint

@vyncint vyncint commented Aug 24, 2026

Copy link
Copy Markdown
Owner

What & why

A review of mossaic from the outside — install, run, read what it prints — and
the fixes for what that found. Everything here is on a path somebody meets in
the first minute of using it.

The one shipped template warned on every year

$ mossaic-art --template dragon --year 2027
note: 6 cell(s) fell outside 2027 and were dropped — the first and last
      calendar columns are partial weeks

2025 through 2029, every one. And all six cells were blank margin
dragon.art is 0 at both ends of all seven rows, so nothing was lost.
Canvas::place counted every cell that fell outside the year rather than every
cell that would have been drawn. It now counts only lit ones, so the note
appears when a shade is genuinely lost and stays quiet otherwise.

Counts did not read as English

Twenty-nine of them — 1 template(s), 6 cell(s), 59 day(s) — on the first
line of --list-templates and in 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 —
widths, thousands separators — stays at the call site where it belongs.

--help was thirty flags in a flat list

With a paragraph of colour theory inside --background. Now grouped: what to
draw
, where it goes, tracking, making the commits, output — usage and
seven examples first. The colour theory moved to docs/ART.md, which already
had room to say it properly. 93 lines against 113, and no flag was dropped.

A missing --file in a script blamed the terminal

$ mossaic --file typo.json          # in CI
mossaic: needs an interactive terminal (No such device or address)

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. My first attempt pre-checked the path and broke that; the existing PTY
test caught it, and the fix now sits at the point where the terminal is refused.

--font told its readers to edit src/art.rs

A note meant for contributors, printed to everyone who ran it.

And the catalogue is now a catalogue

--template NAME offered exactly one NAME. Three more ship: wave (one clean
sine across the year), pulse (a heartbeat trace) and invader. Each is 51
columns, so no lit day lands in a partial week, and each is drawn in {0, 2, 4}
— the only three of GitHub's greens that are all clearly distinct.

Two gates come with them, which 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 obviously two-toned in the .art file,
    because the digits differ — and reads as one flat colour on github.com. Only
    measuring catches it.
  • 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:

zz-faint: its closest pair is 2 and 3 at ΔE 11, which is not something
          a reader can rely on seeing
zz-faint loses 6 shades off 2026

Also

  • The description never mentioned that mossaic is a terminal program, which is
    how it is found on crates.io. tui replaces contributions in the keywords —
    contribution-art already covers that ground.
  • The action@v0.6.0 refs in docs/ and action/ had been stale for two
    releases. RELEASING.md §2b exists to catch this; it was not run.

Verification

  • 213 tests, cargo fmt --check, clippy --all-targets --all-features -D warnings and RUSTDOCFLAGS=-D warnings cargo doc all clean.
  • Every template drawn across 2026–2029: no warnings, none overhanging.
  • Three new tests in tests/chart_cli.rs for the chart with no terminal —
    including the one that would have failed before this change.
  • The --list-templates PTY test now reads full_text(): the catalogue
    outgrew one screenful, and "did this reach the terminal" is the question it
    was actually asking.

Checklist

  • Tests added/updated for the change
  • cargo fmt --all and cargo clippy --workspace --all-targets --all-features are clean
  • All commits are signed off
  • No AI attribution trailers
  • CHANGELOG.md updated — released as [0.6.3]
  • No snapshot changes

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>
@vyncint
vyncint merged commit 40caf58 into main Aug 24, 2026
11 checks passed
@vyncint
vyncint deleted the ux/0.6.3 branch August 24, 2026 07:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant