Releases: dcadolph/railwarden
Release list
v1.9.2: golangci-lint v2 config
Full Changelog: v1.9.1...v1.9.2
v1.9.1: RW wordmark
Full Changelog: v1.9.0...v1.9.1
v1.9.0: Rename to Railwarden
Full Changelog: v1.8.2...v1.9.0
v1.8.2
Documentation and landing-page release on top of the drop-in plugin runtime.
- New Advisory AI guide at yardmaster.dev/docs/ai and in the app at /ui/docs/ai: the five features, the governance guarantees, provider setup for Ollama, Anthropic, and OpenAI-compatible endpoints, and an honest account of what a cloud model sees.
- Three new FAQ entries: whether data reaches an AI model, whether the AI can change infrastructure, and how to extend Yardmaster. The run-tools answer now names all seven tools plus SDK tools, and the single sign-on answer names SAML and LDAP beside OpenID Connect.
- API docs fix: the draft endpoint accepts powershell alongside bash, python, and go.
- Landing page: the extensibility section now leads with the seven built-in tools before the Go SDK pitch, so it is clear the SDK adds tools, AI providers, secret backends, and notification channels without replacing anything.
v1.8.1
Plugged-in tools now appear across the UI, and the docs and site name everything the product does.
- Every tool dropdown, on the runs page, job templates, approval policies, and the workflow editor, now lists registered plugin tools beside the seven built-ins. Drop a tool plugin into --plugins-dir and it is one click away everywhere a tool is chosen.
- The features list documents the Go SDK and drop-in plugins.
- The workflow editor copy names all seven tools instead of four, on the site and in the guided tour.
- The AI wording is sharper and concrete: bring your own model, local Ollama, Claude, or any OpenAI-compatible API.
v1.8.0
Extensions now run as drop-in plugin binaries. Build one against the SDK, drop it in a directory, and point a stock Yardmaster at it with --plugins-dir or YARDMASTER_PLUGINS_DIR. No recompile of the server.
- New package github.com/dcadolph/yardmaster/sdk/plugin: fill an Extension with the same interfaces the in-process SDK registers and call plugin.Serve from main. One plugin serves any mix of tools, notifiers, AI providers, and secret engines.
- The server launches each executable in the plugins directory at startup, asks what it provides, and registers every seam. A plugged-in extension validates, executes, masks, and audits exactly like a compiled-in one.
- Plugins speak gRPC over a local socket with mutual TLS, supervised by the server. Tool output streams into the run log as it happens, and dynamic secret leases revoke through the plugin that minted them.
- The worker command takes the same flag, so plugged-in tools run wherever runs execute.
- A plugin that fails to launch is logged and skipped. A name collision with a built-in or another plugin stops startup with a clear message.
- The Extend in Go guide covers both paths, compile in or plug in, at yardmaster.dev/docs/sdk.
v1.7.1
The Go SDK now ships with its guide and an end-to-end proof.
- New docs page, Extend Yardmaster in Go: the four extension seams, the registry rules, and a complete worked extension from go.mod to a served run, verified against the published v1.7.0 module. It renders in the app at /ui/docs/sdk and on the site at yardmaster.dev/docs/sdk.
- New end-to-end test drives an SDK-registered tool through the full server stack: submitted over HTTP, executed by the dispatcher, exit code and log read back through the API.
- The in-app docs sidebar now orders the OpenTofu, PowerShell, and reliability pages deliberately instead of appending them at the end.
v1.7.0
Yardmaster now ships a public Go SDK for extensions. Import github.com/dcadolph/yardmaster/sdk and register from an init function or from main before the server starts.
- Execution tools: RegisterTool adds a tool name and its runner in one call, so a registered tool submits and executes like a built-in.
- AI providers: RegisterAIProvider adds a model backend beside the built-in ollama, anthropic, and openai providers.
- Notification channels: RegisterNotifier delivers terminal runs to a new channel, with extra vars redacted before delivery.
- Secret engines: RegisterSecretSource adds a static engine. RegisterDynamicSecretSource adds a dynamic engine that mints short-lived credentials with revocable leases.
An extension builds against the sdk package alone and compiles into the server binary. Registries are startup-only and panic on duplicate or reserved names, so a bad registration surfaces at boot instead of on first use.