Skip to content

docs(installing): add Homebrew install step to macOS tab - #2396

Merged
bpamiri merged 1 commit into
developfrom
peter/installing-add-homebrew-step
May 1, 2026
Merged

bpamiri merged 1 commit into
developfrom
peter/installing-add-homebrew-step

Conversation

@bpamiri

@bpamiri bpamiri commented May 1, 2026

Copy link
Copy Markdown
Collaborator

Summary

The macOS install path silently assumed Homebrew was already present. The 2026-04-30 fresh-VM bake report explicitly flagged this gap. This PR adds a precondition Aside to the macOS tab covering brew install, the Xcode CLT trigger, the sudo prompt, and the `brew shellenv` PATH setup.

Source

2026-04-30 fresh-VM tutorial bake. Direct quote from the runner's report:

Guide does not say how to install Homebrew itself. New macOS user without brew would need to go elsewhere. Minor.

The existing top-of-page Aside already says "On macOS: `brew install openjdk@21`" — implicitly requiring brew without ever telling readers how to get it. This Aside fills that gap.

What this enables

The next fresh-VM bake can run the install page verbatim from a truly fresh macOS — no out-of-band Homebrew install needed. The runner-prompt for the bake will be updated separately to point at this page from the very first step.

Test plan

  • Snapshot CI green (visual regression catches Astro layout drift)
  • On a fresh macOS without brew, following the macOS tab top-to-bottom installs brew → openjdk@21 → wheels with no missing-dependency surprises
  • On a macOS with brew already installed, `brew --version` returns immediately and the user proceeds straight to step 1

🤖 Generated with Claude Code

The macOS install path silently assumed Homebrew was already present —
new users on a fresh macOS without brew were forced off-page. The
2026-04-30 fresh-VM bake report flagged this: "Guide does not say how
to install Homebrew itself. New macOS user without brew would need to
go elsewhere."

Adds a precondition Aside at the top of the macOS tab that:
- Detects whether brew is installed (`brew --version`)
- Provides the official installer command if it's missing
- Calls out the three things that surprise first-time installers: the
  sudo password prompt, the Xcode CLT trigger (system dialog, ~5-10
  min), and the post-install `brew shellenv` PATH setup
- Asks the reader to verify with `brew --version` before continuing

Positioned BEFORE the existing Steps so the dependency on brew (which
the existing top-of-page Java 21 Aside also assumes via
`brew install openjdk@21`) is unambiguous in the linear read order.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@bpamiri
bpamiri force-pushed the peter/installing-add-homebrew-step branch from 316d0f5 to 8751c31 Compare May 1, 2026 14:46
@bpamiri
bpamiri merged commit 5944a7d into develop May 1, 2026
10 checks passed
@bpamiri
bpamiri deleted the peter/installing-add-homebrew-step branch May 1, 2026 14:51
bpamiri added a commit that referenced this pull request May 1, 2026
…eadless brew install (#2398)

Three follow-ups from the 2026-05-01 fresh-VM tutorial run that survived the
recent doc sweeps (#2395, #2396).

F8 — chapter 6's "known-working signup smoke test" regex assumed
`name="csrf-token" content="..."` attribute order, but Wheels'
`vendor/wheels/view/miscellaneous.cfc:404` `$tag` helper sorts attributes
alphabetically for deterministic test output, so the actual emit is
`content="..." name="csrf-token"`. The old regex returned an empty TOKEN
and POST silently failed with `Wheels.InvalidAuthenticityToken`. New regex
matches the actual order, plus an explanatory note so future readers know
to check attribute order if the scrape ever returns empty.

F7 — chapter 2 said "feel free to keep the generator's timestamp instead"
of renaming to `20260419120000`. That sounds permissive but is actually a
footgun: chapters 5/6 hardcode timestamps `20260419130000`,
`20260419140000`, `20260419150000` for comments / users / add_user_to_posts.
If the posts migration sorts after them (e.g. May 2026 from a current-day
generator), the dev DB still works because migrations apply incrementally
as files are added — but the test DB in chapter 7 runs them all from
scratch in timestamp order, hits `add_user_to_posts` before `posts` exists,
and bails. Now the rename is mandatory with a callout explaining the
dependency chain.

F1 — the install page only documented the interactive Homebrew installer.
That installer's `sudo -n true` precheck always fails in a non-interactive
context (CI, agents, packer, provisioning scripts), even with
`NONINTERACTIVE=1` set. Added a "Headless / non-interactive installs"
caveat with three concrete options (user-prefix `git clone`, pre-baked
image, Ansible's homebrew module) and a recommendation for the common
agent/CI VM case.

Co-authored-by: Claude Opus 4.7 (1M context) <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