3.5 KiB
3.5 KiB
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[0.1.2] - 2026-09-12
Fixed
- Packaging: Debian
.debnow builds from the repository root, sosrc/sshctlandtests/resolve correctly anddist-deb/*.debis produced - Dependencies:
clickdeclared explicitly (typer >= 0.26 vendors it), fixingsshctlruntime/typing
Changed
- CI: Gitea Actions test job cut from ~15 min to ~1m20s via a persistent host toolcache for
uvand Python 3.13; uv download cache persisted - Version bumped to 0.1.2
[0.1.1] - 2026-09-12
Fixed
- Parser: directory
Includetargets (e.g.conf.d/) no longer crash validation withIsADirectoryError;parse_fileconverts read errors toParseError - Init: generated
Include conf.d/now writes a proper glob (conf.d/*.conf) - Config:
config setno longer recurses infinitely when noHost *block exists (now prepends one) - Config:
validate_options/healnow detect lowercase option typos (hostname→HostName) - Jump: comments with leading whitespace in
.internal_ssidsare now filtered correctly - CLI: fixed undefined
HostBlockname in host edit and brokenjump_autoindentation - Types: mypy strict clean across all 45 source/test files (jump, setup, configops, events)
Added
- Packaging: Arch Linux
PKGBUILD(linux/arch/) - Tests: coverage suites for events, logutil, cleanup, configops, jump (161 tests)
- Metadata: repo URL unified to
https://src.panahifar.ir/ahp/sshctl
Changed
- Version bumped to 0.1.1; coverage gate aligned to 45% (CI and Makefile)
[0.1.0] - 2026-07-16
Added
- Core: SSH config parser with
Includeresolution, glob support, continuation lines - Core: SSH config generator with deterministic option ordering
- Core: Host resolver via
ssh -Gsubprocess - Core: Config validator with structural validation
- Operations: Async DNS/TCP/SSH connectivity checker with semaphore concurrency
- Operations: Parallel SSH command executor
- Export: CSV inventory export
- Export: Ansible inventory generation from
conf.d/directory tree - Export: SSH directory permission fix and check
- CLI:
init— initialize SSH config directory structure - CLI:
host list,host show,host add— host alias management - CLI:
check— connectivity check across hosts - CLI:
exec— parallel command execution - CLI:
csv— CSV inventory export - CLI:
chmod— permission fix/check - CLI:
ansible— Ansible inventory generation - CLI:
validate— config validation - CLI:
tree— config directory tree viewer - CLI:
diff— compare generated vs current config - CLI:
backup/restore— SSH directory backup and restore - CLI:
install-completion— shell completion installation - Architecture: Modular subpackage layout (cli/, core/, config/, operations/, export/)
- Infrastructure: GitHub Actions CI (test + build wheel + deb)
- Infrastructure: pre-commit hooks (ruff, mypy, linting)
- Infrastructure: Debian packaging (
debian/) - Infrastructure: Makefile with test/lint/build targets
- Infrastructure: Coverage config (80% threshold)
- Config: Pydantic-settings with YAML and env variable support
- Models: ZonePath hierarchical addressing (universe/sector/cluster/zone/vlan)