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:
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.