Astrohacker 0.1.47: Rounded Panes, Real Gaps, Welcome to the Internet

July 18, 2026 · Ryan X. Charles

On July 17 we field-noted 0.1.29 through 0.1.37: stock Terminal defaults (TokyoNight, borders, font, keybinds, ahsh, XDG), zsh under ahsh for traditional mode, and quieter ahweb chrome.

A day later the install line is still one cask, still Apple silicon, still The Agentic Hacker’s Terminal. What changed is how the window reads when you split it—and what you see when the product opens its front door on the web.

This post is the user-facing field notes from 0.1.37 through 0.1.47.

The short version

  • Multi-pane looks like a product — every split pane gets rounded borders on all four corners, not square strokes under a rounded window.
  • Real air between panessplit-pane-gap (default 4) is empty margin, not a thicker black paint bar. The 1 pt drag hairline matches theme background when you leave split-divider-color alone.
  • Load chrome fits the pane — the surface progress bar stays inside the rounded content box and picks colors from the theme palette.
  • ahapp is out — no TermSurf “app host” PoC in the Terminal package story. Terminal + shell + web engines. Full stop.
  • Fork tips moved — Chromium, WebKit, Ladybird, Ghostty, and the shell stack (including Nushell 0.114) got release-gated updates through the line.
  • Welcome to the Internet — default host splash at astrohacker.com/welcome; the marketing site went dark-only with GlyphRain and glass cards.
  • Line0.1.38 … 0.1.47 on the usual tap.

If you only remember one sentence: upgrade, split a few panes, and the window should finally look like one UI—not a grid of sharp rectangles with a black trench between them.

Multi-pane that reads as cards

0.1.37 already turned split borders on by default and stopped dimming inactive panes. That was necessary. It was not enough.

On modern macOS the window itself is rounded. Our borders were still drawn as square strokes. Outer corners clipped wrong. Internal T-junctions looked like office cubicles, not panes in a serious host.

We fixed the geometry: all four corners of every split pane use a continuous radius—window-matched when split-border-corner-radius = auto, square when you set 0, or a fixed point size when you set a number. Content and unfocused overlays clip concentric with the stroke so pixels do not square-fill past the border band.

Gap is air, not paint

With borders on, the next failure mode was the seam. A one-pixel dark divider is easy to ignore. Making it “thicker” by painting a wider split-divider-color rectangle is how you get a black trench that sits on top of the borders—we tried that path, rejected it, and shipped the other model.

split-pane-gap (default 4, clamp 020) reserves empty layout space between pane frames. The painted divider stays a 1 pt hairline for drag. When split-divider-color is unset, that hairline uses the theme background—not a darkened near-black—so the seam blends and the full rounded border stays visible.

Want the old tight hairline-only layout? Set split-pane-gap = 0. Want a visible accent seam? Set split-divider-color explicitly.

Progress bar in the pane

OSC / load progress on a surface used to ignore the rounded clip and use system accent colors. It now lives in the inset content box with the same inner radius math as the terminal surface, and it reads palette indices that track the theme (cyan / red / yellow family with sane fallbacks).

Small thing. Multi-engine windows make it obvious when chrome is wrong.

Leaner package

Earlier posts already cut the editor out of the cask. This line cut the ahapp TermSurf app-host PoC out of the product build and release story. You still get:

  • Astrohacker Terminal (ahterm)
  • ahsh
  • ahweb and the engine helpers

You do not get a second half-product pretending to be part of the same install. If it is not Terminal, Shell, or Web in this window, it is not in this cask.

Build scripts now treat ahterm as the primary component name (aht still aliases for muscle memory). That is hygiene, not a feature—but naming is part of not lying to yourself about what you ship.

Fork tips as product quality

0.1.38–0.1.47 is not only chrome. We ran release-gated updates on the engines and host:

  • Chromium, WebKit, Ladybird tips pinned and rebuilt for ship
  • Ghostty tip advanced on the product branch series
  • Shell stack moved with Nushell 0.114 and exit-code fixes so ahsh stays honest under the new port

Users do not install “a pin.” They install a cask that either builds engines cleanly or wastes a weekend. This line was a lot of the second kind of work so you do not have to do it.

Welcome to the Internet

The Terminal’s default homepage is no longer a generic TermSurf welcome. It opens astrohacker.com/welcome: full-bleed splash, dark only, Welcome to / The Internet, tagline Advanced Communications Network for Planet Earth, slogan Hack the Universe, CTA into docs.

The rest of the marketing site caught up: dark-only Tokyo Night, shared GlyphRain, glass cards so rain shows through, wider shell for heroes, prose measure for reading, unified ASTROHACKER wordmark. We fixed a stupid SPA bug where /welcome flashed 404 on refresh because the route was not prerendered and the hydrate shell was literally the 404 page. That should never have shipped; it is gone.

This is not “we redesigned for brand guidelines.” It is: when an agent or a human lands in the product window, the first page should feel like the same company that put real browsers next to the shell.

How to get it

Still one story:

brew tap astrohackerlabs/astrohacker
brew trust astrohackerlabs/astrohacker
brew install --cask astrohacker

Or upgrade if you already have it. App lands in Astrohacker Terminal.app. Public CLIs: ahterm, ahsh, ahweb (plus engine helpers). Apple silicon only. No editor SKU. No second cask.

Line covered here: 0.1.38 through 0.1.47.

Closing

We spent this stretch making multi-pane feel intentional—rounded cards, real gaps, theme-native load chrome—and making the front door match the product instead of a leftover PoC domain. The engines and shell underneath moved too, because a pretty border on a stale fork is still a stale fork.

Split a window. Open a couple of engines. If it still looks like duct tape, tell us. If it finally looks like one terminal that happens to run the web, that was the point.

← Back to blog