Releases: tbotnz/cisshgo
v1.0.0
[1.0.0] - 2026-03-15
⚠️ Breaking Changes
- Document breaking CLI flag renames from Kong migration (4d7da81)
CLI flags were renamed as part of the Kong migration in #64.
Users with scripts or tooling using the old flag names must update them.
- docs!: v1.0.0 — first stable release with breaking changes from v0.2.0
- docs!: v1.0.0 — first stable release with breaking changes from v0.2.0
🐛 Bug Fixes
- Change ParseArgs to return int instead of *int for startingPort (31205b8)
- Rename sshlistners package to sshlisteners (2e7ca9e)
- Eliminate FakeDevice data race and ssh.Handle global state (#60) (7423e32)
- Resolve transcript paths relative to transcript map file location (#76) (1c34c23)
- Validate inventory entry Count is non-negative (#116) (0ef441a)
- Add timeout to SSH server graceful shutdown (#117) (7882ef5)
- Correct transcript paths to be relative to map file directory (#119) (c64b783)
- Require username on all platforms — enforce strict auth (#123) (95d408f)
- Add end_context field so end jumps directly to privileged exec (#126) (a2e5ab6)
- Update csr1000v-add-interface scenario to reflect real IOS config workflow (#127) (22b60da)
- Integrate sequence steps and context switches in handleShellInput (#132) (54697e0)
- Enforce strict command ordering in scenario mode (#133) (3f1b123)
- Move enable to first step in csr1000v-add-interface scenario (#134) (40a27bf)
- Apply end_context when end/exit is a sequence step (#137) (f32b3b3)
- Update csr1000v-add-interface scenario transcripts and steps (#138) (5eaf737)
- Add checkout step to coverage-report job (b36cfb7)
- Correct branch references from main to master (a643619)
- Remove changelog commit from release workflow (64d7bdf)
- Use default GoReleaser changelog instead of git-cliff (e233e26)
- Use git-cliff for release notes via --release-notes flag (8412c11)
👷 CI/CD
- Raise coverage threshold from 60% to 90% (e174c15)
📚 Documentation
- Add CONTRIBUTING.md with GitHub Flow workflow and transcript guide (5434278)
- Add package-level doc comments for pkg.go.dev (a8313e5)
- Add git-cliff for automated changelog generation (#66) (f2386e1)
- Promote breaking changes to top section in changelog (45f40ba)
- Add emoji section headers and fix breaking change deduplication in changelog (6e0a8f1)
- Regenerate changelog with Kong breaking change entry (b81b88f)
- Show commit body for features and breaking changes in changelog (2f25762)
- Add MkDocs Material documentation site (92505a5)
- Fix CLI flag formats and scenarios documentation (9c6908c)
- Polish documentation with improvements from technical review (b436db3)
- Fix remaining flag format inconsistencies (eb82291)
- Add comprehensive usage examples for all features (206e530)
- Add migration guide for v0.2.0 to v1.0.0 (#95) (bf76cb4)
- Move project description above badges in README (#112) (faede0b)
- Fix Docker registry references in README (#113) (574df14)
- Link to text/template docs in transcripts documentation (#114) (88135cf)
- Fix incorrect branch name in contributing docs (#115) (37802de)
- Update changelog for v1.0.0 (1f50f49)
🔧 Refactoring
- Change TranscriptMap.Platforms from list-of-maps to map (#62) (8814135)
- Replace flag package with Kong for CLI argument parsing (#64) (0391eba)
- Split utils package into config, transcript, and cmdmatch (cf55700)
- Rewrite cmdmatch.Match() with cleaner single-pass algorithm (#118) (c814e20)
🚀 Features
-
GenericListener now accepts context.Context and shuts down cleanly
on cancellation via ssh.Server.Shutdown -
run() uses sync.WaitGroup to wait for all listeners to exit
-
main() wires up signal.NotifyContext for SIGINT/SIGTERM
-
Update tests for new signatures; add shutdown verification test
-
Implement inventory system for multi-device topology management (#67) (5a2b784)
-
Add Inventory/InventoryEntry types and LoadInventory() to utils
-
Add --inventory and --platform flags to CLI struct
-
InitGeneric now reads vendor from transcript map (drops vendor param)
-
InitGeneric returns error for unknown platform
-
run() uses inventory when provided, falls back to --platform/--listeners
-
Add iosxr platform to transcript_map.yaml with show version transcript
-
Add transcripts/inventory_example.yaml demonstrating multi-device usage
-
Add device transcript library for 5 additional platforms (#69) (dd8b6ce)
Add show version, show ip interface brief, and show running-config
transcripts sourced from NTC Templates test fixtures for:
- Cisco IOS (ISR4321, 15.6)
- Cisco ASA (ASAv, 9.12)
- Cisco NX-OS (N9K, 9.3)
- Arista EOS (DCS-7050CX3, 4.27)
- Juniper Junos (MX240, 21.4)
Also update inventory_example.yaml to demonstrate all 7 platforms.
Each flag can now be set via environment variable (CLI takes precedence):
CISSHGO_LISTENERS, CISSHGO_STARTING_PORT, CISSHGO_TRANSCRIPT_MAP,
CISSHGO_PLATFORM, CISSHGO_INVENTORY
Add ValidateTranscriptMap() that checks all command_transcripts paths
exist on disk before any listeners are spawned. Reports all missing
files in a single error rather than failing on the first.
- feat: Implement scenario-based stateful command responses
Add scenario...
v0.2.0
Changelog
- f1606a8 Merge pull request #29 from tbotnz/brett/updates
- d5a3918 ci: Add GitHub Actions test workflow (#36)
- 94e305f ci: Add coverage reporting and threshold enforcement (#37)
- 1d14912 ci: Install syft for SBOM generation in release workflow
- 04d10a8 ci: Switch Docker registry from Docker Hub to GHCR
- b15019e feat: Add SSH exec mode support (#42)
- 0697e99 feat: add Docker release support and migrate to goreleaser v2
- 585a431 refactor!: Replace log.Fatal with error returns, achieve 93% coverage (#39)
v0.1.1
v0.1.0
v0.0.4
v0.0.3
Mr Managers Modularity
Merge pull request #2 from lykinsbd/feature/command_mapper Add Command Transcript Playback and Make More Modular
Wills Science Fair
Merge pull request #7 from Apcela/simple_state Simple state