Skip to content

v0.6.3

Latest

Choose a tag to compare

@github-actions github-actions released this 24 Aug 08:03
a992363

Added

  • Three more templates, so the catalogue is a catalogue: wave (one clean
    sine across the year), pulse (a heartbeat trace, a spike every few weeks)
    and invader (a space invader, centred). Each is 51 columns, which keeps
    every lit day clear of the two partial weeks at the ends of a year, and each
    is drawn in {0, 2, 4} — the only three shades no reader has to squint at.

  • Two gates on template art, which matter now that
    #57 invites contributions.
    every_template_reads_clearly measures the closest pair of shades in every
    template and fails anything that is not clear: a picture using 2 and 3
    looks two-toned in the .art 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 checked
    against art planted to break them.

Changed

  • mossaic-art --help is grouped rather than a list of thirty flags. The
    options now sit under what to draw, where it goes, tracking, making
    the commits
    and output, with the usage and seven examples first. The
    colour-theory paragraph that lived inside --background moved to
    docs/ART.md, where there is room to say it properly. Shorter
    overall (93 lines against 113) and no flag was dropped.

  • Counts read as English. Every user-facing count said 1 template(s),
    6 cell(s), 59 day(s) — twenty-nine of them, on the first lines a new
    user reads and in the markdown the GitHub Action posts. They now agree with
    their number, verb included: 1 day is short, 2 days are short.

  • The description says what mossaic is. It never mentioned the terminal.

Fixed

  • The one shipped template no longer warns on every single year. Drawing
    --template dragon printed note: 6 cell(s) fell outside 2027 and were dropped for 2025 through 2029 — and all six were blank margin, so nothing
    was lost. Canvas::place counted every cell that fell outside the year,
    lit or not. It now counts only the cells that would have been drawn, so the
    note appears when a shade is genuinely lost and stays quiet otherwise.

    Found by running the flagship path and reading what it printed.

  • A missing --file in a script names the file, not the terminal. The
    chart claims the terminal before it reads the calendar, so
    mossaic --file typo.json in CI reported needs an interactive terminal
    true, and no help at all in finding the typo. With a terminal the behaviour
    is unchanged: the error is shown in the chart with r to retry, which is
    better than exiting.

  • --font no longer tells its readers to edit src/art.rs. It printed a
    note meant for contributors to everyone who ran it.

  • The two guidance messages line their columns up. could not detect a GitHub user put one of its three suggestions two columns out, and the
    --demo line — the one that needs no account at all — came last. The
    missing-file message tried to align against an interpolated path, which
    cannot be done, and repeated back a path the reader had just typed.

  • brew install vyncint/tap/mossaic. The formula is generated by the
    release itself from the checksums the archives produced, so it cannot
    describe an archive that was never built, and a hand-edit in the tap is
    overwritten by the next release rather than quietly kept.

    Verified by installing it: brew audit --strict is clean, brew test
    passes, and the three binaries plus a copy of the art templates land where
    the formula says.

Fixed

  • A release's archives are never replaced once published. The upload
    clobbered, so re-running the artifact build for an existing tag rebuilt and
    overwrote them — and Rust builds are not bit-for-bit reproducible, so the
    replacements had different checksums. Every checksum anyone had recorded
    became wrong, including the Homebrew formula's and including one somebody
    had written down to verify a download with.

    Found by re-running the workflow: the formula job reported "tap updated"
    where nothing should have changed, and the diff was four checksums.

    A re-run now fills in what is missing and leaves what is there alone, which
    is the case the workflow was built for. Replacing a genuinely corrupt asset
    means deleting it first, and that friction is deliberate.

  • The Intel-Mac binary is cross-compiled from Apple silicon rather than
    built on a macos-13 runner. Xcode's toolchain and SDK are universal, so an
    arm64 Mac produces an x86-64 binary with nothing but rustup target add
    no sysroot, no linker configuration.

    The Intel runners are being wound down and it shows: on the v0.6.2 release
    this leg sat queued for forty-five minutes while every other target finished
    inside ninety seconds. A target nobody can schedule is a target that
    silently stops shipping.

    The job now asks file what it actually built, and fails if the answer is
    not the architecture the target names — a cross-build that quietly produced
    the host's architecture would pass every other check here and fail on the
    first machine that downloaded it.

  • The README briefly promised Homebrew before the tap existed, and said
    so for an hour or two until it did. An install command that does not work
    is worse than one that is not offered; every route the README lists is now
    one that has been run.

  • The Windows binary is built. The 0.6.2 release shipped Linux and macOS
    archives and no .zip: the build step had no shell: bash, and Windows
    runners default to PowerShell, where "$TARGET" expands to the empty string
    and cargo build --target is handed nothing. Every step is bash now.

  • Building the artifacts is re-runnable, in binaries.yml rather than
    inside release.yml. Publishing to crates.io happens once and cannot be
    repeated; building an archive can fail for reasons that have nothing to do
    with the release, and when it does the fix must not be "cut another
    version". It fires on a published release, and by hand for any tag whose
    artifacts need rebuilding.