Skip to content

Releases: Mr-Sunglasses/bitssh

bitssh v3.7.1 Release Notes Latest

Choose a tag to compare

@Mr-Sunglasses Mr-Sunglasses released this 30 Apr 21:12
7f911ab

What's Changed

Full Changelog: v3.7.0...v3.7.1

bitssh v3.7.0 Release Notes Latest

Choose a tag to compare

@Mr-Sunglasses Mr-Sunglasses released this 30 Apr 19:11
6bda0c5

What's Changed

bitssh v3.7.0 Release Notes

New Feature: bitssh remove

A new remove subcommand to remove SSH hosts from the command line.

Interactive Mode (Multiselect)

bitssh remove

Launches a checkbox prompt to select one or more hosts (press space to toggle, enter to confirm), displays a table with each host's details (Host, HostName, User, Port), and asks for confirmation before removing.

Non-Interactive Mode (Multiple Hosts)

bitssh remove --host myserver
bitssh remove --host srv1 srv2 srv3

The --host flag now accepts multiple hosts. Removes each one individually with per-host success/error messages -- ideal for scripting.

UI Improvement

  • The SSH servers table (bitssh with no arguments) is now centered on the terminal instead of left-aligned

Test Suite

  • Added 103 tests with 100% code coverage across all modules
  • Coverage for utils.py -- get_config_content, write_host_to_config, remove_host_from_config, host_exists, get_host_aliases, _validate_config_file, _ensure_config_file
  • Coverage for argument_parser.py -- Config class, is_add_interactive, is_add_non_interactive, hosts property
  • Coverage for cli.py -- _handle_add, _handle_remove, run
  • Coverage for prompt.py -- _validate_host_alias, add_host_prompt, remove_host_prompt, ask_host_prompt
  • Coverage for ui.py -- draw_table
  • Coverage for __main__.py -- main
  • pytest-cov configured with fail_under = 80 and --cov-report=term-missing in pyproject.toml, runs automatically with pytest

Version Management

  • Version is now read dynamically from importlib.metadata.version("bitssh") instead of being hardcoded in __init__.py -- pyproject.toml is the single source of truth

Python Support

  • Dropped Python 3.9, minimum is now Python 3.10
  • Added Python 3.14 to supported versions

Package Manager

  • Migrated from pip to uv as the package manager
  • Makefile updated to use uv venv, uv pip install, uv run, uv build
  • All targets: setup, dev, install, test, lint, format, build, run, check, clean

Linting & Formatting

  • Added [tool.ruff] config with line-length = 100, target-version = "py310"
  • Added [tool.ruff.lint] with select = ["E", "F", "W", "I"]
  • Added [tool.black] and [tool.isort] config for consistent formatting
  • All source and test files pass ruff check with zero errors

CI Workflows

  • test.yml -- Added lint job (ruff check) that runs before tests, uses uv for all operations, Python 3.10-3.14 matrix
  • publish_pypi.yml -- Upgraded actions to v4, uses uv build + pypa/gh-action-pypi-publish with trusted publishing, gates on test workflow passing
  • publish_dockerhub.yml -- Uses official Docker actions (buildx, login, metadata, build-push), tags with semver + latest, gates on test workflow passing
  • greetings.yml -- Added types: [opened] trigger, cleaned up messages
  • Dockerfile -- Updated to Python 3.13-slim, installs from local source, uses --no-install-recommends

pyproject.toml Improvements

  • Removed duplicate PDM dev-dependencies and scripts sections
  • Consolidated dev dependencies into [project.optional-dependencies] (added ruff, pre-commit)
  • Removed License :: classifier (incompatible with license field in modern setuptools)
  • Added Changelog URL to [project.urls]
  • Removed __init__.py from bumpver file patterns (version no longer hardcoded)
  • Added [tool.coverage.run] and [tool.coverage.report] sections

Full Changelog: v3.6.0...v3.7.0

bitssh v3.6.0 Release Notes

Choose a tag to compare

@Mr-Sunglasses Mr-Sunglasses released this 10 Feb 13:06
3a584fa

bitssh v3.6.0 Release Notes

New Feature: bitssh add

A new add subcommand to add SSH hosts directly from the command line -- no need to manually edit ~/.ssh/config anymore.

Interactive Mode

bitssh add

Launches a step-by-step guided prompt asking for:

  • Host -- alias for the connection (e.g. myserver)
  • HostName -- IP address or domain (e.g. 192.168.1.1)
  • User -- login username (optional)
  • Port -- defaults to 22 (optional)
  • IdentityFile -- path to private key (optional)

Includes input validation, a summary preview, and a confirmation step before writing.

Non-Interactive Mode

bitssh add --host myserver --hostname 192.168.1.1
bitssh add --host myserver --hostname 192.168.1.1 --user root --port 2222
bitssh add --host myserver --hostname 192.168.1.1 --identity-file ~/.ssh/id_ed25519

Add hosts directly via CLI flags -- perfect for scripting and automation. Requires at minimum --host and --hostname.

Improvements

  • Duplicate host detection -- prevents accidentally overwriting existing entries in the SSH config
  • Auto-creation of config -- if ~/.ssh/ or ~/.ssh/config doesn't exist, bitssh add creates them automatically with correct permissions (0700 for directory, 0644 for file)
  • Better error messaging -- when no config file exists, the error now guides users to run bitssh add to get started

v3.5.0

Choose a tag to compare

@Mr-Sunglasses Mr-Sunglasses released this 08 Jun 15:46
25b8e76

What's Changed

Full Changelog: v3.4.0...v3.5.0

v3.4.0

Choose a tag to compare

@Mr-Sunglasses Mr-Sunglasses released this 08 Jun 14:40
9a279c0

What's Changed

Full Changelog: v3.3.0...v3.4.0

v3.3.0: better config parser

Choose a tag to compare

@Mr-Sunglasses Mr-Sunglasses released this 08 Jun 13:00
6a2a24a

What's Changed

  • fix: config parser fix for more edge cases and ignore comments by @Mr-Sunglasses in #35

Full Changelog: v3.2.0...v3.3.0

v3.2.0

Choose a tag to compare

@Mr-Sunglasses Mr-Sunglasses released this 08 Jun 12:16
bf73243

What's Changed

Full Changelog: v3.1.0...v3.2.0

v3.1.0

Choose a tag to compare

@Mr-Sunglasses Mr-Sunglasses released this 31 May 20:07
abe33a4

What's Changed

Full Changelog: v3.0.0...v3.1.0

v3.0.0

Choose a tag to compare

@Mr-Sunglasses Mr-Sunglasses released this 10 Apr 20:51
ad84e57

What's Changed

Full Changelog: v2.8.0...v3.0.0

v2.8.0

Choose a tag to compare

@Mr-Sunglasses Mr-Sunglasses released this 16 Sep 20:21
7db492a

What's Changed

Full Changelog: v2.7.0...v2.8.0