<feed xmlns='http://www.w3.org/2005/Atom'>
<title>slosh.git/Makefile.macos, branch docs-new</title>
<subtitle>an opinionated terminal multiplexer in C with programmable pane chrome</subtitle>
<id>https://git.sl0p.foo/slosh.git/atom/Makefile.macos?h=docs-new</id>
<link rel='self' href='https://git.sl0p.foo/slosh.git/atom/Makefile.macos?h=docs-new'/>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/'/>
<updated>2026-08-27T14:43:20Z</updated>
<entry>
<title>macos zip: carry the same paperwork as the linux tarballs</title>
<updated>2026-08-27T14:43:20Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-27T14:43:20Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=fb62cf8181b6ba397eee7b167ce6ad8128a95a27'/>
<id>urn:sha1:fb62cf8181b6ba397eee7b167ce6ad8128a95a27</id>
<content type='text'>
The zip held a bare binary while the tarballs ship README, LICENSE,
THIRD-PARTY-LICENSES and both manpages. The licenses are not decoration
on either platform -- libghostty-vt and stb_image are statically linked
into the mac binary too, and THIRD-PARTY-LICENSES exists precisely for
redistributed builds -- and a manpage is as useful on macOS as anywhere.

The archive now stages slosh-VERSION-macos-ARCH/ with the binary and
the same doc set, mirroring the tarballs' layout. The list is read out
of the main Makefile's REL_DOCS rather than copied here, so the two
artifacts cannot drift; both Makefiles travel to the builder together.
Notarization is unchanged: the ticket is keyed to the binary, and inert
documents beside it are nothing to Apple's scan.
</content>
</entry>
<entry>
<title>release: one 'make release' for the three target binaries</title>
<updated>2026-08-26T23:28:45Z</updated>
<author>
<name>user</name>
<email>user@clank</email>
</author>
<published>2026-08-26T23:28:45Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=5ba81343523e7b56a1514f2fc98f47973299b8f4'/>
<id>urn:sha1:5ba81343523e7b56a1514f2fc98f47973299b8f4</id>
<content type='text'>
Streamline the release into a single target that stages all three binaries
in dist/ with a SHA256SUMS:

  linux x86_64  }  cross-built here with 'zig cc -target ... -s', static musl
  linux aarch64 }  (runs on any distro), packaged as a .tar.gz with the binary
                   + README + LICENSE + THIRD-PARTY-LICENSES
  macos arm64      handed to 'macos-dist', which signs/notarizes on the builder

zig is already the compiler, so the two linux cross-builds need no extra
toolchain -- just the vendored libghostty-vt rebuilt per -Dtarget. Verified
both: static, stripped (~2MB), and both run (aarch64 under qemu-user).

Factor the version ladder out of the Makefile into contrib/version, and call
it from both Makefile and Makefile.macos, so the linux tarballs, the signed
zip and the binary's own --version are all named from the same tag instead
of Makefile.macos using its own 'git describe --always' scheme (which would
have named the mac artifact after a bare commit hash while linux used the
tag).

  make release-linux            # just the two linux tarballs
  make release REF=&lt;tag&gt;        # all three + SHA256SUMS
</content>
</entry>
<entry>
<title>macos: the pipeline is the project's, the identity is yours</title>
<updated>2026-08-26T22:08:52Z</updated>
<author>
<name>Peter Geissler</name>
<email>peter@haxx.in</email>
</author>
<published>2026-08-26T22:08:52Z</published>
<link rel='alternate' type='text/html' href='https://git.sl0p.foo/slosh.git/commit/?id=aa2ec9b65dbee07886556b0d8ae353cb462964b9'/>
<id>urn:sha1:aa2ec9b65dbee07886556b0d8ae353cb462964b9</id>
<content type='text'>
Makefile.macos was kept out of git because it named a team, a person and
a mac. But almost all of it is mechanism -- build, sign, zip, notarize,
staple, unlock a headless keychain -- and that is the project's, not the
releaser's. Keeping the whole file out to protect four values meant the
one machine that had it was the only place a release could be cut from,
and that nobody could read how signing worked without being handed it.

So the split is inverted. Makefile.macos, the builder doc and the scripts
are tracked; macos-release.mk holds TEAM_ID, SIGNER and BUILDER and is
the only thing gitignored. macos-release.mk.example is the template.

The identity strings are now assembled from SIGNER and TEAM_ID rather
than written out, which means an unconfigured checkout composes
"Developer ID Application:  ()" -- plausible, wrong, and diagnosed only
by codesign a minute into a build. require-identity and require-builder
catch it before anything runs and name the file to create; `help` prints
"(unset)" rather than the empty shape.

macos-remote-build now pushes macos-release.mk instead of Makefile.macos.
That is the better arrangement anyway: the builder gets its pipeline from
git at the commit being released, so a release is signed by the flow
belonging to it and not by whatever the laptop was carrying.

MACOS-BUILDER.md was in the same position -- local, and referenced by a
file that is now tracked -- so it becomes docs/macos-release.md with the
certificate name and notary key id replaced by their shapes.
</content>
</entry>
</feed>
