Skip to content

Homebrew: the cask, the tap, and the release step - #85

Merged
Saffsanity merged 1 commit into
mainfrom
homebrew-install
Oct 15, 2026
Merged

Saffsanity merged 1 commit into
mainfrom
homebrew-install

Conversation

@Saffsanity

@Saffsanity Saffsanity commented Oct 14, 2026 •

Copy link
Copy Markdown
Owner

Sill for Mac now installs with Homebrew, from Sill's own tap, Saffsanity/homebrew-sill (made today, public, its brew test-bot run green):

brew install --cask saffsanity/sill/sill

That command taps the repository and trusts the one cask. Homebrew 6 and later load nothing else from a tap that isn't Homebrew's own until it is trusted: with the tap added by brew tap saffsanity/sill alone, brew install --cask sill stops at "Refusing to load cask saffsanity/sill/sill from untrusted tap saffsanity/sill" until brew trust --cask saffsanity/sill/sill (tried here).

This pull request is the words: the site's download page (a line under the download card), the README's install sentence, docs/release-checklist.md (part 1 §6, the tap and the move to Homebrew's main repository; part 2, bump the cask after each release) and docs/DEVELOPMENT.md (Releasing).

The cask

cask "sill" do
  version "0.5.1"
  sha256 "891d4a104023a2da5ceaf6f0a1573b333ebc1a5091b39ba376eee3f9edc9d63d"

  url "https://github.com/Saffsanity/sill/releases/download/v#{version}/Sill.dmg"
  name "Sill"
  desc "Streams windows to an iPhone or iPad with touch, Pencil and keyboard control"
  homepage "https://getsill.app/"

  livecheck do
    url :url
    strategy :github_latest
  end

  depends_on arch: :arm64
  depends_on macos: :sonoma

  app "Sill.app"

  zap trash: [
    "~/Library/Logs/Sill",
    "~/Library/Preferences/me.saffer.sill.mac.plist",
  ]
end

Homebrew 7.0.8's rules shaped it: desc may not name the platform, so no "Mac" (the Cask/Desc cop); the url stanza's verified: is deprecated and ignored now, so there is none; depends_on macos: ">= :sonoma" is deprecated for the symbol form; GithubLatest is the livecheck the docs give for a cask that downloads a release asset. The minimum and the architecture are the app's own (LSMinimumSystemVersion 14.0, an arm64-only binary), the SHA-256 equals the release's Sill.dmg.sha256, and the zap paths are all Sill leaves outside the keychain (the code, the privacy page, and this Mac's ~/Library). No auto_updates (Sill's update check only opens the release page), no caveats, and no uninstall quit:, which would quit a running Sill on every brew upgrade.

Checked (Homebrew 7.0.8, this Mac)

  • brew style: no offenses. brew audit --cask --online --strict, brew readall --os=all --arch=all and the tap's brew audit: no problems.
  • brew fetch --cask --force: downloaded and verified. brew livecheck --cask saffsanity/sill/sill: sill: 0.5.1 ==> 0.5.1 (GithubLatest).
  • brew install --cask --appdir=<scratch> and brew uninstall --cask, three times: from a local copy of the tap and from the GitHub tap after brew tap and brew trust (both with HOMEBREW_NO_INSTALL_FROM_API=1, as homebrew/cask's template asks), and with the one-line command above, untapped first: each moved Sill.app into the scratch folder (codesign valid, spctl "Notarized Developer ID", gktool scan allowed with the usual first-launch question) and removed it. /Applications/Sill.app and the running Sill (the same inode, times and executable hash, the same process) were never touched, and nothing ran --zap.
  • The tap's workflow: brew test-bot --only-cleanup-before, --only-setup, --only-tap-syntax, and brew audit --cask --online --strict, green on macos-26 (run 38510376937).

Homebrew's main repository: not yet

brew audit --cask --new --online --strict saffsanity/sill/sill fails one rule today:

audit for sill: failed
 - GitHub repository too new (22 days old, 30 days required)

Notability passed (228 stars against 75). In homebrew/cask's own checks two more rules apply: the homepage's domain must be 30 days old (getsill.app, registered 2026-09-25), and a pull request from the repository's owner is a self-submission needing 90 forks, 90 watchers or 225 stars (228 today). So the earliest day is 2026-10-25, while the stars stay at 225 or more. Homebrew's AI rules make that pull request Noah's own: no AI co-author trailer, the tool named in the description, every review comment answered by Noah without AI. docs/release-checklist.md part 1 §6 has the steps and the tap's migration after.

For Noah

  • After merging, republish the site (sill-site), so the download page shows the line.
  • On 2026-10-25 or later, if you want Sill in homebrew/cask: the steps in part 1 §6, as your own pull request.
  • With each release: bump the cask in the tap (part 2).

🤖 Generated with Claude Code

Sill for Mac installs with Homebrew from Sill's own tap, Saffsanity/homebrew-sill:
brew install --cask saffsanity/sill/sill taps it and trusts the one cask (Homebrew 6
and later load nothing else from a tap that isn't Homebrew's own until it is trusted).
The cask installs the release's Sill.dmg by its version and SHA-256, for Apple silicon
and macOS 14 or later.

- site/download.html: a line under the download card with that command, and
  brew upgrade --cask sill to update, after quitting Sill.
- README: the same command beside the download.
- docs/release-checklist.md: part 1 §6, the tap (what it holds, its brew test-bot
  checks, trust) and the move to Homebrew's main repository: the dates and numbers
  it waits for (the repository's 30 days from 2026-10-22, the domain's from
  2026-10-25, a self-submission's 225 stars), Homebrew's rules for AI-assisted pull
  requests, the steps, and the tap's migration after. Part 2: bump the cask once a
  release is published (brew bump-cask-pr --no-fork in the tap; nothing once the
  cask is in homebrew/cask, where BrewTestBot bumps it).
- docs/DEVELOPMENT.md: the tap in Releasing, and how to try the cask on a Mac where
  Sill.app runs (a scratch --appdir, never --zap).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@le0-VV le0-VV mentioned this pull request Oct 15, 2026
@Saffsanity
Saffsanity merged commit c52aa7e into main Oct 15, 2026
Code-Tomato added a commit to Code-Tomato/sill that referenced this pull request Oct 18, 2026
… side

Main brought PRs Saffsanity#74, Saffsanity#75, Saffsanity#77, Saffsanity#78, Saffsanity#79, Saffsanity#80, Saffsanity#85 and Saffsanity#98. 19 files
conflicted; each kept both sides whole.

- Wire: kind 32 (the clipboard) beside 43 (the sound); 29-31 and 33-42
  stay free for Saffsanity#66.
- Settings: shareClipboard beside sendAudio in HostConfig, the app's
  defaults, the CLI (--no-clipboard, --audio) and sillclient.py.
- Larger Picture (Saffsanity#79): row 1 holds Sound before Settings from 384 pt
  (PhonePortraitLayout.row1Beside); narrower, Sound is the panel's switch.
- Saffsanity#75: a regular-mode window that streams on off the catalog's list keeps
  its sound (StreamCoordinator.streamedPID); before, it stopped.
- Docs and check labels that still called 29 the audio plan's, or said 32
  was free, now say what the merged tree does.

Verified: swift build -c release; iOS Debug and Release for the generic
simulator (only the known StreamClient warning); the CLI's CI paths;
Tests/checks/run-all.sh, all 47; the mutants of the 25 checks that compile
a file both sides changed, 936 of 936 caught.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Saffsanity added a commit to kyleparisi/sill that referenced this pull request Oct 19, 2026
Main moved on since this branch began at 985a733, to d1fa97e (Saffsanity#85, Saffsanity#74,
Saffsanity#77, Saffsanity#75, Saffsanity#79, Saffsanity#80, Saffsanity#78, Saffsanity#98, Saffsanity#153 and Saffsanity#142). None of them touched
Sources/SillHost/VirtualDisplay.swift, so the merge is clean and this pull
request's change applies to main as it is now.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Saffsanity added a commit to ipavlidakis/sill that referenced this pull request Oct 19, 2026
Main moved on since this branch began at 985a733, to d1fa97e (Saffsanity#85, Saffsanity#74,
Saffsanity#77, Saffsanity#75, Saffsanity#79, Saffsanity#80, Saffsanity#78, Saffsanity#98, Saffsanity#153 and Saffsanity#142). None of them touched
Scripts/make-app.sh, so the merge is clean and this pull request's change
applies to main as it is now.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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