Skip to content

v0.2.1 — the onboarding release

Latest

Choose a tag to compare

@justinstimatze justinstimatze released this 23 Jul 04:25
· 99 commits to main since this release

The onboarding release. v0.2.0 shipped a key-free teammate path that could not
actually be reached by a teammate without a key — anyone installing @latest
before this tag gets that build, so this is the version to point a new coworker at.

  • The key-free teammate path actually works now — found by dry-running the tool
    as a new coworker
    (clean GOBIN, a separate HOME per machine, a stand-in
    git remote, nothing from the checkout on PATH). Three defects, all inside the
    first four minutes:

    • ettle mcp required an API key to start, which made the key-free path
      unreachable by exactly the person it was built for. Client-side distillation
      exists so a teammate never needs a key; ettle_emit with atoms and
      ettle_respond make no model call at all. The key is now optional: without
      one the server serves that half and the model-calling tools return
      mcpserver.ErrNoKey, which names the alternative (ettle_distill + atoms)
      rather than reporting a bare missing key.
    • ettle mcp had no --room and kept the horizon in a process-local map,
      so two people on two machines never saw each other's atoms over MCP — the
      distributed path and the key-free path did not intersect anywhere. The
      horizon now rides the same transport.Transport seam the CLI uses
      (ettle mcp --room <name>, or --transport), with a fold-by-participant at
      the read side so a re-emit overwrites on an append-only bus. Default is
      unchanged: in-process, this server only.
    • ettle room join printed the one command guaranteed to fail for a
      keyless joiner (use it: ettle standup --room …). It now branches on whether
      a key is present and leads with what will actually work. ettle room with no
      args gained a real usage block.

    Verified end to end after the fix: a keyless "Bob" drove ettle mcp --room,
    emitted client-distilled atoms into a git-backed room, and the key-holding
    "Alice" reconcile caught the resulting collision (5/5 samples) across the bus.

  • README install path made self-consistent, and the forge metadata refreshed.
    The quickstart now leads with go install …@latest, states the substitution in
    the direction the examples are actually written (ettle for go run ./cmd/ettle, not the reverse), and shows the installed-binary form in the
    ettle room block — the distributed flow needs no bundled testdata/, so that
    is the block a teammate actually copies. claude mcp add is given both ways.
    GitHub description, topics, and homepage updated: the old description predated
    rooms and the key-free path, and homepage was unset.