Files
sshctl/CHANGELOG.md
T

63 lines
3.0 KiB
Markdown
Raw Normal View History

# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/),
and this project adheres to [Semantic Versioning](https://semver.org/).
## [0.1.1] - 2026-09-12
### Fixed
- **Parser**: directory `Include` targets (e.g. `conf.d/`) no longer crash validation with `IsADirectoryError`; `parse_file` converts read errors to `ParseError`
- **Init**: generated `Include conf.d/` now writes a proper glob (`conf.d/*.conf`)
- **Config**: `config set` no longer recurses infinitely when no `Host *` block exists (now prepends one)
- **Config**: `validate_options`/`heal` now detect lowercase option typos (`hostname` → `HostName`)
- **Jump**: comments with leading whitespace in `.internal_ssids` are now filtered correctly
- **CLI**: fixed undefined `HostBlock` name in host edit and broken `jump_auto` indentation
- **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 `Include` resolution, glob support, continuation lines
- **Core**: SSH config generator with deterministic option ordering
- **Core**: Host resolver via `ssh -G` subprocess
- **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)