We'll see where it goes, but Sh:erpa is evolving

v0.6.0 is out, and the foundation stopped moving long enough to be checked.

v0.6.0 went out today. It's the least spectacular release so far, and that's exactly what I was aiming for.

For most of 0.5.x I was adding. A command for updating libraries, another flag on uninstall, dashboard sections, docs generation. Each one made sense on its own. Together they made a toolbox that kept getting wider while the bench underneath stayed the same width. Building meant rebuilding the copy on my PATH, which works right up until the day you forget which copy is talking. And if you typo'd a command, nothing happened. No error, no help, just the prompt back. The script sat there like a dog pretending not to hear you.

What 0.6.0 actually did

Three things, and none of them are features.

One router. Every command is a cmd_* function now, and src/router.sh holds the only command table. src/main.sh is the only entry point. A typo is an error instead of a silent no-op, two files can't shadow each other's command, and the help screen can't drift away from what the router will actually run.

Paths you can override. SHERPA_DOT_DIR, SHERPA_CUSTOM_DIR and SHERPA_EDITOR mean a dev tree or a sandbox never touches the real install. Make.sh is self-locating, so a copy of the repo builds its own binary, from wherever it sits:

SHERPA_DOT_DIR=/tmp/sherpa-dev SHERPA_CUSTOM_DIR=/tmp/custom \
  PATH=/tmp/sherpa-dev/bin:$PATH sherpa help

Build and run share one implementation, and run executes the fresh build instead of last week's.

The manifest is a contract. sherpa: 1, plus a package: block and an interface: block. interface.when is the one that matters: a line or two saying when to reach for this box, which is what lets an agent pick a tool without reading its source. interface.examples are executed by sherpa test rather than admired. sherpa list --json prints the whole inventory, so it's machine-readable instead of a paragraph in a README.

The quieter things matter too. Minification is opt-in now. It used to be the default, and it was eating # inside heredocs and strings and flattening indentation that sometimes meant something. A readable build is a feature. Portable sed_inplace, [[:space:]], no find -printf. The dashboard checks for updates once a day and caches the answer instead of hitting the network every time you open it.

The bar

A stranger installs Sh:erpa, runs sherpa new, edits, builds, and has a working command on PATH in under five minutes, on Linux or macOS. That's the success condition I wrote down, and it's a test, not a slogan. Everything above exists to make that true on a machine I've never seen.

What I'm not doing

The registry, remote install as a catalogue, import (curl | source), compiling by default, watch mode. All deferred. Not rejected forever, just deferred until the core is finished and there are people using it. I wrote this in the design notes and I keep coming back to it: building a marketplace with zero users is the most expensive way to learn that nobody wanted it.

So "we'll see where it goes" isn't a roadmap. It's me refusing to draw one for things that don't exist yet. What I can promise is the boring part: the foundation stopped moving long enough to be checked, and it held.

Try it

Install it, run sherpa new, build something small, and tell me what breaks. That's the most useful thing anyone can do with this release. Discord's open.