# 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)