Repository navigation
Releases: bpmct/coder-logstream-incus
Releases · bpmct/coder-logstream-incus
Release list
v0.1.3
Added
CHANGELOG.mdwith release history for all prior versions.AGENTS.mddocumenting non-obvious implementation decisions for future contributors and AI agents.- Release workflow now extracts the matching
CHANGELOG.mdsection as the release body instead of auto-generating notes.
v0.1.2
What's Changed
Added
- GitHub Actions release workflow (
.github/workflows/release.yml) — triggers onv*tags, buildslinux/amd64andlinux/arm64binaries, and publishes them viasoftprops/action-gh-release install.shone-liner installer — detects arch, downloads the latest binary from GitHub Releases, writes a systemd unit, and callssystemctl enable --now- README: installation section with one-liner, options table, and CI badge
Fixed
- Re-stream instances when the agent token changes on workspace restart. The
donemap was previously keyed by instance name alone, so a restarted workspace (same VM name, new token) would not be re-streamed. It is now keyed byname → token, so streaming only skips if the exact token already completed.
v0.1.1
What's Changed
Fixed
streamInstanceno longer returns early on connect errors. It now retries the Coder agent API connection every 10 seconds until the context is cancelled. This handles the case where the workspace token is not yet authorized when the VM first appears.- Log source registration errors are now non-fatal (logs continue to stream without custom source metadata).
- Console log fetch errors for VMs are now logged at
Debuginstead ofWarn— the console buffer API is only supported for containers, not VMs. sendLinenow accepts aLogLevelparameter so future log lines can be sent atWarn/Errorwhen appropriate.tailCloudInitandstreamInstancenow return a boolean indicating whether cloud-init completed normally, enabling thedonemap to correctly skip re-streaming only on clean completion.- Graceful flush uses
ls.WaitUntilEmptyinstead ofsl.Flushto drain the log queue before closing the connection.
Changed
- Upgraded to
ConnectRPC28WithRole("logstream-incus")on Coder ≥ v2.31.0 to avoid triggering false agent connectivity state changes. Falls back toConnectRPC20on older servers. - Added
golang.org/x/mod/semverfor version comparison. - Completion message changed from
"cloud-init: finished (result.json present)"to"cloud-init: finished ✓".
v0.1.0
What's Changed
Added
- Initial implementation of
coder-logstream-incus. - Polls the Incus API every 5 seconds for instances with
user.coder-agent-tokenset. - Per-instance goroutine that:
- Dumps the console log buffer (containers only).
- Tails
/var/log/cloud-init-output.logvia the Incus file API every 2 seconds. - Stops when
/run/cloud-init/result.jsonexists or the instance is removed.
- CLI entrypoint via
serpentwith--coder-url,--socket,--project, and--poll-intervalflags. - Stable log source UUID (
a3bb5c89-7f3c-4f58-b6d3-a3c5e7b1f0d2) for the Coder workspace log UI.