Files
sshctl/CHANGELOG.md
2026-09-12 15:57:53 +03:30

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 .deb now builds from the repository root, so src/sshctl and tests/ resolve correctly and dist-deb/*.deb is produced
  • Dependencies: click declared explicitly (typer >= 0.26 vendors it), fixing sshctl runtime/typing

Changed

  • CI: Gitea Actions test job cut from ~15 min to ~1m20s via a persistent host toolcache for uv and Python 3.13; uv download cache persisted
  • Version bumped to 0.1.2

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