This tap distributes the public macOS binaries for Gloss.
The default lightweight cask does not bundle Codex:
brew tap sunchj/tap
brew install --cask glossThe fully qualified one-command form is:
brew install --cask sunchj/tap/glossTo install the larger variant with a bundled Codex app-server runtime, use:
brew install --cask sunchj/tap/gloss-with-codexThe two casks conflict and cannot be installed together.
The cask also links the bundled gloss-cli into Homebrew's bin directory.
Gloss 0.8.3 and later can expose the enabled App/CLI scenario mapping with:
gloss-cli capabilities --jsonGloss 0.8.3 and later Homebrew builds are ad-hoc signed, so their
browser-translation scenario exposes Chrome support only. Their capability
report includes chromeExtension and does not advertise safariExtension, and
the cask does not contain a Safari .appex for PlugInKit to register. Safari
App Extension pairing is available only from a build signed with an Apple
development or distribution identity.
Upgrade the selected variant with:
brew update
brew upgrade --cask gloss # or gloss-with-codexGloss requires macOS 14 Sonoma or later. The cask is intentionally absent until
the first complete, validated v0.8.0 release is available in
SunChJ/gloss-releases.
The Update Gloss cask workflow accepts a public release tag, downloads the
standard and bundled-Codex archives for Apple silicon and Intel plus their
published metadata, and verifies:
- all four archive SHA-256 values against
SHA256SUMS; - GitHub release immutability and the release attestation;
- the detached Ed25519 signature over the exact release manifest bytes;
- the cask version and architecture-specific checksums;
- the signed manifest binds the exact
gloss.rbbytes, not only App archives; - both cask URLs exactly match anonymous public assets for that release;
- the proposed version is newer than
main(or byte-identical for an idempotent retry); - both casks declare the expected token, archive URLs, checksums, and mutual conflict;
- the fixed postflight steps re-sign
Gloss.appad-hoc, remove quarantine, and verify the resulting signature withoutsudo; - the cask is valid Ruby syntax.
After validation, the workflow updates an automation/gloss-* branch and opens
or refreshes a pull request. It creates a Cask validation GitHub Actions check
run on the exact pushed commit. main requires that check, an up-to-date branch,
and both architecture install checks. Once those checks pass, GitHub auto-merges
the pull request without a human approval. The workflow never writes a new cask
directly to main.
Each cask pull request also performs real installs of both variants on Apple silicon and Intel GitHub-hosted runners from the checked-out tap. After merge, the same smoke test uses each public cask command. The jobs verify the installed architecture, expected Codex helper presence or absence, linked CLI capability report, ad-hoc signature, quarantine state, and launch, then uninstall Gloss. Until a cask exists, its install steps safely skip.
The workflow uses the repository's short-lived GITHUB_TOKEN. Before opening
the cask pull request it explicitly dispatches the trusted install-smoke workflow
on the exact candidate commit and waits for both architectures to pass. This
avoids a long-lived personal access token while still supplying every required
check for auto-merge. Repository settings must allow Actions to create pull
requests and use auto-merge.
Release checksums protect download integrity. During installation, this custom
cask re-signs Gloss.app locally with an ad-hoc identity, removes
com.apple.quarantine, and verifies the local signature. Gloss is not
Apple-notarized, and these steps do not provide an Apple Developer ID identity
or Apple approval. See the
binary release policy
before installing.