Releases: zorak1103/rootcanal
Releases · zorak1103/rootcanal
Release list
v2.6.0
Changelog
- 73a3f61 chore(deps): update dependency goreleaser/goreleaser to v2.18.1 (#45)
- 46388d7 chore(deps): update renovatebot/github-action action to v46.2.5 (#39)
- e28e22d chore(deps): update trufflesecurity/trufflehog action to v3.97.4 (#40)
- b461fe4 fix: migrate MCP logging to stderr (#48)
- e7eb754 refactor(session): adopt defer-based unlocking in Send (#46)
- d94bdc9 test(hostkeys): cover unresolvable hostport fallback in known_hosts rewrite logic (#44)
- 2eb9af2 test(jobs): pin Reap TTL boundary with synctest (#47)
v2.5.0
Changelog
- 4deeeb1 chore(deps): update dependency goreleaser/goreleaser to v2.18.0 (#32)
- f8f8650 chore(deps): update module github.com/golangci/golangci-lint/v2 to v2.13.1 (#28)
- 0029c96 chore(deps): update module github.com/golangci/golangci-lint/v2 to v2.13.2 (#34)
- 3a7c200 chore(deps): update module golang.org/x/vuln to v1.7.0 (#25)
- 52c19c5 chore(deps): update module honnef.co/go/tools to v0.8.0 (#29)
- 740df41 chore(deps): update module honnef.co/go/tools to v0.8.1 (#30)
- 26fea6f chore(deps): update renovatebot/github-action action to v46.2.4 (#31)
- c9aae6e chore(deps): update trufflesecurity/trufflehog action to v3.97.0 (#26)
- 713fe75 chore(deps): update trufflesecurity/trufflehog action to v3.97.1 (#33)
- b005791 fix: bump golang.org/x/crypto to v0.56.0 (#37)
- 0196d42 fix: defer hostpool close in main to guard against panics (#27)
- e2c2b99 test: close mutest coverage gaps and fix bugs it surfaced (#38)
v2.4.2
What's Changed
- chore(deps): update renovatebot/github-action action to v46.2.1 by @zorak1103 in #21
- chore(deps): update renovatebot/github-action action to v46.2.2 by @zorak1103 in #23
- fix(deps): update module github.com/testcontainers/testcontainers-go to v0.44.0 by @zorak1103 in #22
- fix(deps): update module golang.org/x/crypto to v0.55.0 by @zorak1103 in #24
Full Changelog: v2.4.1...v2.4.2
v2.4.1
Changelog
- b2f4d56 chore(deps): update dependency goreleaser/goreleaser to v2.17.1 (#16)
- cfd0209 chore(deps): update renovatebot/github-action action to v46.1.20 (#14)
- eda3233 chore(deps): update renovatebot/github-action action to v46.1.21 (#17)
- 8955bbe chore(deps): update renovatebot/github-action action to v46.2.0 (#19)
- 1b479c2 chore(deps): update trufflesecurity/trufflehog action to v3.96.0 (#15)
- 0ea186f fix(deps): update module github.com/modelcontextprotocol/go-sdk to v1.7.0 (#18)
v2.4.0
Changelog
- c18e49d Fix/review findings (#13)
- 1884627 chore(deps): update actions/setup-go action to v7 (#12)
- ca98a6d chore(deps): update renovatebot/github-action action to v46.1.19 (#10)
- 174256d docs: fix stale lint command references, ignore roborev snapshots
- f1d45e3 fix(deps): update module github.com/pkg/sftp to v1.13.11 (#11)
v2.3.1
Changelog
- bed21b1 chore(deps): update actions/checkout action to v7 (#4)
- d1f19c9 chore(deps): update arduino/setup-task action to v3 (#5)
- 2b0d4cb chore(deps): update module golang.org/x/vuln to v1.6.0 (#7)
- 0f01e28 chore(deps): update trufflesecurity/trufflehog action to v3.95.9 (#6)
- 7386671 fix(deps): update module github.com/testcontainers/testcontainers-go to v0.43.0 (#3)
- eb3317a fix(deps): update module golang.org/x/crypto to v0.54.0 (#8)
- b9c2058 fix(deps): update module golang.org/x/sync to v0.22.0 (#9)
v2.3.0
Changelog
- ac3fae0 chore(deps): update alpine docker tag to v3.23
- 38b7b46 chore(deps): update alpine docker tag to v3.24
- 84fa2a7 chore(deps): update renovate/renovate docker tag to v43
- 1734a07 chore(deps): update renovate/renovate docker tag to v43
- 90996a6 docs(skill): remove duplicate nohup section; update ssh_list_hosts and sftp_write docs
- 90b7e5c docs: add ssh_accept_host_key entry to tools.md reference
- 46b2883 docs: add status badges to README
- 9217d50 docs: add sudo/privilege escalation section with security warning to README
- 8186935 docs: complete README and security model
- 43af345 docs: detach decision guide and secret-file read warning
- 776e39a docs: document SFTP access control and session cap enforcement
- 8dba34f docs: extend architecture diagram to show SFTP branch
- 8a63510 docs: fix architecture diagram — use generic MCP client instead of Claude Desktop
- 250fcf5 docs: mark RENOVATE_TOKEN as protected in setup guide
- ecacee7 docs: reduce AI-marker patterns in README and security.md
- 14dda8c docs: remove v1-to-v2 migration guide
- 15d373e docs: sync all docs and skill references to v2.0 reality
- 74a8bee docs: tighten sftp_read default to 2 MiB; polish SKILL.md timeout table, background jobs, and context warnings
- 3f8d124 docs: v2.0 skill rewrite, migration guide, and CHANGELOG
- 9417a0c feat(cmd): -version and -validate-config flags; example config
- 80526d1 feat(config): YAML loader with env interpolation and validation
- b30ea43 feat(config): add v2.0 limits, host fields, and Capabilities method
- de42709 feat(hostpool): ref-counted shared ssh.Client cache; -probe flag
- f395dca feat(logging): slog → MCP client logging via swappable handler
- a432105 feat(mcpserver): four session tools over stdio MCP transport
- fb9d8c8 feat(mcpserver): ssh_list_hosts + ssh_host_capabilities; marshal error handling; nil-cfg test
- 56df75f feat(mcpserver): ssh_list_hosts and ssh_host_capabilities discovery tools
- b6ff376 feat(mcpserver): ssh_run_once tool handler and 10-tool registration
- 023449a feat(mcpserver): ssh_run_once tool; 10-tool registration (8 without cfg)
- fc524ca feat(session): ANSI/CR strip via jimschubert/stripansi
- e400849 feat(session): RunOnce via SSH exec channel (cappedBuffer, pool.Get)
- fe06bee feat(session): marker-aware Send with exit codes, still_running, and closedReason
- 8546a5d feat(session): marker-aware Send with exit codes, still_running, and closedReason
- e327e68 feat(session): persistent shell manager with bounded ring buffer
- 44144bc feat(session): suppress MOTD via RC_READY boot marker in Open
- 8e7bd3b feat(session,mcpserver): v2 Manager interface with new types (stub Send)
- 5ef3b2c feat(sftpops): SFTP read/write/list on top of hostpool
- f6d50eb feat(sshconn): client config builder with strict known_hosts
- c663ed8 feat(sshconn): cross-platform ssh-agent dial
- 5167b67 feat: SSH keepalive on by default (15 s/3 failures); SIGTERM advisory warning
- 415c566 feat: add get_skill tool as fallback for tool-only MCP clients
- 69e4a5c feat: add internal/mcpserver/skills/ embedded catalog and docs
- 32d020b feat: add onDead callback to StartKeepalive, called after client.Close() on max failures
- 503ac5f feat: add rootcanal-ssh Claude Code skill
- 3d9f88b feat: detached jobs — ssh_run_once(detach=true) + ssh_job_status + ssh_job_cancel
- ac1c5f2 feat: expose skill:// MCP resources via registerSkillResources
- 4c92548 feat: sftp_allowed_prefixes in ssh_list_hosts; atomic sftp_write
- 26e7ef3 feat: ssh_accept_host_key — in-MCP known_hosts refresh after server rebuild
- 439f9f2 feat: surface ClosedReason in SessionInfo; advisory warning on lost connection (C1)
- 05792e0 feat: validation middleware suggests correct field name on unknown-property errors
- 792de14 feat: wire skill resources + get_skill into server; add integration tests
- 66c5077 fix(ci): migrate staticcheck to go.mod tool directive
- c57bd41 fix(ci): scope gofmt to git-tracked files; add DialTimeout=0 regression test
- 1b38eb3 fix(deps): update module github.com/modelcontextprotocol/go-sdk to v1.6.1
- 9469b19 fix(deps): update module golang.org/x/crypto to v0.52.0
- 6c0f9d3 fix(deps): update module golang.org/x/crypto to v0.53.0
- 3838e89 fix(deps): update module golang.org/x/sync to v0.20.0
- 659b55a fix(deps): update module golang.org/x/sync to v0.20.0
- daed4cc fix(deps): update module golang.org/x/sync to v0.21.0
- e83eb85 fix(e2e): resolve all 10 e2e test failures
- a2bc773 fix(security): address 6 remaining audit findings (MAN-002,004,005,006,007,009)
- a29a9d0 fix(session): cappedBuffer.Write returns original len(p); range-over-int modernization
- 8961b01 fix(session): goroutine safety in gatedFakeSession; strengthen warning assertion
- 33d86e3 fix(session): locked Truncated() accessor; defensive timeout fallback in RunOnce
- 6b1c17f fix(session): wrap ctx.Err in bootSession; correct test Send timeout field
- b14cbaa fix(sshconn): skip handshake deadline when DialTimeout is zero
- 922432b fix: add SFTPAllowedPrefixes to integration test host config
- 46e540f fix: address 8 HIGH-severity concurrency and durability issues (post-v1.0.0 review)
- d595da6 fix: close SFTP path traversal and session TOCTOU vulnerabilities
- 2b700e4 fix: evict dead pool entry on keepalive failure; identity-aware releaseFunc prevents stale-release corruption
- aa1c243 fix: prevent SSH host addresses from leaking in MCP error messages
- 95514a5 fix: ssh_run_once exit code race, detach 60s kill, unknown host hint
- 3540f4b refactor(config): named constants for v2 defaults; complete CapabilitiesInfo
- 82903d1 refactor(config): use shared fileperms.Check
- d9c8738 refactor(session): guarantee non-nil logger; simplify Send and gcTick idioms
- 19cfe82 refactor(sshconn): use shared fileperms.Check; inline errors.As for knownhosts
- 946501e refactor: extract shared fileperms.Check from config and sshconn
- 2276c4e style: apply gofmt -s to all source files
- de788a4 style: apply gofmt -s to e2e/container_test.go and e2e/fixtures_test.go
- 46f3c66 style: apply gofmt -s to hostkey.go (fix lint CI)
- 3f8784d test(config): table-driven tests at 98.1% coverage
- e0026aa test(e2e): add end-to-end test suite against a real SSH container
- 53068d6 test(e2e): marker scheme, RunOnce, and discovery E2E tests
- cf512d0 test(session): cappedBuffer unit tests; cover Send peek/raw/closed/cancel paths
- df09718 test(session): validateName and newMarkerNonce tests; document stub gaps
- 4d9654c test: per-file coverage ≥85% on all 18 files (93.2% total)