Skip to content

v0.1.0 — Dev Container panes for Herdr

Choose a tag to compare

@gambtho gambtho released this 12 Aug 01:35
· 15 commits to main since this release

Superseded by v0.1.1. Two defects in this release's exec path were found on first real use, so install v0.1.1 instead.

Two claims below are no longer accurate for the current plugin:

  • "Opens an interactive login shell (sh -l)" — panes now run the container user's own shell, interactively, because sh -l sources no rc file and so missed the PATH entries and API endpoints a container writes for itself.
  • "Maps a pane's current directory into remoteWorkspaceFolder when available" — in this release it never was available. The directory was read from the wrapper's own process, which Herdr runs from the plugin root, so every pane opened at the container workspace root and printed an out-of-repo notice.

The rest of this text describes v0.1.0 as shipped and is left unchanged.


First public release of a Herdr plugin for opening shell and coding-agent panes
inside a repository's existing Dev Container.

Highlights

  • Opens an interactive login shell (sh -l) inside the container.
  • Runs a configurable command inside the container; defaults to claude.
  • Uses the official Dev Containers CLI and the repository's own
    devcontainer.json — no second container format, and no editor required.
  • Detects both .devcontainer/devcontainer.json and .devcontainer.json, plus
    an alternate repo-relative config path.
  • Uses the main Git worktree as repository and container identity, so linked
    worktrees share one container instead of colliding on ports.
  • Refuses to guess when multiple running containers claim the same repository.
  • Serializes concurrent bring-up with a per-repository file lock.
  • Maps a pane's current directory into remoteWorkspaceFolder when available,
    and says so plainly when it cannot.
  • Explicit, confirmed stop — only y or yes proceeds, and the plugin never
    runs docker rm.
  • Runs host subprocesses as direct argv arrays and reports actionable errors.

Requirements

  • Herdr 0.8.0+
  • Linux or WSL2
  • Git
  • Docker with a reachable daemon
  • Dev Containers CLI (npm install -g @devcontainers/cli)
  • Rust 1.74+ and Cargo, for the install-time build

The committed Cargo.lock is resolved against Rust 1.74 rather than against the
newest published dependencies, and CI verifies that minimum on every change, so
the declared toolchain requirement is the one that actually compiles.

Install this release

herdr plugin install gambtho/herdr-devcontainer --ref v0.1.0

Installing from GitHub builds the plugin from source via the manifest's
cargo build --release hook.

Known limitations

  • macOS and native Windows are not supported.
  • GitHub installation builds from source and requires a Rust toolchain.
  • Linked worktrees share the main repository's container; a checkout outside the
    main repository directory is not separately mounted, and panes opened there
    start at the container workspace root.
  • The plugin uses its own XDG configuration path rather than Herdr's managed
    plugin config directory.
  • Nothing in the repository parses herdr-plugin.toml, so manifest validity is
    established by installing into a real Herdr, not by the Rust test suite.

Trust

Installing a Herdr plugin runs its build and runtime commands as your user, and
devcontainer up executes repository-controlled Dockerfile and lifecycle code.
This plugin inherits the Dev Containers trust model and is not a security
boundary. Review herdr-plugin.toml and the source before installing.