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.
- Port forwarding: New
instance forwardcommand to forward ports from remote instances to localhost with automatic browser opening
- Security group management: IP whitelisting commands (
instance add-ip/instance remove-ip) with CIDR notation support - Volume resize: New
volume resizecommand for EBS volume management - File transfer: Built-in
instance copyandinstance synccommands for file transfers via rsync/scp - Cumulative cost tracking: Track and display cumulative instance costs over time
- Cache clearing: Mechanism to clear AWS client caches (
--clear-cacheflag) - Dynamic region lookup: Region location names fetched via AWS SSM for accurate pricing
- SSH timeout configuration: Configurable timeout for SSH connect command (
--timeoutflag) - Remote execution:
instance execcommand to run commands on remote instances - Connect enhancements:
--start/--no-startflags to auto-start stopped instances - Consistency improvements: Added
--yesflag toami create,snapshot create,instance type, andinstance launchcommands
- Exclude terminated instances by default in
instance listcommand - Standardized error handling with
@handle_cli_errorsdecorator across all modules - Consolidated SSH configuration into reusable
SSHConfigclass - Extracted shared utilities:
create_table(),resolve_instance_or_exit(),get_status_style() - Standardized table column styling across CLI
- Moved timing constants to
settings.pyfor centralized configuration - Improved CLI parameter patterns with consistent argument/option usage
- Refactored ECS module with cleaner command names and selection helpers
- AMI pagination for large AMI counts (>1000 images)
- SSH key path validation before connect/exec commands
- Instance type format validation in type command
- Empty DNS validation in connect command
- Exit code semantics (correct codes for non-success scenarios)
- Mutual exclusivity validation for conflicting flags
- ECS scale command validation for desired_count parameter
- Debug logging for silent failure cases in pricing module
- ConfigManager test isolation for local config files
- Added docstring examples to ECS scale and volume list commands
- Documented CLI parameter patterns in CLAUDE.md
- Built-in watch mode for status command (
--watch/-wflag) - Scheduled instance shutdown (
remote instance stop --in 3h) - Auto-stop on start (
remote instance start --stop-in 2h) - Cost information in instance list (
--cost/-cflag) - AWS API contract validation tests for response format verification
- Fixed pricing lookup for EU regions (incorrect location names)
- Fixed Rich Panel expanding to full terminal width
- Standardized console output styles across all commands
- Clarified distinction between
instance lsandinstance status
- Removed root-level instance commands: Instance commands now require the
instanceprefixremote start->remote instance startremote stop->remote instance stopremote connect->remote instance connectremote list->remote instance listremote ls->remote instance lsremote status->remote instance statusremote launch->remote instance launchremote terminate->remote instance terminate
- Rich output enhancements: Improved UI with Rich tables and panels
- ECS cluster/service selection displays in formatted tables
- Config validation results shown in colored panels
- Instance launch summary displayed in panels
- SSH key configuration: Connect command now reads
ssh_keyfrom config when--keynot provided - Security policy: Added SECURITY.md with security measures and reporting process
- Instance pricing: Display hourly and monthly cost estimates for instances
- Template workflow improvements: New commands for managing launch templates
- Config workflow improvements: Enhanced configuration management commands
- Comprehensive test coverage: 317+ tests with hypothesis-based property testing
- Replaced wasabi with Rich for all output formatting
- Standardized exit patterns across all modules
- Improved CLI help documentation with better descriptions
- Compartmentalized subcommands under service prefixes
- Updated development status to Production/Stable
- Logic bug in
get_instance_by_name()that could return wrong instance - SSH subprocess error handling improvements
- Unvalidated array index in AMI launch
- Deprecated datetime API usage
- Function shadowing builtin
list
- Completed comprehensive security review
- No critical or high severity issues
- All dependencies audited with pip-audit
- Static analysis with bandit (only low-severity informational findings)
--key/-koption forconnectcommand to specify SSH private key file- CI/CD pipelines with GitHub Actions for testing and publishing
- Comprehensive test suite with 227+ tests and 85%+ coverage
- BREAKING: Minimum Python version is now 3.10 (was 3.8.1)
- Migrated from Poetry to uv package manager
- Replaced flake8/black with Ruff for linting and formatting
- Comprehensive test suite improvements with factory pattern and enhanced organization
- Poetry lock file and configuration (replaced by uv)
- tox.ini (testing now handled by CI/CD)
- Custom exception hierarchy for better error classification (
InstanceNotFoundError,AWSServiceError,ValidationError, etc.) - Input validation utilities for AWS resource IDs (instance IDs, volume IDs, snapshot IDs)
- Safe array access utilities with proper bounds checking
- Comprehensive test coverage achieving 100% for ami.py and validation modules (227 tests total)
- Detailed error messages with actionable information for common AWS errors
- Enhanced AWS SDK error handling with user-friendly messages
- Replaced unsafe array access patterns with bounds checking throughout codebase
- Replaced generic Exception handling with specific AWS exceptions for better error handling
- Consolidated error handling patterns across all modules for consistency
- Improved error messages to provide more helpful feedback to users
- Updated pre-commit configuration to auto-fix linting issues
- Test failures in
test_get_launch_template_idwith correct module path mocking - Import statements in test files after function relocation
- Exception handling in config.py to catch all exception types gracefully
- Ruff formatting issues in test files
- Add
remote versioncommand #39 - Add
remote terminatecommand #38 - Add
remote launchcommand to create instances from launch templates #22
- Split CLI into modules #33
- Use poetry instead of Makefile for dependency management #34
- Add
Launch Timetoremotepy listcommand output table.