Astrohacker 0.1.37: Opinionated Defaults, Zsh Under the Hood
July 17, 2026 · Ryan X. Charles
On July 17 we field-noted 0.1.17 through 0.1.29: real browser toolbar, shell less leaky, install path less aspirational, and the editor cut out of the cask.
A few releases later the install line is still one cask, still Apple silicon, still The Agentic Hacker’s Terminal. What changed is the blank canvas. Stock Astrohacker Terminal used to open like a fresh Ghostty with product engines bolted on. Now it opens more like a setup someone already lived in for a week—on purpose.
This post is the user-facing field notes from 0.1.29 through 0.1.37.
The short version
- Stock Terminal has opinions — TokyoNight, visible theme-relative split borders, no dimming of inactive panes, JetBrainsMono Nerd Font at 12pt, and a split/tab keybind map baked in.
- Default shell is ahsh — not via “hope Dock has Homebrew on PATH,” but via
absolute paths (
/opt/homebrew/bin/ahsh, then/usr/local/bin/ahsh), with the normal system shell if neither is there. - Session config home — when unset, we inject
XDG_CONFIG_HOME=$HOME/.configso children (including the shell) share a sane layout on macOS. - Traditional mode is zsh — bootstrap and alt mode load the shell macOS users actually configure; nu stays the default interactive mode; Shift+Tab is called out on the banner.
- Ahweb chrome — rounded boxes stay rounded when disabled; disabled is a color change, not a geometry flip.
- Line — 0.1.30 … 0.1.37 on the usual tap.
If you only remember one sentence: upgrade, open from the Dock once, and a stock install should look and behave less like an empty config file.
Stock Terminal defaults
This window was mostly me taking the personal config I actually run and asking: what should every new user get without pasting a gist?
Theme: TokyoNight
Ghostty’s upstream default is “no named theme”—hard-coded colors that are fine
and forgettable. We default the product theme to TokyoNight (exact resource
name, capital T and N). Light and dark both point at that face unless you set
theme yourself.
Splits that read as UI
Inactive panes used to fade. Borders used to be off unless you opted in. That combination is how multi-pane terminals become a guessing game.
Stock defaults now:
- Split border width 2
- Unset focused / unfocused border colors fall back to theme palette[6] / palette[8] (cyan / bright black on TokyoNight)
- Unfocused opacity 1 — no dim overlay; borders mark focus
If you liked the fade, set unfocused-split-opacity below 1. Explicit border
colors and split-border-width = 0 still work.
Type and chords
Font: JetBrainsMono Nerd Font at 12pt (you still need the face installed on the machine).
Keybinds (macOS;
cmd= Super), including:cmd+h/j/k/l— new split left / down / up / rightctrl+h/j/k/l— focus splitctrl+alt+arrows— resizectrl+shift+h/land arrows — tabsctrl+shift+z— zoom split
Last-wins on shared triggers: product defaults replace some upstream defaults
(for example cmd+k is no longer clear-screen). cmd+h can still lose to
macOS Hide—that is the OS, not a promise we can fully keep.
This is not a settings panel. It is baked defaults. Your config still wins when you set the keys.
Shell process: ahsh even from the Dock
Homebrew puts ahsh on PATH for shells you launch from a configured
environment. A .app launched from the Dock does not magically inherit
that PATH.
So we do not default to bare command = ahsh and pray. At finalize we try, in
order:
/opt/homebrew/bin/ahsh/usr/local/bin/ahsh
First path that exists becomes the default command. If neither exists, we fall
through to Ghostty’s normal system shell story (SHELL in CLI contexts, passwd
shell, then a last-resort sh).
We also inject XDG_CONFIG_HOME=$HOME/.config when neither the process env
nor your config already set it—so session children share XDG layout without
hardcoding a username. Pre-set env and explicit env = still win.
Shell: zsh where macOS actually lives
ahsh still defaults to nu for interactive work. What changed under the
hood is the traditional path and the bootstrap path.
macOS users put PATH, brew, nvm, and friends in zsh files—not in a museum
bash 3.2 login. We switched the external worker from bash to zsh: login
plus an explicit path that still picks up .zshrc-class setup so a first
download is not a blank PATH.
Mode cycle is nu ↔ zsh. The startup banner hints Shift+Tab. Docs live under Shell.
If your muscle memory was “I need my zsh env before nu feels useful,” that is closer to automatic now.
Ahweb chrome: one geometry
Browser-in-pane chrome had a small lie: disabled nav buttons could look like a different shape of box than enabled ones. Stock TUI now keeps rounded frames for the chrome that matters (nav, URL, viewport). Disabled is color, not a square-vs-rounded flip. Mode focus still reads through border color, not border type.
Same product surface—less “three widgets from three demos.”
Install line (still boring on purpose)
Still one Homebrew cask, still Apple silicon, still ad-hoc codesign and
brew trust as tap trust—not Apple notarization. Engines are still heavy
on first launch because they are real.
This window also included WebKit packaging work (sandbox exclusion archive) so “release builds WebKit” stays a sentence we can finish. That is reliability, not a new engine brand.
Current line at time of writing: 0.1.37.
brew tap astrohackerlabs/astrohacker
brew trust astrohackerlabs/astrohacker
brew install --cask astrohacker
# or
brew update && brew upgrade --cask astrohacker
Smoke:
ahterm +version
ahsh --version
ahweb --version
Open the app from the Dock once after upgrade. That is the PATH story you
are actually testing—not only a shell where Homebrew is already on PATH.
What we did not ship
Same honesty bar as 0.1.17 / 0.1.29:
- Gecko is not a product engine on the cask.
- Wallet, mobile, web Economy, English shell product, AI marketplace, first-party hosted models — direction or later, not “install and use today.”
- Notarized / Developer ID shipping is still ahead.
- We did not promise your old personal keybinds are unchanged. Some product defaults intentionally override upstream Ghostty chords.
Internal monorepo workspace reorg and agent breadcrumbs shipped in this window. They make the tree easier to build; they are not a user feature.
Who this is for
Unchanged: agentic builders on Apple silicon who live in a terminal and hate Cmd-Tab tax for “open the docs / dashboard / OAuth page.”
If you installed for browsers in panes, upgrade—defaults and shell bootstrap are less of a DIY kit.
If you rely on upstream Ghostty’s stock chords and empty theme, read the defaults section: the product is more opinionated now. Override what you dislike; that is still a config file, not a trap.
What to do
brew update
brew upgrade --cask astrohacker
Cold-launch from the Dock. Confirm TokyoNight, split borders, ahsh, and that tools from your zsh config show up in nu after bootstrap.
If JetBrainsMono Nerd Font is missing, install the face or set font-family.
If ahsh is missing from the cask PATH layout, that is a bug report—the absolute
path search should still hit the Homebrew bin we ship.
Read the docs. Remove personal config lines that only duplicated these defaults if you want a thinner file.
We will keep shipping the same way: focus the Terminal wedge, bake what works, prove it on a real install, cut the rest.